# HG changeset patch # User Mike Pavone # Date 1403543524 14400 # Node ID e13f4fd9cf6dbeb825bea6fa98245bd851e3d1ce # Parent 666adeba5a6184c179f3a56dbbc21bd504e7fc66 Ensure proper stack alignment when the Z80 calls into C code. This fixes a crash in optimized builds on OSX diff -r 666adeba5a61 -r e13f4fd9cf6d zruntime.S --- a/zruntime.S Mon Jun 23 11:46:56 2014 -0400 +++ b/zruntime.S Mon Jun 23 13:12:04 2014 -0400 @@ -150,7 +150,15 @@ 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 @@ 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 @@ 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