From 326a0308ca69bdcd357b57924b15994b6b57bd44 Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Sun, 17 Dec 2023 20:28:47 +0800 Subject: [PATCH] chore: refactor arch traits --- src/arch/mod.rs | 8 ++------ src/arch/riscv/board/virt/printer.rs | 2 +- src/arch/riscv/board/virt/reader.rs | 2 +- src/arch/riscv/io.rs | 2 +- src/arch/riscv/layout.rs | 3 ++- src/arch/riscv/lowlevel.rs | 4 ++-- src/arch/riscv/mm/page.rs | 8 ++++---- src/arch/trap.rs | 5 ----- src/entry.rs | 3 ++- src/lang.rs | 4 +++- src/lib.rs | 3 +++ src/logging.rs | 4 +++- src/mm/bitmap.rs | 3 +++ src/{arch => utils}/io.rs | 0 src/{arch => utils}/lowlevel.rs | 0 src/utils/mod.rs | 2 ++ 16 files changed, 29 insertions(+), 24 deletions(-) delete mode 100644 src/arch/trap.rs rename src/{arch => utils}/io.rs (100%) rename src/{arch => utils}/lowlevel.rs (100%) create mode 100644 src/utils/mod.rs diff --git a/src/arch/mod.rs b/src/arch/mod.rs index fe4f540..54b08f0 100644 --- a/src/arch/mod.rs +++ b/src/arch/mod.rs @@ -1,10 +1,6 @@ -// Basic IO -pub mod io; - -// Low Level -pub mod lowlevel; +pub use arch::*; // Arch Level #[cfg(any(feature = "arch_riscv64", feature = "arch_riscv32"))] #[path = "riscv/mod.rs"] -mod riscv; +mod arch; diff --git a/src/arch/riscv/board/virt/printer.rs b/src/arch/riscv/board/virt/printer.rs index 611427b..6388e9f 100644 --- a/src/arch/riscv/board/virt/printer.rs +++ b/src/arch/riscv/board/virt/printer.rs @@ -1,4 +1,4 @@ -use crate::arch::io::{Printer, RawConsole}; +use crate::utils::io::{Printer, RawConsole}; /* Theoretically, we should wait until diff --git a/src/arch/riscv/board/virt/reader.rs b/src/arch/riscv/board/virt/reader.rs index d2b07cb..c147067 100644 --- a/src/arch/riscv/board/virt/reader.rs +++ b/src/arch/riscv/board/virt/reader.rs @@ -1,4 +1,4 @@ -use crate::arch::io::{RawConsole, Reader}; +use crate::utils::io::{RawConsole, Reader}; impl Reader for RawConsole { #[inline] diff --git a/src/arch/riscv/io.rs b/src/arch/riscv/io.rs index bcb6486..6f7dee9 100644 --- a/src/arch/riscv/io.rs +++ b/src/arch/riscv/io.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::arch::io::{Printer, RawConsole, Reader}; +use crate::utils::io::{Printer, RawConsole, Reader}; #[cfg(feature = "board_default")] impl Printer for RawConsole { diff --git a/src/arch/riscv/layout.rs b/src/arch/riscv/layout.rs index daa5ef5..bf41bbb 100644 --- a/src/arch/riscv/layout.rs +++ b/src/arch/riscv/layout.rs @@ -1,4 +1,5 @@ -pub const PAGE_SIZE: usize = 4096; +pub use super::mm::page::PAGE_SIZE; + pub const KERNEL_MEM_START: usize = 0x8030_0000; // TODO: currently a dummy value, figure out our memory layout diff --git a/src/arch/riscv/lowlevel.rs b/src/arch/riscv/lowlevel.rs index 5ea8d84..1d51067 100644 --- a/src/arch/riscv/lowlevel.rs +++ b/src/arch/riscv/lowlevel.rs @@ -1,6 +1,6 @@ use log::error; -use crate::arch::lowlevel::{Hardware, LowLevel}; +use crate::utils::lowlevel::{Hardware, LowLevel}; #[cfg(feature = "board_virt")] use super::board::TEST_DEVICE; @@ -40,7 +40,7 @@ impl LowLevel for Hardware { } #[inline] - fn reset(failure: bool) -> ! { + fn reset(#[allow(unused_variables)] failure: bool) -> ! { #[cfg(not(feature = "board_virt"))] if failure { sbi_rt::system_reset(sbi_rt::ColdReboot, sbi_rt::SystemFailure); diff --git a/src/arch/riscv/mm/page.rs b/src/arch/riscv/mm/page.rs index 5e51762..0b81b08 100644 --- a/src/arch/riscv/mm/page.rs +++ b/src/arch/riscv/mm/page.rs @@ -1,10 +1,10 @@ -use crate::mm::addr::{AddressOps, PhysAddr, VirtAddr}; -use crate::mm::page; - use bitflags::bitflags; use static_assertions::assert_eq_size; -const PAGE_SIZE: usize = 4096; +use crate::mm::addr::{AddressOps, PhysAddr}; +use crate::mm::page; + +pub const PAGE_SIZE: usize = 4096; const PAGE_TABLE_ENTRIES: usize = 512; const PG_OFFSET: u64 = 12; diff --git a/src/arch/trap.rs b/src/arch/trap.rs deleted file mode 100644 index 13ccd74..0000000 --- a/src/arch/trap.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub struct Trap; - -pub trait Trampoline { - fn init(); -} diff --git a/src/entry.rs b/src/entry.rs index 6f2db9d..e0eee2c 100644 --- a/src/entry.rs +++ b/src/entry.rs @@ -1,6 +1,7 @@ -use crate::arch::lowlevel::{Hardware, LowLevel}; use log::{error, info}; +use crate::utils::lowlevel::{Hardware, LowLevel}; + pub extern "C" fn rust_main(hart_id: usize, device_tree_addr: usize) -> ! { crate::logging::init(); diff --git a/src/lang.rs b/src/lang.rs index d37b724..4111f3d 100644 --- a/src/lang.rs +++ b/src/lang.rs @@ -1,7 +1,9 @@ -use crate::arch::lowlevel::{Hardware, LowLevel}; use core::panic::PanicInfo; + use log::error; +use crate::utils::lowlevel::{Hardware, LowLevel}; + #[panic_handler] fn panic(info: &PanicInfo) -> ! { error!("[lang] Kernel panic!"); diff --git a/src/lib.rs b/src/lib.rs index 0420921..2e5b36b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,5 +18,8 @@ pub mod entry; // page table pub mod mm; +// utils +pub mod utils; + // logging pub mod logging; diff --git a/src/logging.rs b/src/logging.rs index 0c95bf4..195f572 100644 --- a/src/logging.rs +++ b/src/logging.rs @@ -1,7 +1,9 @@ -use crate::arch::io::RawConsole; use core::fmt::Write; + use log::{self, LevelFilter, Log, Metadata, Record}; +use crate::utils::io::RawConsole; + struct SimpleLogger; impl Log for SimpleLogger { diff --git a/src/mm/bitmap.rs b/src/mm/bitmap.rs index 173ed55..3efe20a 100644 --- a/src/mm/bitmap.rs +++ b/src/mm/bitmap.rs @@ -107,6 +107,9 @@ impl Bitmap { } } +#[allow(unused)] pub type Bitmap1K = Bitmap; +#[allow(unused)] pub type Bitmap32K = Bitmap; +#[allow(unused)] pub type Bitmap1M = Bitmap; diff --git a/src/arch/io.rs b/src/utils/io.rs similarity index 100% rename from src/arch/io.rs rename to src/utils/io.rs diff --git a/src/arch/lowlevel.rs b/src/utils/lowlevel.rs similarity index 100% rename from src/arch/lowlevel.rs rename to src/utils/lowlevel.rs diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..cb5817f --- /dev/null +++ b/src/utils/mod.rs @@ -0,0 +1,2 @@ +pub mod io; +pub mod lowlevel;