mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

225 lines
7.9 KiB

  1. # --- ROCK-COPYRIGHT-NOTE-BEGIN ---
  2. #
  3. # This copyright note is auto-generated by ./scripts/Create-CopyPatch.
  4. # Please add additional copyright information _after_ the line containing
  5. # the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by
  6. # the ./scripts/Create-CopyPatch script. Do not edit this copyright text!
  7. #
  8. # ROCK Linux: rock-src/package/blindcoder/libsdl/libsdl-gcc3.4.patch
  9. # ROCK Linux is Copyright (C) 1998 - 2004 Clifford Wolf
  10. #
  11. # This patch file is dual-licensed. It is available under the license the
  12. # patched project is licensed under, as long as it is an OpenSource license
  13. # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
  14. # of the GNU General Public License as published by the Free Software
  15. # Foundation; either version 2 of the License, or (at your option) any later
  16. # version.
  17. #
  18. # --- ROCK-COPYRIGHT-NOTE-END ---
  19. diff -rduN SDL-old/src/audio/SDL_mixer_MMX.c SDL-new/src/audio/SDL_mixer_MMX.c
  20. --- SDL-old/src/audio/SDL_mixer_MMX.c 2002-11-09 07:13:28.000000000 +0100
  21. +++ SDL-new/src/audio/SDL_mixer_MMX.c 2004-05-18 15:28:23.000000000 +0200
  22. @@ -19,9 +19,9 @@
  23. " movl %1,%%esi\n" // esi = src
  24. " movl %3,%%eax\n" // eax = volume
  25. -" movl %2,%%ebx\n" // ebx = size
  26. +" movl %2,%%edx\n" // edx = size
  27. -" shrl $4,%%ebx\n" // process 16 bytes per iteration = 8 samples
  28. +" shrl $4,%%edx\n" // process 16 bytes per iteration = 8 samples
  29. " jz .endS16\n"
  30. @@ -95,7 +95,7 @@
  31. " addl $16,%%edi\n"
  32. -" dec %%ebx\n"
  33. +" dec %%edx\n"
  34. " jnz .mixloopS16\n"
  35. @@ -105,7 +105,7 @@
  36. :
  37. : "m" (dst), "m"(src),"m"(size),
  38. "m"(volume)
  39. - : "eax","ebx", "esi", "edi","memory"
  40. + : "eax","edx", "esi", "edi","memory"
  41. );
  42. }
  43. @@ -123,7 +123,7 @@
  44. " movl %1,%%esi\n" // esi = src
  45. " movl %3,%%eax\n" // eax = volume
  46. -" movd %%ebx,%%mm0\n"
  47. +" movd %%edx,%%mm0\n"
  48. " movq %%mm0,%%mm1\n"
  49. " psllq $16,%%mm0\n"
  50. " por %%mm1,%%mm0\n"
  51. @@ -132,10 +132,10 @@
  52. " psllq $16,%%mm0\n"
  53. " por %%mm1,%%mm0\n"
  54. -" movl %2,%%ebx\n" // ebx = size
  55. -" shr $3,%%ebx\n" // process 8 bytes per iteration = 8 samples
  56. +" movl %2,%%edx\n" // edx = size
  57. +" shr $3,%%edx\n" // process 8 bytes per iteration = 8 samples
  58. -" cmp $0,%%ebx\n"
  59. +" cmp $0,%%edx\n"
  60. " je .endS8\n"
  61. ".align 16\n"
  62. @@ -169,7 +169,7 @@
  63. " movq %%mm3,(%%edi)\n" // store back to ram
  64. " addl $8,%%edi\n"
  65. -" dec %%ebx\n"
  66. +" dec %%edx\n"
  67. " jnz .mixloopS8\n"
  68. @@ -178,7 +178,7 @@
  69. :
  70. : "m" (dst), "m"(src),"m"(size),
  71. "m"(volume)
  72. - : "eax","ebx", "esi", "edi","memory"
  73. + : "eax","edx", "esi", "edi","memory"
  74. );
  75. }
  76. #endif
  77. diff -rduN SDL-old/src/cpuinfo/SDL_cpuinfo.c SDL-new/src/cpuinfo/SDL_cpuinfo.c
  78. --- SDL-old/src/cpuinfo/SDL_cpuinfo.c 2004-02-10 16:31:35.000000000 +0100
  79. +++ SDL-new/src/cpuinfo/SDL_cpuinfo.c 2004-05-18 15:29:31.000000000 +0200
  80. @@ -105,7 +105,7 @@
  81. int features = 0;
  82. #if defined(__GNUC__) && defined(i386)
  83. __asm__ (
  84. -" movl %%ebx,%%edi\n"
  85. +" movl %%edx,%%edi\n"
  86. " xorl %%eax,%%eax # Set up for CPUID instruction \n"
  87. " cpuid # Get and save vendor ID \n"
  88. " cmpl $1,%%eax # Make sure 1 is valid input for CPUID\n"
  89. @@ -115,10 +115,10 @@
  90. " cpuid # Get family/model/stepping/features\n"
  91. " movl %%edx,%0 \n"
  92. "1: \n"
  93. -" movl %%edi,%%ebx\n"
  94. +" movl %%edi,%%edx\n"
  95. : "=m" (features)
  96. :
  97. - : "%eax", "%ebx", "%ecx", "%edx", "%edi"
  98. + : "%eax", "%edx", "%ecx", "%edx", "%edi"
  99. );
  100. #elif defined(_MSC_VER)
  101. __asm {
  102. @@ -141,7 +141,7 @@
  103. int features = 0;
  104. #if defined(__GNUC__) && defined(i386)
  105. __asm__ (
  106. -" movl %%ebx,%%edi\n"
  107. +" movl %%edx,%%edi\n"
  108. " movl $0x80000000,%%eax # Query for extended functions \n"
  109. " cpuid # Get extended function limit \n"
  110. " cmpl $0x80000001,%%eax \n"
  111. @@ -150,10 +150,10 @@
  112. " cpuid # and get the information \n"
  113. " movl %%edx,%0 \n"
  114. "1: \n"
  115. -" movl %%edi,%%ebx\n"
  116. +" movl %%edi,%%edx\n"
  117. : "=m" (features)
  118. :
  119. - : "%eax", "%ebx", "%ecx", "%edx", "%edi"
  120. + : "%eax", "%edx", "%ecx", "%edx", "%edi"
  121. );
  122. #elif defined(_MSC_VER)
  123. __asm {
  124. diff -rduN SDL-old/src/video/SDL_yuv_mmx.c SDL-new/src/video/SDL_yuv_mmx.c
  125. --- SDL-old/src/video/SDL_yuv_mmx.c 2004-02-18 18:22:04.000000000 +0100
  126. +++ SDL-new/src/video/SDL_yuv_mmx.c 2004-05-17 22:53:31.000000000 +0200
  127. @@ -120,12 +120,12 @@
  128. "movd (%2), %%mm2\n" // 0 0 0 0 l3 l2 l1 l0
  129. "punpcklbw %%mm7,%%mm1\n" // 0 v3 0 v2 00 v1 00 v0
  130. "punpckldq %%mm1,%%mm1\n" // 00 v1 00 v0 00 v1 00 v0
  131. - "psubw _MMX_0080w,%%mm1\n" // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0
  132. + "psubw %[_MMX_0080w],%%mm1\n" // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0
  133. // create Cr_g (result in mm0)
  134. "movq %%mm1,%%mm0\n" // r1 r1 r0 r0 r1 r1 r0 r0
  135. - "pmullw _MMX_VgrnRGB,%%mm0\n"// red*-46dec=0.7136*64
  136. - "pmullw _MMX_VredRGB,%%mm1\n"// red*89dec=1.4013*64
  137. + "pmullw %[_MMX_VgrnRGB],%%mm0\n"// red*-46dec=0.7136*64
  138. + "pmullw %[_MMX_VredRGB],%%mm1\n"// red*89dec=1.4013*64
  139. "psraw $6, %%mm0\n" // red=red/64
  140. "psraw $6, %%mm1\n" // red=red/64
  141. @@ -134,8 +134,8 @@
  142. "movq (%2,%4),%%mm3\n" // 0 0 0 0 L3 L2 L1 L0
  143. "punpckldq %%mm3,%%mm2\n" // L3 L2 L1 L0 l3 l2 l1 l0
  144. "movq %%mm2,%%mm4\n" // L3 L2 L1 L0 l3 l2 l1 l0
  145. - "pand _MMX_FF00w,%%mm2\n" // L3 0 L1 0 l3 0 l1 0
  146. - "pand _MMX_00FFw,%%mm4\n" // 0 L2 0 L0 0 l2 0 l0
  147. + "pand %[_MMX_FF00w],%%mm2\n" // L3 0 L1 0 l3 0 l1 0
  148. + "pand %[_MMX_00FFw],%%mm4\n" // 0 L2 0 L0 0 l2 0 l0
  149. "psrlw $8,%%mm2\n" // 0 L3 0 L1 0 l3 0 l1
  150. // create R (result in mm6)
  151. @@ -152,11 +152,11 @@
  152. "movd (%1), %%mm1\n" // 0 0 0 0 u3 u2 u1 u0
  153. "punpcklbw %%mm7,%%mm1\n" // 0 u3 0 u2 00 u1 00 u0
  154. "punpckldq %%mm1,%%mm1\n" // 00 u1 00 u0 00 u1 00 u0
  155. - "psubw _MMX_0080w,%%mm1\n" // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0
  156. + "psubw %[_MMX_0080w],%%mm1\n" // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0
  157. // create Cb_g (result in mm5)
  158. "movq %%mm1,%%mm5\n" // u1 u1 u0 u0 u1 u1 u0 u0
  159. - "pmullw _MMX_UgrnRGB,%%mm5\n" // blue*-109dec=1.7129*64
  160. - "pmullw _MMX_UbluRGB,%%mm1\n" // blue*114dec=1.78125*64
  161. + "pmullw %[_MMX_UgrnRGB],%%mm5\n" // blue*-109dec=1.7129*64
  162. + "pmullw %[_MMX_UbluRGB],%%mm1\n" // blue*114dec=1.78125*64
  163. "psraw $6, %%mm5\n" // blue=red/64
  164. "psraw $6, %%mm1\n" // blue=blue/64
  165. @@ -238,9 +238,15 @@
  166. "popl %%ebx\n"
  167. :
  168. : "m" (cr), "r"(cb),"r"(lum),
  169. - "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
  170. - : "%ebx"
  171. - );
  172. + "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
  173. + [_MMX_0080w] "m" (*_MMX_0080w),
  174. + [_MMX_00FFw] "m" (*_MMX_00FFw),
  175. + [_MMX_FF00w] "m" (*_MMX_FF00w),
  176. + [_MMX_VgrnRGB] "m" (*_MMX_VgrnRGB),
  177. + [_MMX_VredRGB] "m" (*_MMX_VredRGB),
  178. + [_MMX_UgrnRGB] "m" (*_MMX_UgrnRGB),
  179. + [_MMX_UbluRGB] "m" (*_MMX_UbluRGB)
  180. + );
  181. }
  182. void Color565DitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix,
  183. @@ -413,9 +419,17 @@
  184. "popl %%ebx\n"
  185. :
  186. :"m" (cr), "r"(cb),"r"(lum),
  187. - "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
  188. - : "%ebx"
  189. - );
  190. + "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
  191. + [_MMX_0080w] "m" (*_MMX_0080w),
  192. + [_MMX_Ugrn565] "m" (*_MMX_Ugrn565),
  193. + [_MMX_Ublu5x5] "m" (*_MMX_Ublu5x5),
  194. + [_MMX_00FFw] "m" (*_MMX_00FFw),
  195. + [_MMX_Vgrn565] "m" (*_MMX_Vgrn565),
  196. + [_MMX_Vred5x5] "m" (*_MMX_Vred5x5),
  197. + [_MMX_Ycoeff] "m" (*_MMX_Ycoeff),
  198. + [_MMX_red565] "m" (*_MMX_red565),
  199. + [_MMX_grn565] "m" (*_MMX_grn565)
  200. + );
  201. }
  202. #endif /* GCC i386 inline assembly */