diff --git a/boot1.s b/boot1.s index c8b1149..2e5c968 100644 --- a/boot1.s +++ b/boot1.s @@ -746,6 +746,22 @@ enable_a20_intel_8042: ret +; FIXME: +; - We want this to work in a streaming fashion, so we can see all the reserved regions even if we +; don't have enough space to store all the regions. We can always rerun with a different buffer +; in high memory later. +; - We should maintain a separate list of available regions. When we see a new region: +; - If it's available: +; - Merge it with any other available regions we can. N.B. we may be able to do more than one +; merge (e.g. we get a new region which fills a gap between two others). +; - If we couldn't merge and there's space in the available region list, add it to the list. It +; may be desirable to put it in a sorted position in the list, to make merging easier. +; - If it's not available (reserved, bad etc.): +; - Store it if we can +; - Trim off any memory from the available regions which overlaps with them. N.B. this may +; require splitting an available region into two, and we may not have space to store both +; after the split. +; - We also should maintin a list of ACPI regions, so we can read them later. mem_detect: fnstart push es