diff --git a/headers/private/kernel/arch/arm64/arm_registers.h b/headers/private/kernel/arch/arm64/arm_registers.h index ae6e84310e..7bfd1bc911 100644 --- a/headers/private/kernel/arch/arm64/arm_registers.h +++ b/headers/private/kernel/arch/arm64/arm_registers.h @@ -501,8 +501,6 @@ #define MAIR_ATTR(attr, idx) ((attr) << ((idx) * 8)) #define MAIR_DEVICE_nGnRnE 0x00 #define MAIR_DEVICE_nGnRE 0x04 -#define MAIR_DEVICE_nGRE 0x08 -#define MAIR_DEVICE_GRE 0x0C #define MAIR_NORMAL_NC 0x44 #define MAIR_NORMAL_WT 0xbb #define MAIR_NORMAL_WB 0xff diff --git a/src/system/kernel/arch/arm64/VMSAv8TranslationMap.cpp b/src/system/kernel/arch/arm64/VMSAv8TranslationMap.cpp index ab9d98f774..333370f344 100644 --- a/src/system/kernel/arch/arm64/VMSAv8TranslationMap.cpp +++ b/src/system/kernel/arch/arm64/VMSAv8TranslationMap.cpp @@ -468,7 +468,7 @@ VMSAv8TranslationMap::GetMemoryAttr(uint32 attributes, uint32 memoryType, bool i type = MAIR_DEVICE_nGnRnE; break; case B_MTR_WC: - type = MAIR_DEVICE_GRE; + type = MAIR_NORMAL_NC; break; case B_MTR_WT: type = MAIR_NORMAL_WT; diff --git a/src/system/kernel/arch/arm64/arch_vm_translation_map.cpp b/src/system/kernel/arch/arm64/arch_vm_translation_map.cpp index 56d24a1d83..d0d891b798 100644 --- a/src/system/kernel/arch/arm64/arch_vm_translation_map.cpp +++ b/src/system/kernel/arch/arm64/arch_vm_translation_map.cpp @@ -72,6 +72,7 @@ arch_vm_translation_map_init(kernel_args* args, VMPhysicalPageMapper** _physical uint32_t tg1 = (tcr >> 30) & 0x3; uint64_t ttbr0 = READ_SPECIALREG(TTBR0_EL1); uint64_t ttbr1 = READ_SPECIALREG(TTBR1_EL1); + uint64_t mair = READ_SPECIALREG(MAIR_EL1); uint64_t mmfr1 = READ_SPECIALREG(ID_AA64MMFR1_EL1); uint64_t mmfr2 = READ_SPECIALREG(ID_AA64MMFR2_EL1); uint64_t sctlr = READ_SPECIALREG(SCTLR_EL1); @@ -92,13 +93,7 @@ arch_vm_translation_map_init(kernel_args* args, VMPhysicalPageMapper** _physical VMSAv8TranslationMap::fHwFeature |= VMSAv8TranslationMap::HW_COMMON_NOT_PRIVATE; } - uint64_t mair = - (MAIR_DEVICE_nGnRnE) | // Uncached - (MAIR_DEVICE_GRE << 8) | // Write-combining - (MAIR_NORMAL_WT << 16) | // Write-through - (MAIR_NORMAL_WB << 24); // Write-back VMSAv8TranslationMap::fMair = mair; - WRITE_SPECIALREG(MAIR_EL1, mair); WRITE_SPECIALREG(TCR_EL1, tcr);