[SeaBIOS] Help with 16bit and 32bitFlat

Gerd Hoffmann kraxel at redhat.com
Thu Oct 20 11:44:50 CEST 2011


>> The disk access code is called from 16bit mode, and thus it needs to
>> be compiled in 16bit mode.  The link errors you are seeing are there
>> to force a build error (instead of failing mysterously at run time).
>> What does your driver do that requires 32bit mode?

Access special pages for communication with the hypervisor (grant
tables, request ring).

> I thought that, apart from the entry points and some special cases,
> SeaBIOS mostly ran in 32-bit mode. Have I just misunderstood?

Pretty much all initialization code (including drive probing) runs in
32bit mode.  Any 16bit interrupt handling runs in 16bit mode.

>> The ahci driver has to access some memory addresses above 1 meg to
>> work properly and so it uses the pci_readl/writel() functions which
>> trampoline to/from 32bit mode to acomplish this.  If you need to do
>> something similar, you could use that as a model.

Another option would be to have the int15 handler trampoline to 32bit
mode before calling process_op.


More information about the SeaBIOS mailing list