Revision 7c58044c darwin-user/main.c

b/darwin-user/main.c
224 224
            case POWERPC_EXCP_FP:
225 225
                EXCP_DUMP(env, "Floating point program exception\n");
226 226
                /* Set FX */
227
                env->fpscr[7] |= 0x8;
228
                /* Finally, update FEX */
229
                if ((((env->fpscr[7] & 0x3) << 3) | (env->fpscr[6] >> 1)) &
230
                    ((env->fpscr[1] << 1) | (env->fpscr[0] >> 3)))
231
                    env->fpscr[7] |= 0x4;
232 227
                info.si_signo = SIGFPE;
233 228
                info.si_errno = 0;
234 229
                switch (env->error_code & 0xF) {
......
248 243
                case POWERPC_EXCP_FP_VXSOFT:
249 244
                    info.si_code = FPE_FLTINV;
250 245
                    break;
251
                case POWERPC_EXCP_FP_VXNAN:
246
                case POWERPC_EXCP_FP_VXSNAN:
252 247
                case POWERPC_EXCP_FP_VXISI:
253 248
                case POWERPC_EXCP_FP_VXIDI:
254 249
                case POWERPC_EXCP_FP_VXIMZ:

Also available in: Unified diff