Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / include / arch / common / xcoff.h
diff --git a/qemu/roms/openbios/include/arch/common/xcoff.h b/qemu/roms/openbios/include/arch/common/xcoff.h
new file mode 100644 (file)
index 0000000..99106fe
--- /dev/null
@@ -0,0 +1,98 @@
+#ifndef XCOFF_H
+#define XCOFF_H
+
+/* XCOFF executable loader */
+
+typedef struct COFF_filehdr_t {
+       uint16_t f_magic;       /* magic number                 */
+       uint16_t f_nscns;       /* number of sections           */
+       uint32_t f_timdat;      /* time & date stamp            */
+       uint32_t f_symptr;      /* file pointer to symtab       */
+       uint32_t f_nsyms;       /* number of symtab entries     */
+       uint16_t f_opthdr;      /* sizeof(optional hdr)         */
+       uint16_t f_flags;       /* flags                        */
+} COFF_filehdr_t;
+
+/* IBM RS/6000 */
+
+#define U802WRMAGIC     0x02DA /* writeable text segments **chh**        */
+#define U802ROMAGIC     0x02DF /* readonly sharable text segments        */
+#define U802TOCMAGIC    0x02E1 /* readonly text segments and TOC          */
+#define U802TOMAGIC     0x01DF
+
+/*
+ *   Bits for f_flags:
+ *
+ *     F_RELFLG        relocation info stripped from file
+ *     F_EXEC          file is executable  (i.e. no unresolved external
+ *                     references)
+ *     F_LNNO          line numbers stripped from file
+ *     F_LSYMS         local symbols stripped from file
+ *     F_MINMAL        this is a minimal object file (".m") output of fextract
+ *     F_UPDATE        this is a fully bound update file, output of ogen
+ *     F_SWABD         this file has had its bytes swabbed (in names)
+ *     F_AR16WR        this file has the byte ordering of an AR16WR
+ *                     (e.g. 11/70) machine
+ *     F_AR32WR        this file has the byte ordering of an AR32WR machine
+ *                     (e.g. vax and iNTEL 386)
+ *     F_AR32W         this file has the byte ordering of an AR32W machine
+ *                     (e.g. 3b,maxi)
+ *     F_PATCH         file contains "patch" list in optional header
+ *     F_NODF          (minimal file only) no decision functions for
+ *                     replaced functions
+ */
+
+#define        COFF_F_RELFLG           0000001
+#define        COFF_F_EXEC             0000002
+#define        COFF_F_LNNO             0000004
+#define        COFF_F_LSYMS            0000010
+#define        COFF_F_MINMAL           0000020
+#define        COFF_F_UPDATE           0000040
+#define        COFF_F_SWABD            0000100
+#define        COFF_F_AR16WR           0000200
+#define        COFF_F_AR32WR           0000400
+#define        COFF_F_AR32W            0001000
+#define        COFF_F_PATCH            0002000
+#define        COFF_F_NODF             0002000
+
+typedef struct COFF_aouthdr_t {
+       uint16_t magic;      /* type of file                          */
+       uint16_t vstamp;     /* version stamp                         */
+       uint32_t tsize;      /* text size in bytes, padded to FW bdry */
+       uint32_t dsize;      /* initialized data "  "                 */
+       uint32_t bsize;      /* uninitialized data "   "              */
+       uint32_t entry;      /* entry pt.                             */
+       uint32_t text_start; /* base of text used for this file       */
+       uint32_t data_start; /* base of data used for this file       */
+       uint32_t o_toc;      /* address of TOC                        */
+       uint16_t o_snentry;  /* section number of entry point         */
+       uint16_t o_sntext;   /* section number of .text section       */
+       uint16_t o_sndata;   /* section number of .data section       */
+       uint16_t o_sntoc;    /* section number of TOC                 */
+       uint16_t o_snloader; /* section number of .loader section     */
+       uint16_t o_snbss;    /* section number of .bss section        */
+       uint16_t o_algntext; /* .text alignment                       */
+       uint16_t o_algndata; /* .data alignment                       */
+       uint16_t o_modtype;  /* module type (??)                      */
+       uint16_t o_cputype;  /* cpu type                              */
+       uint32_t o_maxstack; /* max stack size (??)                   */
+       uint32_t o_maxdata;  /* max data size (??)                    */
+       char o_resv2[12];    /* reserved                              */
+} COFF_aouthdr_t;
+
+#define AOUT_MAGIC     0x010b
+
+typedef struct COFF_scnhdr_t {
+       char s_name[8];         /* section name                         */
+       uint32_t s_paddr;       /* physical address, aliased s_nlib     */
+       uint32_t s_vaddr;       /* virtual address                      */
+       uint32_t s_size;        /* section size                         */
+       uint32_t s_scnptr;      /* file ptr to raw data for section     */
+       uint32_t s_relptr;      /* file ptr to relocation               */
+       uint32_t s_lnnoptr;     /* file ptr to line numbers             */
+       uint16_t s_nreloc;      /* number of relocation entries         */
+       uint16_t s_nlnno;       /* number of line number entries        */
+       uint32_t s_flags;       /* flags                                */
+} COFF_scnhdr_t;
+
+#endif /* XCOFF_H */