diff options
author | 2003-12-22 20:10:23 +0000 | |
---|---|---|
committer | 2003-12-22 20:10:23 +0000 | |
commit | 7d35fa23bd5850afb2e3c6fef1d961dc77bc88ef (patch) | |
tree | 8222e3f0327940a9fa80b1ea2353cfc644a71041 | |
parent | typos from Jared Yanovich; (diff) | |
download | wireguard-openbsd-7d35fa23bd5850afb2e3c6fef1d961dc77bc88ef.tar.xz wireguard-openbsd-7d35fa23bd5850afb2e3c6fef1d961dc77bc88ef.zip |
Get rid of kvtop() usage in dma_cachectl().
-rw-r--r-- | sys/arch/mvme88k/mvme88k/m88110.c | 16 | ||||
-rw-r--r-- | sys/arch/mvme88k/mvme88k/m8820x.c | 46 |
2 files changed, 39 insertions, 23 deletions
diff --git a/sys/arch/mvme88k/mvme88k/m88110.c b/sys/arch/mvme88k/mvme88k/m88110.c index 354642502e7..c3f2943a77e 100644 --- a/sys/arch/mvme88k/mvme88k/m88110.c +++ b/sys/arch/mvme88k/mvme88k/m88110.c @@ -1,4 +1,4 @@ -/* $OpenBSD: m88110.c,v 1.11 2003/12/19 22:30:18 miod Exp $ */ +/* $OpenBSD: m88110.c,v 1.12 2003/12/22 20:10:23 miod Exp $ */ /* * Copyright (c) 1998 Steve Murphree, Jr. * All rights reserved. @@ -61,6 +61,7 @@ #include <sys/types.h> #include <sys/systm.h> #include <sys/simplelock.h> + #include <machine/board.h> #include <machine/cpu_number.h> #include <machine/cmmu.h> @@ -69,6 +70,8 @@ #include <machine/locore.h> #include <machine/trap.h> +#include <uvm/uvm_extern.h> + #ifdef DEBUG #define DB_CMMU 0x4000 /* MMU debug */ unsigned int debuglevel = 0; @@ -578,15 +581,20 @@ m88110_cmmu_inval_cache(paddr_t physaddr, psize_t size) void m88110_dma_cachectl(vaddr_t va, vsize_t size, int op) { + paddr_t pa; + + if (pmap_extract(pmap_kernel(), va, &pa) == FALSE) + return; /* XXX */ + switch (op) { case DMA_CACHE_SYNC: - m88110_cmmu_sync_cache(kvtop(va), size); + m88110_cmmu_sync_cache(pa, size); break; case DMA_CACHE_SYNC_INVAL: - m88110_cmmu_sync_inval_cache(kvtop(va), size); + m88110_cmmu_sync_inval_cache(pa, size); break; default: - m88110_cmmu_inval_cache(kvtop(va), size); + m88110_cmmu_inval_cache(pa, size); break; } } diff --git a/sys/arch/mvme88k/mvme88k/m8820x.c b/sys/arch/mvme88k/mvme88k/m8820x.c index e31262b5cb5..d52ee067428 100644 --- a/sys/arch/mvme88k/mvme88k/m8820x.c +++ b/sys/arch/mvme88k/mvme88k/m8820x.c @@ -1,4 +1,4 @@ -/* $OpenBSD: m8820x.c,v 1.24 2003/12/19 22:30:18 miod Exp $ */ +/* $OpenBSD: m8820x.c,v 1.25 2003/12/22 20:10:23 miod Exp $ */ /* * Copyright (c) 2001 Steve Murphree, Jr. * Copyright (c) 1996 Nivas Madhur @@ -71,6 +71,8 @@ #include <machine/cmmu.h> #include <machine/m8820x.h> +#include <uvm/uvm_extern.h> + #ifdef DDB #include <ddb/db_output.h> /* db_printf() */ #endif /* DDB */ @@ -1475,6 +1477,7 @@ m8820x_cmmu_inval_cache(paddr_t physaddr, psize_t size) void m8820x_dma_cachectl(vaddr_t va, vsize_t size, int op) { + paddr_t pa; #if !defined(BROKEN_MMU_MASK) psize_t count; @@ -1484,32 +1487,37 @@ m8820x_dma_cachectl(vaddr_t va, vsize_t size, int op) if (size < count) count = size; + if (pmap_extract(pmap_kernel(), va, &pa) != FALSE) { + switch (op) { + case DMA_CACHE_SYNC: + m8820x_cmmu_sync_cache(pa, count); + break; + case DMA_CACHE_SYNC_INVAL: + m8820x_cmmu_sync_inval_cache(pa, count); + break; + default: + m8820x_cmmu_inval_cache(pa, count); + break; + } + } + + va += count; + size -= count; + } +#else + /* XXX This assumes the space is also physically contiguous */ + if (pmap_extract(pmap_kernel(), va, &pa) != FALSE) { switch (op) { case DMA_CACHE_SYNC: - m8820x_cmmu_sync_cache(kvtop(va), count); + m8820x_cmmu_sync_cache(pa, size); break; case DMA_CACHE_SYNC_INVAL: - m8820x_cmmu_sync_inval_cache(kvtop(va), count); + m8820x_cmmu_sync_inval_cache(pa, size); break; default: - m8820x_cmmu_inval_cache(kvtop(va), count); + m8820x_cmmu_inval_cache(pa, size); break; } - - va += count; - size -= count; - } -#else - switch (op) { - case DMA_CACHE_SYNC: - m8820x_cmmu_sync_cache(kvtop(va), size); - break; - case DMA_CACHE_SYNC_INVAL: - m8820x_cmmu_sync_inval_cache(kvtop(va), size); - break; - default: - m8820x_cmmu_inval_cache(kvtop(va), size); - break; } #endif /* !BROKEN_MMU_MASK */ } |