L4-Linux fails to boot - hangs setting up IDT
Jean Wolter
jw5 at os.inf.tu-dresden.de
Fri Jan 15 13:48:29 CET 1999
"Paul Phillips" <pphillips at ivue.com> writes:
> 1.) Why are you calculating the address of the table by subtracting
> out EMULIB_CODE_ADDRESS (Which is 0xA0008000?) ?
The emulation library is relocated to address 0xa0008000 and idt_table
is a symbol of the emulation library. If you have a look at the symbol
table you will find
a00084a8 A idt_table
So ((unsigned long)&idt_table - EMULIB_CODE_ADDRESS) is the offset of
the idt within our emulation library.
> 2.) How & why is the emulator code moved to "special page". Where is
> the "special page" set up since paging isn't set up until after this
> code is executed?
We have to copy the code to ensure that it is page aligned. The
special page is mapped into the address space of every unix process
when it raises its first page fault. Every unix process (L4Linux
process) starts at a fixed address, so we know, that the very first
page fault will request the emulation library page.
> 3.) Any clue why this is hanging here? I should have a remote
> debugger set up soon, but I have -nokdb set and I don't get any
> kernel panics or reg dumps. The system just hangs.
If my memory serves right, someone else had the same problem. For some
strange reason L4Linux raised a page fault at this point and the page
fault could not be resolved by the underlying pager. The L4Linux
server now hangs in an endless loop trying to resolve the page
fault. But I'm not sure about that. Michael?
There is a possibility to monitor all page faults in the system, but I
don't know, how you activate that.
Jean
--
I get up each morning, gather my wits.
Pick up the paper, read the obits.
if I'm not there I know I'm not dead.
So I eat a good breakfast and go back to bed. Peete Seeger
More information about the l4-hackers
mailing list