|
|
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.