Skip to content

Commit

Permalink
Merge pull request #19 from rivosinc/dev/emmanuel/pmpaddr_read_write
Browse files Browse the repository at this point in the history
Add function to read and write pmpaddr thanks to the index
  • Loading branch information
e-puerto authored Dec 11, 2023
2 parents da9e373 + e61e73d commit 554e213
Showing 1 changed file with 144 additions and 0 deletions.
144 changes: 144 additions & 0 deletions src/register/pmpaddrx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,150 @@ pub unsafe fn write_napot_indexed(index: usize, addr: Addr, size: Size) {
}
}

pub unsafe fn read_indexed(index: usize) -> PmpAddr {
assert!(index < 64);

match index {
0 => pmpaddr0::read(),
1 => pmpaddr1::read(),
2 => pmpaddr2::read(),
3 => pmpaddr3::read(),
4 => pmpaddr4::read(),
5 => pmpaddr5::read(),
6 => pmpaddr6::read(),
7 => pmpaddr7::read(),
8 => pmpaddr8::read(),
9 => pmpaddr9::read(),
10 => pmpaddr10::read(),
11 => pmpaddr11::read(),
12 => pmpaddr12::read(),
13 => pmpaddr13::read(),
14 => pmpaddr14::read(),
15 => pmpaddr15::read(),
16 => pmpaddr16::read(),
17 => pmpaddr17::read(),
18 => pmpaddr18::read(),
19 => pmpaddr19::read(),
20 => pmpaddr20::read(),
21 => pmpaddr21::read(),
22 => pmpaddr22::read(),
23 => pmpaddr23::read(),
24 => pmpaddr24::read(),
25 => pmpaddr25::read(),
26 => pmpaddr26::read(),
27 => pmpaddr27::read(),
28 => pmpaddr28::read(),
29 => pmpaddr29::read(),
30 => pmpaddr30::read(),
31 => pmpaddr31::read(),
32 => pmpaddr32::read(),
33 => pmpaddr33::read(),
34 => pmpaddr34::read(),
35 => pmpaddr35::read(),
36 => pmpaddr36::read(),
37 => pmpaddr37::read(),
38 => pmpaddr38::read(),
39 => pmpaddr39::read(),
40 => pmpaddr40::read(),
41 => pmpaddr41::read(),
42 => pmpaddr42::read(),
43 => pmpaddr43::read(),
44 => pmpaddr44::read(),
45 => pmpaddr45::read(),
46 => pmpaddr46::read(),
47 => pmpaddr47::read(),
48 => pmpaddr48::read(),
49 => pmpaddr49::read(),
50 => pmpaddr50::read(),
51 => pmpaddr51::read(),
52 => pmpaddr52::read(),
53 => pmpaddr53::read(),
54 => pmpaddr54::read(),
55 => pmpaddr55::read(),
56 => pmpaddr56::read(),
57 => pmpaddr57::read(),
58 => pmpaddr58::read(),
59 => pmpaddr59::read(),
60 => pmpaddr60::read(),
61 => pmpaddr61::read(),
62 => pmpaddr62::read(),
63 => pmpaddr63::read(),
_ => unimplemented!(),
}
}

pub unsafe fn write_indexed(index: usize, pmpaddr: PmpAddr) {
assert!(index < 64);

match index {
0 => pmpaddr0::write(pmpaddr),
1 => pmpaddr1::write(pmpaddr),
2 => pmpaddr2::write(pmpaddr),
3 => pmpaddr3::write(pmpaddr),
4 => pmpaddr4::write(pmpaddr),
5 => pmpaddr5::write(pmpaddr),
6 => pmpaddr6::write(pmpaddr),
7 => pmpaddr7::write(pmpaddr),
8 => pmpaddr8::write(pmpaddr),
9 => pmpaddr9::write(pmpaddr),
10 => pmpaddr10::write(pmpaddr),
11 => pmpaddr11::write(pmpaddr),
12 => pmpaddr12::write(pmpaddr),
13 => pmpaddr13::write(pmpaddr),
14 => pmpaddr14::write(pmpaddr),
15 => pmpaddr15::write(pmpaddr),
16 => pmpaddr16::write(pmpaddr),
17 => pmpaddr17::write(pmpaddr),
18 => pmpaddr18::write(pmpaddr),
19 => pmpaddr19::write(pmpaddr),
20 => pmpaddr20::write(pmpaddr),
21 => pmpaddr21::write(pmpaddr),
22 => pmpaddr22::write(pmpaddr),
23 => pmpaddr23::write(pmpaddr),
24 => pmpaddr24::write(pmpaddr),
25 => pmpaddr25::write(pmpaddr),
26 => pmpaddr26::write(pmpaddr),
27 => pmpaddr27::write(pmpaddr),
28 => pmpaddr28::write(pmpaddr),
29 => pmpaddr29::write(pmpaddr),
30 => pmpaddr30::write(pmpaddr),
31 => pmpaddr31::write(pmpaddr),
32 => pmpaddr32::write(pmpaddr),
33 => pmpaddr33::write(pmpaddr),
34 => pmpaddr34::write(pmpaddr),
35 => pmpaddr35::write(pmpaddr),
36 => pmpaddr36::write(pmpaddr),
37 => pmpaddr37::write(pmpaddr),
38 => pmpaddr38::write(pmpaddr),
39 => pmpaddr39::write(pmpaddr),
40 => pmpaddr40::write(pmpaddr),
41 => pmpaddr41::write(pmpaddr),
42 => pmpaddr42::write(pmpaddr),
43 => pmpaddr43::write(pmpaddr),
44 => pmpaddr44::write(pmpaddr),
45 => pmpaddr45::write(pmpaddr),
46 => pmpaddr46::write(pmpaddr),
47 => pmpaddr47::write(pmpaddr),
48 => pmpaddr48::write(pmpaddr),
49 => pmpaddr49::write(pmpaddr),
50 => pmpaddr50::write(pmpaddr),
51 => pmpaddr51::write(pmpaddr),
52 => pmpaddr52::write(pmpaddr),
53 => pmpaddr53::write(pmpaddr),
54 => pmpaddr54::write(pmpaddr),
55 => pmpaddr55::write(pmpaddr),
56 => pmpaddr56::write(pmpaddr),
57 => pmpaddr57::write(pmpaddr),
58 => pmpaddr58::write(pmpaddr),
59 => pmpaddr59::write(pmpaddr),
60 => pmpaddr60::write(pmpaddr),
61 => pmpaddr61::write(pmpaddr),
62 => pmpaddr62::write(pmpaddr),
63 => pmpaddr63::write(pmpaddr),
_ => unimplemented!(),
}
}

pub unsafe fn write_na4_indexed(index: usize, addr: Addr, size: Size) {
write_napot_indexed(index, addr, size);
}
Expand Down

0 comments on commit 554e213

Please sign in to comment.