kernel/arch/riscv64/
registers.rs1#[repr(C)]
8#[derive(Debug, Clone, Copy, PartialEq)]
9pub struct IntRegisters {
10 pub reg: [usize; 32],
11}
12
13impl IntRegisters {
14 pub const fn new() -> Self {
15 IntRegisters { reg: [0; 32] }
16 }
17
18 pub fn get_return_value(&self) -> usize {
19 self.reg[10]
21 }
22
23 pub fn set_return_value(&mut self, value: usize) {
24 self.reg[10] = value;
26 }
27
28 pub fn set_arg(&mut self, index: usize, value: usize) {
29 if index < 8 {
31 self.reg[index + 10] = value;
32 }
33 }
34
35 pub fn get_arg(&self, index: usize) -> usize {
36 if index < 8 { self.reg[index + 10] } else { 0 }
38 }
39
40 pub fn get_tp(&self) -> usize {
42 self.reg[4]
43 }
44
45 pub fn set_tp(&mut self, value: usize) {
47 self.reg[4] = value;
48 }
49}