+++ /dev/null
---- SDL-1.2.7/src/video/mmx.h.orig 2003-08-22 07:51:19.000000000 +0200
-+++ SDL-1.2.7/src/video/mmx.h 2003-11-09 13:49:35.270218296 +0100
-@@ -246,15 +246,37 @@
- printf(#op "_i2r(" #imm "=0x%08x%08x, ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#reg "=0x%08x%08x) => ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
-- : "X" (imm)); \
-+ : "i" (imm)); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
-+ : /* nothing */ ); \
-+ printf(#reg "=0x%08x%08x\n", \
-+ mmx_trace.d[1], mmx_trace.d[0]); \
-+ }
-+
-+/* 32 bits or less */
-+#define mmx_m2r32(op, mem, reg) \
-+ { \
-+ mmx_t mmx_trace; \
-+ mmx_trace = (mem); \
-+ printf(#op "_m2r(" #mem "=0x%08x%08x, ", \
-+ mmx_trace.d[1], mmx_trace.d[0]); \
-+ __asm__ __volatile__ ("movq %%" #reg ", %0" \
-+ : "=m" (mmx_trace) \
-+ : /* nothing */ ); \
-+ printf(#reg "=0x%08x%08x) => ", \
-+ mmx_trace.d[1], mmx_trace.d[0]); \
-+ __asm__ __volatile__ (#op " %0, %%" #reg \
-+ : /* nothing */ \
-+ : "mr" (mem)); \
-+ __asm__ __volatile__ ("movq %%" #reg ", %0" \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#reg "=0x%08x%08x\n", \
- mmx_trace.d[1], mmx_trace.d[0]); \
-@@ -267,25 +289,45 @@
- printf(#op "_m2r(" #mem "=0x%08x%08x, ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#reg "=0x%08x%08x) => ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
-- : "X" (mem)); \
-+ : "m" (mem)); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#reg "=0x%08x%08x\n", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- }
-
-+/* 32 bits or less */
-+#define mmx_r2m32(op, reg, mem) \
-+ { \
-+ mmx_t mmx_trace; \
-+ __asm__ __volatile__ ("movq %%" #reg ", %0" \
-+ : "=m" (mmx_trace) \
-+ : /* nothing */ ); \
-+ printf(#op "_r2m(" #reg "=0x%08x%08x, ", \
-+ mmx_trace.d[1], mmx_trace.d[0]); \
-+ mmx_trace = (mem); \
-+ printf(#mem "=0x%08x%08x) => ", \
-+ mmx_trace.d[1], mmx_trace.d[0]); \
-+ __asm__ __volatile__ (#op " %%" #reg ", %0" \
-+ : "=mr" (mem) \
-+ : /* nothing */ ); \
-+ mmx_trace = (mem); \
-+ printf(#mem "=0x%08x%08x\n", \
-+ mmx_trace.d[1], mmx_trace.d[0]); \
-+ }
-+
- #define mmx_r2m(op, reg, mem) \
- { \
- mmx_t mmx_trace; \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#op "_r2m(" #reg "=0x%08x%08x, ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
-@@ -293,7 +335,7 @@
- printf(#mem "=0x%08x%08x) => ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- __asm__ __volatile__ (#op " %%" #reg ", %0" \
-- : "=X" (mem) \
-+ : "=m" (mem) \
- : /* nothing */ ); \
- mmx_trace = (mem); \
- printf(#mem "=0x%08x%08x\n", \
-@@ -304,18 +346,18 @@
- { \
- mmx_t mmx_trace; \
- __asm__ __volatile__ ("movq %%" #regs ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#op "_r2r(" #regs "=0x%08x%08x, ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- __asm__ __volatile__ ("movq %%" #regd ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#regd "=0x%08x%08x) => ", \
- mmx_trace.d[1], mmx_trace.d[0]); \
- __asm__ __volatile__ (#op " %" #regs ", %" #regd); \
- __asm__ __volatile__ ("movq %%" #regd ", %0" \
-- : "=X" (mmx_trace) \
-+ : "=m" (mmx_trace) \
- : /* nothing */ ); \
- printf(#regd "=0x%08x%08x\n", \
- mmx_trace.d[1], mmx_trace.d[0]); \
-@@ -333,8 +375,8 @@
- __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
- #op " %1, %%mm0\n\t" \
- "movq %%mm0, %0" \
-- : "=X" (memd) \
-- : "X" (mems)); \
-+ : "=my" (memd) \
-+ : "my" (mems)); \
- mmx_trace = (memd); \
- printf(#memd "=0x%08x%08x\n", \
- mmx_trace.d[1], mmx_trace.d[0]); \
-@@ -348,16 +390,28 @@
- #define mmx_i2r(op, imm, reg) \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
-- : "X" (imm) )
-+ : "i" (imm) )
-+
-+/* 32 bits or less */
-+#define mmx_m2r32(op, mem, reg) \
-+ __asm__ __volatile__ (#op " %0, %%" #reg \
-+ : /* nothing */ \
-+ : "mr" (mem))
-
- #define mmx_m2r(op, mem, reg) \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
- : "m" (mem))
-+
-+/* 32 bits or less */
-+#define mmx_r2m32(op, reg, mem) \
-+ __asm__ __volatile__ (#op " %%" #reg ", %0" \
-+ : "=mr" (mem) \
-+ : /* nothing */ )
-
- #define mmx_r2m(op, reg, mem) \
- __asm__ __volatile__ (#op " %%" #reg ", %0" \
-- : "=X" (mem) \
-+ : "=m" (mem) \
- : /* nothing */ )
-
- #define mmx_r2r(op, regs, regd) \
-@@ -367,8 +421,8 @@
- __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
- #op " %1, %%mm0\n\t" \
- "movq %%mm0, %0" \
-- : "=X" (memd) \
-- : "X" (mems))
-+ : "=my" (memd) \
-+ : "my" (mems))
-
- #endif
-
-@@ -383,8 +437,8 @@
- #define movq(vars, vard) \
- __asm__ __volatile__ ("movq %1, %%mm0\n\t" \
- "movq %%mm0, %0" \
-- : "=X" (vard) \
-- : "X" (vars))
-+ : "=my" (vard) \
-+ : "my" (vars))
-
-
- /* 1x32 MOVe Doubleword
-@@ -392,14 +446,14 @@
- but is most useful for moving things between
- mmx registers and ordinary registers)
- */
--#define movd_m2r(var, reg) mmx_m2r(movd, var, reg)
--#define movd_r2m(reg, var) mmx_r2m(movd, reg, var)
-+#define movd_m2r(var, reg) mmx_m2r32(movd, var, reg)
-+#define movd_r2m(reg, var) mmx_r2m32(movd, reg, var)
- #define movd_r2r(regs, regd) mmx_r2r(movd, regs, regd)
- #define movd(vars, vard) \
- __asm__ __volatile__ ("movd %1, %%mm0\n\t" \
- "movd %%mm0, %0" \
-- : "=X" (vard) \
-- : "X" (vars))
-+ : "=mr" (vard) \
-+ : "mr" (vars))
-
-
- /* 2x32, 4x16, and 8x8 Parallel ADDs