summaryrefslogtreecommitdiff
path: root/apps/codecs/libwma/bswap.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libwma/bswap.h')
-rw-r--r--apps/codecs/libwma/bswap.h25
1 files changed, 23 insertions, 2 deletions
diff --git a/apps/codecs/libwma/bswap.h b/apps/codecs/libwma/bswap.h
index 460f7abd40..33377cfcba 100644
--- a/apps/codecs/libwma/bswap.h
+++ b/apps/codecs/libwma/bswap.h
@@ -10,7 +10,28 @@
10#include <byteswap.h> 10#include <byteswap.h>
11#else 11#else
12 12
13#ifdef ARCH_X86 13#ifdef ROCKBOX
14#include "codecs.h"
15
16/* rockbox' optimised inline functions */
17#define bswap_16(x) swap16(x)
18#define bswap_32(x) swap32(x)
19
20static inline uint64_t ByteSwap64(uint64_t x)
21{
22 union {
23 uint64_t ll;
24 struct {
25 uint32_t l,h;
26 } l;
27 } r;
28 r.l.l = bswap_32 (x);
29 r.l.h = bswap_32 (x>>32);
30 return r.ll;
31}
32#define bswap_64(x) ByteSwap64(x)
33
34#elif defined(ARCH_X86)
14static inline unsigned short ByteSwap16(unsigned short x) 35static inline unsigned short ByteSwap16(unsigned short x)
15{ 36{
16 __asm("xchgb %b0,%h0" : 37 __asm("xchgb %b0,%h0" :
@@ -83,7 +104,7 @@ static inline uint64_t ByteSwap64(uint64_t x)
83#else 104#else
84 105
85#define bswap_16(x) (((x) & 0x00ff) << 8 | ((x) & 0xff00) >> 8) 106#define bswap_16(x) (((x) & 0x00ff) << 8 | ((x) & 0xff00) >> 8)
86 107
87 108
88// code from bits/byteswap.h (C) 1997, 1998 Free Software Foundation, Inc. 109// code from bits/byteswap.h (C) 1997, 1998 Free Software Foundation, Inc.
89#define bswap_32(x) \ 110#define bswap_32(x) \