aboutsummaryrefslogtreecommitdiff
path: root/src/kernel.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel.rs')
-rw-r--r--src/kernel.rs40
1 files changed, 22 insertions, 18 deletions
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!");
+ }
+ }
+}