Thread (5 messages) flat view 5 messages, 2 authors, 2007-07-16

Re: boottime kernel relocation, what I missed?

From: Becky Bruce <hidden>
Date: 2007-07-16 20:45:34

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.

Cheers,
-Becky
Regards,

Jim




Becky Bruce wrote:
quoted

On Jul 13, 2007, at 5:07 PM, meerkat wrote:
quoted
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.
quoted
meerkat wrote:
quoted
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@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
-- 
View this message in context: http://www.nabble.com/boottime-kernel- 
relocation%2C-what-I-missed--tf4072673.html#a11629480
Sent from the linuxppc-embedded mailing list archive at Nabble.com.

_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help