~ubuntu-branches/ubuntu/karmic/libsdl1.2/karmic

« back to all changes in this revision

Viewing changes to debian/patches/010_gcc-3.4.0-PIC-fix.diff

  • Committer: Bazaar Package Importer
  • Author(s): Tollef Fog Heen
  • Date: 2005-01-17 21:47:56 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20050117214756-pi1l36nvzla0ojzr
Tags: 1.2.7+1.2.8cvs20041007-3ubuntu4
Apply patch from Debian BTS which makes libsdl1.2 build on amd64
again.  (ubuntu: #5031)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
diff -ruN -x Makefile.in -x configure SDL-1.2.7.orig/src/audio/SDL_mixer_MMX.c SDL-1.2.7/src/audio/SDL_mixer_MMX.c
2
 
--- SDL-1.2.7.orig/src/audio/SDL_mixer_MMX.c    2002-11-09 01:13:28.000000000 -0500
3
 
+++ SDL-1.2.7/src/audio/SDL_mixer_MMX.c 2004-06-08 13:26:50.000000000 -0400
4
 
@@ -15,13 +15,11 @@
5
 
 {
6
 
     __asm__ __volatile__ (
7
 
 
8
 
-"      movl %0,%%edi\n"        // edi = dst
9
 
-"      movl %1,%%esi\n"        // esi = src
10
 
 "      movl %3,%%eax\n"        // eax = volume
11
 
 
12
 
-"      movl %2,%%ebx\n"        // ebx = size
13
 
+"      movl %2,%%edx\n"        // edx = size
14
 
 
15
 
-"      shrl $4,%%ebx\n"        // process 16 bytes per iteration = 8 samples
16
 
+"      shrl $4,%%edx\n"        // process 16 bytes per iteration = 8 samples
17
 
 
18
 
 "      jz .endS16\n"
19
 
 
20
 
@@ -39,14 +37,14 @@
21
 
 ".align 16\n"
22
 
 "      .mixloopS16:\n"
23
 
 
24
 
-"      movq (%%esi),%%mm1\n" // mm1 = a|b|c|d
25
 
+"      movq (%1),%%mm1\n" // mm1 = a|b|c|d
26
 
 
27
 
 "      movq %%mm1,%%mm2\n" // mm2 = a|b|c|d
28
 
 
29
 
-"      movq 8(%%esi),%%mm4\n" // mm4 = e|f|g|h
30
 
+"      movq 8(%1),%%mm4\n" // mm4 = e|f|g|h
31
 
 
32
 
        // pr� charger le buffer dst dans mm7
33
 
-"      movq (%%edi),%%mm7\n" // mm7 = dst[0]"
34
 
+"      movq (%0),%%mm7\n" // mm7 = dst[0]"
35
 
 
36
 
        // multiplier par le volume
37
 
 "      pmullw %%mm0,%%mm1\n" // mm1 = l(a*v)|l(b*v)|l(c*v)|l(d*v)
38
 
@@ -69,11 +67,11 @@
39
 
 "      punpcklwd %%mm5,%%mm6\n" // mm6 = g*v|h*v
40
 
 
41
 
        // pr� charger le buffer dst dans mm5
42
 
-"      movq 8(%%edi),%%mm5\n" // mm5 = dst[1]
43
 
+"      movq 8(%0),%%mm5\n" // mm5 = dst[1]
44
 
 
45
 
        // diviser par 128
46
 
 "      psrad $7,%%mm1\n" // mm1 = a*v/128|b*v/128 , 128 = SDL_MIX_MAXVOLUME
47
 
-"      addl $16,%%esi\n"
48
 
+"      add $16,%1\n"
49
 
 
50
 
 "      psrad $7,%%mm3\n" // mm3 = c*v/128|d*v/128
51
 
 
52
 
@@ -87,15 +85,15 @@
53
 
 
54
 
        // mm4 = le sample avec le volume modifi�
55
 
 "      packssdw %%mm4,%%mm6\n" // mm6 = s(e*v|f*v|g*v|h*v)
56
 
-"      movq %%mm3,(%%edi)\n"
57
 
+"      movq %%mm3,(%0)\n"
58
 
 
59
 
 "      paddsw %%mm5,%%mm6\n" // mm6 = adjust_volume(src)+dst
60
 
 
61
 
-"      movq %%mm6,8(%%edi)\n"
62
 
+"      movq %%mm6,8(%0)\n"
63
 
 
64
 
-"      addl $16,%%edi\n"
65
 
+"      add $16,%0\n"
66
 
 
67
 
-"      dec %%ebx\n"
68
 
+"      dec %%edx\n"
69
 
 
70
 
 "      jnz .mixloopS16\n"
71
 
 
72
 
@@ -103,9 +101,9 @@
73
 
 
74
 
 ".endS16:\n"
75
 
         :
76
 
-        : "m" (dst), "m"(src),"m"(size),
77
 
+        : "r" (dst), "r"(src),"m"(size),
78
 
         "m"(volume)
79
 
-        : "eax","ebx", "esi", "edi","memory"
80
 
+        : "eax","edx","memory"
81
 
         );
82
 
 }
83
 
 
84
 
@@ -119,11 +117,9 @@
85
 
 {
86
 
     __asm__ __volatile__ (
87
 
 
88
 
-"      movl %0,%%edi\n"        // edi = dst
89
 
-"      movl %1,%%esi\n"        // esi = src
90
 
 "      movl %3,%%eax\n"        // eax = volume
91
 
 
92
 
-"      movd %%ebx,%%mm0\n"
93
 
+"      movd %%edx,%%mm0\n"
94
 
 "      movq %%mm0,%%mm1\n"
95
 
 "      psllq $16,%%mm0\n"
96
 
 "      por %%mm1,%%mm0\n"
97
 
@@ -132,17 +128,17 @@
98
 
 "      psllq $16,%%mm0\n"
99
 
 "      por %%mm1,%%mm0\n"
100
 
 
101
 
-"      movl %2,%%ebx\n"        // ebx = size
102
 
-"      shr $3,%%ebx\n" // process 8 bytes per iteration = 8 samples
103
 
+"      movl %2,%%edx\n"        // edx = size
104
 
+"      shr $3,%%edx\n" // process 8 bytes per iteration = 8 samples
105
 
 
106
 
-"      cmp $0,%%ebx\n"
107
 
+"      cmp $0,%%edx\n"
108
 
 "      je .endS8\n"
109
 
 
110
 
 ".align 16\n"
111
 
 "      .mixloopS8:\n"
112
 
 
113
 
 "      pxor %%mm2,%%mm2\n"             // mm2 = 0
114
 
-"      movq (%%esi),%%mm1\n"   // mm1 = a|b|c|d|e|f|g|h
115
 
+"      movq (%1),%%mm1\n"      // mm1 = a|b|c|d|e|f|g|h
116
 
 
117
 
 "      movq %%mm1,%%mm3\n"     // mm3 = a|b|c|d|e|f|g|h
118
 
 
119
 
@@ -152,10 +148,10 @@
120
 
 "      punpckhbw %%mm2,%%mm1\n"        // mm1 = 0|a|0|b|0|c|0|d
121
 
 
122
 
 "      punpcklbw %%mm2,%%mm3\n"        // mm3 = 0|e|0|f|0|g|0|h
123
 
-"      movq (%%edi),%%mm2\n"   // mm2 = destination
124
 
+"      movq (%0),%%mm2\n"      // mm2 = destination
125
 
 
126
 
 "      pmullw %%mm0,%%mm1\n"   // mm1 = v*a|v*b|v*c|v*d
127
 
-"      addl $8,%%esi\n"
128
 
+"      add $8,%1\n"
129
 
 
130
 
 "      pmullw %%mm0,%%mm3\n"   // mm3 = v*e|v*f|v*g|v*h
131
 
 "      psraw $7,%%mm1\n"               // mm1 = v*a/128|v*b/128|v*c/128|v*d/128 
132
 
@@ -166,19 +162,19 @@
133
 
 
134
 
 "      paddsb %%mm2,%%mm3\n"   // add to destination buffer
135
 
 
136
 
-"      movq %%mm3,(%%edi)\n"   // store back to ram
137
 
-"      addl $8,%%edi\n"
138
 
+"      movq %%mm3,(%0)\n"      // store back to ram
139
 
+"      add $8,%0\n"
140
 
 
141
 
-"      dec %%ebx\n"
142
 
+"      dec %%edx\n"
143
 
 
144
 
 "      jnz .mixloopS8\n"
145
 
 
146
 
 ".endS8:\n"
147
 
 "      emms\n"
148
 
         :
149
 
-        : "m" (dst), "m"(src),"m"(size),
150
 
+        : "r" (dst), "r"(src),"m"(size),
151
 
         "m"(volume)
152
 
-        : "eax","ebx", "esi", "edi","memory"
153
 
+        : "eax","edx","memory"
154
 
         );
155
 
 }
156
 
 #endif
157
 
diff -ruN -x Makefile.in -x configure SDL-1.2.7.orig/src/cpuinfo/SDL_cpuinfo.c SDL-1.2.7/src/cpuinfo/SDL_cpuinfo.c
158
 
--- SDL-1.2.7.orig/src/cpuinfo/SDL_cpuinfo.c    2004-02-10 10:31:35.000000000 -0500
159
 
+++ SDL-1.2.7/src/cpuinfo/SDL_cpuinfo.c 2004-06-08 13:26:51.000000000 -0400
160
 
@@ -22,7 +22,7 @@
161
 
 
162
 
 #ifdef SAVE_RCSID
163
 
 static char rcsid =
164
 
- "@(#) $Id: SDL_cpuinfo.c,v 1.14 2004/02/10 15:31:35 slouken Exp $";
165
 
+ "@(#) $Id: SDL_cpuinfo.c,v 1.16 2004/05/16 17:19:48 slouken Exp $";
166
 
 #endif
167
 
 
168
 
 /* CPU feature detection for SDL */
169
 
@@ -81,6 +81,26 @@
170
 
        :
171
 
        : "%eax", "%ecx"
172
 
        );
