Commit 7f84a7291b19aa5679ef58fdad0a81df4b8a6af0

Authored by blueswir1
1 parent 4c1de73d

Deliver page faults to program


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3049 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 14 additions and 1 deletions
linux-user/main.c
... ... @@ -620,7 +620,20 @@ void cpu_loop (CPUSPARCState *env)
620 620 case TT_FILL: /* window underflow */
621 621 restore_window(env);
622 622 break;
623   - // XXX
  623 + case TT_TFAULT:
  624 + case TT_DFAULT:
  625 + {
  626 + info.si_signo = SIGSEGV;
  627 + info.si_errno = 0;
  628 + /* XXX: check env->error_code */
  629 + info.si_code = TARGET_SEGV_MAPERR;
  630 + if (trapnr == TT_DFAULT)
  631 + info._sifields._sigfault._addr = env->dmmuregs[4];
  632 + else
  633 + info._sifields._sigfault._addr = env->tpc[env->tl];
  634 + queue_signal(info.si_signo, &info);
  635 + }
  636 + break;
624 637 #endif
625 638 case EXCP_INTERRUPT:
626 639 /* just indicate that signals should be handled asap */
... ...