properly access integer arguments that are passed on stack ABI guaranties upper bytes cleared for pointer arguments only.
Signed-off-by: Matthias Räncker <[email protected]> --- libavcodec/x86/videodsp.asm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libavcodec/x86/videodsp.asm b/libavcodec/x86/videodsp.asm index 19b910b..58f3ec2 100644 --- a/libavcodec/x86/videodsp.asm +++ b/libavcodec/x86/videodsp.asm @@ -43,18 +43,20 @@ SECTION .text %macro EMU_EDGE_FUNC 0 %if ARCH_X86_64 %define w_reg r7 +%define w_regp r7p cglobal emu_edge_core, 6, 9, 1 mov r8, r5 ; save block_h %else %define w_reg r6 +%define w_regp r6 cglobal emu_edge_core, 2, 7, 0 - mov r4, r4m ; end_y - mov r5, r5m ; block_h + mov r4p, r4m ; end_y + mov r5p, r5m ; block_h %endif ; start with vertical extend (top/bottom) and body pixel copy - mov w_reg, r7m - sub w_reg, r6m ; w = start_x - end_x + mov w_regp, r7m + sub w_regp, r6m ; w = start_x - end_x sub r5, r4 %if ARCH_X86_64 sub r4, r3 @@ -77,7 +79,7 @@ cglobal emu_edge_core, 2, 7, 0 .v_extend_end: ; horizontal extend (left/right) - mov w_reg, r6m ; start_x + mov w_regp, r6m ; start_x sub r0, w_reg %if ARCH_X86_64 mov r3, r0 ; backup of buf+block_h*linesize @@ -111,8 +113,8 @@ cglobal emu_edge_core, 2, 7, 0 mov r0, r0m mov r5, r5m %endif - mov w_reg, r7m ; end_x - mov r1, r8m ; block_w + mov w_regp, r7m ; end_x + mov r1p, r8m ; block_w mov r4, r1 sub r1, w_reg jz .h_extend_end ; if (end_x == block_w) goto h_extend_end -- 1.8.1.1 _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
