]> git.alsa-project.org Git - alsa-lib.git/commitdiff
tplg: fix the unaligned_get32/put32 helpers for big endian
authorJaroslav Kysela <perex@perex.cz>
Thu, 15 Oct 2020 17:13:10 +0000 (19:13 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 15 Oct 2020 17:13:18 +0000 (19:13 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/topology/tplg_local.h

index d553117e2333d285b6e5a5ead389eb1c76fee5b0..1cb8b694f1419399482f89867ff850c312aaafd9 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "local.h"
 #include "list.h"
+#include "bswap.h"
 #include "topology.h"
 
 #include <sound/type_compat.h>
@@ -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