Module Name:    src
Committed By:   chs
Date:           Mon Jan  7 16:59:18 UTC 2013

Modified Files:
        src/sys/arch/sparc/include: pmap.h vmparam.h
        src/sys/arch/sparc/sparc: pmap.c

Log Message:
switch to __USE_TOPDOWN_VM.


To generate a diff of this commit:
cvs rdiff -u -r1.90 -r1.91 src/sys/arch/sparc/include/pmap.h
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/sparc/include/vmparam.h
cvs rdiff -u -r1.349 -r1.350 src/sys/arch/sparc/sparc/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/sparc/include/pmap.h
diff -u src/sys/arch/sparc/include/pmap.h:1.90 src/sys/arch/sparc/include/pmap.h:1.91
--- src/sys/arch/sparc/include/pmap.h:1.90	Mon Feb 14 10:22:19 2011
+++ src/sys/arch/sparc/include/pmap.h	Mon Jan  7 16:59:18 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.90 2011/02/14 10:22:19 he Exp $ */
+/*	$NetBSD: pmap.h,v 1.91 2013/01/07 16:59:18 chs Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -240,7 +240,7 @@ int	pmap_dumpmmu(int (*)(dev_t, daddr_t,
 #define	pmap_resident_count(pm)	((pm)->pm_stats.resident_count)
 #define	pmap_wired_count(pm)	((pm)->pm_stats.wired_count)
 
-#define PMAP_PREFER(fo, ap, sz, td)	pmap_prefer((fo), (ap))
+#define PMAP_PREFER(fo, ap, sz, td)	pmap_prefer((fo), (ap), (sz), (td))
 
 #define PMAP_EXCLUDE_DECLS	/* tells MI pmap.h *not* to include decls */
 
@@ -249,7 +249,7 @@ int	pmap_dumpmmu(int (*)(dev_t, daddr_t,
 void		pmap_activate(struct lwp *);
 void		pmap_deactivate(struct lwp *);
 void		pmap_bootstrap(int nmmu, int nctx, int nregion);
-void		pmap_prefer(vaddr_t, vaddr_t *);
+void		pmap_prefer(vaddr_t, vaddr_t *, size_t, int);
 int		pmap_pa_exists(paddr_t);
 void		pmap_unwire(pmap_t, vaddr_t);
 void		pmap_copy(pmap_t, pmap_t, vaddr_t, vsize_t, vaddr_t);

Index: src/sys/arch/sparc/include/vmparam.h
diff -u src/sys/arch/sparc/include/vmparam.h:1.42 src/sys/arch/sparc/include/vmparam.h:1.43
--- src/sys/arch/sparc/include/vmparam.h:1.42	Sun Nov 14 13:33:23 2010
+++ src/sys/arch/sparc/include/vmparam.h	Mon Jan  7 16:59:18 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmparam.h,v 1.42 2010/11/14 13:33:23 uebayasi Exp $ */
+/*	$NetBSD: vmparam.h,v 1.43 2013/01/07 16:59:18 chs Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -43,6 +43,8 @@
 #ifndef _SPARC_VMPARAM_H_
 #define _SPARC_VMPARAM_H_
 
+#define __USE_TOPDOWN_VM
+
 /*
  * Machine dependent constants for SPARC
  */

Index: src/sys/arch/sparc/sparc/pmap.c
diff -u src/sys/arch/sparc/sparc/pmap.c:1.349 src/sys/arch/sparc/sparc/pmap.c:1.350
--- src/sys/arch/sparc/sparc/pmap.c:1.349	Sun Nov  4 00:32:47 2012
+++ src/sys/arch/sparc/sparc/pmap.c	Mon Jan  7 16:59:18 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.349 2012/11/04 00:32:47 chs Exp $ */
+/*	$NetBSD: pmap.c,v 1.350 2013/01/07 16:59:18 chs Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.349 2012/11/04 00:32:47 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.350 2013/01/07 16:59:18 chs Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -7408,21 +7408,32 @@ kvm_iocache(char *va, int npages)
  * (This will just seg-align mappings.)
  */
 void
-pmap_prefer(vaddr_t foff, vaddr_t *vap)
+pmap_prefer(vaddr_t foff, vaddr_t *vap, size_t size, int td)
 {
 	vaddr_t va = *vap;
-	long d, m;
-
-	if (VA_INHOLE(va))
-		va = MMU_HOLE_END;
+	long m;
 
 	m = CACHE_ALIAS_DIST;
 	if (m == 0)		/* m=0 => no cache aliasing */
 		return;
 
-	d = foff - va;
-	d &= (m - 1);
-	*vap = va + d;
+	if (VA_INHOLE(va)) {
+		if (td)
+			va = MMU_HOLE_START - size;
+		else
+			va = MMU_HOLE_END;
+	}
+
+	va = (va & ~(m - 1)) | (foff & (m - 1));
+
+	if (td) {
+		if (va > *vap)
+			va -= m;
+	} else {
+		if (va < *vap)
+			va += m;
+	}
+	*vap = va;
 }
 
 void

Reply via email to