On 8/4/2014 12:43 PM, Peter Maydell wrote: > On 4 August 2014 17:45, Tom Musta <tommu...@gmail.com> wrote: >> The clock_nanosleep syscall is unusual in that it returns positive >> numbers in error handling situations, versus returning -1 and setting >> errno, or returning a negative errno value. On POWER, the kernel will >> set the SO bit of CR0 to indicate failure in a syscall. QEMU has >> generic handling to do this for syscalls with standard return values. >> >> Add special case code for clock_nanosleep to handle CR0 properly. >> >> Signed-off-by: Tom Musta <tommu...@gmail.com> >> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> index 95cee0b..5660520 100644 >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -8993,6 +8993,14 @@ abi_long do_syscall(void *cpu_env, int num, abi_long >> arg1, >> ret = get_errno(clock_nanosleep(arg1, arg2, &ts, arg4 ? &ts : >> NULL)); >> if (arg4) >> host_to_target_timespec(arg4, &ts); >> + >> +#if defined(TARGET_PPC) || defined(TARGET_PPC64) > > ...isn't TARGET_PPC always defined if TARGET_PPC64 is? > (ie second condition in the || is unnecessary) > > -- PMM >
You are correct. I was thinking "TARGET_PPC" was a euphemism for 32 bit Power (since --target=ppc-softmmy,ppc-linux-user are used to configure 32 bit implementations). But I see now in config-target.h that this is not the case.