|
|
|
|
@ -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
|
|
|
|
|
|