x86_scanmem()
Synopsis:
unsigned x86_scanmem (paddr_t beg,
paddr_t end)
Description:
An x86-only function that scans memory between beg and end looking for RAM, and returns the total amount of RAM found. It scans memory performing a R/W test of 3 values at the start of each 4 KB page. Each page is marked with a unique value. It then rescans the memory looking for contiguous areas of memory and adds them to the asinfo entry in the system page.
A special check is made for a block of memory between addresses
0xB0000
and 0xBFFFF
, inclusive. If memory is
found there, the block is skipped (since it's probably the dual-ported memory of a
VGA card).
The call x86_scanmem (0, 0xFFFFFF)
would locate all memory in the
first 16 megabytes of memory (except VGA memory). You may make multiple calls to
x86_scanmem() to different areas of memory in order to step
over known areas of dual-ported memory with hardware.
Returns:
- >0
- Success