cortex_a/registers/
vttbr_el2.rs1use tock_registers::{
10 interfaces::{Readable, Writeable},
11 register_bitfields,
12};
13
14register_bitfields! {u64,
15 pub VTTBR_EL2 [
16 VMID OFFSET(48) NUMBITS(16) [],
20
21 BADDR OFFSET(1) NUMBITS(48) [],
23
24 CnP OFFSET(0) NUMBITS(1) []
26 ]
27}
28
29pub struct Reg;
30
31impl Readable for Reg {
32 type T = u64;
33 type R = VTTBR_EL2::Register;
34
35 sys_coproc_read_raw!(u64, "VTTBR_EL2", "x");
36}
37
38impl Writeable for Reg {
39 type T = u64;
40 type R = VTTBR_EL2::Register;
41
42 sys_coproc_write_raw!(u64, "VTTBR_EL2", "x");
43}
44
45impl Reg {
46 #[inline(always)]
47 pub fn get_baddr(&self) -> u64 {
48 self.read(VTTBR_EL2::BADDR) << 1
49 }
50
51 #[inline(always)]
52 pub fn set_baddr(&self, addr: u64) {
53 self.write(VTTBR_EL2::BADDR.val(addr >> 1));
54 }
55}
56
57pub const VTTBR_EL2: Reg = Reg {};