#![no_std]
#![no_main]
#[cfg(feature = "loader_main")]
pub mod loader_main;
pub mod output;
pub mod memory;
use self::output::Framebuffer;
use self::memory::MemoryMap;
#[repr(C, align(8))]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct BootInfo {
boot_mode: BootMode,
memmap: MemoryMap,
framebuffer: Framebuffer,
}
impl BootInfo {
#[cfg(feature = "loader_main")]
pub fn new(boot_mode: BootMode, memmap: MemoryMap, fb: Framebuffer) -> Self {
Self {
boot_mode,
memmap,
framebuffer: fb
}
}
pub const fn boot_mode(&self) -> &BootMode {
&self.boot_mode
}
pub const fn framebuffer(&self) -> &Framebuffer {
&self.framebuffer
}
pub const fn memory(&self) -> &MemoryMap {
&self.memmap
}
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BootMode {
Legacy,
Uefi,
}