diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-06-27 21:08:10 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-06-27 21:08:10 +0000 |
commit | 106ec87921a41752777781f073092301d4477567 (patch) | |
tree | 54f0f6ee22467959b29b5fa4e76567b4b146b310 /linux-user/main.c | |
parent | 951f13516a50383cd462c9150e643cc9f9566267 (diff) |
initial MIPS signal handling (initial patch by Raphael Rigo)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2031 c046a42c-6fe2-441c-8c8c-71466251a162
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", |