comparison include/SDL_endian.h @ 848:85af65457959

Avoid using kernel internal headers
author Sam Lantinga <slouken@libsdl.org>
date Mon, 23 Feb 2004 05:32:52 +0000
parents b8d311d90021
children bab227101de4
comparison
equal deleted inserted replaced
847:0afe0e38e02c 848:85af65457959
52 /* Set up for C function definitions, even when using C++ */ 52 /* Set up for C function definitions, even when using C++ */
53 #ifdef __cplusplus 53 #ifdef __cplusplus
54 extern "C" { 54 extern "C" {
55 #endif 55 #endif
56 56
57 /* The macros used to swap values */
58 /* Try to use superfast macros on systems that support them */
59 #ifdef linux
60 #include <asm/byteorder.h>
61 #ifdef __arch__swab16
62 #define SDL_Swap16 __arch__swab16
63 #endif
64 #ifdef __arch__swab32
65 #define SDL_Swap32 __arch__swab32
66 #endif
67 #endif /* linux */
68 /* Use inline functions for compilers that support them, and static 57 /* Use inline functions for compilers that support them, and static
69 functions for those that do not. Because these functions become 58 functions for those that do not. Because these functions become
70 static for compilers that do not support inline functions, this 59 static for compilers that do not support inline functions, this
71 header should only be included in files that actually use them. 60 header should only be included in files that actually use them.
72 */ 61 */
73 #ifndef SDL_Swap16 62 #if defined(__GNUC__) && defined(i386)
63 static __inline__ Uint16 SDL_Swap16(Uint16 D)
64 {
65 __asm__("xchgb %b0,%h0" : "=q" (D) : "0" (D));
66 return D;
67 }
68 #else
74 static __inline__ Uint16 SDL_Swap16(Uint16 D) { 69 static __inline__ Uint16 SDL_Swap16(Uint16 D) {
75 return((D<<8)|(D>>8)); 70 return((D<<8)|(D>>8));
76 } 71 }
77 #endif 72 #endif
78 #ifndef SDL_Swap32 73
74 #if defined(__GNUC__) && defined(i386)
75 static __inline__ Uint32 SDL_Swap32(Uint32 D)
76 {
77 __asm__("bswap %0" : "=r" (D) : "0" (D));
78 return D;
79 }
80 #else
79 static __inline__ Uint32 SDL_Swap32(Uint32 D) { 81 static __inline__ Uint32 SDL_Swap32(Uint32 D) {
80 return((D<<24)|((D<<8)&0x00FF0000)|((D>>8)&0x0000FF00)|(D>>24)); 82 return((D<<24)|((D<<8)&0x00FF0000)|((D>>8)&0x0000FF00)|(D>>24));
81 } 83 }
82 #endif 84 #endif
85
83 #ifdef SDL_HAS_64BIT_TYPE 86 #ifdef SDL_HAS_64BIT_TYPE
84 #ifndef SDL_Swap64 87 #ifndef SDL_Swap64
85 static __inline__ Uint64 SDL_Swap64(Uint64 val) { 88 static __inline__ Uint64 SDL_Swap64(Uint64 val) {
86 Uint32 hi, lo; 89 Uint32 hi, lo;
87 90