--- Ronald G Minnich <[EMAIL PROTECTED]> wrote:
> 
> Here's the story. For work I am doing we have to run VGA
> bios. Since that
> only takes 243 bytes I have put that code into linuxbios.
> 
> Stupid VGA bioses call INT 0x10 and INT 0x1a. I hear Jeff
> Garzik laughing.
> I am going to put some (MINIMAL! OPTIONAL!) real-mode IDT

My understaning is:

Real mode interrupt handlers should only store registers in
some memory buffer, switch to protected mode, where all actual
work is being done, and, at return to real mode, restore
registers from (modified by PM code) memory buffer and then
iret/retf2.

Real mode code can be contained within, and initialized by, the
protected mode part.

PM part, in turn, can be kept self-contained, as long as
LinuxBIOS can provide abstract API for hardware (PCI
configuration) access.

> - Real-mode IDT tables can be 0-based, but don't have to be. 
> They can be
> also based at the IDT register (which is 0 by default).

Yes, but extension ROM code will count on IDTR==0 wheh setting
up it's own INT 10 service.

Workaround: two tables, one at 0 and another at where IDTR
points to. Real interrupt INT_NO handler can emulate 8086 by
jumping to location specified for INT_NO in IDT at 0.

> - Real-mode IDT tables are in the CS:IP form, not in the
> larger
> protected-mode form

Yes, real-mode IDT is an array[1024] of SEG:OFFSET pointers to
entry points of corresponding interrupt handlers.

Kostantin


__________________________________________________
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards®
http://movies.yahoo.com/

Reply via email to