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 ( \

Reply via email to