Revision bc1ad2de

b/linux-user/main.c
1327 1327
                                     arg5, 
1328 1328
                                     arg6);
1329 1329
                }
1330
                fail:
1331 1330
                env->PC += 4;
1332 1331
                if ((unsigned int)ret >= (unsigned int)(-1133)) {
1333 1332
                    env->gpr[7] = 1; /* error flag */
......
1342 1341
            break;
1343 1342
        case EXCP_CpU:
1344 1343
        case EXCP_RI:
1345
            {
1346
                uint32_t insn, op;
1347

  
1348
                insn = tget32(env->PC);
1349
                op = insn >> 26;
1350
                //                printf("insn=%08x op=%02x\n", insn, op);
1351
                /* XXX: totally dummy FP ops just to be able to launch
1352
                   a few executables */
1353
                switch(op) {
1354
                case 0x31: /* LWC1 */
1355
                    env->PC += 4;
1356
                    break;
1357
                case 0x39: /* SWC1 */
1358
                    env->PC += 4;
1359
                    break;
1360
                case 0x11:
1361
                    switch((insn >> 21) & 0x1f) {
1362
                    case 0x02: /* CFC1 */
1363
                        env->PC += 4;
1364
                        break;
1365
                    default:
1366
                        goto sigill;
1367
                    }
1368
                    break;
1369
                default:
1370
                sigill:
1371
                    info.si_signo = TARGET_SIGILL;
1372
                    info.si_errno = 0;
1373
                    info.si_code = 0;
1374
                    queue_signal(info.si_signo, &info);
1375
                    break;
1376
                }
1377
            }
1344
            info.si_signo = TARGET_SIGILL;
1345
            info.si_errno = 0;
1346
            info.si_code = 0;
1347
            queue_signal(info.si_signo, &info);
1378 1348
            break;
1379 1349
        default:
1380 1350
            //        error:
......
1700 1670
            env->gpr[i] = regs->regs[i];
1701 1671
        }
1702 1672
        env->PC = regs->cp0_epc;
1673
#ifdef MIPS_USES_FPU
1674
        env->CP0_Status |= (1 << CP0St_CU1);
1675
#endif
1703 1676
    }
1704 1677
#elif defined(TARGET_SH4)
1705 1678
    {

Also available in: Unified diff