linux-user: fix fadvise64_64() on ppc
On ppc, advice is arg2, not arg6: long ppc_fadvise64_64(int fd, int advice, u32 offset_high, u32 offset_low, u32 len_high, u32 len_low) Signed-off-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
562a20b4ef
commit
43046b5a07
@ -11261,6 +11261,15 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
|||||||
|
|
||||||
#ifdef TARGET_NR_fadvise64_64
|
#ifdef TARGET_NR_fadvise64_64
|
||||||
case TARGET_NR_fadvise64_64:
|
case TARGET_NR_fadvise64_64:
|
||||||
|
#if defined(TARGET_PPC)
|
||||||
|
/* 6 args: fd, advice, offset (high, low), len (high, low) */
|
||||||
|
ret = arg2;
|
||||||
|
arg2 = arg3;
|
||||||
|
arg3 = arg4;
|
||||||
|
arg4 = arg5;
|
||||||
|
arg5 = arg6;
|
||||||
|
arg6 = ret;
|
||||||
|
#else
|
||||||
/* 6 args: fd, offset (high, low), len (high, low), advice */
|
/* 6 args: fd, offset (high, low), len (high, low), advice */
|
||||||
if (regpairs_aligned(cpu_env)) {
|
if (regpairs_aligned(cpu_env)) {
|
||||||
/* offset is in (3,4), len in (5,6) and advice in 7 */
|
/* offset is in (3,4), len in (5,6) and advice in 7 */
|
||||||
@ -11270,6 +11279,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
|||||||
arg5 = arg6;
|
arg5 = arg6;
|
||||||
arg6 = arg7;
|
arg6 = arg7;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
ret = -host_to_target_errno(posix_fadvise(arg1,
|
ret = -host_to_target_errno(posix_fadvise(arg1,
|
||||||
target_offset64(arg2, arg3),
|
target_offset64(arg2, arg3),
|
||||||
target_offset64(arg4, arg5),
|
target_offset64(arg4, arg5),
|
||||||
|
Loading…
Reference in New Issue
Block a user