Update of /cvsroot/hppaqemu/hppaqemu/target-hppa
In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv29892
Modified Files:
op.c
Log Message:
ssm/rsm/mtsm fixes, by Tomonori Yamane.
Index: op.c
===================================================================
RCS file: /cvsroot/hppaqemu/hppaqemu/target-hppa/op.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- op.c 20 Apr 2007 14:21:57 -0000 1.28
+++ op.c 20 Apr 2007 14:44:38 -0000 1.29
@@ -378,56 +378,44 @@
void OPPROTO op_ssm(void)
{
- T0 = env->psw & (PSW_W | PSW_E | PSW_O | PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
+ T0 = env->psw & (PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
if (PARAM1 & (1 << 0))
- env->psw |= PSW_W;
+ env->psw |= PSW_I;
if (PARAM1 & (1 << 1))
- env->psw |= PSW_E;
+ env->psw |= PSW_D;
if (PARAM1 & (1 << 2))
- env->psw |= PSW_O;
- if (PARAM1 & (1 << 3))
- env->psw |= PSW_G;
+ env->psw |= PSW_P;
if (PARAM1 & (1 << 4))
- env->psw |= PSW_F;
- if (PARAM1 & (1 << 5))
env->psw |= PSW_R;
- if (PARAM1 & (1 << 7))
- env->psw |= PSW_P;
- if (PARAM1 & (1 << 8))
- env->psw |= PSW_D;
- if (PARAM1 & (1 << 9))
- env->psw |= PSW_I;
+ if (PARAM1 & (1 << 5))
+ env->psw |= PSW_F;
+ if (PARAM1 & (1 << 6))
+ env->psw |= PSW_G;
}
void OPPROTO op_rsm(void)
{
- T0 = env->psw & (PSW_W | PSW_E | PSW_O | PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
+ T0 = env->psw & (PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
if (PARAM1 & (1 << 0))
- env->psw &= ~PSW_W;
+ env->psw &= ~PSW_I;
if (PARAM1 & (1 << 1))
- env->psw &= ~PSW_E;
+ env->psw &= ~PSW_D;
if (PARAM1 & (1 << 2))
- env->psw &= ~PSW_O;
- if (PARAM1 & (1 << 3))
- env->psw &= ~PSW_G;
+ env->psw &= ~PSW_P;
if (PARAM1 & (1 << 4))
- env->psw &= ~PSW_F;
- if (PARAM1 & (1 << 5))
env->psw &= ~PSW_R;
- if (PARAM1 & (1 << 7))
- env->psw &= ~PSW_P;
- if (PARAM1 & (1 << 8))
- env->psw &= ~PSW_D;
- if (PARAM1 & (1 << 9))
- env->psw &= ~PSW_I;
+ if (PARAM1 & (1 << 5))
+ env->psw &= ~PSW_F;
+ if (PARAM1 & (1 << 6))
+ env->psw &= ~PSW_G;
}
void OPPROTO op_mtsm(void)
{
- env->psw = env->psw & ~(PSW_W | PSW_E | PSW_O | PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
- env->psw |= T0 & (PSW_W | PSW_E | PSW_O | PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
+ env->psw = env->psw & ~(PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
+ env->psw |= T0 & (PSW_G | PSW_F | PSW_R | PSW_Q | PSW_P | PSW_D | PSW_I);
}
/* computation instructions... page 169 PA1.1 specification */
|