summaryrefslogtreecommitdiff
path: root/include/SDL_endian.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/SDL_endian.h')
-rw-r--r--include/SDL_endian.h146
1 files changed, 88 insertions, 58 deletions
diff --git a/include/SDL_endian.h b/include/SDL_endian.h
index 6257a649..f3de7b2b 100644
--- a/include/SDL_endian.h
+++ b/include/SDL_endian.h
@@ -20,7 +20,11 @@
slouken@libsdl.org
*/
-/* Functions for reading and writing endian-specific values */
+/**
+ * \file SDL_endian.h
+ *
+ * Functions for reading and writing endian-specific values
+ */
#ifndef _SDL_endian_h
#define _SDL_endian_h
@@ -31,7 +35,7 @@
#define SDL_LIL_ENDIAN 1234
#define SDL_BIG_ENDIAN 4321
-#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */
+#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */
#if defined(__hppa__) || \
defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
(defined(__MIPS__) && defined(__MISPEB__)) || \
@@ -47,7 +51,9 @@
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
+/* *INDENT-OFF* */
extern "C" {
+/* *INDENT-ON* */
#endif
/* Use inline functions for compilers that support them, and static
@@ -57,104 +63,124 @@ extern "C" {
*/
#if defined(__GNUC__) && defined(__i386__) && \
!(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */)
-static __inline__ Uint16 SDL_Swap16(Uint16 x)
+static __inline__ Uint16
+SDL_Swap16(Uint16 x)
{
- __asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x));
- return x;
+ __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
+ return x;
}
#elif defined(__GNUC__) && defined(__x86_64__)
-static __inline__ Uint16 SDL_Swap16(Uint16 x)
+static __inline__ Uint16
+SDL_Swap16(Uint16 x)
{
- __asm__("xchgb %b0,%h0" : "=Q" (x) : "0" (x));
- return x;
+ __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
+ return x;
}
#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-static __inline__ Uint16 SDL_Swap16(Uint16 x)
+static __inline__ Uint16
+SDL_Swap16(Uint16 x)
{
- Uint16 result;
+ Uint16 result;
- __asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x));
- return result;
+ __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
+ return result;
}
#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__))
-static __inline__ Uint16 SDL_Swap16(Uint16 x)
+static __inline__ Uint16
+SDL_Swap16(Uint16 x)
{
- __asm__("rorw #8,%0" : "=d" (x) : "0" (x) : "cc");
- return x;
+ __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
+ return x;
}
#else
-static __inline__ Uint16 SDL_Swap16(Uint16 x) {
- return((x<<8)|(x>>8));
+static __inline__ Uint16
+SDL_Swap16(Uint16 x)
+{
+ return ((x << 8) | (x >> 8));
}
#endif
#if defined(__GNUC__) && defined(__i386__)
-static __inline__ Uint32 SDL_Swap32(Uint32 x)
+static __inline__ Uint32
+SDL_Swap32(Uint32 x)
{
- __asm__("bswap %0" : "=r" (x) : "0" (x));
- return x;
+ __asm__("bswap %0": "=r"(x):"0"(x));
+ return x;
}
#elif defined(__GNUC__) && defined(__x86_64__)
-static __inline__ Uint32 SDL_Swap32(Uint32 x)
+static __inline__ Uint32
+SDL_Swap32(Uint32 x)
{
- __asm__("bswapl %0" : "=r" (x) : "0" (x));
- return x;
+ __asm__("bswapl %0": "=r"(x):"0"(x));
+ return x;
}
#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-static __inline__ Uint32 SDL_Swap32(Uint32 x)
+static __inline__ Uint32
+SDL_Swap32(Uint32 x)
{
- Uint32 result;
+ Uint32 result;
- __asm__("rlwimi %0,%2,24,16,23" : "=&r" (result) : "0" (x>>24), "r" (x));
- __asm__("rlwimi %0,%2,8,8,15" : "=&r" (result) : "0" (result), "r" (x));
- __asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x));
- return result;
+ __asm__("rlwimi %0,%2,24,16,23": "=&r"(result):"0"(x >> 24), "r"(x));
+ __asm__("rlwimi %0,%2,8,8,15": "=&r"(result):"0"(result), "r"(x));
+ __asm__("rlwimi %0,%2,24,0,7": "=&r"(result):"0"(result), "r"(x));
+ return result;
}
#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__))
-static __inline__ Uint32 SDL_Swap32(Uint32 x)
+static __inline__ Uint32
+SDL_Swap32(Uint32 x)
{
- __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0" : "=d" (x) : "0" (x) : "cc");
- return x;
+ __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
+ return x;
}
#else
-static __inline__ Uint32 SDL_Swap32(Uint32 x) {
- return((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24));
+static __inline__ Uint32
+SDL_Swap32(Uint32 x)
+{
+ return ((x << 24) | ((x << 8) & 0x00FF0000) | ((x >> 8) & 0x0000FF00) |
+ (x >> 24));
}
#endif
#ifdef SDL_HAS_64BIT_TYPE
#if defined(__GNUC__) && defined(__i386__)
-static __inline__ Uint64 SDL_Swap64(Uint64 x)
+static __inline__ Uint64
+SDL_Swap64(Uint64 x)
{
- union {
- struct { Uint32 a,b; } s;
- Uint64 u;
- } v;
- v.u = x;
- __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
- : "=r" (v.s.a), "=r" (v.s.b)
- : "0" (v.s.a), "1" (v.s.b));
- return v.u;
+ union
+ {
+ struct
+ {
+ Uint32 a, b;
+ } s;
+ Uint64 u;
+ } v;
+ v.u = x;
+ __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1": "=r"(v.s.a), "=r"(v.s.b):"0"(v.s.a),
+ "1"(v.s.
+ b));
+ return v.u;
}
#elif defined(__GNUC__) && defined(__x86_64__)
-static __inline__ Uint64 SDL_Swap64(Uint64 x)
+static __inline__ Uint64
+SDL_Swap64(Uint64 x)
{
- __asm__("bswapq %0" : "=r" (x) : "0" (x));
- return x;
+ __asm__("bswapq %0": "=r"(x):"0"(x));
+ return x;
}
#else
-static __inline__ Uint64 SDL_Swap64(Uint64 x)
+static __inline__ Uint64
+SDL_Swap64(Uint64 x)
{
- Uint32 hi, lo;
-
- /* Separate into high and low 32-bit values and swap them */
- lo = (Uint32)(x&0xFFFFFFFF);
- x >>= 32;
- hi = (Uint32)(x&0xFFFFFFFF);
- x = SDL_Swap32(lo);
- x <<= 32;
- x |= SDL_Swap32(hi);
- return(x);
+ Uint32 hi, lo;
+
+ /* Separate into high and low 32-bit values and swap them */
+ lo = (Uint32) (x & 0xFFFFFFFF);
+ x >>= 32;
+ hi = (Uint32) (x & 0xFFFFFFFF);
+ x = SDL_Swap32(lo);
+ x <<= 32;
+ x |= SDL_Swap32(hi);
+ return (x);
}
#endif
#else
@@ -185,8 +211,12 @@ static __inline__ Uint64 SDL_Swap64(Uint64 x)
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
+/* *INDENT-OFF* */
}
+/* *INDENT-ON* */
#endif
#include "close_code.h"
#endif /* _SDL_endian_h */
+
+/* vi: set ts=4 sw=4 expandtab: */