diff options
Diffstat (limited to 'arch/x86/boot/header.S')
| -rw-r--r-- | arch/x86/boot/header.S | 57 | 
1 files changed, 40 insertions, 17 deletions
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index 9ec06a1f6d6..7a6d43a554d 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S @@ -91,10 +91,9 @@ bs_die:  	.section ".bsdata", "a"  bugger_off_msg: -	.ascii	"Direct floppy boot is not supported. " -	.ascii	"Use a boot loader program instead.\r\n" +	.ascii	"Use a boot loader.\r\n"  	.ascii	"\n" -	.ascii	"Remove disk and press any key to reboot ...\r\n" +	.ascii	"Remove disk and press any key to reboot...\r\n"  	.byte	0  #ifdef CONFIG_EFI_STUB @@ -108,7 +107,7 @@ coff_header:  #else  	.word	0x8664				# x86-64  #endif -	.word	3				# nr_sections +	.word	4				# nr_sections  	.long	0 				# TimeDateStamp  	.long	0				# PointerToSymbolTable  	.long	1				# NumberOfSymbols @@ -250,6 +249,25 @@ section_table:  	.word	0				# NumberOfLineNumbers  	.long	0x60500020			# Characteristics (section flags) +	# +	# The offset & size fields are filled in by build.c. +	# +	.ascii	".bss" +	.byte	0 +	.byte	0 +	.byte	0 +	.byte	0 +	.long	0 +	.long	0x0 +	.long	0				# Size of initialized data +						# on disk +	.long	0x0 +	.long	0				# PointerToRelocations +	.long	0				# PointerToLineNumbers +	.word	0				# NumberOfRelocations +	.word	0				# NumberOfLineNumbers +	.long	0xc8000080			# Characteristics (section flags) +  #endif /* CONFIG_EFI_STUB */  	# Kernel attributes; used by setup.  This is part 1 of the @@ -283,7 +301,7 @@ _start:  	# Part 2 of the header, from the old setup.S  		.ascii	"HdrS"		# header signature -		.word	0x020c		# header version number (>= 0x0105) +		.word	0x020d		# header version number (>= 0x0105)  					# or else old loadlin-1.5 will fail)  		.globl realmode_swtch  realmode_swtch:	.word	0, 0		# default_switch, SETUPSEG @@ -350,7 +368,7 @@ cmd_line_ptr:	.long	0		# (Header version 0x0202 or later)  					# can be located anywhere in  					# low memory 0x10000 or higher. -ramdisk_max:	.long 0x7fffffff +initrd_addr_max: .long 0x7fffffff  					# (Header version 0x0203 or later)  					# The highest safe address for  					# the contents of an initrd @@ -383,15 +401,26 @@ xloadflags:  #endif  #ifdef CONFIG_EFI_STUB -# ifdef CONFIG_X86_64 -#  define XLF23 XLF_EFI_HANDOVER_64		/* 64-bit EFI handover ok */ +# ifdef CONFIG_EFI_MIXED +#  define XLF23 (XLF_EFI_HANDOVER_32|XLF_EFI_HANDOVER_64)  # else -#  define XLF23 XLF_EFI_HANDOVER_32		/* 32-bit EFI handover ok */ +#  ifdef CONFIG_X86_64 +#   define XLF23 XLF_EFI_HANDOVER_64		/* 64-bit EFI handover ok */ +#  else +#   define XLF23 XLF_EFI_HANDOVER_32		/* 32-bit EFI handover ok */ +#  endif  # endif  #else  # define XLF23 0  #endif -			.word XLF0 | XLF1 | XLF23 + +#if defined(CONFIG_X86_64) && defined(CONFIG_EFI) && defined(CONFIG_KEXEC) +# define XLF4 XLF_EFI_KEXEC +#else +# define XLF4 0 +#endif + +			.word XLF0 | XLF1 | XLF23 | XLF4  cmdline_size:   .long   COMMAND_LINE_SIZE-1     #length of the command line,                                                  #added with boot protocol @@ -419,13 +448,7 @@ pref_address:		.quad LOAD_PHYSICAL_ADDR	# preferred load addr  #define INIT_SIZE VO_INIT_SIZE  #endif  init_size:		.long INIT_SIZE		# kernel initialization size -handover_offset: -#ifdef CONFIG_EFI_STUB -  			.long 0x30		# offset to the handover -						# protocol entry point -#else -			.long 0 -#endif +handover_offset:	.long 0			# Filled in by build.c  # End of setup header #####################################################  | 
