diff options
Diffstat (limited to 'linux-user/main.c')
-rw-r--r-- | linux-user/main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/linux-user/main.c b/linux-user/main.c index 6b8337fc7c..2250b127a4 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -1302,6 +1302,7 @@ void cpu_loop(CPUMIPSState *env) case EXCP_SYSCALL: { syscall_num = env->gpr[2] - 4000; + env->PC += 4; if (syscall_num >= sizeof(mips_syscall_args)) { ret = -ENOSYS; } else { @@ -1328,7 +1329,6 @@ void cpu_loop(CPUMIPSState *env) arg5, arg6); } - env->PC += 4; if ((unsigned int)ret >= (unsigned int)(-1133)) { env->gpr[7] = 1; /* error flag */ ret = -ret; @@ -1347,6 +1347,9 @@ void cpu_loop(CPUMIPSState *env) info.si_code = 0; queue_signal(info.si_signo, &info); break; + case EXCP_INTERRUPT: + /* just indicate that signals should be handled asap */ + break; default: // error: fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n", |