[OpenBIOS] ppc64 MMU issues

Alexander Graf agraf at suse.de
Tue Nov 16 00:23:30 CET 2010

On 16.11.2010, at 00:11, Andreas Färber wrote:

> Am 16.11.2010 um 00:02 schrieb Segher Boessenkool:
>>>> Who's responsible for r2 setup - GCC-generated code or QEMU?
>>> r2 contains the GOT IIRC. But for ABI questions, it's probably best to
>>> consult Segher :). Unless I'm completely mistaken, usually the loader
>>> initializes r2, so in this case the asm code needs to set it up properly.
>> Depends what you call "loader".  Usually your crt1 equivalent sets GPR2.
>> It is probably a good idea to set it in all exception handlers as well
>> (if they want to call C code, or need it otherwise).
> But set it to what value? :)

This is what Linux does:


 * This puts the TOC pointer into r2, offset by 0x8000 (as expected
 * by the toolchain).  It computes the correct value for wherever we
 * are running at the moment, using position-independent code.
        mflr    r0
        bcl     20,31,$+4
0:      mflr    r9
        ld      r2,(p_toc - 0b)(r9)
        add     r2,r2,r9
        mtlr    r0

p_toc:  .llong  __toc_start + 0x8000 - 0b


 .got : AT(ADDR(.got) - (0xc000000000000000 -0x00000000)) {
  __toc_start = .;

Maybe you can get away with default names somehow, not sure :).


More information about the OpenBIOS mailing list