Does anyone have experience with this?
I am trying to access the VESA VBE 3 Protected Mode interface from a driver
(so I can build a framebuffer device).
The VBE 3 spec explains how to find out where the PM interface stuff is, and
says that I need to create 16bit data selectors for a data storage area
(which must be allocated for the PMI), 0xa0000, 0xb0000, 0xb80000, and one
more for a 16bit stack (which must also be allocated for the PMI).
In addition, the bios needs to be copied into RAM, and a 16bit code selector
created that points to it.
It goes on to say that in order to use the interface, I need to switch to
the 16bit stack I allocated, and make a far call using a 16:32 pointer to
the PMI entry point.
I understand (in general terms) the concepts of selectors, but do not
understand how to use them within the 32bit Linux kernel.
I see from the APM code that the gdt is set up with a couple of custom
selectors - is this the approach I should take? Will this work for 16 bit
So far I have added my own entries to the gdt, set them up as best I know
how, but when I make the call to the BIOS, the system hangs (it doesn't even
get as far as an oops).
Any suggestions and/or examples, or even pointers to people/places with more
info will be greatly received.