aboutsummaryrefslogtreecommitdiff
path: root/linux-user/main.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-27 21:08:10 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-27 21:08:10 +0000
commit106ec87921a41752777781f073092301d4477567 (patch)
tree54f0f6ee22467959b29b5fa4e76567b4b146b310 /linux-user/main.c
parent951f13516a50383cd462c9150e643cc9f9566267 (diff)
downloadqemu-106ec87921a41752777781f073092301d4477567.zip
qemu-106ec87921a41752777781f073092301d4477567.tar.gz
qemu-106ec87921a41752777781f073092301d4477567.tar.bz2
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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/linux-user/main.c b/linux-user/main.c
index 6b8337f..2250b12 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",