Module Name:    src
Committed By:   rin
Date:           Thu Mar  5 11:44:54 UTC 2020

Modified Files:
        src/sys/arch/powerpc/ibm4xx: pmap.c

Log Message:
Fix pmap_procwr().

While we need to turn off IMMU, DMMU should be kept on. Otherwise,
dcbst (and also icbi probably, though not documented clearly both
for 405 and 403) should not work correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.84 -r1.85 src/sys/arch/powerpc/ibm4xx/pmap.c

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/ibm4xx/pmap.c
diff -u src/sys/arch/powerpc/ibm4xx/pmap.c:1.84 src/sys/arch/powerpc/ibm4xx/pmap.c:1.85
--- src/sys/arch/powerpc/ibm4xx/pmap.c:1.84	Thu Mar  5 02:14:52 2020
+++ src/sys/arch/powerpc/ibm4xx/pmap.c	Thu Mar  5 11:44:54 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.84 2020/03/05 02:14:52 rin Exp $	*/
+/*	$NetBSD: pmap.c,v 1.85 2020/03/05 11:44:54 rin Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.84 2020/03/05 02:14:52 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.85 2020/03/05 11:44:54 rin Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -1175,8 +1175,9 @@ pmap_procwr(struct proc *p, vaddr_t va, 
 	}
 	__asm volatile(
 		"mfmsr %0;"
-		"li %1, %7;"
+		"li %1,0x20;"		/* Turn off IMMU */
 		"andc %1,%0,%1;"
+		"ori %1,%1,0x10;"	/* Turn on DMMU for sure */
 		"mtmsr %1;"
 		"sync;isync;"
 		"mfpid %1;"
@@ -1192,8 +1193,7 @@ pmap_procwr(struct proc *p, vaddr_t va, 
 		"mtmsr %0;"
 		"sync; isync"
 		: "=&r" (msr), "=&r" (opid)
-		: "r" (ctx), "r" (va), "r" (len), "r" (step), "r" (-step),
-		  "K" (PSL_IR | PSL_DR));
+		: "r" (ctx), "r" (va), "r" (len), "r" (step), "r" (-step));
 }
 
 

Reply via email to