mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 13:10:37 +00:00
x86inc: Preserve arguments when allocating stack space
When allocating stack space with a larger alignment than the known stack alignment a temporary register is used for storing the stack pointer. Ensure that this isn't one of the registers used for passing arguments.
This commit is contained in:
parent
b1496008ee
commit
dfe771dc5a
@ -386,8 +386,11 @@ DECLARE_REG_TMP_SIZE 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
|
||||
%if %1 != 0 && required_stack_alignment > STACK_ALIGNMENT
|
||||
%if %1 > 0
|
||||
%assign regs_used (regs_used + 1)
|
||||
%elif ARCH_X86_64 && regs_used == num_args && num_args <= 4 + UNIX64 * 2
|
||||
%warning "Stack pointer will overwrite register argument"
|
||||
%endif
|
||||
%if ARCH_X86_64 && regs_used < 5 + UNIX64 * 3
|
||||
; Ensure that we don't clobber any registers containing arguments. For UNIX64 we also preserve r6 (rax)
|
||||
; since it's used as a hidden argument in vararg functions to specify the number of vector registers used.
|
||||
%assign regs_used 5 + UNIX64 * 3
|
||||
%endif
|
||||
%endif
|
||||
%endif
|
||||
|
Loading…
Reference in New Issue
Block a user