[U-Boot] lib_arm global data pointer

Drasko DRASKOVIC drasko.draskovic at gmail.com
Mon Jul 13 18:00:23 CEST 2009


>
> Well, that's easy - as the code has to interface with  GCC  generated
> code, you have to stick with GCC's register usage conventions.
>
I think we were refering here to ATPCS (ARM-THUMB Procedure Call Standard,
i.e. ARM ABI), which tells that first 4 args of the calee are passed by the
caller via r0-r3, and if calee takes more args, the rest is passed via
stack. IMHO, GCC conventions has not much to do with this. I used r10
because there is small probability that it will be clobbered  in start.S.

"register volatile" makes sense only for the special case  of  global
> or  local  register  variables. Whether or not it is implemented in a
> specific version of GCC for a specific architecture is another story;
> please ask this on the GCC mailing list.
>
OK. But since it was implemented in U-Boot and for ARM, I thought that
anybody who wrote this will be so kind to shread some light on this (I am
guessing that that it has something to do with ISR, but in ISR we seem to
preserve r8), and also on the membar two lines below, and spare me from
subscribing to a huge volume gcc mailing lists for posting just one
question. This rests for me one of the most obscure corners of U-Boot.

Best regards,
Drasko DRASKOVIC


More information about the U-Boot mailing list