Messages in this thread |  | | Date | Sat, 21 Dec 1996 09:45:41 -0800 | From | "Larry M. Augustin" <> | Subject | detecting > 64M on x86 |
| |
Modern x86 BIOSes support detection of memory > 64MB. I have modified arch/i386/boot/setup.S to safely detect the presence of these BIOS features and use them if present to detect more than 64MB RAM.
I now need some advice as to how to return this information to the kernel.
For example, the int 15h ah=c7 get memory map call returns a 42 byte structure that includes how much memory is installed above and below the 16M boundary.
Here are two possible ways to proceed:
1. Assign a 42 byte block in the PARAM page to return the entire data structure. We would still need a way to return the memory for systems that do not support the memory map bios call - probably use the existing PARAM+2 location. 2. Change the PARAM+2 location to return the amount of memory in MB instead of 1K chunks. Currently this location is only a 16-bit word and returns memory on 1K chunks.
The 42-byte memory map data structure is defined as:
word length of table dword local memory between 1M and 16M in 1K blocks dword local memory between 16M and 4G in 1K blocks dword system memory between 1M and 16M in 1K blocks dword system memory between 16M and 4G in 1K blocks dword cacheable memory between 1M and 16M in 1K blocks dword cachaeble memory between 16M and 4G in 1K blocks dword reserved dword reserved
No, I don't know the difference between local and system memory, and I don't know if "cacheable" means the memory is really cached or not, or just that it's not something like memory mapped I/O that can't be cached.
The appeal of solution #1 is that it gives us access to the table in case there's something there that proves useful in the future. The only disadvantage I can see is that it takes up much more space on the PARAM page. I don't know if that's a problem or not.
Solution #2 makes the minimal change to code, and also does not take up any more space on the PARAM page.
Which changes would you like me to see?
Larry
|  |