ARM: work around linker bug with movw/movt relocations in shared libs
Originally committed as revision 16395 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							parent
							
								
									2e35e68434
								
							
						
					
					
						commit
						172a39d13c
					
				@ -18,6 +18,8 @@
 | 
				
			|||||||
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
					 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "config.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        .macro require8, val=1
 | 
					        .macro require8, val=1
 | 
				
			||||||
        .eabi_attribute 24, \val
 | 
					        .eabi_attribute 24, \val
 | 
				
			||||||
        .endm
 | 
					        .endm
 | 
				
			||||||
@ -34,3 +36,12 @@
 | 
				
			|||||||
        .func   \name
 | 
					        .func   \name
 | 
				
			||||||
\name:
 | 
					\name:
 | 
				
			||||||
        .endm
 | 
					        .endm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .macro movrel rd, val
 | 
				
			||||||
 | 
					#if defined(HAVE_ARMV6T2) && !defined(CONFIG_SHARED)
 | 
				
			||||||
 | 
					        movw            \rd, #:lower16:\val
 | 
				
			||||||
 | 
					        movt            \rd, #:upper16:\val
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        ldr             \rd, =\val
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        .endm
 | 
				
			||||||
 | 
				
			|||||||
@ -103,8 +103,7 @@ function ff_h264_idct_add16_neon, export=1
 | 
				
			|||||||
        mov             r1,  r2
 | 
					        mov             r1,  r2
 | 
				
			||||||
        mov             r2,  r3
 | 
					        mov             r2,  r3
 | 
				
			||||||
        ldr             r6,  [sp, #24]
 | 
					        ldr             r6,  [sp, #24]
 | 
				
			||||||
        movw            r7,  #:lower16:scan8
 | 
					        movrel          r7,  scan8
 | 
				
			||||||
        movt            r7,  #:upper16:scan8
 | 
					 | 
				
			||||||
        mov             ip,  #16
 | 
					        mov             ip,  #16
 | 
				
			||||||
1:      ldrb            r8,  [r7], #1
 | 
					1:      ldrb            r8,  [r7], #1
 | 
				
			||||||
        ldr             r0,  [r5], #4
 | 
					        ldr             r0,  [r5], #4
 | 
				
			||||||
@ -131,8 +130,7 @@ function ff_h264_idct_add16intra_neon, export=1
 | 
				
			|||||||
        mov             r1,  r2
 | 
					        mov             r1,  r2
 | 
				
			||||||
        mov             r2,  r3
 | 
					        mov             r2,  r3
 | 
				
			||||||
        ldr             r6,  [sp, #24]
 | 
					        ldr             r6,  [sp, #24]
 | 
				
			||||||
        movw            r7,  #:lower16:scan8
 | 
					        movrel          r7,  scan8
 | 
				
			||||||
        movt            r7,  #:upper16:scan8
 | 
					 | 
				
			||||||
        mov             ip,  #16
 | 
					        mov             ip,  #16
 | 
				
			||||||
1:      ldrb            r8,  [r7], #1
 | 
					1:      ldrb            r8,  [r7], #1
 | 
				
			||||||
        ldr             r0,  [r5], #4
 | 
					        ldr             r0,  [r5], #4
 | 
				
			||||||
@ -157,8 +155,7 @@ function ff_h264_idct_add8_neon, export=1
 | 
				
			|||||||
        add             r1,  r2,  #16*32
 | 
					        add             r1,  r2,  #16*32
 | 
				
			||||||
        mov             r2,  r3
 | 
					        mov             r2,  r3
 | 
				
			||||||
        ldr             r6,  [sp, #32]
 | 
					        ldr             r6,  [sp, #32]
 | 
				
			||||||
        movw            r7,  #:lower16:scan8+16
 | 
					        movrel          r7,  scan8+16
 | 
				
			||||||
        movt            r7,  #:upper16:scan8+16
 | 
					 | 
				
			||||||
        mov             ip,  #8
 | 
					        mov             ip,  #8
 | 
				
			||||||
1:      ldrb            r8,  [r7], #1
 | 
					1:      ldrb            r8,  [r7], #1
 | 
				
			||||||
        ldr             r0,  [r5], #4
 | 
					        ldr             r0,  [r5], #4
 | 
				
			||||||
 | 
				
			|||||||
@ -239,8 +239,7 @@ idct_coeff_neon:
 | 
				
			|||||||
        pld             [\data]
 | 
					        pld             [\data]
 | 
				
			||||||
        pld             [\data, #64]
 | 
					        pld             [\data, #64]
 | 
				
			||||||
        vpush           {d8-d15}
 | 
					        vpush           {d8-d15}
 | 
				
			||||||
        movw            r3, #:lower16:idct_coeff_neon
 | 
					        movrel          r3,  idct_coeff_neon
 | 
				
			||||||
        movt            r3, #:upper16:idct_coeff_neon
 | 
					 | 
				
			||||||
        vld1.64         {d0,d1}, [r3,:128]
 | 
					        vld1.64         {d0,d1}, [r3,:128]
 | 
				
			||||||
        .endm
 | 
					        .endm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user