From b4d93c2e5ed601430c9680b8f06996ea834f80b7 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Mon, 29 Apr 2013 21:46:48 -0700 Subject: Implement retranslating code when written to. Possibly broken, need to fix some other bugs before a proper test. --- zruntime.S | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'zruntime.S') 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: -- cgit v1.2.3