diff options
Diffstat (limited to 'arch/x86/kernel/head32.c')
| -rw-r--r-- | arch/x86/kernel/head32.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c index 5051b94c9069..b2e246037392 100644 --- a/arch/x86/kernel/head32.c +++ b/arch/x86/kernel/head32.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
| 9 | #include <linux/start_kernel.h> | 9 | #include <linux/start_kernel.h> |
| 10 | #include <linux/mm.h> | ||
| 10 | 11 | ||
| 11 | #include <asm/setup.h> | 12 | #include <asm/setup.h> |
| 12 | #include <asm/sections.h> | 13 | #include <asm/sections.h> |
| @@ -29,14 +30,25 @@ static void __init i386_default_early_setup(void) | |||
| 29 | 30 | ||
| 30 | void __init i386_start_kernel(void) | 31 | void __init i386_start_kernel(void) |
| 31 | { | 32 | { |
| 33 | #ifdef CONFIG_X86_TRAMPOLINE | ||
| 34 | /* | ||
| 35 | * But first pinch a few for the stack/trampoline stuff | ||
| 36 | * FIXME: Don't need the extra page at 4K, but need to fix | ||
| 37 | * trampoline before removing it. (see the GDT stuff) | ||
| 38 | */ | ||
| 39 | reserve_early_overlap_ok(PAGE_SIZE, PAGE_SIZE + PAGE_SIZE, | ||
| 40 | "EX TRAMPOLINE"); | ||
| 41 | #endif | ||
| 42 | |||
| 32 | reserve_early(__pa_symbol(&_text), __pa_symbol(&__bss_stop), "TEXT DATA BSS"); | 43 | reserve_early(__pa_symbol(&_text), __pa_symbol(&__bss_stop), "TEXT DATA BSS"); |
| 33 | 44 | ||
| 34 | #ifdef CONFIG_BLK_DEV_INITRD | 45 | #ifdef CONFIG_BLK_DEV_INITRD |
| 35 | /* Reserve INITRD */ | 46 | /* Reserve INITRD */ |
| 36 | if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) { | 47 | if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) { |
| 48 | /* Assume only end is not page aligned */ | ||
| 37 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | 49 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; |
| 38 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | 50 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; |
| 39 | u64 ramdisk_end = ramdisk_image + ramdisk_size; | 51 | u64 ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size); |
| 40 | reserve_early(ramdisk_image, ramdisk_end, "RAMDISK"); | 52 | reserve_early(ramdisk_image, ramdisk_end, "RAMDISK"); |
| 41 | } | 53 | } |
| 42 | #endif | 54 | #endif |