173
 
+#elif defined(__GNUC__) && defined(__x86_64__)
174
 
+/* Technically, if this is being compiled under __x86_64__ then it has 
175
 
+CPUid by definition.  But it's nice to be able to prove it.  :)      */
176
 
+       __asm__ (
177
 
+"        pushfq                      # Get original EFLAGS             \n"
178
 
+"        popq    %%rax                                                 \n"
179
 
+"        movq    %%rax,%%rcx                                           \n"
180
 
+"        xorl    $0x200000,%%eax     # Flip ID bit in EFLAGS           \n"
181
 
+"        pushq   %%rax               # Save new EFLAGS value on stack  \n"
182
 
+"        popfq                       # Replace current EFLAGS value    \n"
183
 
+"        pushfq                      # Get new EFLAGS                  \n"
184
 
+"        popq    %%rax               # Store new EFLAGS in EAX         \n"
185
 
+"        xorl    %%ecx,%%eax         # Can not toggle ID bit,          \n"
186
 
+"        jz      1f                  # Processor=80486                 \n"
187
 
+"        movl    $1,%0               # We have CPUID support           \n"
188
 
+"1:                                                                    \n"
189
 
+       : "=m" (has_CPUID)
190
 
+       :
191
 
+       : "%rax", "%rcx"
192
 
+       );
193
 
 #elif defined(_MSC_VER)
