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

Records