struct ArmMemoryAttrIndirectionRegister
Defined at line 79 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
Memory Attribute Indirection Register
[arm/v8]: D13.2.95 MAIR_EL1, Memory Attribute Indirection Register, EL1
[arm/v8]: D13.2.96 MAIR_EL2, Memory Attribute Indirection Register, EL2
Public Members
field_attr7_81
field_attr6_82
field_attr5_83
field_attr4_84
field_attr3_85
field_attr2_86
field_attr1_87
field_attr0_88
static const unsigned int kNumAttributes
Public Methods
template <, >
typename SelfType::ValueType attr7 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 81 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr7 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 81 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr7 (typename SelfType::ValueType val)
Defined at line 81 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr7 (typename SelfType::ValueType val)
Defined at line 81 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr6 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 82 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr6 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 82 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr6 (typename SelfType::ValueType val)
Defined at line 82 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr6 (typename SelfType::ValueType val)
Defined at line 82 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr5 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 83 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr5 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 83 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr5 (typename SelfType::ValueType val)
Defined at line 83 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr5 (typename SelfType::ValueType val)
Defined at line 83 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr4 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 84 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr4 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 84 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr4 (typename SelfType::ValueType val)
Defined at line 84 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr4 (typename SelfType::ValueType val)
Defined at line 84 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr3 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 85 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr3 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 85 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr3 (typename SelfType::ValueType val)
Defined at line 85 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr3 (typename SelfType::ValueType val)
Defined at line 85 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr2 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 86 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr2 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 86 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr2 (typename SelfType::ValueType val)
Defined at line 86 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr2 (typename SelfType::ValueType val)
Defined at line 86 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr1 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 87 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr1 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 87 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr1 (typename SelfType::ValueType val)
Defined at line 87 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr1 (typename SelfType::ValueType val)
Defined at line 87 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr0 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 88 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
typename SelfType::ValueType attr0 ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 88 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr0 (typename SelfType::ValueType val)
Defined at line 88 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
template <, >
SelfType & set_attr0 (typename SelfType::ValueType val)
Defined at line 88 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
uint8_t GetAttributeValue (unsigned int index)
Get the memory attribute at the given index.
TODO(https://fxbug.dev/42158108): Ideally hwreg would support this natively.
Defined at line 95 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
std::optional<ArmMairAttribute> GetAttribute (unsigned int index)
Defined at line 102 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
ArmMemoryAttrIndirectionRegister & SetAttributeValue (unsigned int index, uint8_t value)
Set the memory attribute at the given index.
TODO(https://fxbug.dev/42158108): Ideally hwreg would support this natively.
Defined at line 109 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
ArmMemoryAttrIndirectionRegister & SetAttribute (unsigned int index, ArmMairAttribute attr)
Defined at line 119 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
ArmMemoryAttrIndirectionRegister & SetAttribute (unsigned int index, ArmMairAttribute attr)
Defined at line 119 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
std::optional<unsigned int> GetIndex (uint8_t value)
Returns the index associated with a given, configured attribute, if
present.
Defined at line 126 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
std::optional<unsigned int> GetIndex (const ArmMairAttribute & attr)
Defined at line 135 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
std::optional<unsigned int> GetIndex (const ArmMairAttribute & attr)
Defined at line 135 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
uint8_t AttributeToValue (const ArmMairAttribute & attr)
Converts structured attribute to the associated raw value.
Defined at line 140 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
uint8_t AttributeToValue (const ArmMairAttribute & attr)
Converts structured attribute to the associated raw value.
Defined at line 140 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
std::optional<ArmMairAttribute> AttributeFromValue (uint8_t value)
Converts a raw attribute value to the structured version.
Bizarrely, there are valid attribute encodings that correspond to
currently impossible hardware configurations (limited by what knobs are
available on TCR_ELx); in this case, std::nullopt is returned.
[arm/v8]: D13.2.95 MAIR_EL1, Memory Attribute Indirection Register, EL1
[arm/v8]: D13.2.96 MAIR_EL2, Memory Attribute Indirection Register, EL2
Defined at line 155 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h