Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
stivale2.h
Go to the documentation of this file.
1#ifndef __STIVALE__STIVALE2_H__
2#define __STIVALE__STIVALE2_H__
3
4#include <type.h>
5
6#if (defined(_STIVALE2_SPLIT_64) && defined(__i386__)) \
7 || defined(_STIVALE2_SPLIT_64_FORCE)
8
9#define _stivale2_split64(NAME) \
10 union { \
11 uint32_t NAME; \
12 uint32_t NAME##_lo; \
13 }; \
14 uint32_t NAME##_hi
15
16#else
17
18#define _stivale2_split64(NAME) uint64_t NAME
19
20#endif
21
22// Anchor for non ELF kernels
31
36
37/* --- Header --------------------------------------------------------------- */
38/* Information passed from the kernel to the bootloader */
39
46
47#define STIVALE2_HEADER_TAG_ANY_VIDEO_ID 0xc75c9fa92a44c4db
48
53
54#define STIVALE2_HEADER_TAG_FRAMEBUFFER_ID 0x3ecc1bc43d0f7971
55
63
64#define STIVALE2_HEADER_TAG_FB_MTRR_ID 0x4c7bb07731282e00
65
66#define STIVALE2_HEADER_TAG_SLIDE_HHDM_ID 0xdc29269c2af53d1d
67
73
74#define STIVALE2_HEADER_TAG_TERMINAL_ID 0xa85d499b1823be72
75
81
82#define STIVALE2_TERM_CB_DEC 10
83#define STIVALE2_TERM_CB_BELL 20
84#define STIVALE2_TERM_CB_PRIVATE_ID 30
85#define STIVALE2_TERM_CB_STATUS_REPORT 40
86#define STIVALE2_TERM_CB_POS_REPORT 50
87#define STIVALE2_TERM_CB_KBD_LEDS 60
88#define STIVALE2_TERM_CB_MODE 70
89#define STIVALE2_TERM_CB_LINUX 80
90
91#define STIVALE2_TERM_CTX_SIZE ((uint64_t) (-1))
92#define STIVALE2_TERM_CTX_SAVE ((uint64_t) (-2))
93#define STIVALE2_TERM_CTX_RESTORE ((uint64_t) (-3))
94#define STIVALE2_TERM_FULL_REFRESH ((uint64_t) (-4))
95
96#define STIVALE2_HEADER_TAG_SMP_ID 0x1ab015085f3273df
97
102
103#define STIVALE2_HEADER_TAG_5LV_PAGING_ID 0x932f477032007e8f
104
105#define STIVALE2_HEADER_TAG_UNMAP_NULL_ID 0x92919432b16fe7e7
106
107/* --- Struct --------------------------------------------------------------- */
108/* Information passed from the bootloader to the kernel */
109
111#define STIVALE2_BOOTLOADER_BRAND_SIZE 64
113
114#define STIVALE2_BOOTLOADER_VERSION_SIZE 64
116
118};
119
120#define STIVALE2_STRUCT_TAG_PMRS_ID 0x5df266a64047b6bd
121
122#define STIVALE2_PMR_EXECUTABLE ((uint64_t) 1 << 0)
123#define STIVALE2_PMR_WRITABLE ((uint64_t) 1 << 1)
124#define STIVALE2_PMR_READABLE ((uint64_t) 1 << 2)
125
131
137
138#define STIVALE2_STRUCT_TAG_KERNEL_BASE_ADDRESS_ID 0x060d78874a2a8af0
139
145
146#define STIVALE2_STRUCT_TAG_CMDLINE_ID 0xe5e76a1b4597a781
147
152
153#define STIVALE2_STRUCT_TAG_MEMMAP_ID 0x2187f79e8612de07
154
155#define STIVALE2_MMAP_USABLE 1
156#define STIVALE2_MMAP_RESERVED 2
157#define STIVALE2_MMAP_ACPI_RECLAIMABLE 3
158#define STIVALE2_MMAP_ACPI_NVS 4
159#define STIVALE2_MMAP_BAD_MEMORY 5
160#define STIVALE2_MMAP_BOOTLOADER_RECLAIMABLE 0x1000
161#define STIVALE2_MMAP_KERNEL_AND_MODULES 0x1001
162#define STIVALE2_MMAP_FRAMEBUFFER 0x1002
163
170
176
177#define STIVALE2_STRUCT_TAG_FRAMEBUFFER_ID 0x506461d2950408fa
178
179#define STIVALE2_FBUF_MMODEL_RGB 1
180
197
198#define STIVALE2_STRUCT_TAG_EDID_ID 0x968609d7af96b845
199
205
206#define STIVALE2_STRUCT_TAG_TEXTMODE_ID 0x38d74c23e0dca893
207
216
217#define STIVALE2_STRUCT_TAG_FB_MTRR_ID 0x6bc1a78ebe871172
218
219#define STIVALE2_STRUCT_TAG_TERMINAL_ID 0xc2b3f4c3233b0974
220
229
230#define STIVALE2_STRUCT_TAG_MODULES_ID 0x4b6fe466aade04ce
231
235
236#define STIVALE2_MODULE_STRING_SIZE 128
238};
239
245
246#define STIVALE2_STRUCT_TAG_RSDP_ID 0x9e1786930a375e78
247
252
253#define STIVALE2_STRUCT_TAG_EPOCH_ID 0x566a7bed888e1407
254
259
260#define STIVALE2_STRUCT_TAG_FIRMWARE_ID 0x359d837855e3858c
261
262#define STIVALE2_FIRMWARE_BIOS (1 << 0)
263
268
269#define STIVALE2_STRUCT_TAG_EFI_SYSTEM_TABLE_ID 0x4bc5ec15845b558e
270
275
276#define STIVALE2_STRUCT_TAG_KERNEL_FILE_ID 0xe599d90c2975584a
277
282
283#define STIVALE2_STRUCT_TAG_KERNEL_FILE_V2_ID 0x37c13018a02c6ea2
284
290
291#define STIVALE2_STRUCT_TAG_BOOT_VOLUME_ID 0x9b4358364c19ee62
292
299
306
307#define STIVALE2_STRUCT_TAG_KERNEL_SLIDE_ID 0xee80847d01506c57
308
313
314#define STIVALE2_STRUCT_TAG_SMBIOS_ID 0x274bd246c62bf7d1
315
322
323#define STIVALE2_STRUCT_TAG_SMP_ID 0x34d1d96339647025
324
332
341
342#define STIVALE2_STRUCT_TAG_PXE_SERVER_INFO 0x29d1e96239247032
343
348
349#define STIVALE2_STRUCT_TAG_MMIO32_UART 0xb813f9b8dbc78797
350
355
356#define STIVALE2_STRUCT_TAG_DTB 0xabb29bd49a2833fa
357
363
364#define STIVALE2_STRUCT_TAG_HHDM_ID 0xb0ed257db18cb58f
365
370
371#undef _stivale2_split64
372
373#endif
#define STIVALE2_MODULE_STRING_SIZE
Definition stivale2.h:236
#define STIVALE2_BOOTLOADER_BRAND_SIZE
Definition stivale2.h:111
#define _stivale2_split64(NAME)
Definition stivale2.h:18
#define STIVALE2_BOOTLOADER_VERSION_SIZE
Definition stivale2.h:114
uint8_t anchor[15]
Definition stivale2.h:24
uint64_t phys_load_addr
Definition stivale2.h:26
uint64_t phys_bss_end
Definition stivale2.h:28
uint64_t phys_bss_start
Definition stivale2.h:27
uint64_t phys_stivale2hdr
Definition stivale2.h:29
uint8_t bits
Definition stivale2.h:25
uint32_t a
Definition stivale2.h:294
uint16_t c
Definition stivale2.h:296
uint16_t b
Definition stivale2.h:295
uint8_t d[8]
Definition stivale2.h:297
struct stivale2_tag tag
Definition stivale2.h:50
struct stivale2_tag tag
Definition stivale2.h:57
struct stivale2_tag tag
Definition stivale2.h:69
struct stivale2_tag tag
Definition stivale2.h:99
struct stivale2_tag tag
Definition stivale2.h:77
uint64_t stack
Definition stivale2.h:42
uint64_t entry_point
Definition stivale2.h:41
uint64_t tags
Definition stivale2.h:44
uint64_t flags
Definition stivale2.h:43
Definition stivale2.h:164
uint32_t type
Definition stivale2.h:167
uint64_t base
Definition stivale2.h:165
uint32_t unused
Definition stivale2.h:168
uint64_t length
Definition stivale2.h:166
uint64_t end
Definition stivale2.h:234
uint64_t begin
Definition stivale2.h:233
uint64_t length
Definition stivale2.h:128
uint64_t permissions
Definition stivale2.h:129
uint64_t base
Definition stivale2.h:127
uint64_t target_stack
Definition stivale2.h:328
uint64_t goto_address
Definition stivale2.h:329
uint32_t processor_id
Definition stivale2.h:326
uint32_t lapic_id
Definition stivale2.h:327
uint64_t extra_argument
Definition stivale2.h:330
struct stivale2_guid guid
Definition stivale2.h:303
struct stivale2_guid part_guid
Definition stivale2.h:304
struct stivale2_tag tag
Definition stivale2.h:301
struct stivale2_tag tag
Definition stivale2.h:149
struct stivale2_tag tag
Definition stivale2.h:359
struct stivale2_tag tag
Definition stivale2.h:201
struct stivale2_tag tag
Definition stivale2.h:256
struct stivale2_tag tag
Definition stivale2.h:265
struct stivale2_tag tag
Definition stivale2.h:182
struct stivale2_tag tag
Definition stivale2.h:367
struct stivale2_tag tag
Definition stivale2.h:279
struct stivale2_tag tag
Definition stivale2.h:310
struct stivale2_mmap_entry memmap[]
Definition stivale2.h:174
struct stivale2_tag tag
Definition stivale2.h:172
struct stivale2_tag tag
Definition stivale2.h:352
struct stivale2_tag tag
Definition stivale2.h:241
struct stivale2_module modules[]
Definition stivale2.h:243
struct stivale2_pmr pmrs[]
Definition stivale2.h:135
struct stivale2_tag tag
Definition stivale2.h:133
struct stivale2_tag tag
Definition stivale2.h:249
struct stivale2_tag tag
Definition stivale2.h:317
struct stivale2_smp_info smp_info[]
Definition stivale2.h:339
struct stivale2_tag tag
Definition stivale2.h:334
struct stivale2_tag tag
Definition stivale2.h:222
struct stivale2_tag tag
Definition stivale2.h:209
char bootloader_version[64]
Definition stivale2.h:115
uint64_t tags
Definition stivale2.h:117
char bootloader_brand[64]
Definition stivale2.h:112
uint64_t identifier
Definition stivale2.h:33
uint64_t next
Definition stivale2.h:34
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
unsigned long uint64_t
Definition type.h:25
unsigned char uint8_t
Definition type.h:7