On 15.11.2010, at 21:56, Andreas Färber wrote:
[snip]
Last night I finally made some small progress with ppc64: I picked up Alex' suggestion of using slbmte, this does work for ppc but didn't make a big change for ppc64. The 0x700 program exception turned out to be caused by a jump to the isi_exception function descriptor rather than the isi_exception() function. (Yet, the setup_mmu() function did not seem to have a function descriptor, despite both sitting in C code...)
I now get a 0x380 data segment exception, which seems caused by uses of TOC offsets in entry() with r2 being zero, leading to data accesses wrapping around into unmapped memory.
I thought we might be missing some ELF sections in the linker script but my tries based on `powerpc64-linux-gnu-ld --verbose` were unsuccessful. Is there a way to turn on warnings for sections dropped, to rule this out? 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.
Alex