Page MenuHomeFreeBSD

D20835.id65763.diff
No OneTemporary

D20835.id65763.diff

Index: sys/arm64/arm64/locore.S
===================================================================
--- sys/arm64/arm64/locore.S
+++ sys/arm64/arm64/locore.S
@@ -722,7 +722,7 @@
MAIR_ATTR(MAIR_NORMAL_WB, VM_MEMATTR_WRITE_BACK) | \
MAIR_ATTR(MAIR_NORMAL_WT, VM_MEMATTR_WRITE_THROUGH)
tcr:
- .quad (TCR_TxSZ(64 - VIRT_BITS) | TCR_TG1_4K | \
+ .quad (TCR_TxSZ(64 - VIRT_BITS) | TCR_TBI0 | TCR_TBI1 | TCR_TG1_4K | \
TCR_CACHE_ATTRS | TCR_SMP_ATTRS)
sctlr_set:
/* Bits to set */
Index: sys/arm64/arm64/trap.c
===================================================================
--- sys/arm64/arm64/trap.c
+++ sys/arm64/arm64/trap.c
@@ -419,7 +419,7 @@
exception = ESR_ELx_EXCEPTION(esr);
switch (exception) {
case EXCP_INSN_ABORT_L:
- far = READ_SPECIALREG(far_el1);
+ far = READ_SPECIALREG(far_el1) & 0xffffffffffff;
/*
* Userspace may be trying to train the branch predictor to
@@ -435,7 +435,7 @@
case EXCP_UNKNOWN:
case EXCP_DATA_ABORT_L:
case EXCP_DATA_ABORT:
- far = READ_SPECIALREG(far_el1);
+ far = READ_SPECIALREG(far_el1) & 0xffffffffffff;
break;
}
intr_enable();
Index: sys/arm64/include/armreg.h
===================================================================
--- sys/arm64/include/armreg.h
+++ sys/arm64/include/armreg.h
@@ -622,6 +622,8 @@
#define TCR_ASID_SHIFT 36
#define TCR_ASID_WIDTH 1
#define TCR_ASID_16 (0x1UL << TCR_ASID_SHIFT)
+#define TCR_TBI0 (0x1UL << 37)
+#define TCR_TBI1 (0x1UL << 38)
#define TCR_IPS_SHIFT 32
#define TCR_IPS_WIDTH 3

File Metadata

Mime Type
text/plain
Expires
Wed, May 27, 4:22 AM (11 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33546478
Default Alt Text
D20835.id65763.diff (1 KB)

Event Timeline