[SeaBIOS] Help with 16bit and 32bitFlat
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