diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/xine-engine/bswap.h | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/src/xine-engine/bswap.h b/src/xine-engine/bswap.h index 276dfcbf7..3fd7f4565 100644 --- a/src/xine-engine/bswap.h +++ b/src/xine-engine/bswap.h @@ -11,6 +11,7 @@ #else #include <inttypes.h> +#include <assert.h> #ifdef ARCH_X86 inline static unsigned short ByteSwap16(unsigned short x) @@ -90,12 +91,6 @@ inline static unsigned long long int ByteSwap64(unsigned long long int x) #define le2me_64(x) (x) #endif -#ifdef FPM_SPARC - -/* - * Workaround for code generation bug in gcc on SPARC - */ - #define BE_16(x) ((((uint8_t*)(x))[0] << 8) | ((uint8_t*)(x))[1]) #define BE_32(x) ((((uint8_t*)(x))[0] << 24) | \ (((uint8_t*)(x))[1] << 16) | \ @@ -106,22 +101,42 @@ inline static unsigned long long int ByteSwap64(unsigned long long int x) (((uint8_t*)(x))[2] << 16) | \ (((uint8_t*)(x))[1] << 8) | \ ((uint8_t*)(x))[0]) +#ifdef DEBUG + +inline static void* check_ptr_alignment(void* ptr, int align) +{ + assert((int)ptr % align == 0); + return ptr; +} + +#define ABE_16(x) (be2me_16(*(uint16_t*)check_ptr_alignment((x), 2))) +#define ABE_32(x) (be2me_32(*(uint32_t*)check_ptr_alignment((x), 4))) +#define ALE_16(x) (le2me_16(*(uint16_t*)check_ptr_alignment((x), 2))) +#define ALE_32(x) (le2me_32(*(uint32_t*)check_ptr_alignment((x), 4))) #else -#define BE_16(x) (be2me_16(*(uint16_t*)(x))) -#define BE_32(x) (be2me_32(*(uint32_t*)(x))) -#define LE_16(x) (le2me_16(*(uint16_t*)(x))) -#define LE_32(x) (le2me_32(*(uint32_t*)(x))) +#define ABE_16(x) (be2me_16(*(uint16_t*)(x))) +#define ABE_32(x) (be2me_32(*(uint32_t*)(x))) +#define ALE_16(x) (le2me_16(*(uint16_t*)(x))) +#define ALE_32(x) (le2me_32(*(uint32_t*)(x))) -#endif /* !FPM_SPARC */ +#endif #ifdef WORDS_BIGENDIAN + #define ME_16(x) BE_16(x) #define ME_32(x) BE_32(x) +#define AME_16(x) ABE_16(x) +#define AME_32(x) ABE_32(x) + #else + #define ME_16(x) LE_16(x) #define ME_32(x) LE_32(x) +#define AME_16(x) ALE_16(x) +#define AME_32(x) ALE_32(x) + #endif #endif |