summaryrefslogtreecommitdiff
path: root/zruntime.S
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-04-29 21:46:48 -0700
committerMike Pavone <pavone@retrodev.com>2013-04-29 21:46:48 -0700
commitb4d93c2e5ed601430c9680b8f06996ea834f80b7 (patch)
tree2c3d635e7313b25e7279906fa5fbb94bc8609659 /zruntime.S
parente43d9cd9eb59197c72eb08189cfcbb37cd630898 (diff)
Implement retranslating code when written to. Possibly broken, need to fix some other bugs before a proper test.
Diffstat (limited to 'zruntime.S')
-rw-r--r--zruntime.S20
1 files changed, 20 insertions, 0 deletions
diff --git a/zruntime.S b/zruntime.S
index 9e98f10..a3af63c 100644
--- a/zruntime.S
+++ b/zruntime.S
@@ -99,6 +99,15 @@ z80_write_byte_noinc:
z80_write_ram:
and $0x1FFF, %r13
mov %r14b, (%r11, %r13)
+ mov %r13d, %r14d
+ shr $7, %r14d
+ bt %r14d, 152(%rsi)
+ jnc not_code
+ call z80_save_context
+ mov %r13d, %edi
+ call z80_handle_code_write
+ mov %rax, %rsi
+not_code:
ret
z80_write_bank:
and $0x7FFF, %r13
@@ -167,6 +176,17 @@ z80_write_word_lowfirst:
call z_inccycles
call z80_write_byte_noinc
ret
+
+ .global z80_retrans_stub
+z80_retrans_stub:
+ call z80_save_context
+ mov %r13d, %edi
+ push %rsi
+ call z80_retranslate_inst
+ pop %rsi
+ mov %rax, %r13
+ call z80_load_context
+ jmp *%r13
.global z80_native_addr
z80_native_addr: