|
|
1.1 ! root 1: #ifndef ELF_BOOT_H ! 2: #define ELF_BOOT_H ! 3: ! 4: ! 5: /* This defines the structure of a table of parameters useful for ELF ! 6: * bootable images. These parameters are all passed and generated ! 7: * by the bootloader to the booted image. For simplicity and ! 8: * consistency the Elf Note format is reused. ! 9: * ! 10: * All of the information must be Position Independent Data. ! 11: * That is it must be safe to relocate the whole ELF boot parameter ! 12: * block without changing the meaning or correctnes of the data. ! 13: * Additionally it must be safe to permute the order of the ELF notes ! 14: * to any possible permutation without changing the meaning or correctness ! 15: * of the data. ! 16: * ! 17: */ ! 18: ! 19: #define ELF_BHDR_MAGIC 0x0E1FB007 ! 20: ! 21: #ifndef __ASSEMBLY__ ! 22: typedef uint16_t Elf_Half; ! 23: typedef uint32_t Elf_Word; ! 24: ! 25: /* ! 26: * Elf boot notes... ! 27: */ ! 28: ! 29: typedef struct Elf_Bhdr ! 30: { ! 31: Elf_Word b_signature; /* "0x0E1FB007" */ ! 32: Elf_Word b_size; ! 33: Elf_Half b_checksum; ! 34: Elf_Half b_records; ! 35: } Elf_Bhdr; ! 36: ! 37: /* ! 38: * ELF Notes. ! 39: */ ! 40: ! 41: typedef struct Elf_Nhdr ! 42: { ! 43: Elf_Word n_namesz; /* Length of the note's name. */ ! 44: Elf_Word n_descsz; /* Length of the note's descriptor. */ ! 45: Elf_Word n_type; /* Type of the note. */ ! 46: } Elf_Nhdr; ! 47: ! 48: #endif /* __ASSEMBLY__ */ ! 49: ! 50: /* Standardized Elf image notes for booting... The name for all of these is ELFBoot */ ! 51: #define ELF_NOTE_BOOT "ELFBoot" ! 52: ! 53: #define EIN_PROGRAM_NAME 0x00000001 ! 54: /* The program in this ELF file */ ! 55: #define EIN_PROGRAM_VERSION 0x00000002 ! 56: /* The version of the program in this ELF file */ ! 57: #define EIN_PROGRAM_CHECKSUM 0x00000003 ! 58: /* ip style checksum of the memory image. */ ! 59: ! 60: ! 61: /* Linux image notes for booting... The name for all of these is Linux */ ! 62: ! 63: #define LIN_COMMAND_LINE 0x00000001 ! 64: /* The command line to pass to the loaded kernel. */ ! 65: #define LIN_ROOT_DEV 0x00000002 ! 66: /* The root dev to pass to the loaded kernel. */ ! 67: #define LIN_RAMDISK_FLAGS 0x00000003 ! 68: /* Various old ramdisk flags */ ! 69: #define LIN_INITRD_START 0x00000004 ! 70: /* Start of the ramdisk in bytes */ ! 71: #define LIN_INITRD_SIZE 0x00000005 ! 72: /* Size of the ramdisk in bytes */ ! 73: ! 74: /* Notes that are passed to a loaded image */ ! 75: /* For the standard elf boot notes n_namesz must be zero */ ! 76: #define EBN_FIRMWARE_TYPE 0x00000001 ! 77: /* ASCIZ name of the platform firmware. */ ! 78: #define EBN_BOOTLOADER_NAME 0x00000002 ! 79: /* This specifies just the ASCIZ name of the bootloader */ ! 80: #define EBN_BOOTLOADER_VERSION 0x00000003 ! 81: /* This specifies the version of the bootloader as an ASCIZ string */ ! 82: #define EBN_COMMAND_LINE 0x00000004 ! 83: /* This specifies a command line that can be set by user interaction, ! 84: * and is provided as a free form ASCIZ string to the loaded image. ! 85: */ ! 86: #define EBN_NOP 0x00000005 ! 87: /* A note nop note has no meaning, useful for inserting explicit padding */ ! 88: #define EBN_LOADED_IMAGE 0x00000006 ! 89: /* An ASCIZ string naming the loaded image */ ! 90: ! 91: ! 92: /* Etherboot specific notes */ ! 93: #define EB_PARAM_NOTE "Etherboot" ! 94: #define EB_IA64_SYSTAB 0x00000001 ! 95: #define EB_IA64_MEMMAP 0x00000002 ! 96: #define EB_IA64_FPSWA 0x00000003 ! 97: #define EB_IA64_CONINFO 0x00000004 ! 98: #define EB_BOOTP_DATA 0x00000005 ! 99: #define EB_HEADER 0x00000006 ! 100: #define EB_IA64_IMAGE_HANDLE 0x00000007 ! 101: #define EB_I386_MEMMAP 0x00000008 ! 102: ! 103: extern const struct elf_image_note elf_image_notes; ! 104: ! 105: #endif /* ELF_BOOT_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.