qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] qemu/linux-user main.c


From: Fabrice Bellard
Subject: [Qemu-devel] qemu/linux-user main.c
Date: Wed, 14 Jun 2006 13:37:55 +0000

CVSROOT:        /sources/qemu
Module name:    qemu
Changes by:     Fabrice Bellard <bellard>       06/06/14 13:37:55

Modified files:
        linux-user     : main.c 

Log message:
        MIPS FPU support in linux user emulation

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemu/linux-user/main.c?cvsroot=qemu&r1=1.84&r2=1.85

Patches:
Index: main.c
===================================================================
RCS file: /sources/qemu/qemu/linux-user/main.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -b -r1.84 -r1.85
--- main.c      11 Jun 2006 13:32:59 -0000      1.84
+++ main.c      14 Jun 2006 13:37:55 -0000      1.85
@@ -1327,7 +1327,6 @@
                                      arg5, 
                                      arg6);
                 }
-                fail:
                 env->PC += 4;
                 if ((unsigned int)ret >= (unsigned int)(-1133)) {
                     env->gpr[7] = 1; /* error flag */
@@ -1342,40 +1341,11 @@
             break;
         case EXCP_CpU:
         case EXCP_RI:
-            {
-                uint32_t insn, op;
-
-                insn = tget32(env->PC);
-                op = insn >> 26;
-                //                printf("insn=%08x op=%02x\n", insn, op);
-                /* XXX: totally dummy FP ops just to be able to launch
-                   a few executables */
-                switch(op) {
-                case 0x31: /* LWC1 */
-                    env->PC += 4;
-                    break;
-                case 0x39: /* SWC1 */
-                    env->PC += 4;
-                    break;
-                case 0x11:
-                    switch((insn >> 21) & 0x1f) {
-                    case 0x02: /* CFC1 */
-                        env->PC += 4;
-                        break;
-                    default:
-                        goto sigill;
-                    }
-                    break;
-                default:
-                sigill:
                     info.si_signo = TARGET_SIGILL;
                     info.si_errno = 0;
                     info.si_code = 0;
                     queue_signal(info.si_signo, &info);
                     break;
-                }
-            }
-            break;
         default:
             //        error:
             fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n", 
@@ -1700,6 +1670,9 @@
             env->gpr[i] = regs->regs[i];
         }
         env->PC = regs->cp0_epc;
+#ifdef MIPS_USES_FPU
+        env->CP0_Status |= (1 << CP0St_CU1);
+#endif
     }
 #elif defined(TARGET_SH4)
     {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]