Contents of /trunk/libmpeg3/patches/libmpeg3-1.7-textrel.patch
Parent Directory | Revision Log
Revision 224 -
(show annotations)
(download)
Sat Jun 23 13:53:28 2007 UTC (17 years, 3 months ago) by niro
File size: 10455 byte(s)
Sat Jun 23 13:53:28 2007 UTC (17 years, 3 months ago) by niro
File size: 10455 byte(s)
-new fixes
1 | diff -urp libmpeg3-1.5.2-old/video/mmxidct.S libmpeg3-1.5.2/video/mmxidct.S |
2 | --- libmpeg3-1.5.2-old/video/mmxidct.S 2002-06-21 14:35:24.000000000 +0200 |
3 | +++ libmpeg3-1.5.2/video/mmxidct.S 2005-12-22 23:46:25.000000000 +0100 |
4 | @@ -63,12 +63,25 @@ x0: |
5 | |
6 | .align 8 |
7 | .text |
8 | + |
9 | +# undef __i686 /* gcc define gets in our way */ |
10 | + .section .gnu.linkonce.t.__i686.get_pc_thunk.bp,"ax",@progbits |
11 | +.globl __i686.get_pc_thunk.bp |
12 | + .hidden __i686.get_pc_thunk.bp |
13 | + .type __i686.get_pc_thunk.bp,@function |
14 | +__i686.get_pc_thunk.bp: |
15 | + movl (%esp), %ebp |
16 | + ret |
17 | + |
18 | .align 4 |
19 | .globl IDCT_mmx |
20 | .type IDCT_mmx, @function |
21 | IDCT_mmx: |
22 | pushl %ebp |
23 | - movl %esp, %ebp |
24 | + |
25 | + call __i686.get_pc_thunk.bp |
26 | + addl $_GLOBAL_OFFSET_TABLE_, %ebp |
27 | + |
28 | pushl %ebx |
29 | pushl %ecx |
30 | pushl %edx |
31 | @@ -84,8 +97,8 @@ IDCT_mmx: |
32 | pushl $0 |
33 | pushl $0 |
34 | |
35 | - movl 8(%ebp), %esi /* source matrix */ |
36 | - leal preSC, %ecx |
37 | + movl 8+13*4(%esp), %esi /* source matrix */ |
38 | + leal preSC@GOTOFF(%ebp), %ecx |
39 | /* column 0: even part |
40 | * use V4, V12, V0, V8 to produce V22..V25 |
41 | */ |
42 | @@ -101,7 +114,7 @@ IDCT_mmx: |
43 | movq %mm1, %mm2 /* added 11/1/96 */ |
44 | pmulhw 8*8(%esi),%mm5 /* V8 */ |
45 | psubsw %mm0, %mm1 /* V16 */ |
46 | - pmulhw x5a825a825a825a82, %mm1 /* 23170 ->V18 */ |
47 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp), %mm1 /* 23170 ->V18 */ |
48 | paddsw %mm0, %mm2 /* V17 */ |
49 | movq %mm2, %mm0 /* duplicate V17 */ |
50 | psraw $1, %mm2 /* t75=t82 */ |
51 | @@ -142,7 +155,7 @@ IDCT_mmx: |
52 | paddsw %mm0, %mm3 /* V29 ; free mm0 */ |
53 | movq %mm7, %mm1 /* duplicate V26 */ |
54 | psraw $1, %mm3 /* t91=t94 */ |
55 | - pmulhw x539f539f539f539f,%mm7 /* V33 */ |
56 | + pmulhw x539f539f539f539f@GOTOFF(%ebp),%mm7 /* V33 */ |
57 | psraw $1, %mm1 /* t96 */ |
58 | movq %mm5, %mm0 /* duplicate V2 */ |
59 | psraw $2, %mm4 /* t85=t87 */ |
60 | @@ -150,15 +163,15 @@ IDCT_mmx: |
61 | psubsw %mm4, %mm0 /* V28 ; free mm4 */ |
62 | movq %mm0, %mm2 /* duplicate V28 */ |
63 | psraw $1, %mm5 /* t90=t93 */ |
64 | - pmulhw x4546454645464546,%mm0 /* V35 */ |
65 | + pmulhw x4546454645464546@GOTOFF(%ebp),%mm0 /* V35 */ |
66 | psraw $1, %mm2 /* t97 */ |
67 | movq %mm5, %mm4 /* duplicate t90=t93 */ |
68 | psubsw %mm2, %mm1 /* V32 ; free mm2 */ |
69 | - pmulhw x61f861f861f861f8,%mm1 /* V36 */ |
70 | + pmulhw x61f861f861f861f8@GOTOFF(%ebp),%mm1 /* V36 */ |
71 | psllw $1, %mm7 /* t107 */ |
72 | paddsw %mm3, %mm5 /* V31 */ |
73 | psubsw %mm3, %mm4 /* V30 ; free mm3 */ |
74 | - pmulhw x5a825a825a825a82,%mm4 /* V34 */ |
75 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp),%mm4 /* V34 */ |
76 | nop |
77 | psubsw %mm1, %mm0 /* V38 */ |
78 | psubsw %mm7, %mm1 /* V37 ; free mm7 */ |
79 | @@ -225,7 +238,7 @@ IDCT_mmx: |
80 | psubsw %mm7, %mm1 /* V50 */ |
81 | pmulhw 8*9(%esi), %mm5 /* V9 */ |
82 | paddsw %mm7, %mm2 /* V51 */ |
83 | - pmulhw x5a825a825a825a82, %mm1 /* 23170 ->V52 */ |
84 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp), %mm1 /* 23170 ->V52 */ |
85 | movq %mm2, %mm6 /* duplicate V51 */ |
86 | psraw $1, %mm2 /* t138=t144 */ |
87 | movq %mm3, %mm4 /* duplicate V1 */ |
88 | @@ -266,11 +279,11 @@ IDCT_mmx: |
89 | * even more by doing the correction step in a later stage when the number |
90 | * is actually multiplied by 16 |
91 | */ |
92 | - paddw x0005000200010001, %mm4 |
93 | + paddw x0005000200010001@GOTOFF(%ebp), %mm4 |
94 | psubsw %mm6, %mm3 /* V60 ; free mm6 */ |
95 | psraw $1, %mm0 /* t154=t156 */ |
96 | movq %mm3, %mm1 /* duplicate V60 */ |
97 | - pmulhw x539f539f539f539f, %mm1 /* V67 */ |
98 | + pmulhw x539f539f539f539f@GOTOFF(%ebp), %mm1 /* V67 */ |
99 | movq %mm5, %mm6 /* duplicate V3 */ |
100 | psraw $2, %mm4 /* t148=t150 */ |
101 | paddsw %mm4, %mm5 /* V61 */ |
102 | @@ -279,13 +292,13 @@ IDCT_mmx: |
103 | psllw $1, %mm1 /* t169 */ |
104 | paddsw %mm0, %mm5 /* V65 -> result */ |
105 | psubsw %mm0, %mm4 /* V64 ; free mm0 */ |
106 | - pmulhw x5a825a825a825a82, %mm4 /* V68 */ |
107 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp), %mm4 /* V68 */ |
108 | psraw $1, %mm3 /* t158 */ |
109 | psubsw %mm6, %mm3 /* V66 */ |
110 | movq %mm5, %mm2 /* duplicate V65 */ |
111 | - pmulhw x61f861f861f861f8, %mm3 /* V70 */ |
112 | + pmulhw x61f861f861f861f8@GOTOFF(%ebp), %mm3 /* V70 */ |
113 | psllw $1, %mm6 /* t165 */ |
114 | - pmulhw x4546454645464546, %mm6 /* V69 */ |
115 | + pmulhw x4546454645464546@GOTOFF(%ebp), %mm6 /* V69 */ |
116 | psraw $1, %mm2 /* t172 */ |
117 | /* moved from next block */ |
118 | movq 8*5(%esi), %mm0 /* V56 */ |
119 | @@ -410,7 +423,7 @@ IDCT_mmx: |
120 | * movq 8*13(%esi), %mm4 tmt13 |
121 | */ |
122 | psubsw %mm4, %mm3 /* V134 */ |
123 | - pmulhw x5a825a825a825a82, %mm3 /* 23170 ->V136 */ |
124 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp), %mm3 /* 23170 ->V136 */ |
125 | movq 8*9(%esi), %mm6 /* tmt9 */ |
126 | paddsw %mm4, %mm5 /* V135 ; mm4 free */ |
127 | movq %mm0, %mm4 /* duplicate tmt1 */ |
128 | @@ -439,17 +452,17 @@ IDCT_mmx: |
129 | psubsw %mm7, %mm0 /* V144 */ |
130 | movq %mm0, %mm3 /* duplicate V144 */ |
131 | paddsw %mm7, %mm2 /* V147 ; free mm7 */ |
132 | - pmulhw x539f539f539f539f, %mm0 /* 21407-> V151 */ |
133 | + pmulhw x539f539f539f539f@GOTOFF(%ebp), %mm0 /* 21407-> V151 */ |
134 | movq %mm1, %mm7 /* duplicate tmt3 */ |
135 | paddsw %mm5, %mm7 /* V145 */ |
136 | psubsw %mm5, %mm1 /* V146 ; free mm5 */ |
137 | psubsw %mm1, %mm3 /* V150 */ |
138 | movq %mm7, %mm5 /* duplicate V145 */ |
139 | - pmulhw x4546454645464546, %mm1 /* 17734-> V153 */ |
140 | + pmulhw x4546454645464546@GOTOFF(%ebp), %mm1 /* 17734-> V153 */ |
141 | psubsw %mm2, %mm5 /* V148 */ |
142 | - pmulhw x61f861f861f861f8, %mm3 /* 25080-> V154 */ |
143 | + pmulhw x61f861f861f861f8@GOTOFF(%ebp), %mm3 /* 25080-> V154 */ |
144 | psllw $2, %mm0 /* t311 */ |
145 | - pmulhw x5a825a825a825a82, %mm5 /* 23170-> V152 */ |
146 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp), %mm5 /* 23170-> V152 */ |
147 | paddsw %mm2, %mm7 /* V149 ; free mm2 */ |
148 | psllw $1, %mm1 /* t313 */ |
149 | nop /* without the nop - freeze here for one clock */ |
150 | @@ -557,15 +570,15 @@ IDCT_mmx: |
151 | paddsw %mm4, %mm3 /* V113 ; free mm4 */ |
152 | movq %mm0, %mm4 /* duplicate V110 */ |
153 | paddsw %mm1, %mm2 /* V111 */ |
154 | - pmulhw x539f539f539f539f, %mm0 /* 21407-> V117 */ |
155 | + pmulhw x539f539f539f539f@GOTOFF(%ebp), %mm0 /* 21407-> V117 */ |
156 | psubsw %mm1, %mm5 /* V112 ; free mm1 */ |
157 | psubsw %mm5, %mm4 /* V116 */ |
158 | movq %mm2, %mm1 /* duplicate V111 */ |
159 | - pmulhw x4546454645464546, %mm5 /* 17734-> V119 */ |
160 | + pmulhw x4546454645464546@GOTOFF(%ebp), %mm5 /* 17734-> V119 */ |
161 | psubsw %mm3, %mm2 /* V114 */ |
162 | - pmulhw x61f861f861f861f8, %mm4 /* 25080-> V120 */ |
163 | + pmulhw x61f861f861f861f8@GOTOFF(%ebp), %mm4 /* 25080-> V120 */ |
164 | paddsw %mm3, %mm1 /* V115 ; free mm3 */ |
165 | - pmulhw x5a825a825a825a82, %mm2 /* 23170-> V118 */ |
166 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp), %mm2 /* 23170-> V118 */ |
167 | psllw $2, %mm0 /* t266 */ |
168 | movq %mm1, (%esi) /* save V115 */ |
169 | psllw $1, %mm5 /* t268 */ |
170 | @@ -583,7 +596,7 @@ IDCT_mmx: |
171 | movq %mm6, %mm3 /* duplicate tmt4 */ |
172 | psubsw %mm0, %mm6 /* V100 */ |
173 | paddsw %mm0, %mm3 /* V101 ; free mm0 */ |
174 | - pmulhw x5a825a825a825a82, %mm6 /* 23170 ->V102 */ |
175 | + pmulhw x5a825a825a825a82@GOTOFF(%ebp), %mm6 /* 23170 ->V102 */ |
176 | movq %mm7, %mm5 /* duplicate tmt0 */ |
177 | movq 8*8(%esi), %mm1 /* tmt8 */ |
178 | paddsw %mm1, %mm7 /* V103 */ |
179 | @@ -667,9 +680,8 @@ IDCT_mmx: |
180 | popl %edx |
181 | popl %ecx |
182 | popl %ebx |
183 | - movl %ebp, %esp |
184 | popl %ebp |
185 | |
186 | ret |
187 | .Lfe1: |
188 | .size IDCT_mmx,.Lfe1-IDCT_mmx |
189 | diff -urp libmpeg3-1.5.2-old/video/reconmmx.s libmpeg3-1.5.2/video/reconmmx.s |
190 | --- libmpeg3-1.5.2-old/video/reconmmx.s 2002-06-21 14:35:24.000000000 +0200 |
191 | +++ libmpeg3-1.5.2/video/reconmmx.s 2005-12-22 23:53:17.000000000 +0100 |
192 | @@ -32,18 +32,28 @@ global add_block_mmx |
193 | global set_block_mmx |
194 | |
195 | |
196 | +extern _GLOBAL_OFFSET_TABLE_ |
197 | +get_pc.bp: |
198 | + mov ebp, [esp] |
199 | + retn |
200 | + |
201 | align 16 |
202 | rech_mmx: |
203 | push esi |
204 | push edi |
205 | push ecx |
206 | push ebx |
207 | + push ebp |
208 | + |
209 | + call get_pc.bp |
210 | + add ebp, _GLOBAL_OFFSET_TABLE_ + $$ - $ wrt ..gotpc |
211 | + |
212 | mov esi, [esp+source] |
213 | mov edi, [esp+dest] |
214 | mov ecx, [esp+h] |
215 | mov ebx, [esp+lx2] |
216 | - movq mm5, [MASK_AND] |
217 | - movq mm6, [ADD_1] |
218 | + movq mm5, [ebp + MASK_AND wrt ..gotoff] |
219 | + movq mm6, [ebp + ADD_1 wrt ..gotoff] |
220 | .rech1: |
221 | movq mm0,[esi] |
222 | movq mm1,[esi+1] |
223 | @@ -68,6 +78,7 @@ rech_mmx: |
224 | dec ecx |
225 | jnz .rech1 |
226 | emms |
227 | + pop ebp |
228 | pop ebx |
229 | pop ecx |
230 | pop edi |
231 | @@ -80,13 +91,18 @@ rechc_mmx: |
232 | push edi |
233 | push ecx |
234 | push ebx |
235 | + push ebp |
236 | + |
237 | + call get_pc.bp |
238 | + add ebp, _GLOBAL_OFFSET_TABLE_ + $$ - $ wrt ..gotpc |
239 | + |
240 | ; sub esp, LocalFrameSize |
241 | mov esi, [esp+source] |
242 | mov edi, [esp+dest] |
243 | mov ecx, [esp+h] |
244 | mov ebx, [esp+lx2] |
245 | - movq mm5, [MASK_AND] |
246 | - movq mm6, [ADD_1] |
247 | + movq mm5, [ebp + MASK_AND wrt ..gotoff] |
248 | + movq mm6, [ebp + ADD_1 wrt ..gotoff] |
249 | .rechc1: |
250 | movq mm0,[esi] |
251 | movq mm1,[esi+1] |
252 | @@ -103,6 +119,7 @@ rechc_mmx: |
253 | jnz .rechc1 |
254 | emms |
255 | ; add esp, LocalFrameSize |
256 | + pop ebp |
257 | pop ebx |
258 | pop ecx |
259 | pop edi |
260 | @@ -125,13 +142,18 @@ recva_mmx: |
261 | push ecx |
262 | push ebx |
263 | push edx |
264 | + push ebp |
265 | + |
266 | + call get_pc.bp |
267 | + add ebp, _GLOBAL_OFFSET_TABLE_ + $$ - $ wrt ..gotpc |
268 | + |
269 | mov esi, [esp+source] |
270 | mov edi, [esp+dest] |
271 | mov ecx, [esp+h] |
272 | mov ebx, [esp+lx2] |
273 | mov edx, [esp+lx] |
274 | - movq mm7, [MASK_AND] |
275 | - movq mm6, [ADD_1] |
276 | + movq mm7, [ebp + MASK_AND wrt ..gotoff] |
277 | + movq mm6, [ebp + ADD_1 wrt ..gotoff] |
278 | .recva1: |
279 | movq mm0,[esi] |
280 | movq mm1,[esi+edx] |
281 | @@ -170,6 +192,7 @@ recva_mmx: |
282 | dec ecx |
283 | jnz near .recva1 |
284 | emms |
285 | + pop ebp |
286 | pop edx |
287 | pop ebx |
288 | pop ecx |
289 | @@ -184,13 +207,18 @@ recvac_mmx: |
290 | push ecx |
291 | push ebx |
292 | push edx |
293 | + push ebp |
294 | + |
295 | + call get_pc.bp |
296 | + add ebp, _GLOBAL_OFFSET_TABLE_ + $$ - $ wrt ..gotpc |
297 | + |
298 | mov esi, [esp+source] |
299 | mov edi, [esp+dest] |
300 | mov ecx, [esp+h] |
301 | mov ebx, [esp+lx2] |
302 | mov edx, [esp+lx] |
303 | - movq mm5, [MASK_AND] |
304 | - movq mm6, [ADD_1] |
305 | + movq mm5, [ebp + MASK_AND wrt ..gotoff] |
306 | + movq mm6, [ebp + ADD_1 wrt ..gotoff] |
307 | .recvac1: |
308 | movq mm0,[esi] |
309 | movq mm1,[esi+edx] |
310 | @@ -213,6 +241,7 @@ recvac_mmx: |
311 | dec ecx |
312 | jnz .recvac1 |
313 | emms |
314 | + pop ebp |
315 | pop edx |
316 | pop ebx |
317 | pop ecx |
318 | @@ -269,10 +298,15 @@ set_block_mmx: |
319 | push ecx |
320 | push ebx |
321 | push edx |
322 | + push ebp |
323 | + |
324 | + call get_pc.bp |
325 | + add ebp, _GLOBAL_OFFSET_TABLE_ + $$ - $ wrt ..gotpc |
326 | + |
327 | mov esi, [esp+bp] |
328 | mov edi, [esp+rfp] |
329 | mov ebx, [esp+iincr] |
330 | - movq mm7, [PLUS_128] |
331 | + movq mm7, [ebp + PLUS_128 wrt ..gotoff] |
332 | %rep 4 |
333 | movq mm0, [esi] |
334 | movq mm1, [esi+8] |
335 | @@ -291,6 +325,7 @@ set_block_mmx: |
336 | add edi, ebx |
337 | %endrep |
338 | emms |
339 | + pop ebp |
340 | pop edx |
341 | pop ebx |
342 | pop ecx |