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.