diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/boot/header.S | 6 | ||||
-rw-r--r-- | arch/x86/include/asm/bootparam.h | 3 | ||||
-rw-r--r-- | arch/x86/include/asm/processor.h | 1 | ||||
-rw-r--r-- | arch/x86/kernel/setup.c | 10 |
4 files changed, 16 insertions, 4 deletions
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index a0b426978d55..68c3bfbaff24 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S | |||
@@ -169,7 +169,11 @@ heap_end_ptr: .word _end+STACK_SIZE-512 | |||
169 | # end of setup code can be used by setup | 169 | # end of setup code can be used by setup |
170 | # for local heap purposes. | 170 | # for local heap purposes. |
171 | 171 | ||
172 | pad1: .word 0 | 172 | ext_loader_ver: |
173 | .byte 0 # Extended boot loader version | ||
174 | ext_loader_type: | ||
175 | .byte 0 # Extended boot loader type | ||
176 | |||
173 | cmd_line_ptr: .long 0 # (Header version 0x0202 or later) | 177 | cmd_line_ptr: .long 0 # (Header version 0x0202 or later) |
174 | # If nonzero, a 32-bit pointer | 178 | # If nonzero, a 32-bit pointer |
175 | # to the kernel command line. | 179 | # to the kernel command line. |
diff --git a/arch/x86/include/asm/bootparam.h b/arch/x86/include/asm/bootparam.h index 433adaebf9b6..1724e8de317c 100644 --- a/arch/x86/include/asm/bootparam.h +++ b/arch/x86/include/asm/bootparam.h | |||
@@ -50,7 +50,8 @@ struct setup_header { | |||
50 | __u32 ramdisk_size; | 50 | __u32 ramdisk_size; |
51 | __u32 bootsect_kludge; | 51 | __u32 bootsect_kludge; |
52 | __u16 heap_end_ptr; | 52 | __u16 heap_end_ptr; |
53 | __u16 _pad1; | 53 | __u8 ext_loader_ver; |
54 | __u8 ext_loader_type; | ||
54 | __u32 cmd_line_ptr; | 55 | __u32 cmd_line_ptr; |
55 | __u32 initrd_addr_max; | 56 | __u32 initrd_addr_max; |
56 | __u32 kernel_alignment; | 57 | __u32 kernel_alignment; |
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index fcf4d92e7e04..6384d25121ca 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h | |||
@@ -814,6 +814,7 @@ extern unsigned int BIOS_revision; | |||
814 | 814 | ||
815 | /* Boot loader type from the setup header: */ | 815 | /* Boot loader type from the setup header: */ |
816 | extern int bootloader_type; | 816 | extern int bootloader_type; |
817 | extern int bootloader_version; | ||
817 | 818 | ||
818 | extern char ignore_fpu_irq; | 819 | extern char ignore_fpu_irq; |
819 | 820 | ||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index b4158439bf63..2b093451aec9 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -214,8 +214,8 @@ unsigned long mmu_cr4_features; | |||
214 | unsigned long mmu_cr4_features = X86_CR4_PAE; | 214 | unsigned long mmu_cr4_features = X86_CR4_PAE; |
215 | #endif | 215 | #endif |
216 | 216 | ||
217 | /* Boot loader ID as an integer, for the benefit of proc_dointvec */ | 217 | /* Boot loader ID and version as integers, for the benefit of proc_dointvec */ |
218 | int bootloader_type; | 218 | int bootloader_type, bootloader_version; |
219 | 219 | ||
220 | /* | 220 | /* |
221 | * Setup options | 221 | * Setup options |
@@ -706,6 +706,12 @@ void __init setup_arch(char **cmdline_p) | |||
706 | #endif | 706 | #endif |
707 | saved_video_mode = boot_params.hdr.vid_mode; | 707 | saved_video_mode = boot_params.hdr.vid_mode; |
708 | bootloader_type = boot_params.hdr.type_of_loader; | 708 | bootloader_type = boot_params.hdr.type_of_loader; |
709 | if ((bootloader_type >> 4) == 0xe) { | ||
710 | bootloader_type &= 0xf; | ||
711 | bootloader_type |= (boot_params.hdr.ext_loader_type+0x10) << 4; | ||
712 | } | ||
713 | bootloader_version = bootloader_type & 0xf; | ||
714 | bootloader_version |= boot_params.hdr.ext_loader_ver << 4; | ||
709 | 715 | ||
710 | #ifdef CONFIG_BLK_DEV_RAM | 716 | #ifdef CONFIG_BLK_DEV_RAM |
711 | rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK; | 717 | rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK; |