Serenity Operating System
1/*
2 * Copyright (c) 2021, Gunnar Beutner <gbeutner@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <Kernel/Multiboot.h>
10#include <Kernel/PhysicalAddress.h>
11#include <Kernel/VirtualAddress.h>
12
13namespace Kernel::Memory {
14class PageTableEntry;
15}
16
17extern "C" PhysicalAddress start_of_prekernel_image;
18extern "C" PhysicalAddress end_of_prekernel_image;
19extern "C" size_t physical_to_virtual_offset;
20extern "C" FlatPtr kernel_mapping_base;
21extern "C" FlatPtr kernel_load_base;
22#if ARCH(X86_64)
23extern "C" u32 gdt64ptr;
24extern "C" u16 code64_sel;
25#endif
26extern "C" PhysicalAddress boot_pml4t;
27extern "C" PhysicalAddress boot_pdpt;
28extern "C" PhysicalAddress boot_pd0;
29extern "C" PhysicalAddress boot_pd_kernel;
30extern "C" Kernel::Memory::PageTableEntry* boot_pd_kernel_pt1023;
31extern "C" char const* kernel_cmdline;
32extern "C" u32 multiboot_flags;
33extern "C" multiboot_memory_map_t* multiboot_memory_map;
34extern "C" size_t multiboot_memory_map_count;
35extern "C" multiboot_module_entry_t* multiboot_modules;
36extern "C" size_t multiboot_modules_count;
37extern "C" PhysicalAddress multiboot_framebuffer_addr;
38extern "C" u32 multiboot_framebuffer_pitch;
39extern "C" u32 multiboot_framebuffer_width;
40extern "C" u32 multiboot_framebuffer_height;
41extern "C" u8 multiboot_framebuffer_bpp;
42extern "C" u8 multiboot_framebuffer_type;