boottime kernel relocation, what I missed?

Becky Bruce becky.bruce at
Tue Jul 17 06:51:31 EST 2007

On Jul 16, 2007, at 2:36 PM, meerkat wrote:

> So are you saying linker does all the relative reference, that the  
> bl  foo
> is always relative even though the foo is defined in a different  
> module? (In
> my case, bl call is made in head.S, early_init() is defined in  
> another file
> setup.c).

If you see "bl foo", it's relative.  It has to be, because that's how  
the instruction works.   Also, it's not really in a different module,  
it's just a different file, but it's all linked into a single  
executable image.


> Regards,
> Jim
> Becky Bruce wrote:
>> On Jul 13, 2007, at 5:07 PM, meerkat wrote:
>>> Figure that out, the bootstrap actually mapped the first 16M from
>>> C000000 to
>>> the physicall address,
>>> so calling a c routine, as long as it is in the first 16M, is OK
>> I think you're still not understanding the fact that "bl" is a
>> *relative* branch - the branch target in the instruction encoding is
>> just an offset from the current address, not an effective address.
>> The bl should work correctly whether the code is actually running at
>> the link address reported by nm (0xcxxxxxxx in this case), or if it
>> has been loaded and executed elsewhere.
>> Refer to the 32-bit Programming Environments Manual for PowerPC, or
>> in the EREF (if you're using a BookE part - e500/e200) for more
>> details.  If you're just learning PowerPC assembler, you should
>> really give this book a good thourough read.
>>> meerkat wrote:
>>>> Good day all,
>>>> For the first time I begin working on PPC, and on low level, and
>>>> right
>>>> start from boot sequence, one issue puzzled me.
>>>> After bootstrap code (zImage) uncompressed the kernel vmLinux to
>>>> physical
>>>> memory (say from addr 0),
>>>> it jumps to the kernel entry point, _start, using physically  
>>>> address.
>> If you read the book specified above, you will see that branch
>> instructions always specify an effective address, not a physical
>> address.  You can disable translation or map the address so EA=PA,
>> but that's a different issue.
>> -Becky
>> _______________________________________________
>> Linuxppc-embedded mailing list
>> Linuxppc-embedded at
> -- 
> View this message in context: 
> relocation%2C-what-I-missed--tf4072673.html#a11629480
> Sent from the linuxppc-embedded mailing list archive at
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded at

More information about the Linuxppc-embedded mailing list