|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.