From: Stuart B. <zu...@us...> - 2007-04-20 14:44:44
|
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 */ |