Module Name:    src
Committed By:   mrg
Date:           Wed Feb 24 01:58:53 UTC 2010

Modified Files:
        src/sys/arch/sparc64/include: pmap.h
        src/sys/arch/sparc64/sparc64: ipifuncs.c locore.s pmap.c

Log Message:
- re-introduce sp_tlb_flush_pte() and sp_tlb_flush_all() that call
  the right USI/USIII version.
- define tlb_flush_pte() in terms of sp_tlb_flush_pte() for the
  !MULTIPROCESSOR case

this centralises some CPU_IS_USIII_UP() tests.


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/sparc64/include/pmap.h
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/sparc64/sparc64/ipifuncs.c
cvs rdiff -u -r1.319 -r1.320 src/sys/arch/sparc64/sparc64/locore.s
cvs rdiff -u -r1.251 -r1.252 src/sys/arch/sparc64/sparc64/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/sparc64/include/pmap.h
diff -u src/sys/arch/sparc64/include/pmap.h:1.48 src/sys/arch/sparc64/include/pmap.h:1.49
--- src/sys/arch/sparc64/include/pmap.h:1.48	Tue Feb 23 22:52:21 2010
+++ src/sys/arch/sparc64/include/pmap.h	Wed Feb 24 01:58:52 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.48 2010/02/23 22:52:21 mrg Exp $	*/
+/*	$NetBSD: pmap.h,v 1.49 2010/02/24 01:58:52 mrg Exp $	*/
 
 /*-
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -211,18 +211,29 @@
 void sp_tlb_flush_all_us(void);
 void sp_tlb_flush_all_usiii(void);
 
-#ifdef MULTIPROCESSOR
-void smp_tlb_flush_pte(vaddr_t, pmap_t);
-#define	tlb_flush_pte(va,pm)	smp_tlb_flush_pte(va, pm)
-#else
 static __inline__ void
-tlb_flush_pte(vaddr_t va, pmap_t pm)
+sp_tlb_flush_pte(vaddr_t va, int ctx)
 {
 	if (CPU_IS_USIII_UP())
-		sp_tlb_flush_pte_usiii(va, pm->pm_ctx);
+		sp_tlb_flush_pte_usiii(va, ctx);
 	else
-		sp_tlb_flush_pte_us(va, pm->pm_ctx);
+		sp_tlb_flush_pte_us(va, ctx);
 }
+
+static __inline__ void
+sp_tlb_flush_all(void)
+{
+	if (CPU_IS_USIII_UP())
+		sp_tlb_flush_all_usiii();
+	else
+		sp_tlb_flush_all_us();
+}
+
+#ifdef MULTIPROCESSOR
+void smp_tlb_flush_pte(vaddr_t, pmap_t);
+#define	tlb_flush_pte(va,pm)	smp_tlb_flush_pte(va, pm)
+#else
+#define	tlb_flush_pte(va,pm)	sp_tlb_flush_pte(va, (pm)->pm_ctx)
 #endif
 
 /* Installed physical memory, as discovered during bootstrap. */

Index: src/sys/arch/sparc64/sparc64/ipifuncs.c
diff -u src/sys/arch/sparc64/sparc64/ipifuncs.c:1.31 src/sys/arch/sparc64/sparc64/ipifuncs.c:1.32
--- src/sys/arch/sparc64/sparc64/ipifuncs.c:1.31	Sat Feb 20 16:46:38 2010
+++ src/sys/arch/sparc64/sparc64/ipifuncs.c	Wed Feb 24 01:58:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipifuncs.c,v 1.31 2010/02/20 16:46:38 martin Exp $ */
+/*	$NetBSD: ipifuncs.c,v 1.32 2010/02/24 01:58:53 mrg Exp $ */
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipifuncs.c,v 1.31 2010/02/20 16:46:38 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipifuncs.c,v 1.32 2010/02/24 01:58:53 mrg Exp $");
 
 #include "opt_ddb.h"
 
@@ -385,12 +385,8 @@
 	/* Flush our own TLB */
 	ctx = pm->pm_ctx[cpu_number()];
 	KASSERT(ctx >= 0);
-	if (kpm || ctx > 0) {
-		if (CPU_IS_USIII_UP())
-			sp_tlb_flush_pte_usiii(va, ctx);
-		else
-			sp_tlb_flush_pte_us(va, ctx);
-	}
+	if (kpm || ctx > 0)
+		sp_tlb_flush_pte(va, ctx);
 
 	CPUSET_ASSIGN(cpuset, cpus_active);
 	CPUSET_DEL(cpuset, cpu_number());

Index: src/sys/arch/sparc64/sparc64/locore.s
diff -u src/sys/arch/sparc64/sparc64/locore.s:1.319 src/sys/arch/sparc64/sparc64/locore.s:1.320
--- src/sys/arch/sparc64/sparc64/locore.s:1.319	Mon Feb 22 22:28:57 2010
+++ src/sys/arch/sparc64/sparc64/locore.s	Wed Feb 24 01:58:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.319 2010/02/22 22:28:57 mrg Exp $	*/
+/*	$NetBSD: locore.s,v 1.320 2010/02/24 01:58:53 mrg Exp $	*/
 
 /*
  * Copyright (c) 1996-2002 Eduardo Horvath
@@ -4965,7 +4965,8 @@
 
 
 /*
- * sp_tlb_flush_all_us(void)/sp_tlb_flush_all_usiii(void)
+ * sp_tlb_flush_all_us(void)
+ * sp_tlb_flush_all_usiii(void)
  *
  * Flush all user TLB entries from both IMMU and DMMU.
  * We have both UltraSPARC I+II, and UltraSPARC >=III versions.

Index: src/sys/arch/sparc64/sparc64/pmap.c
diff -u src/sys/arch/sparc64/sparc64/pmap.c:1.251 src/sys/arch/sparc64/sparc64/pmap.c:1.252
--- src/sys/arch/sparc64/sparc64/pmap.c:1.251	Sat Feb 13 08:56:29 2010
+++ src/sys/arch/sparc64/sparc64/pmap.c	Wed Feb 24 01:58:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.251 2010/02/13 08:56:29 mrg Exp $	*/
+/*	$NetBSD: pmap.c,v 1.252 2010/02/24 01:58:53 mrg Exp $	*/
 /*
  *
  * Copyright (C) 1996-1999 Eduardo Horvath.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.251 2010/02/13 08:56:29 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.252 2010/02/24 01:58:53 mrg Exp $");
 
 #undef	NO_VCACHE /* Don't forget the locked TLB in dostart */
 #define	HWREF
@@ -1858,12 +1858,8 @@
 #ifdef MULTIPROCESSOR
 		if (wasmapped && pmap_is_on_mmu(pm))
 			tlb_flush_pte(va, pm);
-		else {
-			if (CPU_IS_USIII_UP())
-				sp_tlb_flush_pte_usiii(va, pmap_ctx(pm));
-			else
-				sp_tlb_flush_pte_us(va, pmap_ctx(pm));
-		}
+		else
+			sp_tlb_flush_pte(va, pmap_ctx(pm));
 #else
 		tlb_flush_pte(va, pm);
 #endif
@@ -3076,10 +3072,7 @@
 				clrx(&curcpu()->ci_tsb_immu[i].data);
 			}
 		}
-		if (CPU_IS_USIII_UP())
-			sp_tlb_flush_all_usiii();
-		else
-			sp_tlb_flush_all_us();
+		sp_tlb_flush_all();
 		ctx = 1;
 		curcpu()->ci_pmap_next_ctx = 2;
 	}

Reply via email to