Cleaner memory map; avoid < 64K; handle older kernels
[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 setup_header {
16         uint8_t  setup_sects;
17         uint16_t root_flags;
18         uint32_t syssize;
19         uint16_t ram_size;
20 #define RAMDISK_IMAGE_START_MASK        0x07FF
21 #define RAMDISK_PROMPT_FLAG             0x8000
22 #define RAMDISK_LOAD_FLAG               0x4000
23         uint16_t vid_mode;
24         uint16_t root_dev;
25         uint16_t boot_flag;
26         uint16_t jump;
27         uint32_t header;
28         uint16_t version;
29         uint32_t realmode_swtch;
30         uint16_t start_sys;
31         uint16_t kernel_version;
32         uint8_t  type_of_loader;
33         uint8_t  loadflags;
34 #define LOADED_HIGH     (1<<0)
35 #define KEEP_SEGMENTS   (1<<6)
36 #define CAN_USE_HEAP    (1<<7)
37         uint16_t setup_move_size;
38         uint32_t code32_start;
39         uint32_t ramdisk_image;
40         uint32_t ramdisk_size;
41         uint32_t bootsect_kludge;
42         uint16_t heap_end_ptr;
43         uint16_t _pad1;
44         uint32_t cmd_line_ptr;
45         uint32_t initrd_addr_max;
46         uint32_t kernel_alignment;
47         uint8_t  relocatable_kernel;
48         uint8_t  _pad2[3];
49         uint32_t cmdline_size;
50         uint32_t hardware_subarch;
51         uint64_t hardware_subarch_data;
52 } __attribute__((packed));
53
54 #endif  /* SETUP_H */