#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__
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

extern const struct elf_image_note elf_image_notes;

#endif /* ELF_BOOT_H */
