aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2012-02-20 11:24:35 +0200
committerMartin Storsjö <martin@martin.st>2014-06-10 16:31:48 +0300
commit570d4b21863b6254d6bbca9c528bede471bb4478 (patch)
tree1a6bb2680e594b4ff09c665702393dbdc6d6afdb
parent0776e0ef6ba4160281ef3fabea43e670f3792b4a (diff)
downloadffmpeg-570d4b21863b6254d6bbca9c528bede471bb4478.tar.gz
x86: h264: Don't keep data in the redzone across function calls on 64 bit unix
We know that the called function (ff_chroma_inter_body_mmxext) doesn't touch the redzone, and thus will be kept intact - thus, this doesn't fix any bug per se. However, valgrind's memcheck tool intentionally assumes that the redzone is clobbered on every function call and function return (see a long comment in valgrind/memcheck/mc_main.c). This avoids false positives in that tool, at the cost of an extra stack pointer adjustment. The other alternative would be a valgrind suppression for this issue, but that's an extra burden for everybody that wants to run libavcodec within valgrind. Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r--libavcodec/x86/h264_deblock.asm10
1 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/x86/h264_deblock.asm b/libavcodec/x86/h264_deblock.asm
index 8a9fdf6c35..61642a0f47 100644
--- a/libavcodec/x86/h264_deblock.asm
+++ b/libavcodec/x86/h264_deblock.asm
@@ -821,10 +821,10 @@ cglobal deblock_v_chroma_8, 5,6
; int8_t *tc0)
;-----------------------------------------------------------------------------
cglobal deblock_h_chroma_8, 5,7
-%if UNIX64
- %define buf0 [rsp-24]
- %define buf1 [rsp-16]
-%elif WIN64
+%if ARCH_X86_64
+ ; This could use the red zone on 64 bit unix to avoid the stack pointer
+ ; readjustment, but valgrind assumes the red zone is clobbered on
+ ; function calls and returns.
sub rsp, 16
%define buf0 [rsp]
%define buf1 [rsp+8]
@@ -840,7 +840,7 @@ cglobal deblock_h_chroma_8, 5,7
movq m0, buf0
movq m3, buf1
TRANSPOSE8x4B_STORE PASS8ROWS(t5, r0, r1, t6)
-%if WIN64
+%if ARCH_X86_64
add rsp, 16
%endif
RET