[dif_kmac] Fix strict-aliasing breaking Signed-off-by: Douglas Reis <doreis@lowrisc.org>
diff --git a/sw/device/lib/dif/dif_kmac.c b/sw/device/lib/dif/dif_kmac.c index f4552a7..4b3178c 100644 --- a/sw/device/lib/dif/dif_kmac.c +++ b/sw/device/lib/dif/dif_kmac.c
@@ -595,17 +595,15 @@ // will not be byte swapped in big-endian mode. const uint8_t *data = (const uint8_t *)msg; for (; len != 0 && ((uintptr_t)data) % sizeof(uint32_t); --len) { - mmio_region_write8(kmac->base_addr, KMAC_MSG_FIFO_REG_OFFSET, - *data++); + mmio_region_write8(kmac->base_addr, KMAC_MSG_FIFO_REG_OFFSET, *data++); } for (; len >= sizeof(uint32_t); len -= sizeof(uint32_t)) { mmio_region_write32(kmac->base_addr, KMAC_MSG_FIFO_REG_OFFSET, - *((const uint32_t *)data)); + read_32(data)); data += sizeof(uint32_t); } for (; len != 0; --len) { - mmio_region_write8(kmac->base_addr, KMAC_MSG_FIFO_REG_OFFSET, - *data++); + mmio_region_write8(kmac->base_addr, KMAC_MSG_FIFO_REG_OFFSET, *data++); } if (processed != NULL) {
diff --git a/sw/device/lib/dif/meson.build b/sw/device/lib/dif/meson.build index 897abf8..b53ed1a 100644 --- a/sw/device/lib/dif/meson.build +++ b/sw/device/lib/dif/meson.build
@@ -467,6 +467,7 @@ sw_lib_bitfield, sw_lib_mmio, sw_lib_dif_autogen_kmac, + sw_lib_mem, ], ) ) @@ -476,6 +477,7 @@ sources: [ 'dif_kmac_unittest.cc', 'autogen/dif_kmac_autogen_unittest.cc', + meson.source_root() / 'sw/device/lib/base/memory.c', meson.source_root() / 'sw/device/lib/dif/dif_kmac.c', meson.source_root() / 'sw/device/lib/dif/autogen/dif_kmac_autogen.c', hw_ip_kmac_reg_h,