Module Name: src
Committed By: ryo
Date: Thu May 28 04:51:44 UTC 2020
Modified Files:
src/sys/arch/aarch64/aarch64: genassym.cf locore.S
Log Message:
- make AP{IB,DA,DB}Key are also enabled when ARMV83_PAC.
- If no ARMV83_PAC, clearly disable SCTLR_En{IA,IB,DA,DB}
To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/aarch64/aarch64/genassym.cf
cvs rdiff -u -r1.63 -r1.64 src/sys/arch/aarch64/aarch64/locore.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/aarch64/aarch64/genassym.cf
diff -u src/sys/arch/aarch64/aarch64/genassym.cf:1.25 src/sys/arch/aarch64/aarch64/genassym.cf:1.26
--- src/sys/arch/aarch64/aarch64/genassym.cf:1.25 Sat May 23 18:08:59 2020
+++ src/sys/arch/aarch64/aarch64/genassym.cf Thu May 28 04:51:44 2020
@@ -1,4 +1,4 @@
-# $NetBSD: genassym.cf,v 1.25 2020/05/23 18:08:59 ryo Exp $
+# $NetBSD: genassym.cf,v 1.26 2020/05/28 04:51:44 ryo Exp $
#-
# Copyright (c) 2014 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -368,6 +368,9 @@ define SCTLR_UCI SCTLR_UCI
define SCTLR_nTLSMD SCTLR_nTLSMD
define SCTLR_LSMAOE SCTLR_LSMAOE
define SCTLR_EnIA SCTLR_EnIA
+define SCTLR_EnIB SCTLR_EnIB
+define SCTLR_EnDA SCTLR_EnDA
+define SCTLR_EnDB SCTLR_EnDB
define ICC_SRE_EL2_EN ICC_SRE_EL2_EN
define ICC_SRE_EL2_SRE ICC_SRE_EL2_SRE
Index: src/sys/arch/aarch64/aarch64/locore.S
diff -u src/sys/arch/aarch64/aarch64/locore.S:1.63 src/sys/arch/aarch64/aarch64/locore.S:1.64
--- src/sys/arch/aarch64/aarch64/locore.S:1.63 Wed May 27 19:49:37 2020
+++ src/sys/arch/aarch64/aarch64/locore.S Thu May 28 04:51:44 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.63 2020/05/27 19:49:37 ryo Exp $ */
+/* $NetBSD: locore.S,v 1.64 2020/05/28 04:51:44 ryo Exp $ */
/*
* Copyright (c) 2017 Ryo Shimizu <[email protected]>
@@ -38,7 +38,7 @@
#include <aarch64/hypervisor.h>
#include "assym.h"
-RCSID("$NetBSD: locore.S,v 1.63 2020/05/27 19:49:37 ryo Exp $")
+RCSID("$NetBSD: locore.S,v 1.64 2020/05/28 04:51:44 ryo Exp $")
#ifdef AARCH64_DEVICE_MEM_STRONGLY_ORDERED
#define MAIR_DEVICE_MEM MAIR_DEVICE_nGnRnE
@@ -183,7 +183,8 @@ vstart:
bl aarch64_pac_init
cbnz w0, 1f /* if (aarch64_pac_init() == 0) */
mrs x0, sctlr_el1
- orr x0, x0, #SCTLR_EnIA /* enable PAC */
+ ldr x1, sctlr_pac
+ orr x0, x0, x1 /* enable PAC */
msr sctlr_el1, x0
1:
@@ -517,7 +518,8 @@ mp_vstart:
bl aarch64_pac_init
cbnz w0, 1f /* if (aarch64_pac_init() == 0) */
mrs x0, sctlr_el1
- orr x0, x0, #SCTLR_EnIA /* enable PAC */
+ ldr x1, sctlr_pac
+ orr x0, x0, x1 /* enable PAC */
msr sctlr_el1, x0
1:
@@ -956,6 +958,8 @@ mmu_enable:
mrs x0, sctlr_el1
ldr x1, sctlr_clear
bic x0, x0, x1
+ ldr x1, sctlr_pac /* disable PAC */
+ bic x0, x0, x1
ldr x1, sctlr_set
orr x0, x0, x1
@@ -1051,6 +1055,13 @@ sctlr_clear:
SCTLR_SA | /* Enable SP alignment check */ \
SCTLR_A | /* Alignment check enable */ \
0)
+sctlr_pac:
+ .quad ( \
+ SCTLR_EnIA | /* PACIA (APIAKey_EL1) instruction enable */ \
+ SCTLR_EnIB | /* PACIB (APIBKey_EL1) instruction enable */ \
+ SCTLR_EnDA | /* PACDA (APDAKey_EL1) instruction enable */ \
+ SCTLR_EnDB | /* PACDB (APDBKey_EL1) instruction enable */ \
+ 0)
mdscr_setting:
.quad ( \