32x: drc: first implementation finished, no more interpreter dep
[picodrive.git] / cpu / sh2 / mame / sh2.c
index 18ef6eb..7beead3 100644 (file)
 #define LOG(x) do { if (VERBOSE) logerror x; } while (0)\r
 \r
 //int sh2_icount;\r
-SH2 *sh2;\r
+//SH2 *sh2;\r
 \r
 #if 0\r
 INLINE UINT8 RB(offs_t A)\r
@@ -855,7 +855,8 @@ INLINE void JSR(UINT32 m)
 /*  LDC     Rm,SR */\r
 INLINE void LDCSR(UINT32 m)\r
 {\r
-       sh2->sr = sh2->r[m] & FLAGS;\r
+       sh2->sr &= ~0xfff;\r
+       sh2->sr |= sh2->r[m] & FLAGS;\r
        sh2->test_irq = 1;\r
 }\r
 \r
@@ -875,7 +876,8 @@ INLINE void LDCVBR(UINT32 m)
 INLINE void LDCMSR(UINT32 m)\r
 {\r
        sh2->ea = sh2->r[m];\r
-       sh2->sr = RL( sh2->ea ) & FLAGS;\r
+       sh2->sr &= ~0xfff;\r
+       sh2->sr |= RL( sh2->ea ) & FLAGS;\r
        sh2->r[m] += 4;\r
        sh2_icount -= 2;\r
        sh2->test_irq = 1;\r
@@ -1461,7 +1463,8 @@ INLINE void RTE(void)
        sh2->pc = RL( sh2->ea );\r
        sh2->r[15] += 4;\r
        sh2->ea = sh2->r[15];\r
-       sh2->sr = RL( sh2->ea ) & FLAGS;\r
+       sh2->sr &= ~0xfff;\r
+       sh2->sr |= RL( sh2->ea ) & FLAGS;\r
        sh2->r[15] += 4;\r
        sh2_icount -= 3;\r
        sh2->test_irq = 1;\r
@@ -1556,7 +1559,7 @@ INLINE void SLEEP(void)
 /*  STC     SR,Rn */\r
 INLINE void STCSR(UINT32 n)\r
 {\r
-       sh2->r[n] = sh2->sr;\r
+       sh2->r[n] = sh2->sr & FLAGS;\r
 }\r
 \r
 /*  STC     GBR,Rn */\r
@@ -1576,7 +1579,7 @@ INLINE void STCMSR(UINT32 n)
 {\r
        sh2->r[n] -= 4;\r
        sh2->ea = sh2->r[n];\r
-       WL( sh2->ea, sh2->sr );\r
+       WL( sh2->ea, sh2->sr & FLAGS );\r
        sh2_icount--;\r
 }\r
 \r
@@ -1738,7 +1741,7 @@ INLINE void TRAPA(UINT32 i)
        sh2->ea = sh2->vbr + imm * 4;\r
 \r
        sh2->r[15] -= 4;\r
-       WL( sh2->r[15], sh2->sr );\r
+       WL( sh2->r[15], sh2->sr & FLAGS );\r
        sh2->r[15] -= 4;\r
        WL( sh2->r[15], sh2->pc );\r
 \r