From cebe0fe0f9966eb1663d0330576ed2e87b904e92 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 15 Oct 2020 19:13:10 +0200 Subject: [PATCH] tplg: fix the unaligned_get32/put32 helpers for big endian Signed-off-by: Jaroslav Kysela --- src/topology/tplg_local.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/topology/tplg_local.h b/src/topology/tplg_local.h index d553117e..1cb8b694 100644 --- a/src/topology/tplg_local.h +++ b/src/topology/tplg_local.h @@ -16,6 +16,7 @@ #include "local.h" #include "list.h" +#include "bswap.h" #include "topology.h" #include @@ -233,15 +234,21 @@ struct tplg_table { extern struct tplg_table tplg_table[]; extern unsigned int tplg_table_items; -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_INT__ == 4 +#if __SIZEOF_INT__ == 4 static inline unsigned int unaligned_get32(void *src) { unsigned int ret; memcpy(&ret, src, sizeof(ret)); +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + ret = bswap_32(ret); +#endif return ret; } static inline void unaligned_put32(void *dst, unsigned int val) { +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + val = bswap_32(val); +#endif memcpy(dst, &val, sizeof(val)); } #endif -- 2.47.1