From a04cf2dbb8d2e890405fbf0a1022aaad3015b1e8 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Fri, 26 Aug 2022 17:25:34 -0700 Subject: Modularize --- src/kernel.rs | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'src/kernel.rs') diff --git a/src/kernel.rs b/src/kernel.rs index 36b6e42..8c7ab58 100644 --- a/src/kernel.rs +++ b/src/kernel.rs @@ -15,26 +15,17 @@ #![feature(exclusive_range_pattern)] #![feature(default_alloc_error_handler)] #![feature(optimize_attribute)] +#![feature(naked_functions)] #![no_main] #![no_std] -extern crate alloc; -pub use alloc::boxed::Box; -pub use alloc::format; -pub use alloc::string::String; - -mod console; +mod bsp; mod cpu; -mod draw; -mod gpio; -mod mem; -mod panic_wait; -mod print; -mod sync; -mod uart; +mod lib; mod util; -use crate::console::console; -use crate::mem::alloc::allocator; +use crate::lib::console::console; +use crate::util::mem::alloc::allocator; +use crate::util::mem::{format, Box, String}; /// # Initialization Code /// @@ -48,10 +39,13 @@ use crate::mem::alloc::allocator; /// - serial_println! /// - vprint! /// - vserial_println! +/// - MMU +/// - SpinLocks /// /// After initialization, jump to /// the regular main. unsafe fn kernel_init() -> ! { + util::mem::mmu_init(); console().init().unwrap(); allocator().init().unwrap(); kernel_main() @@ -80,7 +74,7 @@ fn kernel_main() -> ! { "\x1b[94mAuthors:\x1b[0m \x1b[95m{}\x1b[0m", env!("CARGO_PKG_AUTHORS") ); - use crate::console::interface::Statistics; + use crate::lib::console::interface::Statistics; serial_println!( "Characters written to UART: \x1b[91m{}\x1b[0m", console().chars_written() @@ -94,7 +88,7 @@ fn kernel_main() -> ! { } fn run_verbose() { - serial_println!("U8: {:?}", mem::alloc::U8_GRAND_ALLOC); + serial_println!("U8: {:?}", util::mem::alloc::U8_GRAND_ALLOC); { let mut s = String::new(); for _ in 0..128 { @@ -130,9 +124,19 @@ fn run_verbose() { assert_eq!(*c, 7); serial_println!("{} {} {}", a, b, c); } - use crate::console::interface::Statistics; + use crate::lib::console::interface::Statistics; serial_println!( "Characters written to UART: \x1b[91m{}\x1b[0m", console().chars_written() ); } + +#[no_mangle] +/// # SVC Handler +pub fn svc_handler(code: u32) { + match code { + _ => { + serial_println!("Unhandled Service Call!"); + } + } +} -- cgit v1.2.1