[OpenBIOS] OpenSolaris starts to live on SPARC64

Blue Swirl blauwirbel at gmail.com
Fri Apr 2 18:48:38 CEST 2010

On 4/2/10, Mark Cave-Ayland <mark.cave-ayland at 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.

More information about the OpenBIOS mailing list