[Differential] [Updated, 36 lines] D3093: ARMv8 locore.S cleanup and TCR register update
wma_semihalf.com (Wojciech Macek)
phabric-noreply at FreeBSD.org
Wed Jul 15 09:15:04 UTC 2015
wma_semihalf.com updated the summary for this revision.
wma_semihalf.com updated this revision to Diff 6962.
wma_semihalf.com added a comment.
Agreed.
REPOSITORY
rS FreeBSD src repository
CHANGES SINCE LAST UPDATE
https://reviews.freebsd.org/D3093?vs=6958&id=6962
REVISION DETAIL
https://reviews.freebsd.org/D3093
AFFECTED FILES
sys/arm64/arm64/locore.S
sys/arm64/include/armreg.h
CHANGE DETAILS
diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h
--- a/sys/arm64/include/armreg.h
+++ b/sys/arm64/include/armreg.h
@@ -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))
diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S
--- a/sys/arm64/arm64/locore.S
+++ b/sys/arm64/arm64/locore.S
@@ -27,6 +27,8 @@
*/
#include "assym.s"
+#include "opt_kstack_pages.h"
+
#include <sys/syscall.h>
#include <machine/asm.h>
#include <machine/armreg.h>
@@ -43,6 +45,12 @@
#define NORMAL_UNCACHED 1
#define NORMAL_MEM 2
+#ifdef SMP
+#define SHAREABILITY ATTR_SH(ATTR_SH_IS)
+#else
+#define SHAREABILITY 0
+#endif
+
/*
* We assume:
* MMU on with an identity map, or off
@@ -180,8 +188,7 @@
mp_virtdone:
ldr x4, =secondary_stacks
mov x5, #(PAGE_SIZE * KSTACK_PAGES)
- sub x1, x0, #1
- mul x5, x1, x5
+ mul x5, x0, x5
add sp, x4, x5
b init_secondary
@@ -535,7 +542,8 @@
/* 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 | \
EMAIL PREFERENCES
https://reviews.freebsd.org/settings/panel/emailpreferences/
To: wma_semihalf.com, zbb, emaste, andrew
Cc: imp, andrew, freebsd-arm-list, emaste
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3093.6962.patch
Type: text/x-patch
Size: 2173 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20150715/b590d285/attachment.bin>
More information about the freebsd-arm
mailing list