Annotation of /trunk/libmpeg3/patches/libmpeg3-1.7-textrel.patch
Parent Directory | Revision Log
Revision 224 -
(hide 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 | niro | 224 | 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 |