Set-up proper TCR values for memory related to Translation Table Walking
This commit adds proper cache and shareability attributes to the TCR register. Set memory attributes to Normal, outer and inner cacheable WBWA. Set shareability to inner and outer shareable when SMP is enabled. Reviewed by: andrew Obtained from: Semihalf Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3093
This commit is contained in:
parent
f7c698e20d
commit
1038d102c4
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285626
@ -535,7 +535,8 @@ mair:
|
||||
/* Device Normal, no cache Normal, write-back */
|
||||
.quad MAIR_ATTR(0x00, 0) | MAIR_ATTR(0x44, 1) | MAIR_ATTR(0xff, 2)
|
||||
tcr:
|
||||
.quad (TCR_TxSZ(64 - VIRT_BITS) | TCR_ASID_16 | TCR_TG1_4K)
|
||||
.quad (TCR_TxSZ(64 - VIRT_BITS) | TCR_ASID_16 | TCR_TG1_4K | \
|
||||
TCR_CACHE_ATTRS | TCR_SMP_ATTRS)
|
||||
sctlr_set:
|
||||
/* Bits to set */
|
||||
.quad (SCTLR_UCI | SCTLR_nTWE | SCTLR_nTWI | SCTLR_UCT | SCTLR_DZE | \
|
||||
|
@ -200,6 +200,28 @@
|
||||
#define TCR_TG1_4K (2 << TCR_TG1_SHIFT)
|
||||
#define TCR_TG1_64K (3 << TCR_TG1_SHIFT)
|
||||
|
||||
#define TCR_SH1_SHIFT 28
|
||||
#define TCR_SH1_IS (0x3UL << TCR_SH1_SHIFT)
|
||||
#define TCR_ORGN1_SHIFT 26
|
||||
#define TCR_ORGN1_WBWA (0x1UL << TCR_ORGN1_SHIFT)
|
||||
#define TCR_IRGN1_SHIFT 24
|
||||
#define TCR_IRGN1_WBWA (0x1UL << TCR_IRGN1_SHIFT)
|
||||
#define TCR_SH0_SHIFT 12
|
||||
#define TCR_SH0_IS (0x3UL << TCR_SH0_SHIFT)
|
||||
#define TCR_ORGN0_SHIFT 10
|
||||
#define TCR_ORGN0_WBWA (0x1UL << TCR_ORGN0_SHIFT)
|
||||
#define TCR_IRGN0_SHIFT 8
|
||||
#define TCR_IRGN0_WBWA (0x1UL << TCR_IRGN0_SHIFT)
|
||||
|
||||
#define TCR_CACHE_ATTRS ((TCR_IRGN0_WBWA | TCR_IRGN1_WBWA) |\
|
||||
(TCR_ORGN0_WBWA | TCR_ORGN1_WBWA))
|
||||
|
||||
#ifdef SMP
|
||||
#define TCR_SMP_ATTRS (TCR_SH0_IS | TCR_SH1_IS)
|
||||
#else
|
||||
#define TCR_SMP_ATTRS 0
|
||||
#endif
|
||||
|
||||
#define TCR_T1SZ_SHIFT 16
|
||||
#define TCR_T0SZ_SHIFT 0
|
||||
#define TCR_TxSZ(x) (((x) << TCR_T1SZ_SHIFT) | ((x) << TCR_T0SZ_SHIFT))
|
||||
|
Loading…
Reference in New Issue
Block a user