parent
bb1c1abaa4
commit
55087fc5a2
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (c) 2018 by the author(s)
|
||||
*
|
||||
* =============================================================================
|
||||
*
|
||||
* Licensed under either of
|
||||
* - Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
||||
* - MIT License (http://opensource.org/licenses/MIT)
|
||||
* at your option.
|
||||
*
|
||||
* =============================================================================
|
||||
*
|
||||
* Author(s):
|
||||
* - Andre Richter <andre.o.richter@gmail.com>
|
||||
*/
|
||||
|
||||
//! Translation Table Base Register 1 - EL1
|
||||
//!
|
||||
//! Holds the base address of the translation table for the initial lookup for
|
||||
//! stage 1 of the translation of an address from the upper VA range in the
|
||||
//! EL1&0 translation regime, and other information for this translation regime.
|
||||
|
||||
use register::cpu::RegisterReadWrite;
|
||||
|
||||
register_bitfields! {u64,
|
||||
TTBR1_EL1 [
|
||||
/// An ASID for the translation table base address. The TCR_EL1.A1 field
|
||||
/// selects either TTBR0_EL1.ASID or TTBR1_EL1.ASID.
|
||||
///
|
||||
/// If the implementation has only 8 bits of ASID, then the upper 8 bits
|
||||
/// of this field are RES 0.
|
||||
ASID OFFSET(48) NUMBITS(16) [],
|
||||
|
||||
/// Translation table base address
|
||||
BADDR OFFSET(1) NUMBITS(47) [],
|
||||
|
||||
/// Common not Private
|
||||
CnP OFFSET(0) NUMBITS(1) []
|
||||
]
|
||||
}
|
||||
|
||||
pub struct Reg;
|
||||
|
||||
impl RegisterReadWrite<u64, TTBR1_EL1::Register> for Reg {
|
||||
sys_coproc_read_raw!(u64, "TTBR1_EL1");
|
||||
sys_coproc_write_raw!(u64, "TTBR1_EL1");
|
||||
}
|
||||
|
||||
impl Reg {
|
||||
#[inline]
|
||||
pub fn get_baddr(&self) -> u64 {
|
||||
self.read(TTBR1_EL1::BADDR) << 1
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn set_baddr(&self, addr: u64) {
|
||||
self.write(TTBR1_EL1::BADDR.val(addr >> 1));
|
||||
}
|
||||
}
|
||||
|
||||
pub static TTBR1_EL1: Reg = Reg {};
|
Loading…
Reference in new issue