Try batch but kernel panicked.
This commit is contained in:
parent
220397e5a5
commit
bae5383602
11 changed files with 385 additions and 17 deletions
23
os/src/trap/context.rs
Normal file
23
os/src/trap/context.rs
Normal file
|
@ -0,0 +1,23 @@
|
|||
use riscv::register::sstatus::{Sstatus, self, SPP};
|
||||
|
||||
#[repr(C)]
|
||||
pub struct TrapContext {
|
||||
x: [usize; 32],
|
||||
sstatus: Sstatus,
|
||||
sepc: usize,
|
||||
}
|
||||
|
||||
impl TrapContext {
|
||||
pub fn set_sp(&mut self, sp: usize) { self.x[2] = sp; }
|
||||
pub fn app_init_context(entry: usize, sp: usize) -> Self {
|
||||
let mut sstatus = sstatus::read();
|
||||
sstatus.set_spp(SPP::User);
|
||||
let mut cx = Self {
|
||||
x: [0; 32],
|
||||
sstatus,
|
||||
sepc: entry,
|
||||
};
|
||||
cx.set_sp(sp);
|
||||
cx
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue