Module Name: src
Committed By: matt
Date: Fri Nov 10 22:54:20 UTC 2017
Modified Files:
src/sys/arch/arm/cortex: a9_mpsubr.S
Log Message:
Add #define CPU_CORTEDVIRT to reduce copied complex ifdef.
Shrink HYP test
To generate a diff of this commit:
cvs rdiff -u -r1.52 -r1.53 src/sys/arch/arm/cortex/a9_mpsubr.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/arm/cortex/a9_mpsubr.S
diff -u src/sys/arch/arm/cortex/a9_mpsubr.S:1.52 src/sys/arch/arm/cortex/a9_mpsubr.S:1.53
--- src/sys/arch/arm/cortex/a9_mpsubr.S:1.52 Sat Nov 4 17:09:55 2017
+++ src/sys/arch/arm/cortex/a9_mpsubr.S Fri Nov 10 22:54:20 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: a9_mpsubr.S,v 1.52 2017/11/04 17:09:55 skrll Exp $ */
+/* $NetBSD: a9_mpsubr.S,v 1.53 2017/11/10 22:54:20 matt Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -50,9 +50,11 @@
blx ip
#endif
-#if defined(CPU_CORTEXA7) || defined(CPU_CORTEXA15) || defined(CPU_CORTEXA17)
+#if defined(CPU_CORTEXA7) || defined(CPU_CORTEXA15) || defined(CPU_CORTEXA17) \
+ || defined(CPU_CORTEXA35)
.arch armv7a
- .arch_extension virt
+ .arch_extension virt
+#define CPU_CORTEXVIRT
#endif
// We'll modify va and pa at run time so we can use relocatable addresses.
@@ -350,21 +352,19 @@ xputc:
cortex_init:
mov r10, lr // save lr
-#if defined(CPU_CORTEXA7) || defined(CPU_CORTEXA15) || defined(CPU_CORTEXA17)
+#if defined(CPU_CORTEXVIRT)
/* Leave HYP mode and move into supervisor mode with IRQs/FIQs disabled. */
mrs r0, cpsr
- and r0, r0, #(PSR_MODE) /* Mode is in the low 5 bits of CPSR */
- teq r0, #(PSR_HYP32_MODE) /* Hyp Mode? */
+ and r1, r0, #(PSR_MODE) /* Mode is in the low 5 bits of CPSR */
+ teq r1, #(PSR_HYP32_MODE) /* Hyp Mode? */
bne 1f
/* Set CNTVOFF to 0 */
- mov r0, #0
- mcrr p15, 4, r0, r0, c14
+ mov r1, #0
+ mcrr p15, 4, r1, r1, c14
/* Ensure that IRQ, and FIQ will be disabled after eret */
- mrs r0, cpsr
- bic r0, r0, #(PSR_MODE)
- orr r0, r0, #(PSR_SVC32_MODE)
+ eor r0, r0, #(PSR_SVC32_MODE^PSR_HYP32_MODE)
orr r0, r0, #(I32_bit | F32_bit)
msr spsr_cxsf, r0
/* Exit hypervisor mode */