Bug on memory map wiki page

All about the OSDev Wiki. Discussions about the organization and general structure of articles and how to use the wiki. Request changes here if you don't know how to use the wiki.
Post Reply
captainwiggles
Posts: 23
Joined: Tue Nov 11, 2008 3:03 pm

Bug on memory map wiki page

Post by captainwiggles »

Hey guys, I just signed up so I could edit a bug on the wik, but seems I have to wait to be added to the group first.

I decided to make this post, so that if I forget to make the change, somebody else will see it.

OK. On the page: http://wiki.osdev.org/Memory_Map_(x86) In the ""Upper" Memory (> 1 MiB)" section, the seccond entry of the table, should have size B00000 not 900000.

Thanks for an awesome site.

Andy
User avatar
Love4Boobies
Member
Member
Posts: 2111
Joined: Fri Mar 07, 2008 5:36 pm
Location: Bucharest, Romania

Re: Bug on memory map wiki page

Post by Love4Boobies »

It's not the wiki you should look after. I thought that as first also, but try using the forum for a while. You'll be really surprised.
"Computers in the future may weigh no more than 1.5 tons.", Popular Mechanics (1949)
[ Project UDI ]
User avatar
bewing
Member
Member
Posts: 1401
Joined: Wed Feb 07, 2007 1:45 pm
Location: Eugene, OR, US

Re: Bug on memory map wiki page

Post by bewing »

captainwiggles, as the author of that article, I thank you. And Combuster too, for the actual edit. I disagree with Love4Boobies to some extent -- we should gather as much accurate info into the wiki as we can, to reduce the number of repeated questions. Making factual edits and additions to the wiki is a very important and useful thing.
User avatar
~
Member
Member
Posts: 1227
Joined: Tue Mar 06, 2007 11:17 am
Libera.chat IRC: ArcheFire

Re: Bug on memory map wiki page

Post by ~ »

What about the range from 0xE0000000, etc., to 0xFFFFFFFF or maybe beyond?

Also, are you certain of the range from 0x0C000000 to 0x0FFFFFFF?

Maybe it was a computer with 256Mb sharing some 64Mb of memory for something like video?

Maybe any arbitrary RAM could be used and the BIOS should be queried whenever possible?

Here I include two attachments of the PCI memory usage for my newer PC, seen under Windows and under DOS. It has 512Mb of RAM. It appears by the BIOS as having 448Mb of RAM since it is sharing 64Mb for the integrated video.
Attachments
AMD64Win32.txt
(17.89 KiB) Downloaded 100 times
AMD64DOS.txt
(17.33 KiB) Downloaded 120 times
YouTube:
http://youtube.com/@AltComp126

My x86 emulator/kernel project and software tools/documentation:
http://master.dl.sourceforge.net/projec ... ip?viasf=1
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re: Bug on memory map wiki page

Post by Brendan »

Hi,

The entire physical memory map depends on the hardware (chipset, BIOS, PCI devices present, RAM present, etc).

There are some thing an OS can assume, including what's in the first 1 MiB of the physical address space (because of backward compatibility), the address of the first I/O APIC (if present), the address of the local APIC/s (if present) and the true address of the BIOS ROM (or at least the address that the BIOS ROM ends - you don't know how large the BIOS ROM is so you don't know where it starts).

However, you should never assume anything unless you absolutely have to. There are situations where you need to assume something about the physical address space, but each time you assume something you increase the chance of compatibility problems. This means you can mostly forget about everything you assumed about the physical address space - you should ask the BIOS for a physical address space map (e.g. from Int 0x15 , eax = 0xE820); and you should ask ACPI tables and/or MP specification tables where the I/O APICs are and where the local APICs are; and you should get the addresses of any memory mapped PCI devices from the device's BARs (in PCI configuration space).

Typically, the area from 0xFE000000 to 0xFFFFFFFF is used by the BIOS ROM and specific devices (I/O APICs, local APICs, and HPET if I remember right). Also, typically the area below this is used for memory mapped PCI devices (including 64-bit PCI devices, because a 32-bit OS may not be able to use 64-bit addressing, so a 64-bit PCI device still needs to be mapped below 4 GiB for backward compatibility). This "PCI device" area is typically from 0xC0000000 to 0xFDFFFFFF, or from 0xE0000000 to 0xFDFFFFFF, or maybe from 0x80000000 to 0xFDFFFFFF. Still, these are all just assumptions - nothing guarantees these assumptions are correct, and nothing prevents a BIOS/motherboard manufacturer from doing things completely differently.


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Post Reply