File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/uapi/asm/bootparam.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef _ASM_X86_BOOTPARAM_H
       2: #define _ASM_X86_BOOTPARAM_H
       3: 
       4: /* setup_data types */
       5: #define SETUP_NONE            0
       6: #define SETUP_E820_EXT            1
       7: #define SETUP_DTB            2
       8: #define SETUP_PCI            3
       9: 
      10: /* ram_size flags */
      11: #define RAMDISK_IMAGE_START_MASK    0x07FF
      12: #define RAMDISK_PROMPT_FLAG        0x8000
      13: #define RAMDISK_LOAD_FLAG        0x4000
      14: 
      15: /* loadflags */
      16: #define LOADED_HIGH    (1<<0)
      17: #define QUIET_FLAG    (1<<5)
      18: #define KEEP_SEGMENTS    (1<<6)
      19: #define CAN_USE_HEAP    (1<<7)
      20: 
      21: /* xloadflags */
      22: #define XLF_KERNEL_64            (1<<0)
      23: #define XLF_CAN_BE_LOADED_ABOVE_4G    (1<<1)
      24: #define XLF_EFI_HANDOVER_32        (1<<2)
      25: #define XLF_EFI_HANDOVER_64        (1<<3)
      26: 
      27: #ifndef __ASSEMBLY__
      28: 
      29: #include <linux/types.h>
      30: #include <linux/screen_info.h>
      31: #include <linux/apm_bios.h>
      32: #include <linux/edd.h>
      33: #include <asm/e820.h>
      34: #include <asm/ist.h>
      35: #include <video/edid.h>
      36: 
      37: /* extensible setup data list node */
      38: struct setup_data {
      39:     __u64 next;
      40:     __u32 type;
      41:     __u32 len;
      42:     __u8 data[0];
      43: };
      44: 
      45: struct setup_header {
      46:     __u8    setup_sects;
      47:     __u16    root_flags;
      48:     __u32    syssize;
      49:     __u16    ram_size;
      50:     __u16    vid_mode;
      51:     __u16    root_dev;
      52:     __u16    boot_flag;
      53:     __u16    jump;
      54:     __u32    header;
      55:     __u16    version;
      56:     __u32    realmode_swtch;
      57:     __u16    start_sys;
      58:     __u16    kernel_version;
      59:     __u8    type_of_loader;
      60:     __u8    loadflags;
      61:     __u16    setup_move_size;
      62:     __u32    code32_start;
      63:     __u32    ramdisk_image;
      64:     __u32    ramdisk_size;
      65:     __u32    bootsect_kludge;
      66:     __u16    heap_end_ptr;
      67:     __u8    ext_loader_ver;
      68:     __u8    ext_loader_type;
      69:     __u32    cmd_line_ptr;
      70:     __u32    initrd_addr_max;
      71:     __u32    kernel_alignment;
      72:     __u8    relocatable_kernel;
      73:     __u8    min_alignment;
      74:     __u16    xloadflags;
      75:     __u32    cmdline_size;
      76:     __u32    hardware_subarch;
      77:     __u64    hardware_subarch_data;
      78:     __u32    payload_offset;
      79:     __u32    payload_length;
      80:     __u64    setup_data;
      81:     __u64    pref_address;
      82:     __u32    init_size;
      83:     __u32    handover_offset;
      84: } __attribute__((packed));
      85: 
      86: struct sys_desc_table {
      87:     __u16 length;
      88:     __u8  table[14];
      89: };
      90: 
      91: /* Gleaned from OFW's set-parameters in cpu/x86/pc/linux.fth */
      92: struct olpc_ofw_header {
      93:     __u32 ofw_magic;    /* OFW signature */
      94:     __u32 ofw_version;
      95:     __u32 cif_handler;    /* callback into OFW */
      96:     __u32 irq_desc_table;
      97: } __attribute__((packed));
      98: 
      99: struct efi_info {
     100:     __u32 efi_loader_signature;
     101:     __u32 efi_systab;
     102:     __u32 efi_memdesc_size;
     103:     __u32 efi_memdesc_version;
     104:     __u32 efi_memmap;
     105:     __u32 efi_memmap_size;
     106:     __u32 efi_systab_hi;
     107:     __u32 efi_memmap_hi;
     108: };
     109: 
     110: /* The so-called "zeropage" */
     111: struct boot_params {
     112:     struct screen_info screen_info;            /* 0x000 */
     113:     struct apm_bios_info apm_bios_info;        /* 0x040 */
     114:     __u8  _pad2[4];                    /* 0x054 */
     115:     __u64  tboot_addr;                /* 0x058 */
     116:     struct ist_info ist_info;            /* 0x060 */
     117:     __u8  _pad3[16];                /* 0x070 */
     118:     __u8  hd0_info[16];    /* obsolete! */        /* 0x080 */
     119:     __u8  hd1_info[16];    /* obsolete! */        /* 0x090 */
     120:     struct sys_desc_table sys_desc_table;        /* 0x0a0 */
     121:     struct olpc_ofw_header olpc_ofw_header;        /* 0x0b0 */
     122:     __u32 ext_ramdisk_image;            /* 0x0c0 */
     123:     __u32 ext_ramdisk_size;                /* 0x0c4 */
     124:     __u32 ext_cmd_line_ptr;                /* 0x0c8 */
     125:     __u8  _pad4[116];                /* 0x0cc */
     126:     struct edid_info edid_info;            /* 0x140 */
     127:     struct efi_info efi_info;            /* 0x1c0 */
     128:     __u32 alt_mem_k;                /* 0x1e0 */
     129:     __u32 scratch;        /* Scratch field! */    /* 0x1e4 */
     130:     __u8  e820_entries;                /* 0x1e8 */
     131:     __u8  eddbuf_entries;                /* 0x1e9 */
     132:     __u8  edd_mbr_sig_buf_entries;            /* 0x1ea */
     133:     __u8  kbd_status;                /* 0x1eb */
     134:     __u8  _pad5[3];                    /* 0x1ec */
     135:     /*
     136:      * The sentinel is set to a nonzero value (0xff) in header.S.
     137:      *
     138:      * A bootloader is supposed to only take setup_header and put
     139:      * it into a clean boot_params buffer. If it turns out that
     140:      * it is clumsy or too generous with the buffer, it most
     141:      * probably will pick up the sentinel variable too. The fact
     142:      * that this variable then is still 0xff will let kernel
     143:      * know that some variables in boot_params are invalid and
     144:      * kernel should zero out certain portions of boot_params.
     145:      */
     146:     __u8  sentinel;                    /* 0x1ef */
     147:     __u8  _pad6[1];                    /* 0x1f0 */
     148:     struct setup_header hdr;    /* setup header */    /* 0x1f1 */
     149:     __u8  _pad7[0x290-0x1f1-sizeof(struct setup_header)];
     150:     __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];    /* 0x290 */
     151:     struct e820entry e820_map[E820MAX];        /* 0x2d0 */
     152:     __u8  _pad8[48];                /* 0xcd0 */
     153:     struct edd_info eddbuf[EDDMAXNR];        /* 0xd00 */
     154:     __u8  _pad9[276];                /* 0xeec */
     155: } __attribute__((packed));
     156: 
     157: enum {
     158:     X86_SUBARCH_PC = 0,
     159:     X86_SUBARCH_LGUEST,
     160:     X86_SUBARCH_XEN,
     161:     X86_SUBARCH_INTEL_MID,
     162:     X86_SUBARCH_CE4100,
     163:     X86_NR_SUBARCHS,
     164: };
     165: 
     166: #endif /* __ASSEMBLY__ */
     167: 
     168: #endif /* _ASM_X86_BOOTPARAM_H */
     169: