[rtems-libbsd commit] rtemsbsd: Clear bus DMA memory a byte at a time

Chris Johns chrisj at rtems.org
Thu Oct 21 01:58:41 UTC 2021


Module:    rtems-libbsd
Branch:    6-freebsd-12
Commit:    f94a67a68db6f4af758ba252944e7da819a924e5
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=f94a67a68db6f4af758ba252944e7da819a924e5

Author:    Chris Johns <chrisj at rtems.org>
Date:      Wed Oct 20 13:42:22 2021 +1100

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.

---

 rtemsbsd/rtems/rtems-kernel-bus-dma.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/rtemsbsd/rtems/rtems-kernel-bus-dma.c b/rtemsbsd/rtems/rtems-kernel-bus-dma.c
index 45c4287..1d28f62 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);



More information about the vc mailing list