coreboot/util/mkelfImage/linux-i386/x86-linux.h
<<
>>
Prefs
   1#ifndef X86_LINUX_H
   2#define X86_LINUX_H
   3
   4#define E820MAP 0x2d0           /* our map */
   5#define E820MAX 32              /* number of entries in E820MAP */
   6#define E820NR  0x1e8           /* # entries in E820MAP */
   7
   8#ifndef ASSEMBLY
   9
  10struct e820entry {
  11        uint64_t addr;  /* start of memory segment */
  12        uint64_t size;  /* size of memory segment */
  13        uint32_t type;          /* type of memory segment */
  14#define E820_RAM        1
  15#define E820_RESERVED   2
  16#define E820_ACPI       3 /* usable as RAM once ACPI tables have been read */
  17#define E820_NVS        4
  18} __attribute__((packed));
  19
  20/* FIXME expand on drive_info_struct... */
  21struct drive_info_struct {
  22        uint8_t dummy[32];
  23};
  24struct sys_desc_table {
  25        uint16_t length;
  26        uint8_t  table[318];
  27};
  28
  29struct apm_bios_info {
  30        uint16_t version;       /* 0x40 */
  31        uint16_t cseg;          /* 0x42 */
  32        uint32_t offset;        /* 0x44 */
  33        uint16_t cseg_16;       /* 0x48 */
  34        uint16_t dseg;          /* 0x4a */
  35        uint16_t flags;         /* 0x4c */
  36        uint16_t cseg_len;      /* 0x4e */
  37        uint16_t cseg_16_len;   /* 0x50 */
  38        uint16_t dseg_len;      /* 0x52 */
  39        uint8_t  reserved[44];  /* 0x54 */
  40};
  41
  42
  43struct x86_linux_param_header {
  44        uint8_t  orig_x;                        /* 0x00 */
  45        uint8_t  orig_y;                        /* 0x01 */
  46        uint16_t ext_mem_k;                     /* 0x02 -- EXT_MEM_K sits here */
  47        uint16_t orig_video_page;               /* 0x04 */
  48        uint8_t  orig_video_mode;               /* 0x06 */
  49        uint8_t  orig_video_cols;               /* 0x07 */
  50        uint16_t unused2;                       /* 0x08 */
  51        uint16_t orig_video_ega_bx;             /* 0x0a */
  52        uint16_t unused3;                       /* 0x0c */
  53        uint8_t  orig_video_lines;              /* 0x0e */
  54        uint8_t  orig_video_isVGA;              /* 0x0f */
  55        uint16_t orig_video_points;             /* 0x10 */
  56
  57        /* VESA graphic mode -- linear frame buffer */
  58        uint16_t lfb_width;                     /* 0x12 */
  59        uint16_t lfb_height;                    /* 0x14 */
  60        uint16_t lfb_depth;                     /* 0x16 */
  61        uint32_t lfb_base;                      /* 0x18 */
  62        uint32_t lfb_size;                      /* 0x1c */
  63        uint16_t cl_magic;                      /* 0x20 */
  64#define CL_MAGIC_VALUE 0xA33F
  65        uint16_t cl_offset;                     /* 0x22 */
  66        uint16_t lfb_linelength;                /* 0x24 */
  67        uint8_t  red_size;                      /* 0x26 */
  68        uint8_t  red_pos;                       /* 0x27 */
  69        uint8_t  green_size;                    /* 0x28 */
  70        uint8_t  green_pos;                     /* 0x29 */
  71        uint8_t  blue_size;                     /* 0x2a */
  72        uint8_t  blue_pos;                      /* 0x2b */
  73        uint8_t  rsvd_size;                     /* 0x2c */
  74        uint8_t  rsvd_pos;                      /* 0x2d */
  75        uint16_t vesapm_seg;                    /* 0x2e */
  76        uint16_t vesapm_off;                    /* 0x30 */
  77        uint16_t pages;                         /* 0x32 */
  78        uint8_t  reserved4[12];                 /* 0x34 -- 0x3f reserved for future expansion */
  79
  80        struct apm_bios_info apm_bios_info;     /* 0x40 */
  81        struct drive_info_struct drive_info;    /* 0x80 */
  82        struct sys_desc_table sys_desc_table;   /* 0xa0 */
  83        uint32_t alt_mem_k;                     /* 0x1e0 */
  84        uint8_t  reserved5[4];                  /* 0x1e4 */
  85        uint8_t  e820_map_nr;                   /* 0x1e8 */
  86        uint8_t  reserved6[8];                  /* 0x1e9 */
  87        uint8_t  setup_sects;                   /* 0x1f1 */
  88        uint16_t mount_root_rdonly;             /* 0x1f2 */
  89        uint8_t  reserved7[4];                  /* 0x1f4 */
  90        uint16_t ramdisk_flags;                 /* 0x1f8 */
  91#define RAMDISK_IMAGE_START_MASK        0x07FF
  92#define RAMDISK_PROMPT_FLAG             0x8000
  93#define RAMDISK_LOAD_FLAG               0x4000
  94        uint16_t vid_mode;                      /* 0x1fa */
  95        uint16_t root_dev;                      /* 0x1fc */
  96        uint8_t  reserved9[1];                  /* 0x1fe */
  97        uint8_t  aux_device_info;               /* 0x1ff */
  98        /* 2.00+ */
  99        uint8_t  reserved10[2];                 /* 0x200 */
 100        uint8_t  header_magic[4];               /* 0x202 */
 101        uint16_t protocol_version;              /* 0x206 */
 102        uint8_t  reserved11[8];                 /* 0x208 */
 103        uint8_t  loader_type;                   /* 0x210 */
 104#define LOADER_TYPE_LOADLIN         1
 105#define LOADER_TYPE_BOOTSECT_LOADER 2
 106#define LOADER_TYPE_SYSLINUX        3
 107#define LOADER_TYPE_ETHERBOOT       4
 108#define LOADER_TYPE_UNKNOWN         0xFF
 109        uint8_t  loader_flags;                  /* 0x211 */
 110        uint8_t  reserved12[2];                 /* 0x212 */
 111        uint32_t kernel_start;                  /* 0x214 */
 112        uint32_t initrd_start;                  /* 0x218 */
 113        uint32_t initrd_size;                   /* 0x21c */
 114        uint8_t  reserved13[4];                 /* 0x220 */
 115        /* 2.01+ */
 116        uint16_t heap_end_ptr;                  /* 0x224 */
 117        uint8_t  reserved14[2];                 /* 0x226 */
 118        /* 2.02+ */
 119        uint32_t cmd_line_ptr;                  /* 0x228 */
 120        /* 2.03+ */
 121        uint32_t initrd_addr_max;               /* 0x22c */
 122        uint8_t  reserved15[160];               /* 0x230 */
 123        struct e820entry e820_map[E820MAX];     /* 0x2d0 */
 124                                                /* 0x550 */
 125#define COMMAND_LINE_SIZE 256
 126};
 127
 128struct x86_linux_header {
 129        uint8_t  reserved1[0x1f1];              /* 0x000 */
 130        uint8_t  setup_sects;                   /* 0x1f1 */
 131        uint16_t root_flags;                    /* 0x1f2 */
 132        uint8_t  reserved2[6];                  /* 0x1f4 */
 133        uint16_t vid_mode;                      /* 0x1fa */
 134        uint16_t root_dev;                      /* 0x1fc */
 135        uint16_t boot_sector_magic;             /* 0x1fe */
 136        /* 2.00+ */
 137        uint8_t  reserved3[2];                  /* 0x200 */
 138        uint8_t  header_magic[4];               /* 0x202 */
 139        uint16_t protocol_version;              /* 0x206 */
 140        uint32_t realmode_swtch;                /* 0x208 */
 141        uint16_t start_sys;                     /* 0x20c */
 142        uint16_t kver_addr;                     /* 0x20e */
 143        uint8_t  type_of_loader;                /* 0x210 */
 144        uint8_t  loadflags;                     /* 0x211 */
 145        uint16_t setup_move_size;               /* 0x212 */
 146        uint32_t code32_start;                  /* 0x214 */
 147        uint32_t ramdisk_image;                 /* 0x218 */
 148        uint32_t ramdisk_size;                  /* 0x21c */
 149        uint8_t  reserved4[4];                  /* 0x220 */
 150        /* 2.01+ */
 151        uint16_t heap_end_ptr;                  /* 0x224 */
 152        uint8_t  reserved5[2];                  /* 0x226 */
 153        /* 2.02+ */
 154        uint32_t cmd_line_ptr;                  /* 0x228 */
 155        /* 2.03+ */
 156        uint32_t initrd_addr_max;               /* 0x22c */
 157        uint8_t  tail[32*1024];                 /* 0x230 */
 158} __attribute__ ((packed));
 159
 160#endif /* ASSEMBLY */
 161
 162#endif /* X86_LINUX_H */
 163
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.