# HG changeset patch # User Ryan C. Gordon # Date 1170657891 0 # Node ID 6832b00d35942686650f78ba0e2e688644cab2d4 # Parent 6e41f5d8019816b7cc7a1e373ab946a2e6cd8cbb Patched to compile on BeOS and old, old GCC releases. diff -r 6e41f5d80198 -r 6832b00d3594 include/SDL_endian.h --- a/include/SDL_endian.h Sat Feb 03 08:17:12 2007 +0000 +++ b/include/SDL_endian.h Mon Feb 05 06:44:51 2007 +0000 @@ -56,7 +56,7 @@ header should only be included in files that actually use them. */ #if defined(__GNUC__) && defined(__i386__) && \ - !(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */) + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) static __inline__ Uint16 SDL_Swap16(Uint16 x) { __asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); @@ -88,7 +88,8 @@ } #endif -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) static __inline__ Uint32 SDL_Swap32(Uint32 x) { __asm__("bswap %0" : "=r" (x) : "0" (x)); @@ -123,7 +124,8 @@ #endif #ifdef SDL_HAS_64BIT_TYPE -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) static __inline__ Uint64 SDL_Swap64(Uint64 x) { union { diff -r 6e41f5d80198 -r 6832b00d3594 src/video/SDL_blit.c --- a/src/video/SDL_blit.c Sat Feb 03 08:17:12 2007 +0000 +++ b/src/video/SDL_blit.c Mon Feb 05 06:44:51 2007 +0000 @@ -29,6 +29,9 @@ #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && SDL_ASSEMBLY_ROUTINES #define MMX_ASMBLIT +#if (__GNUC__ > 2) /* SSE instructions aren't in GCC 2. */ +#define SSE_ASMBLIT +#endif #endif #if defined(MMX_ASMBLIT) @@ -122,6 +125,7 @@ SDL_memcpy(to, from, len&7); } +#ifdef SSE_ASMBLIT static __inline__ void SDL_memcpySSE(Uint8 *to, const Uint8 *from, int len) { int i; @@ -146,6 +150,7 @@ SDL_memcpy(to, from, len&7); } #endif +#endif static void SDL_BlitCopy(SDL_BlitInfo *info) { @@ -159,7 +164,8 @@ dst = info->d_pixels; srcskip = w+info->s_skip; dstskip = w+info->d_skip; -#ifdef MMX_ASMBLIT + +#ifdef SSE_ASMBLIT if(SDL_HasSSE()) { while ( h-- ) { @@ -172,6 +178,8 @@ ::); } else +#endif +#ifdef MMX_ASMBLIT if(SDL_HasMMX()) { while ( h-- ) {