From 1e1d004240af6d2698a9a8628581f3ceb87bf478 Mon Sep 17 00:00:00 2001 From: Able Date: Wed, 23 Nov 2022 05:06:38 -0600 Subject: [PATCH] get ableOS running proper on limine sans graphics --- Cargo.lock | 4 ++-- ableos/Cargo.toml | 3 ++- ableos/src/arch/x86_64/memory.rs | 7 ++++--- ableos/src/arch/x86_64/mod.rs | 2 +- ableos/src/kmain.rs | 4 +++- ableos/src/lib.rs | 1 + 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a23161..e0df11a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -344,9 +344,9 @@ source = "git+https://git.ablecorp.us/able/libwasm.git#4ffcd290f8bc918ca4adf5e23 [[package]] name = "limine" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac64618e505bab2387986e5b1014f5d344130d609685bbd8b71a10af3ee599d" +checksum = "c847ac148a0c53ba3755dfa9830722b1043179584009869e6afc2b413e13f105" [[package]] name = "linked_list_allocator" diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml index 48ffc68..70209a9 100644 --- a/ableos/Cargo.toml +++ b/ableos/Cargo.toml @@ -108,7 +108,8 @@ git = "https://git.ablecorp.us:443/able/externc-libm.git" riscv = "*" [target.'cfg(target_arch = "x86_64")'.dependencies] -limine = "0.1" +limine = "0.1.9" + cpuio = { git = "https://git.ablecorp.us/ondra05/cpuio.git" } pic8259 = "0.10.1" uart_16550 = "0.2.0" diff --git a/ableos/src/arch/x86_64/memory.rs b/ableos/src/arch/x86_64/memory.rs index c349404..d7d726e 100644 --- a/ableos/src/arch/x86_64/memory.rs +++ b/ableos/src/arch/x86_64/memory.rs @@ -1,8 +1,7 @@ use limine::{LimineMemmapResponse, LimineMemoryMapEntryType}; use x86_64::{ structures::paging::{ - FrameAllocator, FrameDeallocator, OffsetPageTable, PageTable, PhysFrame, - Size4KiB, + FrameAllocator, FrameDeallocator, OffsetPageTable, PageTable, PhysFrame, Size4KiB, }, PhysAddr, VirtAddr, }; @@ -39,7 +38,9 @@ impl BootInfoFrameAllocator { } fn usable_frames(&self) -> impl Iterator { - self.memory_map.mmap().unwrap().iter() + self.memory_map + .memmap() + .iter() .filter(|r| r.typ == LimineMemoryMapEntryType::Usable) .map(|r| r.base..r.base + r.len) .flat_map(|r| r.step_by(4096)) diff --git a/ableos/src/arch/x86_64/mod.rs b/ableos/src/arch/x86_64/mod.rs index b88e0e3..bd4c427 100644 --- a/ableos/src/arch/x86_64/mod.rs +++ b/ableos/src/arch/x86_64/mod.rs @@ -18,7 +18,7 @@ use crate::serial_println; use self::drivers::allocator; static HHDM: LimineHhdmRequest = LimineHhdmRequest::new(0); -static MMAP: LimineMmapRequest = LimineMmapRequest::new(0); +static MMAP: LimineMemmapRequest = LimineMemmapRequest::new(0); #[no_mangle] pub fn x86_64_start() -> ! { diff --git a/ableos/src/kmain.rs b/ableos/src/kmain.rs index d88f59f..6c0012f 100644 --- a/ableos/src/kmain.rs +++ b/ableos/src/kmain.rs @@ -5,7 +5,6 @@ */ #![allow(clippy::empty_loop)] - use core::sync::atomic::AtomicU64; use crate::arch::memory::BootInfoFrameAllocator; @@ -16,6 +15,7 @@ use crate::{boot_conf::KernelConfig, scratchpad, systeminfo::RELEASE_TYPE}; // use crate::{boot_conf::KernelConfig, scratchpad, systeminfo::RELEASE_TYPE, TERM}; use crate::{filesystem, hardware}; use kernel::KERNEL_VERSION; +use limine::LimineTerminalRequest; use spin::Lazy; // FIXME: platform agnostic paging stuff @@ -24,6 +24,7 @@ use x86_64::structures::paging::{Mapper, Size4KiB}; // TODO: Change this structure to allow for multiple cores loaded pub static KERNEL_CONF: Lazy = Lazy::new(KernelConfig::new); +static TERMINAL_REQUEST: LimineTerminalRequest = LimineTerminalRequest::new(0); /// The main entry point of the kernel pub fn kernel_main( mut mapper: impl Mapper, @@ -31,6 +32,7 @@ pub fn kernel_main( ) -> ! { init::init(); + // panic!(); // /* if KERNEL_CONF.logging.enabled { log::set_max_level(KERNEL_CONF.log_level()); diff --git a/ableos/src/lib.rs b/ableos/src/lib.rs index 201ece8..6e7b5ba 100644 --- a/ableos/src/lib.rs +++ b/ableos/src/lib.rs @@ -22,6 +22,7 @@ #![feature(custom_test_frameworks)] #![reexport_test_harness_main = "test_main"] #![test_runner(crate::test_runner)] +// #![feature(llvm_asm)] #[macro_use] pub extern crate log;