From 5e5ed05399805b4eafbe97f5fe8657b899955d65 Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Fri, 20 Nov 2020 11:10:38 +0800 Subject: [PATCH] Update rustsbi-qemu && batch worked on qemu/k210. --- bootloader/rustsbi-qemu.bin | Bin 65464 -> 65480 bytes os/Makefile | 1 + os/build.rs | 3 ++- os/src/batch.rs | 6 ++++-- os/src/trap/mod.rs | 14 ++++++++++++-- .../bin/{hello_world.rs => 00hello_world.rs} | 0 user/src/bin/01store_fault.rs | 14 ++++++++++++++ user/src/bin/{power.rs => 02power.rs} | 0 8 files changed, 33 insertions(+), 5 deletions(-) rename user/src/bin/{hello_world.rs => 00hello_world.rs} (100%) create mode 100644 user/src/bin/01store_fault.rs rename user/src/bin/{power.rs => 02power.rs} (100%) diff --git a/bootloader/rustsbi-qemu.bin b/bootloader/rustsbi-qemu.bin index 72742c205c8fee348235b9bc9a5754908d432c22..54329fcb74075cefde4a4d8d134481f59876b7ac 100755 GIT binary patch delta 23845 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 delta 23585 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 diff --git a/os/Makefile b/os/Makefile index 6f0f525c..217a0c41 100644 --- a/os/Makefile +++ b/os/Makefile @@ -28,6 +28,7 @@ $(KERNEL_BIN): kernel @$(OBJCOPY) $(KERNEL_ELF) --strip-all -O binary $@ kernel: + @cd ../user && make build @cargo build --release clean: diff --git a/os/build.rs b/os/build.rs index ba1ff3de..eb553e5b 100644 --- a/os/build.rs +++ b/os/build.rs @@ -10,7 +10,7 @@ static TARGET_PATH: &str = "../user/target/riscv64gc-unknown-none-elf/release/"; fn insert_app_data() -> Result<()> { let mut f = File::create("src/link_app.S").unwrap(); - let apps: Vec<_> = read_dir("../user/src/bin") + let mut apps: Vec<_> = read_dir("../user/src/bin") .unwrap() .into_iter() .map(|dir_entry| { @@ -19,6 +19,7 @@ fn insert_app_data() -> Result<()> { name_with_ext }) .collect(); + apps.sort(); writeln!(f, r#" .align 4 diff --git a/os/src/batch.rs b/os/src/batch.rs index 9e6bc278..31903dee 100644 --- a/os/src/batch.rs +++ b/os/src/batch.rs @@ -50,9 +50,9 @@ unsafe impl Sync for AppManager {} impl AppManagerInner { pub fn print_app_info(&self) { - println!("num_app = {}", self.num_app); + println!("[kernel] num_app = {}", self.num_app); for i in 0..self.num_app { - println!("app_{} [{:#x}, {:#x})", i, self.app_start[i], self.app_start[i + 1]); + println!("[kernel] app_{} [{:#x}, {:#x})", i, self.app_start[i], self.app_start[i + 1]); } } @@ -61,6 +61,8 @@ impl AppManagerInner { panic!("All applications completed!"); } println!("[kernel] Loading app_{}", app_id); + // clear icache + llvm_asm!("fence.i" :::: "volatile"); // clear app area (APP_BASE_ADDRESS..APP_BASE_ADDRESS + APP_SIZE_LIMIT).for_each(|addr| { (addr as *mut u8).write_volatile(0); diff --git a/os/src/trap/mod.rs b/os/src/trap/mod.rs index 25cd9405..e42b05fb 100644 --- a/os/src/trap/mod.rs +++ b/os/src/trap/mod.rs @@ -11,6 +11,7 @@ use riscv::register::{ stval, }; use crate::syscall::syscall; +use crate::batch::run_next_app; global_asm!(include_str!("trap.S")); @@ -24,14 +25,23 @@ pub fn init() { #[no_mangle] pub fn trap_handler(cx: &mut TrapContext) -> &mut TrapContext { let scause = scause::read(); - let _stval = stval::read(); + let stval = stval::read(); match scause.cause() { Trap::Exception(Exception::UserEnvCall) => { cx.sepc += 4; cx.x[10] = syscall(cx.x[17], [cx.x[10], cx.x[11], cx.x[12]]) as usize; } + Trap::Exception(Exception::StoreFault) | + Trap::Exception(Exception::StorePageFault) => { + println!("[kernel] PageFault in application, core dumped."); + run_next_app(); + } + Trap::Exception(Exception::IllegalInstruction) => { + println!("[kernel] IllegalInstruction in application, core dumped."); + run_next_app(); + } _ => { - panic!("Unsupported trap!"); + panic!("Unsupported trap {:?}, stval = {:#x}!", scause.cause(), stval); } } cx diff --git a/user/src/bin/hello_world.rs b/user/src/bin/00hello_world.rs similarity index 100% rename from user/src/bin/hello_world.rs rename to user/src/bin/00hello_world.rs diff --git a/user/src/bin/01store_fault.rs b/user/src/bin/01store_fault.rs new file mode 100644 index 00000000..7f02ae8e --- /dev/null +++ b/user/src/bin/01store_fault.rs @@ -0,0 +1,14 @@ +#![no_std] +#![no_main] +#![feature(llvm_asm)] + +#[macro_use] +extern crate user_lib; + +#[no_mangle] +fn main() -> i32 { + println!("Into Test store_fault, we will insert an invalid store behavior..."); + println!("Kernel should kill this application!"); + unsafe { (0x0 as *mut u8).write_volatile(0); } + 0 +} \ No newline at end of file diff --git a/user/src/bin/power.rs b/user/src/bin/02power.rs similarity index 100% rename from user/src/bin/power.rs rename to user/src/bin/02power.rs