[SeaBIOS] Help with 16bit and 32bitFlat

Kevin O'Connor kevin at koconnor.net
Thu Oct 20 14:42:38 CEST 2011


On Thu, Oct 20, 2011 at 07:33:42AM +0100, Ian Campbell wrote:
> On Wed, 2011-10-19 at 20:25 -0400, Kevin O'Connor wrote:
> > On Wed, Oct 19, 2011 at 04:08:06PM +0900, Daniel Castro wrote:
> > > Hello,
> > > 
> > > I am trying to add a process_op in block.c for Xen, yet the linker
> > > throws an error for out rom16, yet my code will only run in 32Bit
> > > FLAT.
> > > The specific error is undefined referece to process_xen_op (my
> > > function defined elsewhere) Here is the make output:
> > 
> > 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?
> 
> I thought that, apart from the entry points and some special cases,
> SeaBIOS mostly ran in 32-bit mode. Have I just misunderstood?

All the init and boot code runs in 32bit mode.  However, the 16bit
handlers still run in 16bit mode.

There has been talk of using SMM to trampoline into 32bit mode for
more of the handlers.  Anything less than SMM can't trampoline 100%
reliably (and even SMM may be difficult to get correct).

-Kevin



More information about the SeaBIOS mailing list