diff options
Diffstat (limited to 'arch/x86/kernel/head32.c')
| -rw-r--r-- | arch/x86/kernel/head32.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c index 3db059058927..fa1d25dd83e3 100644 --- a/arch/x86/kernel/head32.c +++ b/arch/x86/kernel/head32.c | |||
| @@ -8,7 +8,34 @@ | |||
| 8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
| 9 | #include <linux/start_kernel.h> | 9 | #include <linux/start_kernel.h> |
| 10 | 10 | ||
| 11 | #include <asm/setup.h> | ||
| 12 | #include <asm/sections.h> | ||
| 13 | #include <asm/e820.h> | ||
| 14 | #include <asm/bios_ebda.h> | ||
| 15 | |||
| 11 | void __init i386_start_kernel(void) | 16 | void __init i386_start_kernel(void) |
| 12 | { | 17 | { |
| 18 | reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS"); | ||
| 19 | |||
| 20 | #ifdef CONFIG_BLK_DEV_INITRD | ||
| 21 | /* Reserve INITRD */ | ||
| 22 | if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) { | ||
| 23 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | ||
| 24 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | ||
| 25 | u64 ramdisk_end = ramdisk_image + ramdisk_size; | ||
| 26 | reserve_early(ramdisk_image, ramdisk_end, "RAMDISK"); | ||
| 27 | } | ||
| 28 | #endif | ||
| 29 | reserve_early(init_pg_tables_start, init_pg_tables_end, | ||
| 30 | "INIT_PG_TABLE"); | ||
| 31 | |||
| 32 | reserve_ebda_region(); | ||
| 33 | |||
| 34 | /* | ||
| 35 | * At this point everything still needed from the boot loader | ||
| 36 | * or BIOS or kernel text should be early reserved or marked not | ||
| 37 | * RAM in e820. All other memory is free game. | ||
| 38 | */ | ||
| 39 | |||
| 13 | start_kernel(); | 40 | start_kernel(); |
| 14 | } | 41 | } |
