Looks good, thanks. I've updated the tree at git:// and http://git.infradead.org/users/dwmw2/seabios.git/ to be based on it.
My build now only has 480 bytes of '32bit flat init size'; I suspect I need to mark a whole bunch of functions as VISIBLE32INIT as well as just making them non-static.
I'm still having to hack platform_hardware_setup() somewhat — although I could probably get away with just calling timer_setup() and pci_probe_devices() instead of using it at all.
But we're getting there...