aboutsummaryrefslogtreecommitdiff
path: root/linux-user/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux-user/main.c')
-rw-r--r--linux-user/main.c5
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",