Thanks Eric Seppanen for the comments.
Each item on the list is marked as M (mandatory), R (recommended),
O (optional), A (architecture dependent, not needed on all systems),
C (chipset dependent)
Assembly startup:
M Reset jump to start of LinuxBIOS
M Ensure CPU is in sane state (e.g. Purge Instruction Pipeline)
A Put CPU into protected virtual memory mode
C Do basic init so that DRAM will work
O Enable serial port debugging print
O Enable debugging prints to console graphics
O Memory test
M Set up C environment
M Jump to C code
Hardware startup:
A Configure Cache. Needed here for speed.
A Processor-dependent steps that are required, e.g. microcode patch
M Init C display variables. Required before printk()
M Init malloc memory pool
O Display processor internal details of value (e.g. intel cpuid)
O Pick a PCI method if you need to init PCI
O Size memory so you can tell Linux
A Re-config the cache so that it caches all or memory
O Configure PCI bus
A Mainboard fixup
C enabled extended NVRAM access
A Handle extended machine state (e.g. MTRR)
O Enable keyboard
O Enable floppy
A Enable tables that Linux uses on startup (e.g. SMPBLOCK)
O Set up IRQ tables for Linux
R Enable interrupts
O Final Mainboard Fixup
A Final L2 Configure
M Call non-hardware-dependent linuxbiosmain()
Kernel startup:
O Banner
O Check for keypress, requires that any keyboard setup have been done.
M gunzip setup
M gunzip
M Linux parameter setup
(mistake! move me!) APIC setup
M Jump to Linux