[coreboot] [RFC] port bochs-bios to gcc

Kevin O'Connor kevin at koconnor.net
Tue Feb 26 01:51:07 CET 2008


On Mon, Feb 25, 2008 at 10:44:55AM +0100, Stefan Reinauer wrote:
> Maybe we could even use the VSA loader to run bochs bios, instead of ADLO? 
> It's all 16bit lumber ;)

Hi Stefan,

ADLO is a fork of the bochs bios - so, they're really the same thing.
There are some new things added to bochs-bios (for example, acpi table
creation), so I've decided to start with it.

I plan to have a 32-bit entry point for the code, so I don't think any
special loader is needed.  Just load it in ram and jump to it.

> ADLO is so fragile because it was written in assembler (so no stack is 
> needed?!?), reimplementing all the things we have in coreboot in C. So 
> recognizing that it just another loader would simplify and stabilize things 
> quite a bit.

ADLO (and the bochs bios) is using the bcc compiler.  The code itself
is a mix of C and 16bit assembler.  The code uses the stack liberally
so that's not a reason for using assembler.

Also, I don't really see a lot of overlap between coreboot and
bochs-bios.  The former seems more interested in initializing
hardware, while the latter is primarily implementing real-mode
callbacks.  I see more overlap between filo and bochs-bios.

> Someone might say we can do this with libpayload or by adding a lot of 
> chipset specific code to ADLO and rewrite it from scratch. Then we're at 
> 2500 lines of code instead of 25 and we have a nasty multi-staging.

I don't see a 16bit bios needing a lot of chipset specific code.
Sure, the bios needs to access the harddrives, keyboard, rtc, etc..
However, it only needs to implement basic PIO support, and most
hardware vendors implement a backwards compatibility mode for these
devices.

-Kevin




More information about the coreboot mailing list