Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Patched to compile on BeOS and old, old GCC releases.
- Loading branch information
Showing
with
14 additions
and
4 deletions.
-
+5
−3
include/SDL_endian.h
-
+9
−1
src/video/SDL_blit.c
|
@@ -56,7 +56,7 @@ extern "C" { |
|
|
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 @@ static __inline__ Uint16 SDL_Swap16(Uint16 x) { |
|
|
} |
|
|
#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 @@ static __inline__ Uint32 SDL_Swap32(Uint32 x) { |
|
|
#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 { |
|
|
|
@@ -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 @@ static __inline__ void SDL_memcpyMMX(Uint8 *to, const Uint8 *from, int len) |
|
|
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 @@ static __inline__ void SDL_memcpySSE(Uint8 *to, const Uint8 *from, int len) |
|
|
SDL_memcpy(to, from, len&7); |
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
static void SDL_BlitCopy(SDL_BlitInfo *info) |
|
|
{ |
|
@@ -159,7 +164,8 @@ static void SDL_BlitCopy(SDL_BlitInfo *info) |
|
|
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 @@ static void SDL_BlitCopy(SDL_BlitInfo *info) |
|
|
::); |
|
|
} |
|
|
else |
|
|
#endif |
|
|
#ifdef MMX_ASMBLIT |
|
|
if(SDL_HasMMX()) |
|
|
{ |
|
|
while ( h-- ) { |
|
|