mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-21 09:02:00 -06:00
ppc64-linux-user: Fix syscall return type.
Use target_ulong instead of hard-coded uint32_t. Remove the disabled printf's that are redundant with -strace. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
8e78064e9d
commit
9e0e2f967b
1 changed files with 3 additions and 10 deletions
|
@ -1341,7 +1341,7 @@ void cpu_loop(CPUPPCState *env)
|
||||||
{
|
{
|
||||||
target_siginfo_t info;
|
target_siginfo_t info;
|
||||||
int trapnr;
|
int trapnr;
|
||||||
uint32_t ret;
|
target_ulong ret;
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
cpu_exec_start(env);
|
cpu_exec_start(env);
|
||||||
|
@ -1704,27 +1704,20 @@ void cpu_loop(CPUPPCState *env)
|
||||||
* PPC ABI uses overflow flag in cr0 to signal an error
|
* PPC ABI uses overflow flag in cr0 to signal an error
|
||||||
* in syscalls.
|
* in syscalls.
|
||||||
*/
|
*/
|
||||||
#if 0
|
|
||||||
printf("syscall %d 0x%08x 0x%08x 0x%08x 0x%08x\n", env->gpr[0],
|
|
||||||
env->gpr[3], env->gpr[4], env->gpr[5], env->gpr[6]);
|
|
||||||
#endif
|
|
||||||
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], 0, 0);
|
env->gpr[8], 0, 0);
|
||||||
if (ret == (uint32_t)(-TARGET_QEMU_ESIGRETURN)) {
|
if (ret == (target_ulong)(-TARGET_QEMU_ESIGRETURN)) {
|
||||||
/* Returning from a successful sigreturn syscall.
|
/* Returning from a successful sigreturn syscall.
|
||||||
Avoid corrupting register state. */
|
Avoid corrupting register state. */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (ret > (uint32_t)(-515)) {
|
if (ret > (target_ulong)(-515)) {
|
||||||
env->crf[0] |= 0x1;
|
env->crf[0] |= 0x1;
|
||||||
ret = -ret;
|
ret = -ret;
|
||||||
}
|
}
|
||||||
env->gpr[3] = ret;
|
env->gpr[3] = ret;
|
||||||
#if 0
|
|
||||||
printf("syscall returned 0x%08x (%d)\n", ret, ret);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case POWERPC_EXCP_STCX:
|
case POWERPC_EXCP_STCX:
|
||||||
if (do_store_exclusive(env)) {
|
if (do_store_exclusive(env)) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue