Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/powerpc/oea Minor re-ordering of a few things, and ...



details:   https://anonhg.NetBSD.org/src/rev/1d0bd4158fc5
branches:  trunk
changeset: 959906:1d0bd4158fc5
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Sun Feb 28 19:01:11 2021 +0000

description:
Minor re-ordering of a few things, and issue an isync barrier at all
critical MMU on/off transitions.

diffstat:

 sys/arch/powerpc/oea/ofw_subr.S |  21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diffs (57 lines):

diff -r 045c762bb8e1 -r 1d0bd4158fc5 sys/arch/powerpc/oea/ofw_subr.S
--- a/sys/arch/powerpc/oea/ofw_subr.S   Sun Feb 28 18:51:51 2021 +0000
+++ b/sys/arch/powerpc/oea/ofw_subr.S   Sun Feb 28 19:01:11 2021 +0000
@@ -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 @@
         */
        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 @@
        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 @@
        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



Home | Main Index | Thread Index | Old Index