There were a number of changes in the kernel last 6 months, I just
recently did a pull and the lguest port is screwed. I spent part of
today fixing things and catching up, and am now stuck in the first
taskswitch.

Symptoms are odd. It dies in the first call to gotolabel.

But here is the output from some prints:
mmuswitch done return to 0xc01508de
port/proc.c goto label c0470008 (pc c01013b3, sp c0059778)

That pc is init0; the SP is good, previously allocated in newproc().
Next line after this is from lguest program. Lguest says this:
lguest: Bad address 0xc0012c01 (gpte 01008200)

The gpte is the pte that the lguest kernel code found for that address.

eh? c0012c01? It makes not a lot of sense, that's not word aligned, as
it should be for accesses to cpu0pdb.
And ... it dies in gotolabel here:
TEXT gotolabel(SB), $1
        MOVL    label+0(FP), AX
        MOVL    0(AX), SP                       /* restore sp */
        MOVL    4(AX), AX                       /* put return pc on the stack */
        MOVL    AX, 0(SP)
        MOVL    $1, AX                          /* return 1 */
DIE DIE DIE
        RET

as determined by me putting calls to lguest crash, line by line. Yep,
it dies on an immediate move to AX.

I'm thinking I'm overwriting code somehow. Anybody has ideas on how to
debug this, let me know. I've had lots of weird problems on these
lguest ports but this one takes the cake.

oh yeah I have fixed the port with the new bits in memory.c, l.s, etc.
for handling 8 MB of initial mappings.

ron

Reply via email to