[pcbios] Prepare for multiple splits of hidden e820 memory regions
authorMichael Brown <mcb30@etherboot.org>
Mon, 18 Aug 2008 00:01:45 +0000 (01:01 +0100)
committerMichael Brown <mcb30@etherboot.org>
Mon, 18 Aug 2008 00:01:45 +0000 (01:01 +0100)
commit9737095d49ec21d5139b0f08d2f61005bfbf7c6c
tree2724cb549ce2f8ba8d8f1b532502abf140051471
parent23bca8f9d86da54859996acb07a0bc07daee4955
[pcbios] Prepare for multiple splits of hidden e820 memory regions

Define a list of N allowed memory regions, and split each underlying
e820 region into up to N subregions.  Strip resulting empty regions
out of the map, avoiding using the "return with CF set to strip last
empty region" trick, because it seems that bootmgr.exe in Win2k8 gets
upset if the memory map is terminated with CF set.

This is an intermediate checkin that defines a single allowed memory
region covering the entire 64-bit address space, and uses the existing
map-mangling code on top of the new region-splitting code.  This
sanitises the memory map to the point that Win2k8 is able to boot even
on a system that defines a final zero-length region at the 4GB mark.

I'm checking this in because it may be useful for future debugging
efforts to be able to run with the existing and known-working map
mangling code together with the map sanitisation capabilities of the
new map mangling code.
src/arch/i386/firmware/pcbios/e820mangler.S
src/arch/i386/scripts/i386.lds