Enable -Werror for romcc
[coreboot.git] / util / mkelfImage / include / elf_boot.h
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 #include <stdint.h>
23 typedef uint16_t Elf_Half;
24 typedef uint32_t Elf_Word;
25
26 /*
27  * Elf boot notes...
28  */
29
30 typedef struct Elf_Bhdr
31 {
32         Elf_Word b_signature; /* "0x0E1FB007" */
33         Elf_Word b_size;
34         Elf_Half b_checksum;
35         Elf_Half b_records;
36 } Elf_Bhdr;
37
38 /*
39  * ELF Notes.
40  */
41
42 typedef struct Elf_Nhdr
43 {
44         Elf_Word n_namesz;              /* Length of the note's name.  */
45         Elf_Word n_descsz;              /* Length of the note's descriptor.  */
46         Elf_Word n_type;                /* Type of the note.  */
47 } Elf_Nhdr;
48
49 #endif /* ASSEMBLY */
50
51 /* Standardized Elf image notes for booting... The name for all of these is ELFBoot */
52 #define ELF_NOTE_BOOT           "ELFBoot"
53
54 #define EIN_PROGRAM_NAME        0x00000001
55 /* The program in this ELF file */
56 #define EIN_PROGRAM_VERSION     0x00000002
57 /* The version of the program in this ELF file */
58 #define EIN_PROGRAM_CHECKSUM    0x00000003
59 /* ip style checksum of the memory image. */
60
61
62 /* Linux image notes for booting... The name for all of these is Linux */
63
64 #define LIN_COMMAND_LINE        0x00000001
65 /* The command line to pass to the loaded kernel. */
66 #define LIN_ROOT_DEV            0x00000002
67 /* The root dev to pass to the loaded kernel. */
68 #define LIN_RAMDISK_FLAGS       0x00000003
69 /* Various old ramdisk flags */
70 #define LIN_INITRD_START        0x00000004
71 /* Start of the ramdisk in bytes */
72 #define LIN_INITRD_SIZE         0x00000005
73 /* Size of the ramdisk in bytes */
74
75 /* Notes that are passed to a loaded image */
76 /* For the standard elf boot notes n_namesz must be zero */
77 #define EBN_FIRMWARE_TYPE       0x00000001
78 /* ASCIZ name of the platform firmware. */
79 #define EBN_BOOTLOADER_NAME     0x00000002
80 /* This specifies just the ASCIZ name of the bootloader */
81 #define EBN_BOOTLOADER_VERSION  0x00000003
82 /* This specifies the version of the bootloader as an ASCIZ string */
83 #define EBN_COMMAND_LINE        0x00000004
84 /* This specifies a command line that can be set by user interaction,
85  * and is provided as a free form ASCIZ string to the loaded image.
86  */
87 #define EBN_NOP                 0x00000005
88 /* A note nop note has no meaning, useful for inserting explicit padding */
89 #define EBN_LOADED_IMAGE        0x00000006
90 /* An ASCIZ string naming the loaded image */
91
92
93 /* Etherboot specific notes */
94 #define EB_PARAM_NOTE           "Etherboot"
95 #define EB_IA64_SYSTAB          0x00000001
96 #define EB_IA64_MEMMAP          0x00000002
97 #define EB_IA64_FPSWA           0x00000003
98 #define EB_IA64_CONINFO         0x00000004
99 #define EB_BOOTP_DATA           0x00000005
100 #define EB_HEADER               0x00000006
101 #define EB_IA64_IMAGE_HANDLE    0x00000007
102 #define EB_I386_MEMMAP          0x00000008
103
104
105 #endif /* ELF_BOOT_H */