- Any 32-bit OS cannot use int's below 0x1f for their own use. That is why the
BIOS is not used (apart from the fact it isn't 32-bit). In protected mode, these interrupts are used or reserved by Intel to signal various exceptions such as FPU overflows or page faults etc. So any BIOS that was to be used by these OS's would have to use int's above 0x20 or another call method like fixed addresses for entry to functions. (which may just be a call to the actual location) and also keep the interrupt controllers out of these int numbers.
Intel reserved all interrupts up to 31 (decimal) for processor interrupts, both in real and in pmode ! It's a big mistake of IBM mapping the hardware interrupts standard on these places ! But this can simply be solved , as all OSs do today, by reconfiguring the Interrupt Controller, a simple job.
Linux uses indeed int 80h for OS calls. But Intel has implemented in the 386 so-called call-gates, with which OS calls can easily implemented. This is the way to code your "call to fixed addresses", as OS kernel functions will run in kernel mode (protection level 0) and cannot be called directly through an address by code running in user mode (PL3)
- I assume 32-bit code is used as much as possible, ie. start up in real mode and
switch to protected mode asap. and then deal with all the rest. It doesn't make much difference for boot really, but functions used by OS's should really be 32-bit now (name one *decent* real mode 16-bit OS).
OF COURSE. This is just on of the goals of openBIOS! Read their homepage carefully!
######################################## # # # Pieter Dumon # # # # Pieter.Dumon@rug.ac.be # # # # http://studwww.rug.ac.be/~pdumon # ########################################
--- OpenBIOS -- http://www.linkscape.net/openbios/ openbios-request@linkscape.net Body: un/subscribe Problems? dcinege@psychosis.com