Revision 7c58044c target-ppc/helper.c

b/target-ppc/helper.c
2130 2130
                    fprintf(logfile, "Ignore floating point exception\n");
2131 2131
                }
2132 2132
#endif
2133
                env->exception_index = POWERPC_EXCP_NONE;
2134
                env->error_code = 0;
2133 2135
                return;
2134 2136
            }
2135 2137
            new_msr &= ~((target_ulong)1 << MSR_RI);
......
2138 2140
                new_msr |= (target_ulong)1 << MSR_HV;
2139 2141
#endif
2140 2142
            msr |= 0x00100000;
2141
            /* Set FX */
2142
            env->fpscr[7] |= 0x8;
2143
            /* Finally, update FEX */
2144
            if ((((env->fpscr[7] & 0x3) << 3) | (env->fpscr[6] >> 1)) &
2145
                ((env->fpscr[1] << 1) | (env->fpscr[0] >> 3)))
2146
                env->fpscr[7] |= 0x4;
2147 2143
            if (msr_fe0 != msr_fe1) {
2148 2144
                msr |= 0x00010000;
2149 2145
                goto store_current;
......
2199 2195
        /* XXX: To be removed */
2200 2196
        if (env->gpr[3] == 0x113724fa && env->gpr[4] == 0x77810f9b &&
2201 2197
            env->osi_call) {
2202
            if (env->osi_call(env) != 0)
2198
            if (env->osi_call(env) != 0) {
2199
                env->exception_index = POWERPC_EXCP_NONE;
2200
                env->error_code = 0;
2203 2201
                return;
2202
            }
2204 2203
        }
2205 2204
        if (loglevel & CPU_LOG_INT) {
2206 2205
            dump_syscall(env);

Also available in: Unified diff