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}