]> git.pld-linux.org Git - packages/smpeg.git/blame - smpeg-fPIC.patch
- added format-security.patch
[packages/smpeg.git] / smpeg-fPIC.patch
CommitLineData
d3580d2f
PS
1Fix PIC issues in mmx routines
2
3--- video/mmxflags_asm.S
4+++ video/mmxflags_asm.S
5@@ -1,11 +1,6 @@
6
7 #if defined(i386) && defined(USE_MMX)
8
9-.data
10- .align 16
11- .type flags,@object
12-flags: .long 0
13-
14 .text
15 .align 4
16 .globl cpu_flags
17@@ -40,16 +35,13 @@ cpu_flags:
18 xorl %ecx,%eax
19 je cpu_flags.L1
20
21- pusha
22+ pushl %ebx
23
24 movl $1,%eax
25 cpuid
26+ movl %edx,%eax
27
28- movl %edx,flags
29-
30- popa
31-
32- movl flags,%eax
33+ popl %ebx
34
35 cpu_flags.L1:
36 ret
37--- video/mmxidct_asm.S
38+++ video/mmxidct_asm.S
39@@ -31,11 +31,6 @@ preSC: .short 16384,22725,21407,19266,
40 x0005000200010001:
41 .long 0x00010001,0x00050002
42 .align 8
43- .type x0040000000000000,@object
44- .size x0040000000000000,8
45-x0040000000000000:
46- .long 0, 0x00400000
47- .align 8
48 .type x5a825a825a825a82,@object
49 .size x5a825a825a825a82,8
50 x5a825a825a825a82:
51@@ -80,8 +75,21 @@ scratch7:
52 x0:
53 .long 0,0
54 .align 8
55+
56 .text
57 .align 4
58+
59+#ifdef __PIC__
60+# undef __i686 /* gcc define gets in our way */
61+# define MUNG(sym) sym ## @GOTOFF(%ebx)
62+# define INIT_PIC() \
63+ call __i686.get_pc_thunk.bx ; \
64+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
65+#else
66+# define MUNG(sym) sym
67+# define INIT_PIC()
68+#endif
69+
70 .globl IDCT_mmx
71 .type IDCT_mmx,@function
72 IDCT_mmx:
73@@ -92,8 +100,9 @@ IDCT_mmx:
74 pushl %edx
75 pushl %esi
76 pushl %edi
77+ INIT_PIC()
78 movl 8(%ebp),%esi /* source matrix */
79- leal preSC, %ecx
80+ leal MUNG(preSC), %ecx
81 /* column 0: even part
82 * use V4, V12, V0, V8 to produce V22..V25
83 */
84@@ -109,7 +118,7 @@ IDCT_mmx:
85 movq %mm1, %mm2 /* added 11/1/96 */
86 pmulhw 8*8(%esi),%mm5 /* V8 */
87 psubsw %mm0, %mm1 /* V16 */
88- pmulhw x5a825a825a825a82, %mm1 /* 23170 ->V18 */
89+ pmulhw MUNG(x5a825a825a825a82), %mm1 /* 23170 ->V18 */
90 paddsw %mm0, %mm2 /* V17 */
91 movq %mm2, %mm0 /* duplicate V17 */
92 psraw $1, %mm2 /* t75=t82 */
93@@ -150,7 +159,7 @@ IDCT_mmx:
94 paddsw %mm0, %mm3 /* V29 ; free mm0 */
95 movq %mm7, %mm1 /* duplicate V26 */
96 psraw $1, %mm3 /* t91=t94 */
97- pmulhw x539f539f539f539f,%mm7 /* V33 */
98+ pmulhw MUNG(x539f539f539f539f),%mm7 /* V33 */
99 psraw $1, %mm1 /* t96 */
100 movq %mm5, %mm0 /* duplicate V2 */
101 psraw $2, %mm4 /* t85=t87 */
102@@ -158,15 +167,15 @@ IDCT_mmx:
103 psubsw %mm4, %mm0 /* V28 ; free mm4 */
104 movq %mm0, %mm2 /* duplicate V28 */
105 psraw $1, %mm5 /* t90=t93 */
106- pmulhw x4546454645464546,%mm0 /* V35 */
107+ pmulhw MUNG(x4546454645464546),%mm0 /* V35 */
108 psraw $1, %mm2 /* t97 */
109 movq %mm5, %mm4 /* duplicate t90=t93 */
110 psubsw %mm2, %mm1 /* V32 ; free mm2 */
111- pmulhw x61f861f861f861f8,%mm1 /* V36 */
112+ pmulhw MUNG(x61f861f861f861f8),%mm1 /* V36 */
113 psllw $1, %mm7 /* t107 */
114 paddsw %mm3, %mm5 /* V31 */
115 psubsw %mm3, %mm4 /* V30 ; free mm3 */
116- pmulhw x5a825a825a825a82,%mm4 /* V34 */
117+ pmulhw MUNG(x5a825a825a825a82),%mm4 /* V34 */
118 nop
119 psubsw %mm1, %mm0 /* V38 */
120 psubsw %mm7, %mm1 /* V37 ; free mm7 */
121@@ -233,7 +242,7 @@ IDCT_mmx:
122 psubsw %mm7, %mm1 /* V50 */
123 pmulhw 8*9(%esi), %mm5 /* V9 */
124 paddsw %mm7, %mm2 /* V51 */
125- pmulhw x5a825a825a825a82, %mm1 /* 23170 ->V52 */
126+ pmulhw MUNG(x5a825a825a825a82), %mm1 /* 23170 ->V52 */
127 movq %mm2, %mm6 /* duplicate V51 */
128 psraw $1, %mm2 /* t138=t144 */
129 movq %mm3, %mm4 /* duplicate V1 */
130@@ -274,11 +283,11 @@ IDCT_mmx:
131 * even more by doing the correction step in a later stage when the number
132 * is actually multiplied by 16
133 */
134- paddw x0005000200010001, %mm4
135+ paddw MUNG(x0005000200010001), %mm4
136 psubsw %mm6, %mm3 /* V60 ; free mm6 */
137 psraw $1, %mm0 /* t154=t156 */
138 movq %mm3, %mm1 /* duplicate V60 */
139- pmulhw x539f539f539f539f, %mm1 /* V67 */
140+ pmulhw MUNG(x539f539f539f539f), %mm1 /* V67 */
141 movq %mm5, %mm6 /* duplicate V3 */
142 psraw $2, %mm4 /* t148=t150 */
143 paddsw %mm4, %mm5 /* V61 */
144@@ -287,13 +296,13 @@ IDCT_mmx:
145 psllw $1, %mm1 /* t169 */
146 paddsw %mm0, %mm5 /* V65 -> result */
147 psubsw %mm0, %mm4 /* V64 ; free mm0 */
148- pmulhw x5a825a825a825a82, %mm4 /* V68 */
149+ pmulhw MUNG(x5a825a825a825a82), %mm4 /* V68 */
150 psraw $1, %mm3 /* t158 */
151 psubsw %mm6, %mm3 /* V66 */
152 movq %mm5, %mm2 /* duplicate V65 */
153- pmulhw x61f861f861f861f8, %mm3 /* V70 */
154+ pmulhw MUNG(x61f861f861f861f8), %mm3 /* V70 */
155 psllw $1, %mm6 /* t165 */
156- pmulhw x4546454645464546, %mm6 /* V69 */
157+ pmulhw MUNG(x4546454645464546), %mm6 /* V69 */
158 psraw $1, %mm2 /* t172 */
159 /* moved from next block */
160 movq 8*5(%esi), %mm0 /* V56 */
161@@ -418,7 +427,7 @@ IDCT_mmx:
162 * movq 8*13(%esi), %mm4 tmt13
163 */
164 psubsw %mm4, %mm3 /* V134 */
165- pmulhw x5a825a825a825a82, %mm3 /* 23170 ->V136 */
166+ pmulhw MUNG(x5a825a825a825a82), %mm3 /* 23170 ->V136 */
167 movq 8*9(%esi), %mm6 /* tmt9 */
168 paddsw %mm4, %mm5 /* V135 ; mm4 free */
169 movq %mm0, %mm4 /* duplicate tmt1 */
170@@ -447,17 +456,17 @@ IDCT_mmx:
171 psubsw %mm7, %mm0 /* V144 */
172 movq %mm0, %mm3 /* duplicate V144 */
173 paddsw %mm7, %mm2 /* V147 ; free mm7 */
174- pmulhw x539f539f539f539f, %mm0 /* 21407-> V151 */
175+ pmulhw MUNG(x539f539f539f539f), %mm0 /* 21407-> V151 */
176 movq %mm1, %mm7 /* duplicate tmt3 */
177 paddsw %mm5, %mm7 /* V145 */
178 psubsw %mm5, %mm1 /* V146 ; free mm5 */
179 psubsw %mm1, %mm3 /* V150 */
180 movq %mm7, %mm5 /* duplicate V145 */
181- pmulhw x4546454645464546, %mm1 /* 17734-> V153 */
182+ pmulhw MUNG(x4546454645464546), %mm1 /* 17734-> V153 */
183 psubsw %mm2, %mm5 /* V148 */
184- pmulhw x61f861f861f861f8, %mm3 /* 25080-> V154 */
185+ pmulhw MUNG(x61f861f861f861f8), %mm3 /* 25080-> V154 */
186 psllw $2, %mm0 /* t311 */
187- pmulhw x5a825a825a825a82, %mm5 /* 23170-> V152 */
188+ pmulhw MUNG(x5a825a825a825a82), %mm5 /* 23170-> V152 */
189 paddsw %mm2, %mm7 /* V149 ; free mm2 */
190 psllw $1, %mm1 /* t313 */
191 nop /* without the nop - freeze here for one clock */
192@@ -483,7 +492,7 @@ IDCT_mmx:
193 paddsw %mm3, %mm6 /* V164 ; free mm3 */
194 movq %mm4, %mm3 /* duplicate V142 */
195 psubsw %mm5, %mm4 /* V165 ; free mm5 */
196- movq %mm2, scratch7 /* out7 */
197+ movq %mm2, MUNG(scratch7) /* out7 */
198 psraw $4, %mm6
199 psraw $4, %mm4
200 paddsw %mm5, %mm3 /* V162 */
201@@ -494,11 +503,11 @@ IDCT_mmx:
202 */
203 movq %mm6, 8*9(%esi) /* out9 */
204 paddsw %mm1, %mm0 /* V161 */
205- movq %mm3, scratch5 /* out5 */
206+ movq %mm3, MUNG(scratch5) /* out5 */
207 psubsw %mm1, %mm5 /* V166 ; free mm1 */
208 movq %mm4, 8*11(%esi) /* out11 */
209 psraw $4, %mm5
210- movq %mm0, scratch3 /* out3 */
211+ movq %mm0, MUNG(scratch3) /* out3 */
212 movq %mm2, %mm4 /* duplicate V140 */
213 movq %mm5, 8*13(%esi) /* out13 */
214 paddsw %mm7, %mm2 /* V160 */
215@@ -508,7 +517,7 @@ IDCT_mmx:
216 /* moved from the next block */
217 movq 8*3(%esi), %mm7
218 psraw $4, %mm4
219- movq %mm2, scratch1 /* out1 */
220+ movq %mm2, MUNG(scratch1) /* out1 */
221 /* moved from the next block */
222 movq %mm0, %mm1
223 movq %mm4, 8*15(%esi) /* out15 */
224@@ -565,15 +574,15 @@ IDCT_mmx:
225 paddsw %mm4, %mm3 /* V113 ; free mm4 */
226 movq %mm0, %mm4 /* duplicate V110 */
227 paddsw %mm1, %mm2 /* V111 */
228- pmulhw x539f539f539f539f, %mm0 /* 21407-> V117 */
229+ pmulhw MUNG(x539f539f539f539f), %mm0 /* 21407-> V117 */
230 psubsw %mm1, %mm5 /* V112 ; free mm1 */
231 psubsw %mm5, %mm4 /* V116 */
232 movq %mm2, %mm1 /* duplicate V111 */
233- pmulhw x4546454645464546, %mm5 /* 17734-> V119 */
234+ pmulhw MUNG(x4546454645464546), %mm5 /* 17734-> V119 */
235 psubsw %mm3, %mm2 /* V114 */
236- pmulhw x61f861f861f861f8, %mm4 /* 25080-> V120 */
237+ pmulhw MUNG(x61f861f861f861f8), %mm4 /* 25080-> V120 */
238 paddsw %mm3, %mm1 /* V115 ; free mm3 */
239- pmulhw x5a825a825a825a82, %mm2 /* 23170-> V118 */
240+ pmulhw MUNG(x5a825a825a825a82), %mm2 /* 23170-> V118 */
241 psllw $2, %mm0 /* t266 */
242 movq %mm1, (%esi) /* save V115 */
243 psllw $1, %mm5 /* t268 */
244@@ -591,7 +600,7 @@ IDCT_mmx:
245 movq %mm6, %mm3 /* duplicate tmt4 */
246 psubsw %mm0, %mm6 /* V100 */
247 paddsw %mm0, %mm3 /* V101 ; free mm0 */
248- pmulhw x5a825a825a825a82, %mm6 /* 23170 ->V102 */
249+ pmulhw MUNG(x5a825a825a825a82), %mm6 /* 23170 ->V102 */
250 movq %mm7, %mm5 /* duplicate tmt0 */
251 movq 8*8(%esi), %mm1 /* tmt8 */
252 paddsw %mm1, %mm7 /* V103 */
253@@ -625,10 +634,10 @@ IDCT_mmx:
254 movq 8*2(%esi), %mm3 /* V123 */
255 paddsw %mm4, %mm7 /* out0 */
256 /* moved up from next block */
257- movq scratch3, %mm0
258+ movq MUNG(scratch3), %mm0
259 psraw $4, %mm7
260 /* moved up from next block */
261- movq scratch5, %mm6
262+ movq MUNG(scratch5), %mm6
263 psubsw %mm4, %mm1 /* out14 ; free mm4 */
264 paddsw %mm3, %mm5 /* out2 */
265 psraw $4, %mm1
266@@ -639,7 +648,7 @@ IDCT_mmx:
267 movq %mm5, 8*2(%esi) /* out2 ; free mm5 */
268 psraw $4, %mm2
269 /* moved up to the prev block */
270- movq scratch7, %mm4
271+ movq MUNG(scratch7), %mm4
272 /* moved up to the prev block */
273 psraw $4, %mm0
274 movq %mm2, 8*12(%esi) /* out12 ; free mm2 */
275@@ -647,13 +656,13 @@ IDCT_mmx:
276 psraw $4, %mm6
277 /* move back the data to its correct place
278 * moved up to the prev block
279- * movq scratch3, %mm0
280- * movq scratch5, %mm6
281- * movq scratch7, %mm4
282+ * movq MUNG(scratch3), %mm0
283+ * movq MUNG(scratch5), %mm6
284+ * movq MUNG(scratch7), %mm4
285 * psraw $4, %mm0
286 * psraw $4, %mm6
287 */
288- movq scratch1, %mm1
289+ movq MUNG(scratch1), %mm1
290 psraw $4, %mm4
291 movq %mm0, 8*3(%esi) /* out3 */
292 psraw $4, %mm1
293@@ -671,6 +680,15 @@ IDCT_mmx:
294 .Lfe1:
295 .size IDCT_mmx,.Lfe1-IDCT_mmx
296
297+#ifdef __PIC__
298+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
299+.globl __i686.get_pc_thunk.bx
300+ .hidden __i686.get_pc_thunk.bx
301+ .type __i686.get_pc_thunk.bx,@function
302+ __i686.get_pc_thunk.bx:
303+ movl (%esp), %ebx
304+ ret
305+#endif
306
307 #endif /* i386 && USE_MMX */
308
This page took 0.072974 seconds and 4 git commands to generate.