Revision 61ff6f58
b/linux-user/main.c | ||
---|---|---|
476 | 476 |
void cpu_loop (CPUSPARCState *env) |
477 | 477 |
{ |
478 | 478 |
int trapnr, ret; |
479 |
target_siginfo_t info; |
|
479 | 480 |
|
480 | 481 |
while (1) { |
481 | 482 |
trapnr = cpu_sparc_exec (env); |
... | ... | |
510 | 511 |
case TT_WIN_UNF: /* window underflow */ |
511 | 512 |
restore_window(env); |
512 | 513 |
break; |
514 |
case TT_TFAULT: |
|
515 |
case TT_DFAULT: |
|
516 |
{ |
|
517 |
info.si_signo = SIGSEGV; |
|
518 |
info.si_errno = 0; |
|
519 |
/* XXX: check env->error_code */ |
|
520 |
info.si_code = TARGET_SEGV_MAPERR; |
|
521 |
info._sifields._sigfault._addr = env->mmuregs[4]; |
|
522 |
queue_signal(info.si_signo, &info); |
|
523 |
} |
|
524 |
break; |
|
513 | 525 |
case 0x100: // XXX, why do we get these? |
514 | 526 |
break; |
515 | 527 |
default: |
Also available in: Unified diff