32x: add SR masking in MAME sh2
authornotaz <notasas@gmail.com>
Tue, 13 Oct 2009 21:14:53 +0000 (21:14 +0000)
committernotaz <notasas@gmail.com>
Tue, 13 Oct 2009 21:14:53 +0000 (21:14 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@815 be3aeb3a-fb24-0410-a615-afba39da0efa

cpu/sh2/mame/sh2.c

index 18ef6eb..8e84f7e 100644 (file)
@@ -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