From: Jaroslav Kysela Date: Thu, 15 Oct 2020 17:13:10 +0000 (+0200) Subject: tplg: fix the unaligned_get32/put32 helpers for big endian X-Git-Tag: v1.2.4~4 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=cebe0fe0f9966eb1663d0330576ed2e87b904e92;p=alsa-lib.git tplg: fix the unaligned_get32/put32 helpers for big endian Signed-off-by: Jaroslav Kysela --- 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