--- 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/