1pub mod interrupt;
4
5
6#[macro_export]
7#[doc(hidden)]
8macro_rules! cp15_register_get {
9 [$op_1:literal, $cr_n:literal, $cr_m:literal, $op_2:literal] => {
10 {
11 let mut value: usize;
12 unsafe {
13 core::arch::asm!(
14 concat!(
15 "mrc p15, ",
16 $op_1,
17 ", {}, ",
18 $cr_n,
19 ", ",
20 $cr_m,
21 ", ",
22 $op_2,
23 ),
24 out(reg) value,
25 );
26 }
27 value
28 }
29 }
30}
31
32#[macro_export]
33#[doc(hidden)]
34macro_rules! cp15_register_set {
35 [$op_1:literal, $cr_n:literal, $cr_m:literal, $op_2:literal, $value:expr] => {
36 {
37 let value: usize = $value;
38 core::arch::asm!(
39 concat!(
40 "mcr p15, ",
41 $op_1,
42 ", {}, ",
43 $cr_n,
44 ", ",
45 $cr_m,
46 ", ",
47 $op_2,
48 ),
49 in(reg) value,
50 );
51 }
52 }
53}