Commit 7a9e65ac authored by Ronald S. Bultje's avatar Ronald S. Bultje Committed by Justin Ruggles
Browse files

x86: lavr: fix stack allocation for 7 and 8 channel downmixing on x86-32

Fixes crashes on Win32 and stack overruns on x86-32 in general.
parent 02738792
...@@ -272,7 +272,15 @@ cglobal mix_%1_to_%2_%3_flt, 3,in_channels+2,needed_mmregs+matrix_elements_mm, s ...@@ -272,7 +272,15 @@ cglobal mix_%1_to_%2_%3_flt, 3,in_channels+2,needed_mmregs+matrix_elements_mm, s
and rsp, ~(mmsize-1) and rsp, ~(mmsize-1)
sub rsp, matrix_elements_stack * mmsize sub rsp, matrix_elements_stack * mmsize
%else %else
%assign pad matrix_elements_stack * mmsize + (mmsize - gprsize) - (stack_offset & (mmsize - gprsize)) %assign matrix_stack_size matrix_elements_stack * mmsize
%assign pad matrix_stack_size + (mmsize - gprsize) - (stack_offset & (mmsize - gprsize))
; on x86-32 for 7 and 8 channels we need more stack space for src pointers
%if ARCH_X86_32 && in_channels >= 7
%assign pad pad + 0x10
%define src5m [rsp+matrix_stack_size+0]
%define src6m [rsp+matrix_stack_size+4]
%define src7m [rsp+matrix_stack_size+8]
%endif
SUB rsp, pad SUB rsp, pad
%endif %endif
%endif %endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment