From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 07/27] Introduce generic global_data
Date: Sun, 25 Mar 2012 10:54:17 +1100 [thread overview]
Message-ID: <4F6E5EA9.1070001@gmail.com> (raw)
In-Reply-To: <CAPnjgZ1_WVRdYqjBHOdd5U7za1q6od32EmLNKbm8JbQbS5VeUg@mail.gmail.com>
Hi Simon,
On 03/25/2012 10:10 AM, Simon Glass wrote:
> Hi Graeme,
>
> On Sat, Mar 24, 2012 at 4:14 AM, Graeme Russ <graeme.russ@gmail.com> wrote:
>> Hi Simon,
>>
[snip]
>>
>> arch/asm/global_data.h:
>>
>> #define HAS_ARCH_GD
>>
>> struct arch_global_data {
>> ...
>> };
>>
>> include/global_data.h:
>>
>>
>> #include <arch/asm/global_data.h>
>>
>> struct global_data {
>> ...
>> #ifdef HAS_ARCH_GD
>> struct arch_global_data agd;
>> #endif
>> };
>>
>> I like this better
>>
>> P.S. Can we ditch the typedef while we are at it?
>
> Separate issue, but I can't see why not.
OK - See below
> But I now remember the main problem I had with this.
> CONFIG_SYS_GENERIC_BOARD is an option, not mandatory, so we must not
> change the C code (much, ideally not at all) to make this work. If we
> move things around as you suggest then we should probably do it first
> as part of the normal code, so that generic board can just use it.
Sounds like a solid plan
> So the first change might be to move arch-specific data into an agd
> structure, and get everything building again. Then finally pull out
> the common part of each file into a new asm-generic file. It's the
> opposite way to what I have done so far, but the result will be the
> same in the end. I suppose my only reservation is that it creates
> patches initially for little benefit. I will have to think about how
> to motivate it.
Clean-up work that, on the surface, appears to not do much does much more
than you think. It may highlight a few nasty quibbles that you hadn't
expected that you will need to plan around.
Big changes made against good, clean, consistent code are always easier
than against bad, dirty, inconsistent code :)
And I think this is the ideal opportunity to drop the typedef
>> Q: Are there any board specific global data members anywhere?
>
> Probably, if we went into a deep enough. Certainly there are members
> which are only used for one sub-archs, and some of those sub-archs
> have a very small number of boards, perhaps 1 in some cases.
OK, it might be worth investigating HAS_BOARD_GD. Maybe bring that through
struct arch_global_data but it's not as clear an issue (there is a symlink
to include/arch/asm but none for include/board/. For the time being, we may
just have to leave the ifdefs in the include/arch/asm/global_data.h
>>> (I feel the last one has to come later, though, even if unfortunately
>>> it would simplify things now - how on earth are we going to work out
>>> what things are really needed in global data?)
>>
>> Look at the functions which are called prior to relocation - Anything
>> referenced in these functions needs to be in gd
>
> Yes, but I'm just saying that is a long list, and involves a lot of
> code searching.
I didn't say it would be easy ;)
The board_init_f array is a starting point.
I was planning on moving pre-relocation functions into a .init section so
they were not copied during code relocation (much like Linux marks init
functions so the memory can be free'd post init). Once this is done,
identifying 'real' global data members will be trivial
Regards,
Graeme
next prev parent reply other threads:[~2012-03-24 23:54 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-15 2:15 [U-Boot] [PATCH v4 0/27] Create generic board init for ARM, x86, PPC Simon Glass
2012-03-15 2:15 ` [U-Boot] [PATCH v4 01/27] arm: Change board baud_rate to ulong Simon Glass
2012-03-15 2:15 ` [U-Boot] [PATCH v4 02/27] x86: " Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 03/27] arm: Only display frame buffer info if there is LCD/video support Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 04/27] x86: Remove dead code in eNET Simon Glass
2012-03-15 2:27 ` Graeme Russ
2012-03-15 2:28 ` Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 05/27] x86: Add initial memory barrier macros Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 06/27] ppc: " Simon Glass
2012-03-15 17:56 ` Scott Wood
2012-03-15 2:16 ` [U-Boot] [PATCH v4 07/27] Introduce generic global_data Simon Glass
2012-03-15 2:30 ` Graeme Russ
2012-03-15 2:35 ` Graeme Russ
2012-03-15 2:50 ` Simon Glass
2012-03-15 3:02 ` Graeme Russ
2012-03-15 3:41 ` Simon Glass
2012-03-24 6:40 ` Simon Glass
2012-03-24 11:14 ` Graeme Russ
2012-03-24 23:10 ` Simon Glass
2012-03-24 23:54 ` Graeme Russ [this message]
2012-03-15 2:16 ` [U-Boot] [PATCH v4 08/27] Introduce generic u-boot.h file Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 09/27] Introduce generic link section.h symbol files Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 10/27] arm: Use sections header to obtain link symbols Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 11/27] x86: Change stub example to use asm-generic/sections.h Simon Glass
2012-03-15 2:29 ` Graeme Russ
2012-03-15 2:44 ` Simon Glass
2012-03-15 2:48 ` Graeme Russ
2012-03-15 2:16 ` [U-Boot] [PATCH v4 12/27] Introduce a basic initcall implementation Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 13/27] Define CONFIG_SYS_LEGACY_BOARD everywhere Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 14/27] Introduce generic pre-relocation board_f.c Simon Glass
2012-03-15 19:09 ` Scott Wood
2012-03-15 21:23 ` Simon Glass
2012-03-15 21:25 ` Scott Wood
2012-03-16 5:31 ` Wolfgang Denk
2012-03-15 2:16 ` [U-Boot] [PATCH v4 15/27] Introduce generic post-relocation board_r.c Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 16/27] Add spl load feature Simon Glass
2012-03-15 19:29 ` Scott Wood
2012-03-15 2:16 ` [U-Boot] [PATCH v4 17/27] arm: Enable generic board support Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 18/27] Add CONFIG_SYS_SYM_OFFSETS to support offset symbols Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 19/27] x86: Use sections header to obtain link symbols Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 20/27] Add x86 fields to generic global_data Simon Glass
2012-03-15 2:36 ` Graeme Russ
2012-03-15 2:54 ` Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 21/27] x86: Enable generic board support Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 22/27] Add ppc fields to generic global data Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 23/27] Adjust board_f for ppc Simon Glass
2012-03-15 19:12 ` Scott Wood
2012-03-15 21:25 ` Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 24/27] Adjust board_r.c for PowerPC Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 25/27] ppc: Enable generic board board Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 26/27] tegra: Mark board init files for ARMv4t Simon Glass
2012-03-15 2:16 ` [U-Boot] [PATCH v4 27/27] tegra: Enable generic board for Seaboard Simon Glass
2012-03-16 19:23 ` [U-Boot] [PATCH v4 0/27] Create generic board init for ARM, x86, PPC Tom Rini
2012-03-16 19:34 ` Simon Glass
2012-03-16 20:07 ` Tom Rini
2012-03-16 21:53 ` Tom Rini
2012-03-16 22:19 ` Simon Glass
2012-03-16 22:26 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F6E5EA9.1070001@gmail.com \
--to=graeme.russ@gmail.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox