:: limine / common / protos / multiboot1.h 1.8 KB raw

1
#ifndef PROTOS__MULTIBOOT1_H__
2
#define PROTOS__MULTIBOOT1_H__
3
4
#include <stdint.h>
5
#include <stddef.h>
6
#include <stdnoreturn.h>
7
8
#define MULTIBOOT1_HEADER_MAGIC 0x1BADB002
9
10
struct multiboot1_header {
11
    uint32_t magic;
12
    uint32_t flags;
13
    uint32_t checksum;
14
15
    uint32_t header_addr;
16
    uint32_t load_addr;
17
    uint32_t load_end_addr;
18
    uint32_t bss_end_addr;
19
    uint32_t entry_addr;
20
21
    uint32_t fb_mode;
22
    uint32_t fb_width;
23
    uint32_t fb_height;
24
    uint32_t fb_bpp;
25
};
26
27
struct multiboot1_elf_sections {
28
    uint32_t num;
29
    uint32_t size;
30
    uint32_t addr;
31
    uint32_t shndx;
32
};
33
34
struct multiboot1_info {
35
    uint32_t flags;
36
37
    uint32_t mem_lower;
38
    uint32_t mem_upper;
39
40
    uint32_t boot_device;
41
42
    uint32_t cmdline;
43
44
    uint32_t mods_count;
45
    uint32_t mods_addr;
46
47
    struct multiboot1_elf_sections elf_sect;
48
49
    uint32_t mmap_length;
50
    uint32_t mmap_addr;
51
52
    uint32_t drives_length;
53
    uint32_t drivers_addr;
54
55
    uint32_t rom_config_table;
56
57
    uint32_t bootloader_name;
58
59
    uint32_t apm_table;
60
61
    uint32_t vbe_control_info;
62
    uint32_t vbe_mode_info;
63
    uint16_t vbe_mode;
64
    uint16_t vbe_interface_seg;
65
    uint16_t vbe_interface_off;
66
    uint16_t vbe_interface_len;
67
68
    uint64_t fb_addr;
69
    uint32_t fb_pitch;
70
    uint32_t fb_width;
71
    uint32_t fb_height;
72
    uint8_t fb_bpp;
73
    uint8_t fb_type;
74
    uint16_t fb_reserved;
75
76
    uint8_t fb_red_mask_shift;
77
    uint8_t fb_red_mask_size;
78
    uint8_t fb_green_mask_shift;
79
    uint8_t fb_green_mask_size;
80
    uint8_t fb_blue_mask_shift;
81
    uint8_t fb_blue_mask_size;
82
};
83
84
struct multiboot1_module {
85
    uint32_t begin;
86
    uint32_t end;
87
    uint32_t cmdline;
88
    uint32_t pad;
89
};
90
91
struct multiboot1_mmap_entry {
92
    uint32_t size;
93
    uint64_t addr;
94
    uint64_t len;
95
    uint32_t type;
96
} __attribute__((packed));
97
98
noreturn void multiboot1_load(char *config, char *cmdline);
99
100
#endif
tab: 248 wrap: offon