Annotation of qemu/roms/ipxe/src/arch/i386/include/bzimage.h, revision 1.1

1.1     ! root        1: #ifndef _BZIMAGE_H
        !             2: #define _BZIMAGE_H
        !             3: 
        !             4: FILE_LICENCE ( GPL2_OR_LATER );
        !             5: 
        !             6: #include <stdint.h>
        !             7: 
        !             8: /**
        !             9:  * A bzImage header
        !            10:  *
        !            11:  * As documented in Documentation/i386/boot.txt
        !            12:  */
        !            13: struct bzimage_header {
        !            14:        /** The size of the setup in sectors
        !            15:         *
        !            16:         * If this field contains 0, assume it contains 4.
        !            17:         */
        !            18:        uint8_t setup_sects;
        !            19:        /** If set, the root is mounted readonly */
        !            20:        uint16_t root_flags;
        !            21:        /** DO NOT USE - for bootsect.S use only */
        !            22:        uint16_t syssize;
        !            23:        /** DO NOT USE - obsolete */
        !            24:        uint16_t swap_dev;
        !            25:        /** DO NOT USE - for bootsect.S use only */
        !            26:        uint16_t ram_size;
        !            27:        /** Video mode control */
        !            28:        uint16_t vid_mode;
        !            29:        /** Default root device number */
        !            30:        uint16_t root_dev;
        !            31:        /** 0xAA55 magic number */
        !            32:        uint16_t boot_flag;
        !            33:        /** Jump instruction */
        !            34:        uint16_t jump;
        !            35:        /** Magic signature "HdrS" */
        !            36:        uint32_t header;
        !            37:        /** Boot protocol version supported */
        !            38:        uint16_t version;
        !            39:        /** Boot loader hook (see below) */
        !            40:        uint32_t realmode_swtch;
        !            41:        /** The load-low segment (0x1000) (obsolete) */
        !            42:        uint16_t start_sys;
        !            43:        /** Pointer to kernel version string */
        !            44:        uint16_t kernel_version;
        !            45:        /** Boot loader identifier */
        !            46:        uint8_t type_of_loader;
        !            47:        /** Boot protocol option flags */
        !            48:        uint8_t loadflags;
        !            49:        /** Move to high memory size (used with hooks) */
        !            50:        uint16_t setup_move_size;
        !            51:        /** Boot loader hook (see below) */
        !            52:        uint32_t code32_start;
        !            53:        /** initrd load address (set by boot loader) */
        !            54:        uint32_t ramdisk_image;
        !            55:        /** initrd size (set by boot loader) */
        !            56:        uint32_t ramdisk_size;
        !            57:        /** DO NOT USE - for bootsect.S use only */
        !            58:        uint32_t bootsect_kludge;
        !            59:        /** Free memory after setup end */
        !            60:        uint16_t heap_end_ptr;
        !            61:        /** Unused */
        !            62:        uint16_t pad1;
        !            63:        /** 32-bit pointer to the kernel command line */
        !            64:        uint32_t cmd_line_ptr;
        !            65:        /** Highest legal initrd address */
        !            66:        uint32_t initrd_addr_max;
        !            67:        /** Physical addr alignment required for kernel */
        !            68:        uint32_t kernel_alignment;
        !            69:        /** Whether kernel is relocatable or not */
        !            70:        uint8_t relocatable_kernel;
        !            71:        /** Unused */
        !            72:        uint8_t pad2[3];
        !            73:        /** Maximum size of the kernel command line */
        !            74:        uint32_t cmdline_size;
        !            75: } __attribute__ (( packed ));
        !            76: 
        !            77: /** Offset of bzImage header within kernel image */
        !            78: #define BZI_HDR_OFFSET 0x1f1
        !            79: 
        !            80: /** bzImage boot flag value */
        !            81: #define BZI_BOOT_FLAG 0xaa55
        !            82: 
        !            83: /** bzImage magic signature value */
        !            84: #define BZI_SIGNATURE 0x53726448
        !            85: 
        !            86: /** bzImage boot loader identifier for Etherboot */
        !            87: #define BZI_LOADER_TYPE_ETHERBOOT 0x40
        !            88: 
        !            89: /** bzImage boot loader identifier for iPXE
        !            90:  *
        !            91:  * We advertise ourselves as Etherboot version 6.
        !            92:  */
        !            93: #define BZI_LOADER_TYPE_IPXE ( BZI_LOADER_TYPE_ETHERBOOT | 0x06 )
        !            94: 
        !            95: /** bzImage "load high" flag */
        !            96: #define BZI_LOAD_HIGH 0x01
        !            97: 
        !            98: /** Load address for high-loaded kernels */
        !            99: #define BZI_LOAD_HIGH_ADDR 0x100000
        !           100: 
        !           101: /** Load address for low-loaded kernels */
        !           102: #define BZI_LOAD_LOW_ADDR 0x10000
        !           103: 
        !           104: /** bzImage "kernel can use heap" flag */
        !           105: #define BZI_CAN_USE_HEAP 0x80
        !           106: 
        !           107: /** bzImage special video mode "normal" */
        !           108: #define BZI_VID_MODE_NORMAL 0xffff
        !           109: 
        !           110: /** bzImage special video mode "ext" */
        !           111: #define BZI_VID_MODE_EXT 0xfffe
        !           112: 
        !           113: /** bzImage special video mode "ask" */
        !           114: #define BZI_VID_MODE_ASK 0xfffd
        !           115: 
        !           116: /** bzImage maximum initrd address for versions < 2.03 */
        !           117: #define BZI_INITRD_MAX 0x37ffffff
        !           118: 
        !           119: /** bzImage command-line structure used by older kernels */
        !           120: struct bzimage_cmdline {
        !           121:        /** Magic signature */
        !           122:        uint16_t magic;
        !           123:        /** Offset to command line */
        !           124:        uint16_t offset;
        !           125: } __attribute__ (( packed ));
        !           126: 
        !           127: /** Offset of bzImage command-line structure within kernel image */
        !           128: #define BZI_CMDLINE_OFFSET 0x20
        !           129: 
        !           130: /** bzImage command line present magic marker value */
        !           131: #define BZI_CMDLINE_MAGIC 0xa33f
        !           132: 
        !           133: /** Assumed size of real-mode portion (including .bss) */
        !           134: #define BZI_ASSUMED_RM_SIZE 0x8000
        !           135: 
        !           136: /** Amount of stack space to provide */
        !           137: #define BZI_STACK_SIZE 0x1000
        !           138: 
        !           139: /** Maximum size of command line */
        !           140: #define BZI_CMDLINE_SIZE 0x7ff
        !           141: 
        !           142: #endif /* _BZIMAGE_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.