From 8a7f8bc09c88e9446d475127a82df23a1dcb0c75 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Mon, 23 Jun 2014 13:12:04 -0400 Subject: Ensure proper stack alignment when the Z80 calls into C code. This fixes a crash in optimized builds on OSX --- zruntime.S | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'zruntime.S') diff --git a/zruntime.S b/zruntime.S index 1883239..a7bac3f 100644 --- a/zruntime.S +++ b/zruntime.S @@ -150,7 +150,15 @@ z80_read_ym2612: call z80_save_context mov %r13w, %di push %rsi + test $8, %rsp + jnz 0f call z80_read_ym + jmp 1f +0: + sub $8, %rsp + call z80_read_ym + add $8, %rsp +1: pop %rsi mov %al, %r13b call z80_load_context @@ -196,7 +204,15 @@ z80_write_ym2612: call z80_save_context mov %r14w, %di mov %r13b, %dl + test $8, %rsp + jnz 0f + call z80_write_ym + jmp 1f +0: + sub $8, %rsp call z80_write_ym + add $8, %rsp +1: mov %rax, %rsi jmp z80_load_context z80_write_bank_reg: @@ -219,7 +235,15 @@ z80_write_vdp: call z80_save_context mov %r14w, %di mov %r13b, %dl + test $8, %rsp + jnz 0f + call z80_vdp_port_write + jmp 1f +0: + sub $8, %rsp call z80_vdp_port_write + add $8, %rsp +1: mov %rax, %rsi jmp z80_load_context -- cgit v1.2.3