paging done, starting on allocation.
Continuous integration / build (push) Failing after 1m51s

This commit is contained in:
2025-02-22 16:56:01 +00:00
parent 7b3ba170f0
commit 36cb118933
9 changed files with 170 additions and 4 deletions
+16 -2
View File
@@ -1,12 +1,16 @@
#![no_std]
#![feature(abi_x86_interrupt)]
extern crate alloc;
use core::arch::asm;
use limine::request::{RequestsEndMarker, RequestsStartMarker};
use limine::BaseRevision;
pub use lib_ascii::{print, print_log, println, println_log, WRITER};
pub use lib_serial::{serial_print, serial_println, serial_read};
use x86_64::structures::paging::Translate;
use x86_64::{PhysAddr, VirtAddr};
mod arch;
@@ -28,6 +32,8 @@ static _END_MARKER: RequestsEndMarker = RequestsEndMarker::new();
#[panic_handler]
fn rust_panic(_info: &core::panic::PanicInfo) -> ! {
println!("Kernel panic: {}", _info);
serial_println!("Kernel panic: {}", _info);
hcf();
}
@@ -49,11 +55,19 @@ pub fn boot() -> Result<(), &'static str> {
return Err("base revision not supported");
}
use arch::x86_64::{gdt, interrupts, memmap, memory};
let memory_map = memmap::get_memory_map();
lib_serial::init()?;
arch::x86_64::gdt::init();
arch::x86_64::interrupts::init_idt();
gdt::init();
interrupts::init_idt();
let mut frame_allocator = unsafe { memory::FoundryOSFrameAllocator::init(memory_map) };
x86_64::instructions::interrupts::enable();
let physical_memory_offset = VirtAddr::new(*memmap::PHYSICAL_MEMORY_OFFSET);
let l4_table = unsafe { memory::init(physical_memory_offset) };
Ok(())
}