From 97e95a29ac864b2ee7772ea01cb78defd57ea96b Mon Sep 17 00:00:00 2001
From: notaz <notasas@gmail.com>
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