On 4/2/10, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
Blue Swirl wrote:
Sorry, I misread that you had loaded the kernel manually.
The crash seems to happen within OpenBIOS.
Yeah, it did seem to lie within the OpenBIOS symbol range. Perhaps it's something going wrong in one of the CIF calls from the kernel into OB? I seem to recall there's a DEBUG_CIF in libopenbios/client.c that traces these things...
No, this is fetch from kernel/forth.c:589. Pretty difficult to use breakpoints directly.
But I put a breakpoint in trap table to get at least the registers: Breakpoint 3, 0x00000000ffd00680 in trap_table () at ../arch/sparc64/vectors.S:123 123 BTRAPS(0x30) BTRAPS(0x38) Current language: auto; currently asm (gdb) info registers g0 0x0 0x0 g1 0x1b3c059d7 0x1b3c059d7 g2 0x1b327c357 0x1b327c357 g3 0x0 0x0 g4 0x0 0x0 g5 0x0 0x0 g6 0x0 0x0 g7 0x0 0x0 o0 0xffe13a08 0xffe13a08 o1 0x20 0x20 o2 0xffee3000 0xffee3000 o3 0x108 0x108 o4 0xffee3c00 0xffee3c00 o5 0x138 0x138 sp 0xffe019f9 0xffe019f9 o7 0xffd0ce70 0xffd0ce70 l0 0x18125a0 0x18125a0 l1 0x1c00 0x1c00 l2 0x10ba168 0x10ba168 l3 0x10ba000 0x10ba000 l4 0x2 0x2 l5 0x5 0x5 l6 0x10ba128 0x10ba128 l7 0x10ba000 0x10ba000 i0 0x1b8 0x1b8 i1 0xffe28280 0xffe28280 i2 0x0 0x0 i3 0x1a 0x1a i4 0xd8 0xd8 i5 0xffee3000 0xffee3000 fp 0xffe01ab9 0xffe01ab9 i7 0xffd0f714 0xffd0f714 pc 0xffd00680 0xffd00680 <trap_table+1664> npc 0xffd00684 0xffd00684 <trap_table+1668> state 0x4400001505 0x4400001505 fsr 0x0 [ ] fprs 0x0 [ ] y 0x0 0x0 cwp 0x5 0x5 pstate 0x15 [ AG PRIV PEF ] asi 0x0 0x0 ccr 0x44 0x44
The offending instruction is: 0x00000000ffd0e920 <fetch+64>: ldx [ %g2 ], %g2
I can't remember offhand if the global registers are from the caller or alternate ones. If they are already from alternate sets, then we have to use additional GDB to debug also QEMU.