--- ffmpeg-3.4.1.orig/libavcodec/arm/synth_filter_vfp.S 2016-03-29 04:25:11.000000000 +0200 +++ ffmpeg-3.4.1/libavcodec/arm/synth_filter_vfp.S 2017-07-27 02:09:00.326946211 +0200 @@ -1,6 +1,5 @@ /* * Copyright (c) 2013 RISC OS Open Ltd - * Author: Ben Avison * * This file is part of FFmpeg. * @@ -17,6 +16,8 @@ * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Ben Avison */ #include "libavutil/arm/asm.S" @@ -124,7 +125,7 @@ function ff_synth_filter_float_vfp, expo push {r3-r7,lr} vpush {s16-s31} ldr lr, [P_SB_OFF] - add a2, ORIG_P_SB, lr, lsl #2 @ calculate synth_buf to pass to imdct_half + add a2, ORIG_P_SB, lr, LSL #2 @ calculate synth_buf to pass to imdct_half mov P_SB, a2 @ and keep a copy for ourselves bic J_WRAP, lr, #63 @ mangled to make testing for wrap easier in inner loop sub lr, lr, #32 @@ -132,12 +133,12 @@ function ff_synth_filter_float_vfp, expo str lr, [P_SB_OFF] @ rotate offset, modulo buffer size, ready for next call ldr a3, [sp, #(16+6+2)*4] @ fetch in from stack, to pass to imdct_half VFP vmov s16, SCALE @ imdct_half is free to corrupt s0, but it contains one of our arguments in hardfp case - bl X(ff_imdct_half_vfp) + bl ff_imdct_half_c VFP vmov SCALE, s16 - fmrx OLDFPSCR, FPSCR + vmrs OLDFPSCR, FPSCR ldr lr, =0x03030000 @ RunFast mode, short vectors of length 4, stride 1 - fmxr FPSCR, lr + vmsr FPSCR, lr ldr P_SB2_DN, [sp, #16*4] ldr P_WIN_DN, [sp, #(16+6+0)*4] ldr P_OUT_DN, [sp, #(16+6+1)*4] @@ -196,48 +197,10 @@ NOVFP vldr SCALE, [sp, #(16+6+3)*4] vstmdb P_SB2_DN!, {VD0-VD3} bne 1b - fmxr FPSCR, OLDFPSCR + vmsr FPSCR, OLDFPSCR vpop {s16-s31} pop {r3-r7,pc} endfunc - .unreq IMDCT - .unreq ORIG_P_SB - .unreq P_SB_OFF - .unreq I - .unreq P_SB2_UP - .unreq OLDFPSCR - .unreq P_SB2_DN - .unreq P_WIN_DN - .unreq P_OUT_DN - .unreq P_SB - .unreq J_WRAP - .unreq P_WIN_UP - .unreq P_OUT_UP - - .unreq SCALE - .unreq SBUF_DAT_REV0 - .unreq SBUF_DAT_REV1 - .unreq SBUF_DAT_REV2 - .unreq SBUF_DAT_REV3 - .unreq VA0 - .unreq VA3 - .unreq VB0 - .unreq VB3 - .unreq VC0 - .unreq VC3 - .unreq VD0 - .unreq VD3 - .unreq SBUF_DAT0 - .unreq SBUF_DAT1 - .unreq SBUF_DAT2 - .unreq SBUF_DAT3 - .unreq SBUF_DAT_ALT0 - .unreq SBUF_DAT_ALT1 - .unreq SBUF_DAT_ALT2 - .unreq SBUF_DAT_ALT3 - .unreq WIN_DN_DAT0 - .unreq WIN_UP_DAT0 - .align 3 zero: .word 0, 0