summaryrefslogtreecommitdiffstats
path: root/sys/alpha
diff options
context:
space:
mode:
authormux <mux@FreeBSD.org>2003-04-10 23:03:33 +0000
committermux <mux@FreeBSD.org>2003-04-10 23:03:33 +0000
commitea793948f7e836abfe00c166d6989e6d17d31e99 (patch)
treef3cc4c1968f8b58e700a90496c66574eb191c832 /sys/alpha
parentb7902728e71f8575fb3e2fd5fa4e3c9696330c10 (diff)
downloadFreeBSD-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.c14
-rw-r--r--sys/alpha/include/bus.h14
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)
OpenPOWER on IntegriCloud