summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2021-10-20 13:42:22 +1100
committerChris Johns <chrisj@rtems.org>2021-10-21 11:23:30 +1100
commitf94a67a68db6f4af758ba252944e7da819a924e5 (patch)
treeda59c7b8601d7ea868109e5fd7d65b25f726dffa
parentrtemsbsd/atomic: Return a value for CMPSET (diff)
downloadrtems-libbsd-f94a67a68db6f4af758ba252944e7da819a924e5.tar.bz2
rtemsbsd: Clear bus DMA memory a byte at a time
- memset may be optimized for performance and might work with device type memory. Clear a byte at a time.
-rw-r--r--rtemsbsd/rtems/rtems-kernel-bus-dma.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/rtemsbsd/rtems/rtems-kernel-bus-dma.c b/rtemsbsd/rtems/rtems-kernel-bus-dma.c
index 45c4287d..1d28f62c 100644
--- a/rtemsbsd/rtems/rtems-kernel-bus-dma.c
+++ b/rtemsbsd/rtems/rtems-kernel-bus-dma.c
@@ -9,7 +9,7 @@
*/
/*
- * Copyright (c) 2009-2012 embedded brains GmbH.
+ * Copyright (c) 2009-2012 embedded brains GmbH.
* All rights reserved.
*
* embedded brains GmbH
@@ -258,7 +258,12 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
(*mapp)->buffer_size = dmat->maxsize;
if ((flags & BUS_DMA_ZERO) != 0) {
- memset(*vaddr, 0, dmat->maxsize);
+ unsigned char* mem = *vaddr;
+ int len = dmat->maxsize;
+ while (len-- > 0) {
+ bsp_bus_space_write_1(mem, 0);
+ mem++;
+ }
}
return (0);