diff options
| author | Bobby <[email protected]> | 2026-02-24 09:29:01 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-24 09:29:01 +0530 |
| commit | f3513909b8c02cd2d9723c4e908abedefb54d1fd (patch) | |
| tree | 87daac051c2dcf4d6dbe10f16c38957d9b8f6a57 /mirai/kernel/boot.zig | |
| parent | 60f4c2824c63cef87fea0227ed7229268d1b2931 (diff) | |
| download | akiba-f3513909b8c02cd2d9723c4e908abedefb54d1fd.tar.xz akiba-f3513909b8c02cd2d9723c4e908abedefb54d1fd.zip | |
feat: Implement Mirai kernel with boot parameter handling and framebuffer support
Diffstat (limited to 'mirai/kernel/boot.zig')
| -rw-r--r-- | mirai/kernel/boot.zig | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/mirai/kernel/boot.zig b/mirai/kernel/boot.zig new file mode 100644 index 0000000..8d46901 --- /dev/null +++ b/mirai/kernel/boot.zig @@ -0,0 +1,92 @@ +//! Mirai Boot Parameters +//! +//! This structure matches what Hikari bootloader passes to the kernel. + +pub const boot_params_magic: u64 = 0x494152494D424B41; // "AKBMIRAI" +pub const boot_params_version: u32 = 1; + +pub const BootParams = extern struct { + magic: u64, + version: u32, + size: u32, + + framebuffer: FramebufferInfo, + memory_map: MemoryMapInfo, + kernel: KernelInfo, + acpi: AcpiInfo, + boot_time: u64, + + reserved: [256]u8, + + pub fn is_valid(self: *const BootParams) bool { + return self.magic == boot_params_magic and + self.version == boot_params_version; + } +}; + +pub const FramebufferInfo = extern struct { + base: u64, + size: u64, + width: u32, + height: u32, + stride: u32, + pixel_format: PixelFormat, + red_mask_size: u8, + red_mask_shift: u8, + green_mask_size: u8, + green_mask_shift: u8, + blue_mask_size: u8, + blue_mask_shift: u8, + reserved: [2]u8, +}; + +pub const PixelFormat = enum(u32) { + rgb = 0, + bgr = 1, + bitmask = 2, + unknown = 255, +}; + +pub const MemoryMapInfo = extern struct { + entries: u64, + entry_count: u32, + entry_size: u32, + descriptor_version: u32, + reserved: u32, +}; + +pub const MemoryRegion = extern struct { + base: u64, + size: u64, + region_type: MemoryType, + attributes: u64, +}; + +pub const MemoryType = enum(u32) { + usable = 0, + reserved = 1, + acpi_reclaimable = 2, + acpi_nvs = 3, + bad_memory = 4, + bootloader_reclaimable = 5, + kernel = 6, + framebuffer = 7, +}; + +pub const KernelInfo = extern struct { + physical_base: u64, + virtual_base: u64, + size: u64, + entry_point: u64, + pml4_address: u64, + physmap_base: u64, + physmap_size: u64, + stack_top: u64, + stack_size: u64, +}; + +pub const AcpiInfo = extern struct { + rsdp_address: u64, + rsdp_version: u32, + reserved: u32, +}; |
