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.