From 97e95a29ac864b2ee7772ea01cb78defd57ea96b Mon Sep 17 00:00:00 2001 From: notaz Date: Tue, 9 Jul 2013 03:29:11 +0300 Subject: [PATCH] drc: reload cycles after memhandlers --- cpu/sh2/compiler.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cpu/sh2/compiler.c b/cpu/sh2/compiler.c index 10d4c014..b55f3e57 100644 --- a/cpu/sh2/compiler.c +++ b/cpu/sh2/compiler.c @@ -983,6 +983,10 @@ static int emit_memhandler_read_(int size, int ram_check) } } rcache_invalidate(); + + if (reg_map_g2h[SHR_SR] != -1) + emith_ctx_read(reg_map_g2h[SHR_SR], SHR_SR * 4); + // assuming arg0 and retval reg matches return rcache_get_tmp_arg(0); } @@ -1040,6 +1044,9 @@ static void emit_memhandler_write(int size, u32 pc, int delay) { int ctxr; host_arg2reg(ctxr, 2); + if (reg_map_g2h[SHR_SR] != -1) + emith_ctx_write(reg_map_g2h[SHR_SR], SHR_SR * 4); + switch (size) { case 0: // 8 // XXX: consider inlining sh2_drc_write8 @@ -1065,6 +1072,9 @@ static void emit_memhandler_write(int size, u32 pc, int delay) emith_call(sh2_drc_write32); break; } + + if (reg_map_g2h[SHR_SR] != -1) + emith_ctx_read(reg_map_g2h[SHR_SR], SHR_SR * 4); rcache_invalidate(); } -- 2.39.5