]> git.proxmox.com Git - mirror_qemu.git/commitdiff
Deliver page faults to program
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 7 Jul 2007 20:46:41 +0000 (20:46 +0000)
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 7 Jul 2007 20:46:41 +0000 (20:46 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3049 c046a42c-6fe2-441c-8c8c-71466251a162

linux-user/main.c

index 8d24a1fc174d0ea89848cd9e65b2de3f27fa76d5..32fa43d47634dd8c43c3fe542a6c9eee96b7e830 100644 (file)
@@ -620,7 +620,20 @@ void cpu_loop (CPUSPARCState *env)
         case TT_FILL: /* window underflow */
             restore_window(env);
             break;
-           // XXX
+        case TT_TFAULT:
+        case TT_DFAULT:
+            {
+                info.si_signo = SIGSEGV;
+                info.si_errno = 0;
+                /* XXX: check env->error_code */
+                info.si_code = TARGET_SEGV_MAPERR;
+                if (trapnr == TT_DFAULT)
+                    info._sifields._sigfault._addr = env->dmmuregs[4];
+                else
+                    info._sifields._sigfault._addr = env->tpc[env->tl];
+                queue_signal(info.si_signo, &info);
+            }
+            break;
 #endif
         case EXCP_INTERRUPT:
             /* just indicate that signals should be handled asap */