Andy Valencia <vandys@zendo.com> wrote:
> I'm hoping somebody out there can cast a little light on this subject.
> I'm playing with > 16 MB memory configs, and ran into a PC limitation. I
> extract the memory size from a pair of RTC locations, which are combined
> as: (hi << 8) | low. This value is in K, and thus overflows at 64 megs.
> Does somebody know offhand how I decode memory size in this range?
Yes. My bootloader GRUB both recognizes and documents the newer BIOS
interfaces used by PCs. See the web page at:
http://www.uruk.org/~erich/grub/
...and look under the "technical" heading.
In general, there are 3 interfaces:
-- Original PC interface (the one you're talking about) which can
only represent up to about 64 MB, but on some machines actually
only works up to about 15 or 16 MB (generally depending on if you
have an ISA memory hole between 15-16 MB).
-- Newer (EISA?) interface which allows for the ISA memory hole and
can go up to 4 GB.
-- Modern interface which actually maps out an arbitrary number of
memory "regions" which have 64-bit start and length values.
The third one is the way to go if possible. Again, see GRUB and the
"multiboot" standard for details.
GRUB first tries the modern "memory map" interface, then falls back on
the "EISA" interface, then uses the original one if it needs to. Since
many OSes expect the "640K + contiguous memory above 1MB" format, it
also converts as much of what it finds into that format as possible
to be passed to the OS in question (Multiboot-compliant OSes, and
for Linux it passes it as a "mem=XXXk" option on the command-line,
for example).
-- Erich Stefan Boleyn \_ E-mail (preferred): <erich@uruk.org> Mad Genius wanna-be, CyberMuffin \__ (finger me for other stats) Web: http://www.uruk.org/~erich/ Motto: "I'll live forever or die trying"Received on Sat Aug 23 18:39:59 1997
This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:43 PDT