diff options
author | mux <mux@FreeBSD.org> | 2003-04-10 23:03:33 +0000 |
---|---|---|
committer | mux <mux@FreeBSD.org> | 2003-04-10 23:03:33 +0000 |
commit | ea793948f7e836abfe00c166d6989e6d17d31e99 (patch) | |
tree | f3cc4c1968f8b58e700a90496c66574eb191c832 /sys/alpha | |
parent | b7902728e71f8575fb3e2fd5fa4e3c9696330c10 (diff) | |
download | FreeBSD-src-ea793948f7e836abfe00c166d6989e6d17d31e99.zip FreeBSD-src-ea793948f7e836abfe00c166d6989e6d17d31e99.tar.gz |
Change the operation parameter of bus_dmamap_sync() from an
enum to an int and redefine the BUS_DMASYNC_* constants as
flags. This allows us to specify several operations in one
call to bus_dmamap_sync() as in NetBSD.
Diffstat (limited to 'sys/alpha')
-rw-r--r-- | sys/alpha/alpha/busdma_machdep.c | 14 | ||||
-rw-r--r-- | sys/alpha/include/bus.h | 14 |
2 files changed, 9 insertions, 19 deletions
diff --git a/sys/alpha/alpha/busdma_machdep.c b/sys/alpha/alpha/busdma_machdep.c index e2000cb..90a9389 100644 --- a/sys/alpha/alpha/busdma_machdep.c +++ b/sys/alpha/alpha/busdma_machdep.c @@ -787,7 +787,7 @@ _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) } void -_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) +_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, int op) { struct bounce_page *bpage; @@ -798,28 +798,22 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) * want to add support for invalidating * the caches on broken hardware */ - switch (op) { - case BUS_DMASYNC_PREWRITE: + if (op & BUS_DMASYNC_PREWRITE) { while (bpage != NULL) { bcopy((void *)bpage->datavaddr, (void *)bpage->vaddr, bpage->datacount); bpage = STAILQ_NEXT(bpage, links); } - break; + } - case BUS_DMASYNC_POSTREAD: + if (op & BUS_DMASYNC_POSTREAD) { while (bpage != NULL) { bcopy((void *)bpage->vaddr, (void *)bpage->datavaddr, bpage->datacount); bpage = STAILQ_NEXT(bpage, links); } - break; - case BUS_DMASYNC_PREREAD: - case BUS_DMASYNC_POSTWRITE: - /* No-ops */ - break; } } } diff --git a/sys/alpha/include/bus.h b/sys/alpha/include/bus.h index dd92cf2..859adc2 100644 --- a/sys/alpha/include/bus.h +++ b/sys/alpha/include/bus.h @@ -480,16 +480,12 @@ struct mbuf; struct uio; /* - * bus_dmasync_op_t - * * Operations performed by bus_dmamap_sync(). */ -typedef enum { - BUS_DMASYNC_PREREAD, - BUS_DMASYNC_POSTREAD, - BUS_DMASYNC_PREWRITE, - BUS_DMASYNC_POSTWRITE -} bus_dmasync_op_t; +#define BUS_DMASYNC_PREREAD 1 +#define BUS_DMASYNC_POSTREAD 2 +#define BUS_DMASYNC_PREWRITE 4 +#define BUS_DMASYNC_POSTWRITE 8 /* * bus_dma_tag_t @@ -625,7 +621,7 @@ int bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map, /* * Perform a syncronization operation on the given map. */ -void _bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_dmasync_op_t); +void _bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, int); #define bus_dmamap_sync(dmat, dmamap, op) \ if ((dmamap) != NULL) \ _bus_dmamap_sync(dmat, dmamap, op) |