ΪʲôÆô¶¯ºóµ½BIOS-provided physical RAM map¾ÍͣסÁË£¿
ΪʲôÆô¶¯ºóµ½BIOS-provided physical RAM map¾ÍͣסÁË£¿ÆÁÄ»ÏÔʾ
BIOS-provided physical RAM map£º
BIOS-e820: 0000000000000000 ¨C 000000000009F800 (usable)
BIOS-e820: 00000000000009f800£00000000000a0000 (reserved)
.
.
.
BIOS-e820: 000000000fffe0000£0000001000000000 (reserved)
È»ºó¾Í¿¨×¡ÁË,´òÓ¡³öÀ´ÏÔʾÔÚcopy_edd()ǰ¾ÍͣסÁË
ARCH_SETUP /* x86ϵÁÐûÓÐÈκε͝×÷ */
if (efi_enabled)
efi_init();
else {
printk(KERN_INFO "BIOS-provided physical RAM map:\n");
print_memory_map(machine_specific_memory_setup()); /* ´¦ÀíÄÚ´æÍ¼,×îºó±£´æÔÚe820ÖÐ */
}
copy_edd(); /* ¸´ÖÆÔöÇ¿´ÅÅ̲ÎÊý(À´Ö®setup×Ô¼ìÐÅÏ¢),ʵÑéÐÔÖÊ,CONFIG_EDD */ static void __init print_memory_map(char *who)
{
int i;
for (i = 0; i < e820.nr_map; i++) {
printk(" %s: %016Lx - %016Lx ", who,
e820.map[i].addr,
e820.map[i].addr + e820.map[i].size);
switch (e820.map[i].type) {
case E820_RAM: printk("(usable)\n");
break;
case E820_RESERVED:
printk("(reserved)\n");
break;
case E820_ACPI:
printk("(ACPI data)\n");
break;
case E820_NVS:
printk("(ACPI NVS)\n");
break;
default: printk("type %lu\n", e820.map[i].type);
break;
}
}
}
´òÓ¡³öÀ´e820.nr_mapµÄ´óСΪ11£¬Ñ»·µ½10¾ÍÍ£ÁË
Ò³:
[1]