194
 
        __asm {
195
 
         pushfd                      ; Get original EFLAGS
196
 
@@ -103,7 +123,7 @@
197
 
 static __inline__ int CPU_getCPUIDFeatures()
198
 
 {
199
 
        int features = 0;
200
 
-#if defined(__GNUC__) && defined(i386)
201
 
+#if defined(__GNUC__) && ( defined(i386) || defined(__x86_64__) )
202
 
        __asm__ (
203
 
 "        movl    %%ebx,%%edi\n"
204
 
 "        xorl    %%eax,%%eax         # Set up for CPUID instruction    \n"
205
 
@@ -118,7 +138,7 @@
206
 
 "        movl    %%edi,%%ebx\n"
207
 
        : "=m" (features)
208
 
        :
209
 
-       : "%eax", "%ebx", "%ecx", "%edx", "%edi"
210
 
+       : "%eax", "%ecx", "%edx", "%edi"
211
 
        );
212
 
 #elif defined(_MSC_VER)
213
 
        __asm {
214
 
@@ -139,7 +159,7 @@
215
 
 static __inline__ int CPU_getCPUIDFeaturesExt()
216
 
 {
217
 
        int features = 0;
218
 
-#if defined(__GNUC__) && defined(i386)
219
 
+#if defined(__GNUC__) && (defined(i386) || defined (__x86_64__) )
220
 
        __asm__ (
221
 
 "        movl    %%ebx,%%edi\n"
222
 
 "        movl    $0x80000000,%%eax   # Query for extended functions    \n"
223
 
@@ -153,7 +173,7 @@
224
 
 "        movl    %%edi,%%ebx\n"
225
 
        : "=m" (features)
226
 
        :
227
 
-       : "%eax", "%ebx", "%ecx", "%edx", "%edi"
228
 
+       : "%eax", "%ecx", "%edx", "%edi"
229
 
        );
230
 
 #elif defined(_MSC_VER)
231
 
        __asm {
232
 
diff -ruN -x Makefile.in -x configure SDL-1.2.7.orig/src/video/SDL_yuv_mmx.c SDL-1.2.7/src/video/SDL_yuv_mmx.c
233
 
--- SDL-1.2.7.orig/src/video/SDL_yuv_mmx.c      2004-02-18 12:22:04.000000000 -0500
234
 
+++ SDL-1.2.7/src/video/SDL_yuv_mmx.c   2004-06-08 13:26:51.000000000 -0400
235
 
@@ -22,7 +22,7 @@
236
 
 
237
 
 #ifdef SAVE_RCSID
238
 
 static char rcsid =
239
 
- "@(#) $Id: SDL_yuv_mmx.c,v 1.5 2004/01/04 16:49:22 slouken Exp $";
240
 
+ "@(#) $Id: SDL_yuv_mmx.c,v 1.6 2004/05/16 17:19:48 slouken Exp $";
241
 
 #endif
242
 
 
243
 
 
244
 
@@ -120,12 +120,12 @@
245
 
                 "movd (%2), %%mm2\n"           //    0  0  0  0 l3 l2 l1 l0
246
 
                 "punpcklbw %%mm7,%%mm1\n" //         0  v3 0  v2 00 v1 00 v0
247
 
                 "punpckldq %%mm1,%%mm1\n" //         00 v1 00 v0 00 v1 00 v0
248
 
-                "psubw _MMX_0080w,%%mm1\n"  // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0 
249
 
+                "psubw %[_MMX_0080w],%%mm1\n"  // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0 
250
 
 
251
 
                 // create Cr_g (result in mm0)
252
 
                 "movq %%mm1,%%mm0\n"           // r1 r1 r0 r0 r1 r1 r0 r0
253
 
-                "pmullw _MMX_VgrnRGB,%%mm0\n"// red*-46dec=0.7136*64
254
 
-                "pmullw _MMX_VredRGB,%%mm1\n"// red*89dec=1.4013*64
255
 
+                "pmullw %[_MMX_VgrnRGB],%%mm0\n"// red*-46dec=0.7136*64
256
 
+                "pmullw %[_MMX_VredRGB],%%mm1\n"// red*89dec=1.4013*64
257
 
                 "psraw  $6, %%mm0\n"           // red=red/64
258
 
                 "psraw  $6, %%mm1\n"           // red=red/64
259
 
                 
260
 
@@ -134,8 +134,8 @@
261
 
                 "movq (%2,%4),%%mm3\n"         //    0  0  0  0 L3 L2 L1 L0
262
 
                 "punpckldq %%mm3,%%mm2\n"      //   L3 L2 L1 L0 l3 l2 l1 l0
263
 
                 "movq %%mm2,%%mm4\n"           //   L3 L2 L1 L0 l3 l2 l1 l0
264
 
-                "pand _MMX_FF00w,%%mm2\n"      //   L3 0  L1  0 l3  0 l1  0
265
 
-                "pand _MMX_00FFw,%%mm4\n"      //   0  L2  0 L0  0 l2  0 l0
266
 
+                "pand %[_MMX_FF00w],%%mm2\n"      //   L3 0  L1  0 l3  0 l1  0
267
 
+                "pand %[_MMX_00FFw],%%mm4\n"      //   0  L2  0 L0  0 l2  0 l0
268
 
                 "psrlw $8,%%mm2\n"             //   0  L3  0 L1  0 l3  0 l1
269
 
 
270
 
                 // create R (result in mm6)
271
 
@@ -152,11 +152,11 @@
272
 
                 "movd (%1), %%mm1\n"      //         0  0  0  0  u3 u2 u1 u0
273
 
                 "punpcklbw %%mm7,%%mm1\n" //         0  u3 0  u2 00 u1 00 u0
274
 
                 "punpckldq %%mm1,%%mm1\n" //         00 u1 00 u0 00 u1 00 u0
275
 
-                "psubw _MMX_0080w,%%mm1\n"  // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0 
276
 
+                "psubw %[_MMX_0080w],%%mm1\n"  // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0 
277
 
                 // create Cb_g (result in mm5)
278
 
                 "movq %%mm1,%%mm5\n"            // u1 u1 u0 u0 u1 u1 u0 u0
279
 
-                "pmullw _MMX_UgrnRGB,%%mm5\n"    // blue*-109dec=1.7129*64
280
 
-                "pmullw _MMX_UbluRGB,%%mm1\n"    // blue*114dec=1.78125*64
281
 
+                "pmullw %[_MMX_UgrnRGB],%%mm5\n"    // blue*-109dec=1.7129*64
282
 
+                "pmullw %[_MMX_UbluRGB],%%mm1\n"    // blue*114dec=1.78125*64
283
 
                 "psraw  $6, %%mm5\n"            // blue=red/64
284
 
                 "psraw  $6, %%mm1\n"            // blue=blue/64
285
 
 
286
 
@@ -238,8 +238,14 @@
287
 
                 "popl %%ebx\n"
288
 
                 :
289
 
                 : "m" (cr), "r"(cb),"r"(lum),
290
 
-                "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
291
 
-                : "%ebx"
292
 
+                "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
293
 
+         [_MMX_0080w] "m" (*_MMX_0080w),
294
 
+         [_MMX_00FFw] "m" (*_MMX_00FFw),
295
 
+         [_MMX_FF00w] "m" (*_MMX_FF00w),
296
 
+         [_MMX_VgrnRGB] "m" (*_MMX_VgrnRGB),
297
 
+         [_MMX_VredRGB] "m" (*_MMX_VredRGB),
298
 
+         [_MMX_UgrnRGB] "m" (*_MMX_UgrnRGB),
299
 
+         [_MMX_UbluRGB] "m" (*_MMX_UbluRGB)
300
 
                 );
301
 
 }
302
 
 
303
 
@@ -413,8 +419,16 @@
304
 
         "popl %%ebx\n"
305
 
          :
306
 
          :"m" (cr), "r"(cb),"r"(lum),
307
 
-        "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
308
 
-        : "%ebx"
309
 
+        "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
310
 
+     [_MMX_0080w] "m" (*_MMX_0080w),
311
 
+ [_MMX_Ugrn565] "m" (*_MMX_Ugrn565),
312
 
+ [_MMX_Ublu5x5] "m" (*_MMX_Ublu5x5),
313
 
+ [_MMX_00FFw] "m" (*_MMX_00FFw),
314
 
+ [_MMX_Vgrn565] "m" (*_MMX_Vgrn565),
315
 
+ [_MMX_Vred5x5] "m" (*_MMX_Vred5x5),
316
 
+ [_MMX_Ycoeff] "m" (*_MMX_Ycoeff),
317
 
+ [_MMX_red565] "m" (*_MMX_red565),
318
 
+ [_MMX_grn565] "m" (*_MMX_grn565)
319
 
          );
320
 
 }
321