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
This commit is contained in:
bellard 2006-06-27 21:08:10 +00:00
parent 951f13516a
commit 106ec87921
4 changed files with 376 additions and 3 deletions

View file

@ -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",