diff bfin/vp3_idct_bfin.S @ 6362:78aa57eba353 libavcodec

FLAT objects cannot have multiple sections, so using the L1 attributes breaks linking. The FDPIC relocs also break for any other format. Thus check the compiler environment and select the appropriate sections/relocs. patch by Mike Frysinger, vapier.adi a gmail d com
author diego
date Sat, 16 Feb 2008 15:17:31 +0000
parents 73ec16dbcbc1
children 8327c5b4df9b
line wrap: on
line diff
--- a/bfin/vp3_idct_bfin.S	Fri Feb 15 21:01:10 2008 +0000
+++ b/bfin/vp3_idct_bfin.S	Sat Feb 16 15:17:31 2008 +0000
@@ -30,7 +30,11 @@
 
 #include "config_bfin.h"
 
+#ifdef __FDPIC__
 .section .l1.data.B,"aw",@progbits
+#else
+.data
+#endif
 
 .align 4;
 coefs:
@@ -45,7 +49,9 @@
 .short 0x18F9;           //cos(7pi/16)
 .short 0x7D8A;           //cos(pi/16)
 
+#ifdef __FDPIC__
 .section .l1.data.A
+#endif
 
 vtmp: .space 256
 
@@ -54,6 +60,7 @@
 #define TMP2 FP-16
 
 
+.text
 DEFUN(vp3_idct,mL1,
         (DCTELEM *block)):
 
@@ -61,8 +68,8 @@
     link 16;
     [--SP] = (R7:4, P5:3);   // Push the registers onto the stack.
     B0 = R0;                 // Pointer to Input matrix
-    R1 = [P3+coefs@GOT17M4]; // Pointer to Coefficients
-    R2 = [P3+vtmp@GOT17M4];  // Pointer to Temporary matrix
+    RELOC(R1, P3, coefs);    // Pointer to Coefficients
+    RELOC(R2, P3, vtmp);     // Pointer to Temporary matrix
     B3 = R1;
     B2 = R2;
     L3 = 20;                // L3 is used for making the coefficient array