Module Name:    src
Committed By:   thorpej
Date:           Sat May 19 20:04:41 UTC 2018

Modified Files:
        src/sys/arch/alpha/include: pmap.h

Log Message:
Implement PMAP_DIRECT / pmap_direct_process() in support of experimental
UBC optimizations.


To generate a diff of this commit:
cvs rdiff -u -r1.79 -r1.80 src/sys/arch/alpha/include/pmap.h

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/alpha/include/pmap.h
diff -u src/sys/arch/alpha/include/pmap.h:1.79 src/sys/arch/alpha/include/pmap.h:1.80
--- src/sys/arch/alpha/include/pmap.h:1.79	Wed Jan  1 16:09:04 2014
+++ src/sys/arch/alpha/include/pmap.h	Sat May 19 20:04:41 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.79 2014/01/01 16:09:04 matt Exp $ */
+/* $NetBSD: pmap.h,v 1.80 2018/05/19 20:04:41 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1998, 1999, 2000, 2001, 2007 The NetBSD Foundation, Inc.
@@ -228,11 +228,24 @@ pmap_remove_all(struct pmap *pmap)
 #define	PMAP_STEAL_MEMORY		/* enable pmap_steal_memory() */
 #define	PMAP_GROWKERNEL			/* enable pmap_growkernel() */
 
+#define	PMAP_DIRECT
+#define	PMAP_DIRECT_MAP(pa)		ALPHA_PHYS_TO_K0SEG((pa))
+#define	PMAP_DIRECT_UNMAP(va)		ALPHA_K0SEG_TO_PHYS((va))
+
+static __inline int
+pmap_direct_process(paddr_t pa, voff_t pgoff, size_t len,
+    int (*process)(void *, size_t, void *), void *arg)
+{
+	vaddr_t va = PMAP_DIRECT_MAP(pa);
+
+	return process((void *)(va + pgoff), len, arg);
+}
+
 /*
  * Alternate mapping hooks for pool pages.  Avoids thrashing the TLB.
  */
-#define	PMAP_MAP_POOLPAGE(pa)		ALPHA_PHYS_TO_K0SEG((pa))
-#define	PMAP_UNMAP_POOLPAGE(va)		ALPHA_K0SEG_TO_PHYS((va))
+#define	PMAP_MAP_POOLPAGE(pa)		PMAP_DIRECT_MAP(pa)
+#define	PMAP_UNMAP_POOLPAGE(va)		PMAP_DIRECT_UNMAP(va)
 
 /*
  * Other hooks for the pool allocator.

Reply via email to