os/task/context.rs
1use crate::trap::trap_return;
2
3#[repr(C)]
4pub struct TaskContext {
5 ra: usize,
6 sp: usize,
7 s: [usize; 12],
8}
9
10impl TaskContext {
11 pub fn zero_init() -> Self {
12 Self {
13 ra: 0,
14 sp: 0,
15 s: [0; 12],
16 }
17 }
18 pub fn goto_trap_return(kstack_ptr: usize) -> Self {
19 Self {
20 ra: trap_return as usize,
21 sp: kstack_ptr,
22 s: [0; 12],
23 }
24 }
25}