Define the 2.12 bzImage boot protocol: add xloadflags and additional fields to allow the command line, initramfs and struct boot_params to live above the 4 GiB mark. The xloadflags now communicates if this is a 64-bit kernel with the legacy 64-bit entry point and which of the EFI handover entry points are supported. Avoid adding new read flags to loadflags because of claimed bootloaders testing the whole byte for == 1 to determine bzImageness at least until the issue can be researched further. This is based on patches by Yinghai Lu and David Woodhouse. Originally-by: Yinghai Lu <yinghai@kernel.org> Originally-by: David Woodhouse <dwmw2@infradead.org> Acked-by: Yinghai Lu <yinghai@kernel.org> Acked-by: David Woodhouse <dwmw2@infradead.org> Acked-by: Matt Fleming <matt.fleming@intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Link: http://lkml.kernel.org/r/1359058816-7615-26-git-send-email-yinghai@kernel.org Cc: Rob Landley <rob@landley.net> Cc: Gokul Caushik <caushik1@gmail.com> Cc: Josh Triplett <josh@joshtriplett.org> Cc: Joe Millenbach <jmillenbach@gmail.com>
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
|  * setup.ld
 | |
|  *
 | |
|  * Linker script for the i386 setup code
 | |
|  */
 | |
| OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
 | |
| OUTPUT_ARCH(i386)
 | |
| ENTRY(_start)
 | |
| 
 | |
| SECTIONS
 | |
| {
 | |
| 	. = 0;
 | |
| 	.bstext		: { *(.bstext) }
 | |
| 	.bsdata		: { *(.bsdata) }
 | |
| 
 | |
| 	. = 495;
 | |
| 	.header		: { *(.header) }
 | |
| 	.entrytext	: { *(.entrytext) }
 | |
| 	.inittext	: { *(.inittext) }
 | |
| 	.initdata	: { *(.initdata) }
 | |
| 	__end_init = .;
 | |
| 
 | |
| 	.text		: { *(.text) }
 | |
| 	.text32		: { *(.text32) }
 | |
| 
 | |
| 	. = ALIGN(16);
 | |
| 	.rodata		: { *(.rodata*) }
 | |
| 
 | |
| 	.videocards	: {
 | |
| 		video_cards = .;
 | |
| 		*(.videocards)
 | |
| 		video_cards_end = .;
 | |
| 	}
 | |
| 
 | |
| 	. = ALIGN(16);
 | |
| 	.data		: { *(.data*) }
 | |
| 
 | |
| 	.signature	: {
 | |
| 		setup_sig = .;
 | |
| 		LONG(0x5a5aaa55)
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	. = ALIGN(16);
 | |
| 	.bss		:
 | |
| 	{
 | |
| 		__bss_start = .;
 | |
| 		*(.bss)
 | |
| 		__bss_end = .;
 | |
| 	}
 | |
| 	. = ALIGN(16);
 | |
| 	_end = .;
 | |
| 
 | |
| 	/DISCARD/ : { *(.note*) }
 | |
| 
 | |
| 	/*
 | |
| 	 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
 | |
| 	 */
 | |
| 	. = ASSERT(_end <= 0x8000, "Setup too big!");
 | |
| 	. = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
 | |
| 	/* Necessary for the very-old-loader check to work... */
 | |
| 	. = ASSERT(__end_init <= 5*512, "init sections too big!");
 | |
| 
 | |
| }
 |