Kintsugi OS 0.4.0
x86 Monolithic OS
Loading...
Searching...
No Matches
multiboot.h
Go to the documentation of this file.
1/* src/kernel/multiboot.h */
2#ifndef MULTIBOOT_H
3#define MULTIBOOT_H
4
5#include "kklibc/ctypes.h"
6
7/* Правильное магическое число для Multiboot 2 */
8#define MULTIBOOT2_MAGIC 0x36D76289
9
10/* Типы тегов Multiboot 2 */
11#define MULTIBOOT_TAG_TYPE_END 0
12#define MULTIBOOT_TAG_TYPE_CMDLINE 1
13#define MULTIBOOT_TAG_TYPE_BOOT_LOADER_NAME 2
14#define MULTIBOOT_TAG_TYPE_MODULE 3
15#define MULTIBOOT_TAG_TYPE_BASIC_MEMINFO 4
16#define MULTIBOOT_TAG_TYPE_BOOTDEV 5
17#define MULTIBOOT_TAG_TYPE_MMAP 6
18#define MULTIBOOT_TAG_TYPE_VBE 7
19#define MULTIBOOT_TAG_TYPE_FRAMEBUFFER 8
20#define MULTIBOOT_TAG_TYPE_ELF_SECTIONS 9
21#define MULTIBOOT_TAG_TYPE_APM 10
22#define MULTIBOOT_TAG_TYPE_EFI32 11
23#define MULTIBOOT_TAG_TYPE_EFI64 12
24#define MULTIBOOT_TAG_TYPE_SMBIOS 13
25#define MULTIBOOT_TAG_TYPE_ACPI_OLD 14
26#define MULTIBOOT_TAG_TYPE_ACPI_NEW 15
27#define MULTIBOOT_TAG_TYPE_NETWORK 16
28#define MULTIBOOT_TAG_TYPE_EFI_MMAP 17
29#define MULTIBOOT_TAG_TYPE_EFI_BS 18
30#define MULTIBOOT_TAG_TYPE_EFI32_IH 19
31#define MULTIBOOT_TAG_TYPE_EFI64_IH 20
32#define MULTIBOOT_TAG_TYPE_LOAD_BASE_ADDR 21
33
34/* Структура заголовка тега (общая для всех тегов) */
35typedef struct {
38} __attribute__((packed)) multiboot_tag_t;
39
40/* Тег информации о базовой памяти */
41typedef struct {
42 u32 type;
43 u32 size;
46} __attribute__((packed)) multiboot_tag_basic_meminfo_t;
47
48/* Тег карты памяти */
49typedef struct {
50 u32 type;
51 u32 size;
54 /* Записи карты памяти следуют сразу за этим заголовком */
55} __attribute__((packed)) multiboot_tag_mmap_t;
56
57/* Запись карты памяти */
58typedef struct {
61 u32 type;
63} __attribute__((packed)) multiboot_mmap_entry_t;
64
65/* Типы областей памяти */
66#define MULTIBOOT_MEMORY_AVAILABLE 1
67#define MULTIBOOT_MEMORY_RESERVED 2
68#define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3
69#define MULTIBOOT_MEMORY_NVS 4
70#define MULTIBOOT_MEMORY_BADRAM 5
71
72/* Структура для совместимости со старым кодом (опционально) */
73/* Можно использовать для постепенной миграции */
74typedef struct {
76 u32 mem_lower; /* KB памяти ниже 1MB (из тега basic_meminfo) */
77 u32 mem_upper; /* KB памяти выше 1MB (из тега basic_meminfo) */
82 u8 syms[16];
85} __attribute__((packed)) multiboot_info_compat_t;
86
87#endif
unsigned int u32
Definition ctypes.h:11
unsigned long long u64
Definition ctypes.h:17
unsigned char u8
Definition ctypes.h:15
u32 size
Definition mem.h:0
Структура загрузочного сектора FAT12.
Definition gdt.h:6
u32 mmap_length
Definition multiboot.h:83
u32 mmap_addr
Definition multiboot.h:84
u64 length
Definition multiboot.h:60
u32 flags
Definition multiboot.h:75
u32 entry_size
Definition multiboot.h:52
u32 reserved
Definition multiboot.h:62
u32 mods_addr
Definition multiboot.h:81
u32 boot_device
Definition multiboot.h:78
u32 size
Definition multiboot.h:37
u32 mods_count
Definition multiboot.h:80
u32 entry_version
Definition multiboot.h:53
u32 cmdline
Definition multiboot.h:79
u32 mem_upper
Definition multiboot.h:45
u32 mem_lower
Definition multiboot.h:44
u64 base_addr
Definition multiboot.h:59
u32 type
Definition multiboot.h:36