mirror of https://github.com/encounter/SDL.git
SDL_endian.h: add SDL_Swap16 and SDL_Swap32 for Watcom/x86 as inline asm
Partially fixes Bugzilla #3758.
This commit is contained in:
parent
eccbe366bc
commit
fbda68ea7b
|
@ -96,6 +96,12 @@ SDL_Swap16(Uint16 x)
|
||||||
__asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
|
__asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
#elif defined(__WATCOMC__) && defined(__386__)
|
||||||
|
extern _inline Uint16 SDL_Swap16(Uint16);
|
||||||
|
#pragma aux SDL_Swap16 = \
|
||||||
|
"xchg al, ah" \
|
||||||
|
parm [ax] \
|
||||||
|
modify [ax];
|
||||||
#else
|
#else
|
||||||
SDL_FORCE_INLINE Uint16
|
SDL_FORCE_INLINE Uint16
|
||||||
SDL_Swap16(Uint16 x)
|
SDL_Swap16(Uint16 x)
|
||||||
|
@ -136,6 +142,21 @@ SDL_Swap32(Uint32 x)
|
||||||
__asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
|
__asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
#elif defined(__WATCOMC__) && defined(__386__)
|
||||||
|
extern _inline Uint32 SDL_Swap32(Uint32);
|
||||||
|
#ifndef __SW_3 /* 486+ */
|
||||||
|
#pragma aux SDL_Swap32 = \
|
||||||
|
"bswap eax" \
|
||||||
|
parm [eax] \
|
||||||
|
modify [eax];
|
||||||
|
#else /* 386-only */
|
||||||
|
#pragma aux SDL_Swap32 = \
|
||||||
|
"xchg al, ah" \
|
||||||
|
"ror eax, 16" \
|
||||||
|
"xchg al, ah" \
|
||||||
|
parm [eax] \
|
||||||
|
modify [eax];
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
SDL_FORCE_INLINE Uint32
|
SDL_FORCE_INLINE Uint32
|
||||||
SDL_Swap32(Uint32 x)
|
SDL_Swap32(Uint32 x)
|
||||||
|
|
Loading…
Reference in New Issue