@Kemp
Yeah, I must've confused some concepts ;D
[hr]
@JoeKayzA
(...)The mechanism you are using in your code should work, however you can't use 32bit pointers from there. (...)
That's what I really meant to ask: if there were some constraints to the code. Sorry if I wasn't explicit
[hr]
Another question; Multiboot specification says the following about each memory region info (size/structure pairs) in the memory map:
(...) type is the variety of address range represented, where a value of 1 indicates available RAM, and all other values currently indicated a reserved area. (...)
Do you guys know where to find the meaning of all types? (in my pc I get type 0x1, 0x2, 0x3 and 0x4)
Last question on this post; I'm a little confused when trying to interpret the memory map and memory sizes passed by GRUB. Here's how:
memory map (only memory regions with type 0x1 listed here):
- base_addr = 0x0, length = 0x9FC00
- base_addr = 0x100000, length = 0x1FEF0000
memory size:
base = 639 KB
extended = 523200 KB
In the memory map, the first one is the base memory: 0x9FC00 = 639 KB, so it's all ok.
The second is the extended memory: 0x1FEF0000 - 0x100000 = 0x1FDF0000 = 522176 KB
But this one is different from the extended memory size. Now if I add 1024 KB to it: 522176 + 1024 = 523200 KB, it will equal the extended memory size..
This shouldn't happen, right?