Split rombios32.c up into multiple files. Review changes committed to coreboot, virtualbox, qemu, kvm, and bochs cvs tip. Alter ISRs so that they do not enable irqs. Only call out to other bios functions after minimizing stack usage. Try to write a script to analyze stack usage of 16bit code. Audit all sti/cli calls. Audit all call16 calls to make sure flags is setup properly with respect to irqs. Audit statements where a 32bit intermediary changes meaning of a 16bit comparison. Look into ways to reduce stack usage. Code assumes ebda segment is static - it doesn't read 0x40e. See if using an ld script for 16bit mode is a good idea. The __call16 code does a long jump to the interrupt trampolines - this is unnecessary. Fix makefiles so that they rebuild the required files automatically. Cleanup setting of ES on GET/SET_BDA Possibly implement 32bit pcibios support. Allow one to select adding 32 bit code to 0xf000 or in a separate location. Try generating bios tables at compile time. Move e820 map generation to post time (just have e820 code copy pre made tables back to user).