Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / include / arch / common / elf_boot.h
diff --git a/qemu/roms/openbios/include/arch/common/elf_boot.h b/qemu/roms/openbios/include/arch/common/elf_boot.h
new file mode 100644 (file)
index 0000000..18487f6
--- /dev/null
@@ -0,0 +1,105 @@
+#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 */