diff --git a/kernel/src/arch/mipsel/mod.rs b/kernel/src/arch/mipsel/mod.rs index 212bdcea..d9af59de 100644 --- a/kernel/src/arch/mipsel/mod.rs +++ b/kernel/src/arch/mipsel/mod.rs @@ -1,5 +1,5 @@ pub mod io; -//pub mod interrupt; +pub mod interrupt; pub mod timer; pub mod paging; pub mod memory; @@ -11,7 +11,6 @@ pub mod rand; #[cfg(feature = "board_u540")] #[path = "board/u540/mod.rs"] mod board; -mod sbi; use log::*; diff --git a/kernel/src/arch/mipsel/sbi.rs b/kernel/src/arch/mipsel/sbi.rs deleted file mode 100644 index 03576426..00000000 --- a/kernel/src/arch/mipsel/sbi.rs +++ /dev/null @@ -1,64 +0,0 @@ -//! Port from sbi.h - -#[inline(always)] -fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize { - let ret; - unsafe { - asm!("ecall" - : "={x10}" (ret) - : "{x10}" (arg0), "{x11}" (arg1), "{x12}" (arg2), "{x17}" (which) - : "memory" - : "volatile"); - } - ret -} - -pub fn console_putchar(ch: usize) { - sbi_call(SBI_CONSOLE_PUTCHAR, ch, 0, 0); -} - -pub fn console_getchar() -> usize { - sbi_call(SBI_CONSOLE_GETCHAR, 0, 0, 0) -} - -pub fn shutdown() -> ! { - sbi_call(SBI_SHUTDOWN, 0, 0, 0); - unreachable!() -} - -pub fn set_timer(stime_value: u64) { - #[cfg(target_pointer_width = "32")] - sbi_call(SBI_SET_TIMER, stime_value as usize, (stime_value >> 32) as usize, 0); - #[cfg(target_pointer_width = "64")] - sbi_call(SBI_SET_TIMER, stime_value as usize, 0, 0); -} - -pub fn clear_ipi() { - sbi_call(SBI_CLEAR_IPI, 0, 0, 0); -} - -pub fn send_ipi(hart_mask: usize) { - sbi_call(SBI_SEND_IPI, &hart_mask as *const _ as usize, 0, 0); -} - -pub fn remote_fence_i(hart_mask: usize) { - sbi_call(SBI_REMOTE_FENCE_I, &hart_mask as *const _ as usize, 0, 0); -} - -pub fn remote_sfence_vma(hart_mask: usize, _start: usize, _size: usize) { - sbi_call(SBI_REMOTE_SFENCE_VMA, &hart_mask as *const _ as usize, 0, 0); -} - -pub fn remote_sfence_vma_asid(hart_mask: usize, _start: usize, _size: usize, _asid: usize) { - sbi_call(SBI_REMOTE_SFENCE_VMA_ASID, &hart_mask as *const _ as usize, 0, 0); -} - -const SBI_SET_TIMER: usize = 0; -const SBI_CONSOLE_PUTCHAR: usize = 1; -const SBI_CONSOLE_GETCHAR: usize = 2; -const SBI_CLEAR_IPI: usize = 3; -const SBI_SEND_IPI: usize = 4; -const SBI_REMOTE_FENCE_I: usize = 5; -const SBI_REMOTE_SFENCE_VMA: usize = 6; -const SBI_REMOTE_SFENCE_VMA_ASID: usize = 7; -const SBI_SHUTDOWN: usize = 8;