Handle loading above 1 MB, for bug-compatibility with Grub
[wraplinux.git] / setup.h
1 #ifndef SETUP_H
2 #define SETUP_H
3
4 #include <stdint.h>
5
6 struct startup_info {
7         uint32_t rd_addr;
8         uint32_t rd_len;
9         uint32_t rd_maxaddr;
10         uint32_t setup_addr;
11         uint32_t cmdline_addr;
12         uint32_t reloc_size;
13 };
14
15 struct highmove_info {
16         uint32_t mv_src;
17         uint32_t mv_dst;
18         uint32_t mv_len;
19         uint32_t mv_entry;
20 };
21
22 #define LINUX_MAGIC ('H' + ('d' << 8) + ('r' << 16) + ('S' << 24))
23 #define OLD_CMDLINE_MAGIC 0xA33F
24
25 struct setup_header {
26         uint8_t  setup_sects;
27         uint16_t root_flags;
28         uint32_t syssize;
29         uint16_t ram_size;
30 #define RAMDISK_IMAGE_START_MASK        0x07FF
31 #define RAMDISK_PROMPT_FLAG             0x8000
32 #define RAMDISK_LOAD_FLAG               0x4000
33         uint16_t vid_mode;
34         uint16_t root_dev;
35         uint16_t boot_flag;
36         uint16_t jump;
37         uint32_t header;
38         uint16_t version;
39         uint32_t realmode_swtch;
40         uint16_t start_sys;
41         uint16_t kernel_version;
42         uint8_t  type_of_loader;
43         uint8_t  loadflags;
44 #define LOADED_HIGH     (1<<0)
45 #define KEEP_SEGMENTS   (1<<6)
46 #define CAN_USE_HEAP    (1<<7)
47         uint16_t setup_move_size;
48         uint32_t code32_start;
49         uint32_t ramdisk_image;
50         uint32_t ramdisk_size;
51         uint32_t bootsect_kludge;
52         uint16_t heap_end_ptr;
53         uint16_t _pad1;
54         uint32_t cmd_line_ptr;
55         uint32_t initrd_addr_max;
56         uint32_t kernel_alignment;
57         uint8_t  relocatable_kernel;
58         uint8_t  _pad2[3];
59         uint32_t cmdline_size;
60         uint32_t hardware_subarch;
61         uint64_t hardware_subarch_data;
62 } __attribute__((packed));
63
64 #endif  /* SETUP_H */