|
@@ -319,7 +319,8 @@ void cpu_loop(CPUX86State *env)
|
|
env->regs[R_EDX],
|
|
env->regs[R_EDX],
|
|
env->regs[R_ESI],
|
|
env->regs[R_ESI],
|
|
env->regs[R_EDI],
|
|
env->regs[R_EDI],
|
|
- env->regs[R_EBP]);
|
|
|
|
|
|
+ env->regs[R_EBP],
|
|
|
|
+ 0, 0);
|
|
break;
|
|
break;
|
|
#ifndef TARGET_ABI32
|
|
#ifndef TARGET_ABI32
|
|
case EXCP_SYSCALL:
|
|
case EXCP_SYSCALL:
|
|
@@ -331,7 +332,8 @@ void cpu_loop(CPUX86State *env)
|
|
env->regs[R_EDX],
|
|
env->regs[R_EDX],
|
|
env->regs[10],
|
|
env->regs[10],
|
|
env->regs[8],
|
|
env->regs[8],
|
|
- env->regs[9]);
|
|
|
|
|
|
+ env->regs[9],
|
|
|
|
+ 0, 0);
|
|
env->eip = env->exception_next_eip;
|
|
env->eip = env->exception_next_eip;
|
|
break;
|
|
break;
|
|
#endif
|
|
#endif
|
|
@@ -735,7 +737,8 @@ void cpu_loop(CPUARMState *env)
|
|
env->regs[2],
|
|
env->regs[2],
|
|
env->regs[3],
|
|
env->regs[3],
|
|
env->regs[4],
|
|
env->regs[4],
|
|
- env->regs[5]);
|
|
|
|
|
|
+ env->regs[5],
|
|
|
|
+ 0, 0);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
goto error;
|
|
goto error;
|
|
@@ -831,7 +834,8 @@ void cpu_loop(CPUState *env)
|
|
env->regs[2],
|
|
env->regs[2],
|
|
env->regs[3],
|
|
env->regs[3],
|
|
env->regs[4],
|
|
env->regs[4],
|
|
- env->regs[5]);
|
|
|
|
|
|
+ env->regs[5],
|
|
|
|
+ 0, 0);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
goto error;
|
|
goto error;
|
|
@@ -1018,7 +1022,8 @@ void cpu_loop (CPUSPARCState *env)
|
|
ret = do_syscall (env, env->gregs[1],
|
|
ret = do_syscall (env, env->gregs[1],
|
|
env->regwptr[0], env->regwptr[1],
|
|
env->regwptr[0], env->regwptr[1],
|
|
env->regwptr[2], env->regwptr[3],
|
|
env->regwptr[2], env->regwptr[3],
|
|
- env->regwptr[4], env->regwptr[5]);
|
|
|
|
|
|
+ env->regwptr[4], env->regwptr[5],
|
|
|
|
+ 0, 0);
|
|
if ((abi_ulong)ret >= (abi_ulong)(-515)) {
|
|
if ((abi_ulong)ret >= (abi_ulong)(-515)) {
|
|
#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
|
|
#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
|
|
env->xcc |= PSR_CARRY;
|
|
env->xcc |= PSR_CARRY;
|
|
@@ -1611,7 +1616,7 @@ void cpu_loop(CPUPPCState *env)
|
|
env->crf[0] &= ~0x1;
|
|
env->crf[0] &= ~0x1;
|
|
ret = do_syscall(env, env->gpr[0], env->gpr[3], env->gpr[4],
|
|
ret = do_syscall(env, env->gpr[0], env->gpr[3], env->gpr[4],
|
|
env->gpr[5], env->gpr[6], env->gpr[7],
|
|
env->gpr[5], env->gpr[6], env->gpr[7],
|
|
- env->gpr[8]);
|
|
|
|
|
|
+ env->gpr[8], 0, 0);
|
|
if (ret == (uint32_t)(-TARGET_QEMU_ESIGRETURN)) {
|
|
if (ret == (uint32_t)(-TARGET_QEMU_ESIGRETURN)) {
|
|
/* Returning from a successful sigreturn syscall.
|
|
/* Returning from a successful sigreturn syscall.
|
|
Avoid corrupting register state. */
|
|
Avoid corrupting register state. */
|
|
@@ -2072,7 +2077,7 @@ void cpu_loop(CPUMIPSState *env)
|
|
env->active_tc.gpr[5],
|
|
env->active_tc.gpr[5],
|
|
env->active_tc.gpr[6],
|
|
env->active_tc.gpr[6],
|
|
env->active_tc.gpr[7],
|
|
env->active_tc.gpr[7],
|
|
- arg5, arg6/*, arg7, arg8*/);
|
|
|
|
|
|
+ arg5, arg6, arg7, arg8);
|
|
}
|
|
}
|
|
if (ret == -TARGET_QEMU_ESIGRETURN) {
|
|
if (ret == -TARGET_QEMU_ESIGRETURN) {
|
|
/* Returning from a successful sigreturn syscall.
|
|
/* Returning from a successful sigreturn syscall.
|
|
@@ -2160,7 +2165,8 @@ void cpu_loop (CPUState *env)
|
|
env->gregs[6],
|
|
env->gregs[6],
|
|
env->gregs[7],
|
|
env->gregs[7],
|
|
env->gregs[0],
|
|
env->gregs[0],
|
|
- env->gregs[1]);
|
|
|
|
|
|
+ env->gregs[1],
|
|
|
|
+ 0, 0);
|
|
env->gregs[0] = ret;
|
|
env->gregs[0] = ret;
|
|
break;
|
|
break;
|
|
case EXCP_INTERRUPT:
|
|
case EXCP_INTERRUPT:
|
|
@@ -2229,7 +2235,8 @@ void cpu_loop (CPUState *env)
|
|
env->regs[12],
|
|
env->regs[12],
|
|
env->regs[13],
|
|
env->regs[13],
|
|
env->pregs[7],
|
|
env->pregs[7],
|
|
- env->pregs[11]);
|
|
|
|
|
|
+ env->pregs[11],
|
|
|
|
+ 0, 0);
|
|
env->regs[10] = ret;
|
|
env->regs[10] = ret;
|
|
break;
|
|
break;
|
|
case EXCP_DEBUG:
|
|
case EXCP_DEBUG:
|
|
@@ -2288,7 +2295,8 @@ void cpu_loop (CPUState *env)
|
|
env->regs[7],
|
|
env->regs[7],
|
|
env->regs[8],
|
|
env->regs[8],
|
|
env->regs[9],
|
|
env->regs[9],
|
|
- env->regs[10]);
|
|
|
|
|
|
+ env->regs[10],
|
|
|
|
+ 0, 0);
|
|
env->regs[3] = ret;
|
|
env->regs[3] = ret;
|
|
env->sregs[SR_PC] = env->regs[14];
|
|
env->sregs[SR_PC] = env->regs[14];
|
|
break;
|
|
break;
|
|
@@ -2398,7 +2406,8 @@ void cpu_loop(CPUM68KState *env)
|
|
env->dregs[3],
|
|
env->dregs[3],
|
|
env->dregs[4],
|
|
env->dregs[4],
|
|
env->dregs[5],
|
|
env->dregs[5],
|
|
- env->aregs[0]);
|
|
|
|
|
|
+ env->aregs[0],
|
|
|
|
+ 0, 0);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case EXCP_INTERRUPT:
|
|
case EXCP_INTERRUPT:
|
|
@@ -2576,7 +2585,8 @@ void cpu_loop (CPUState *env)
|
|
sysret = do_syscall(env, trapnr,
|
|
sysret = do_syscall(env, trapnr,
|
|
env->ir[IR_A0], env->ir[IR_A1],
|
|
env->ir[IR_A0], env->ir[IR_A1],
|
|
env->ir[IR_A2], env->ir[IR_A3],
|
|
env->ir[IR_A2], env->ir[IR_A3],
|
|
- env->ir[IR_A4], env->ir[IR_A5]);
|
|
|
|
|
|
+ env->ir[IR_A4], env->ir[IR_A5],
|
|
|
|
+ 0, 0);
|
|
if (trapnr == TARGET_NR_sigreturn
|
|
if (trapnr == TARGET_NR_sigreturn
|
|
|| trapnr == TARGET_NR_rt_sigreturn) {
|
|
|| trapnr == TARGET_NR_rt_sigreturn) {
|
|
break;
|
|
break;
|
|
@@ -2707,7 +2717,8 @@ void cpu_loop(CPUS390XState *env)
|
|
env->regs[4],
|
|
env->regs[4],
|
|
env->regs[5],
|
|
env->regs[5],
|
|
env->regs[6],
|
|
env->regs[6],
|
|
- env->regs[7]);
|
|
|
|
|
|
+ env->regs[7],
|
|
|
|
+ 0, 0);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case EXCP_ADDR:
|
|
case EXCP_ADDR:
|