Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/aarch64/aarch64 - make AP{IB,DA,DB}Key are also ena...



details:   https://anonhg.NetBSD.org/src/rev/ac69ae02447f
branches:  trunk
changeset: 972500:ac69ae02447f
user:      ryo <ryo%NetBSD.org@localhost>
date:      Thu May 28 04:51:44 2020 +0000

description:
- make AP{IB,DA,DB}Key are also enabled when ARMV83_PAC.
- If no ARMV83_PAC, clearly disable SCTLR_En{IA,IB,DA,DB}

diffstat:

 sys/arch/aarch64/aarch64/genassym.cf |   5 ++++-
 sys/arch/aarch64/aarch64/locore.S    |  19 +++++++++++++++----
 2 files changed, 19 insertions(+), 5 deletions(-)

diffs (80 lines):

diff -r 8f4429b419df -r ac69ae02447f sys/arch/aarch64/aarch64/genassym.cf
--- a/sys/arch/aarch64/aarch64/genassym.cf      Wed May 27 23:52:19 2020 +0000
+++ b/sys/arch/aarch64/aarch64/genassym.cf      Thu May 28 04:51:44 2020 +0000
@@ -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_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
diff -r 8f4429b419df -r ac69ae02447f sys/arch/aarch64/aarch64/locore.S
--- a/sys/arch/aarch64/aarch64/locore.S Wed May 27 23:52:19 2020 +0000
+++ b/sys/arch/aarch64/aarch64/locore.S Thu May 28 04:51:44 2020 +0000
@@ -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 <ryo%nerv.org@localhost>
@@ -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 @@
        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 @@
        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 @@
        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_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 ( \



Home | Main Index | Thread Index | Old Index