Files
MentOS/mentos/inc/boot.h
T
Enrico Fraccaroli (Galfurian) 1b2bc49d41 Update license and remove unused files.
2022-01-27 15:12:36 -05:00

82 lines
2.1 KiB
C

/// @file boot.h
/// @brief Bootloader structures
/// @copyright (c) 2014-2022 This file is distributed under the MIT License.
/// See LICENSE.md for details.
#pragma once
#include "multiboot.h"
/// @brief Mentos structure to communicate bootloader info to the kernel
typedef struct boot_info_t {
/// Boot magic number.
unsigned int magic;
/*
* Bootloader physical range
* it can be overwritten to do other things
* */
/// bootloader code start
unsigned int bootloader_phy_start;
/// bootloader code end
unsigned int bootloader_phy_end;
/*
* Kernel virtual and physical range
* must not be overwritten
* it's assumed to be contiguous, so section holes are just wasted space
* */
/// kernel physical code start
unsigned int kernel_phy_start;
/// kernel physical code end
unsigned int kernel_phy_end;
/// kernel code start
unsigned int kernel_start;
/// kernel code end
unsigned int kernel_end;
/// kernel size.
unsigned int kernel_size;
/// Address after the modules.
unsigned int module_end;
/*
* Range of addressable lowmemory, is memory that is available
* (not used by the kernel executable nor by the bootloader)
* and can be accessed by the kernel at any time
* */
/// lowmem physical addressable start
unsigned int lowmem_phy_start;
/// lowmem physical addressable end
unsigned int lowmem_phy_end;
/// lowmem addressable start
unsigned int lowmem_start;
/// lowmem addressable end
unsigned int lowmem_end;
/// stack end (comes after lowmem_end, and is the end of the low mapped memory)
unsigned int stack_end;
/*
* Range of non-addressable highmemory, is memory that can be
* accessed by the kernel only if previously mapped
* */
/// highmem addressable start
unsigned int highmem_phy_start;
/// highmem addressable end
unsigned int highmem_phy_end;
/// multiboot info
multiboot_info_t *multiboot_header;
/// stack suggested start address (also set by the bootloader)
unsigned int stack_base;
} boot_info_t;