Mercurial > repos > blastem
changeset 562:e13f4fd9cf6d
Ensure proper stack alignment when the Z80 calls into C code. This fixes a crash in optimized builds on OSX
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 23 Jun 2014 13:12:04 -0400 |
parents | 666adeba5a61 |
children | 7ed1dbb48f61 |
files | zruntime.S |
diffstat | 1 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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