while others dislike them being extra commits, let's clean them up once and for all for the existing code. If it's ugly, let it only be ugly once :-) Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5507 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef ELF_BOOT_H
 | 
						|
#define ELF_BOOT_H
 | 
						|
 | 
						|
 | 
						|
/* This defines the structure of a table of parameters useful for ELF
 | 
						|
 * bootable images.  These parameters are all passed and generated
 | 
						|
 * by the bootloader to the booted image.  For simplicity and
 | 
						|
 * consistency the Elf Note format is reused.
 | 
						|
 *
 | 
						|
 * All of the information must be Position Independent Data.
 | 
						|
 * That is it must be safe to relocate the whole ELF boot parameter
 | 
						|
 * block without changing the meaning or correctnes of the data.
 | 
						|
 * Additionally it must be safe to permute the order of the ELF notes
 | 
						|
 * to any possible permutation without changing the meaning or correctness
 | 
						|
 * of the data.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#define ELF_BHDR_MAGIC		0x0E1FB007
 | 
						|
 | 
						|
#ifndef ASSEMBLY
 | 
						|
#include <stdint.h>
 | 
						|
typedef uint16_t Elf_Half;
 | 
						|
typedef uint32_t Elf_Word;
 | 
						|
 | 
						|
/*
 | 
						|
 * Elf boot notes...
 | 
						|
 */
 | 
						|
 | 
						|
typedef struct Elf_Bhdr
 | 
						|
{
 | 
						|
	Elf_Word b_signature; /* "0x0E1FB007" */
 | 
						|
	Elf_Word b_size;
 | 
						|
	Elf_Half b_checksum;
 | 
						|
	Elf_Half b_records;
 | 
						|
} Elf_Bhdr;
 | 
						|
 | 
						|
/*
 | 
						|
 * ELF Notes.
 | 
						|
 */
 | 
						|
 | 
						|
typedef struct Elf_Nhdr
 | 
						|
{
 | 
						|
	Elf_Word n_namesz;		/* Length of the note's name.  */
 | 
						|
	Elf_Word n_descsz;		/* Length of the note's descriptor.  */
 | 
						|
	Elf_Word n_type;		/* Type of the note.  */
 | 
						|
} Elf_Nhdr;
 | 
						|
 | 
						|
#endif /* ASSEMBLY */
 | 
						|
 | 
						|
/* Standardized Elf image notes for booting... The name for all of these is ELFBoot */
 | 
						|
#define ELF_NOTE_BOOT		"ELFBoot"
 | 
						|
 | 
						|
#define EIN_PROGRAM_NAME	0x00000001
 | 
						|
/* The program in this ELF file */
 | 
						|
#define EIN_PROGRAM_VERSION	0x00000002
 | 
						|
/* The version of the program in this ELF file */
 | 
						|
#define EIN_PROGRAM_CHECKSUM	0x00000003
 | 
						|
/* ip style checksum of the memory image. */
 | 
						|
 | 
						|
 | 
						|
/* Linux image notes for booting... The name for all of these is Linux */
 | 
						|
 | 
						|
#define LIN_COMMAND_LINE	0x00000001
 | 
						|
/* The command line to pass to the loaded kernel. */
 | 
						|
#define LIN_ROOT_DEV		0x00000002
 | 
						|
/* The root dev to pass to the loaded kernel. */
 | 
						|
#define LIN_RAMDISK_FLAGS	0x00000003
 | 
						|
/* Various old ramdisk flags */
 | 
						|
#define LIN_INITRD_START	0x00000004
 | 
						|
/* Start of the ramdisk in bytes */
 | 
						|
#define LIN_INITRD_SIZE		0x00000005
 | 
						|
/* Size of the ramdisk in bytes */
 | 
						|
 | 
						|
/* Notes that are passed to a loaded image */
 | 
						|
/* For the standard elf boot notes n_namesz must be zero */
 | 
						|
#define EBN_FIRMWARE_TYPE	0x00000001
 | 
						|
/* ASCIZ name of the platform firmware. */
 | 
						|
#define EBN_BOOTLOADER_NAME	0x00000002
 | 
						|
/* This specifies just the ASCIZ name of the bootloader */
 | 
						|
#define EBN_BOOTLOADER_VERSION	0x00000003
 | 
						|
/* This specifies the version of the bootloader as an ASCIZ string */
 | 
						|
#define EBN_COMMAND_LINE	0x00000004
 | 
						|
/* This specifies a command line that can be set by user interaction,
 | 
						|
 * and is provided as a free form ASCIZ string to the loaded image.
 | 
						|
 */
 | 
						|
#define EBN_NOP			0x00000005
 | 
						|
/* A note nop note has no meaning, useful for inserting explicit padding */
 | 
						|
#define EBN_LOADED_IMAGE	0x00000006
 | 
						|
/* An ASCIZ string naming the loaded image */
 | 
						|
 | 
						|
 | 
						|
/* Etherboot specific notes */
 | 
						|
#define EB_PARAM_NOTE		"Etherboot"
 | 
						|
#define EB_IA64_SYSTAB		0x00000001
 | 
						|
#define EB_IA64_MEMMAP		0x00000002
 | 
						|
#define EB_IA64_FPSWA		0x00000003
 | 
						|
#define EB_IA64_CONINFO		0x00000004
 | 
						|
#define EB_BOOTP_DATA		0x00000005
 | 
						|
#define EB_HEADER		0x00000006
 | 
						|
#define EB_IA64_IMAGE_HANDLE	0x00000007
 | 
						|
#define EB_I386_MEMMAP		0x00000008
 | 
						|
 | 
						|
 | 
						|
#endif /* ELF_BOOT_H */
 |