Placeholder bzImage support
[people/xl0/gpxe.git] / src / arch / i386 / include / bzimage.h
1 #ifndef _BZIMAGE_H
2 #define _BZIMAGE_H
3
4 #include <stdint.h>
5
6 /**
7  * A bzImage header
8  *
9  * As documented in Documentation/i386/boot.txt
10  */
11 struct bzimage_header {
12         /** The size of the setup in sectors
13          *
14          * If this field contains 0, assume it contains 4.
15          */
16         uint8_t setup_sects;
17         /** If set, the root is mounted readonly */
18         uint16_t root_flags;
19         /** DO NOT USE - for bootsect.S use only */
20         uint16_t syssize;
21         /** DO NOT USE - obsolete */
22         uint16_t swap_dev;
23         /** DO NOT USE - for bootsect.S use only */
24         uint16_t ram_size;
25         /** Video mode control */
26         uint16_t vid_mode;
27         /** Default root device number */
28         uint16_t root_dev;
29         /** 0xAA55 magic number */
30         uint16_t boot_flag;
31         /** Jump instruction */
32         uint16_t jump;
33         /** Magic signature "HdrS" */
34         uint32_t header;
35         /** Boot protocol version supported */
36         uint16_t version;
37         /** Boot loader hook (see below) */
38         uint32_t realmode_swtch;
39         /** The load-low segment (0x1000) (obsolete) */
40         uint16_t start_sys;
41         /** Pointer to kernel version string */
42         uint16_t kernel_version;
43         /** Boot loader identifier */
44         uint8_t type_of_loader;
45         /** Boot protocol option flags */
46         uint8_t loadflags;
47         /** Move to high memory size (used with hooks) */
48         uint16_t setup_move_size;
49         /** Boot loader hook (see below) */
50         uint32_t code32_start;
51         /** initrd load address (set by boot loader) */
52         uint32_t ramdisk_image;
53         /** initrd size (set by boot loader) */
54         uint32_t ramdisk_size;
55         /** DO NOT USE - for bootsect.S use only */
56         uint32_t bootsect_kludge;
57         /** Free memory after setup end */
58         uint16_t heap_end_ptr;
59         /** Unused */
60         uint16_t pad1;
61         /** 32-bit pointer to the kernel command line */
62         uint32_t cmd_line_ptr;
63         /** Highest legal initrd address */
64         uint32_t initrd_addr_max;
65 } __attribute__ (( packed ));
66
67 /** Offset of bzImage header within kernel image */
68 #define BZHDR_OFFSET 0x1f1
69
70 /** bzImage magic signature value */
71 #define BZIMAGE_SIGNATURE 0x53726448
72
73 #endif /* _BZIMAGE_H */