diff options
author | Chris Johns <chrisj@rtems.org> | 2021-10-20 13:42:22 +1100 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2021-10-21 11:23:30 +1100 |
commit | f94a67a68db6f4af758ba252944e7da819a924e5 (patch) | |
tree | da59c7b8601d7ea868109e5fd7d65b25f726dffa | |
parent | rtemsbsd/atomic: Return a value for CMPSET (diff) | |
download | rtems-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.c | 9 |
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); |