Le 14/11/2010 20:34, Graeme Russ a écrit : > On 15/11/10 06:23, Wolfgang Denk wrote: >> Dear Albert ARIBAUD, >> >> In message<4ce0221a.7030...@free.fr> you wrote: >>> >>> Alright, then I think we should document how we comply, or do not >>> comply, with GNU EABI / AAPCS (maybe a README.arm that people could read >>> up) -- and I think if there is a way to access GD both before and after >>> relocation without making a register unavailable to the whole u-boot >>> code, then we should use it. >> >> By the way - it should be not difficult to use a normal extern pointer >> to reference the global data; see >> "arch/powerpc/include/asm/global_data.h": >> >> 194 #if 1 >> 195 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r2") >> 196 #else /* We could use plain global data, but the resulting code is >> bigger */ >> 197 #define XTRN_DECLARE_GLOBAL_DATA_PTR extern >> 198 #define DECLARE_GLOBAL_DATA_PTR XTRN_DECLARE_GLOBAL_DATA_PTR \ >> 199 gd_t *gd >> 200 #endif > > I think you will find this peculiar to PowerPC
I don't think Wolfgang's idea is actually processor-specific. Each processor has a way to define globals, which end up in the initialized data or bss area. BSS is not available before relocation, but initialized data is, and remains so after relocation. So if we define gd as an initialized pointer (residing in the initialized data area), it will be available both before and after relocation. Before relocation, this pointer will be read-only. We can set it at compile time if we know for each arch (or board) a good address in RAM or IRAM where gd can exist. After relocation, the pointer becomes read-write: we can copy gd content from (I)RAM to RAM if necessary and then update the gd pointer. > What you are talking about is exactly how x86 defines gd, but for x86, gd > is not accessible until after relocation Could it become accessible with the idea I expose above? > Regards, > > Graeme Amicalement, -- Albert. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot