Module Name: src
Committed By: thorpej
Date: Sun Feb 28 19:01:11 UTC 2021
Modified Files:
src/sys/arch/powerpc/oea: ofw_subr.S
Log Message:
Minor re-ordering of a few things, and issue an isync barrier at all
critical MMU on/off transitions.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/powerpc/oea/ofw_subr.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/powerpc/oea/ofw_subr.S
diff -u src/sys/arch/powerpc/oea/ofw_subr.S:1.19 src/sys/arch/powerpc/oea/ofw_subr.S:1.20
--- src/sys/arch/powerpc/oea/ofw_subr.S:1.19 Wed Feb 24 17:35:39 2021
+++ src/sys/arch/powerpc/oea/ofw_subr.S Sun Feb 28 19:01:11 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ofw_subr.S,v 1.19 2021/02/24 17:35:39 thorpej Exp $ */
+/* $NetBSD: ofw_subr.S,v 1.20 2021/02/28 19:01:11 thorpej Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -148,10 +148,6 @@ ENTRY_NOPROFILE(openfirmware_trampoline)
*/
stwu %r1,-48(%r1)
- lis %r4,ofentry@ha /* get firmware entry point */
- lwz %r4,ofentry@l(%r4)
- mtlr %r4
-
#ifdef FIRMWORKSBUGS
lis %r4,ofwreal_incharge@ha
lwz %r4,ofwreal_incharge@l(%r4)
@@ -164,9 +160,12 @@ ENTRY_NOPROFILE(openfirmware_trampoline)
mfmsr %r4 /* save msr */
stw %r4,8(%r1)
- li %r0,0 /* clear battable translations */
+ li %r0,0 /* disable MMU */
mtmsr %r0
+ isync
+
#if defined (PPC_OEA) || defined (PPC_OEA64_BRIDGE)
+ /* clear BAT translations */
mtdbatu 2,%r0
mtdbatu 3,%r0
mtibatu 2,%r0
@@ -202,13 +201,21 @@ ENTRY_NOPROFILE(openfirmware_trampoline)
addi %r5,%r5,_C_LABEL(ofw_battable)@l
stw %r5,CI_BATTABLE(%r4)
- lis %r4,ofwmsr@ha /* Open Firmware msr */
+ lis %r4,ofentry@ha /* get firmware entry point */
+ lwz %r4,ofentry@l(%r4)
+ mtlr %r4
+
+ lis %r4,ofwmsr@ha /* load Open Firmware MSR */
lwz %r5,ofwmsr@l(%r4)
mtmsr %r5
isync
blrl /* call Open Firmware */
+ li %r0,0 /* ensure disable MMU is disabled */
+ mtmsr %r0
+ isync
+
/* curcpu()->ci_battable = &battable */
GET_CPUINFO(%r4)
lis %r5,_C_LABEL(battable)@ha