mirror of git://git.musl-libc.org/musl
fix posix_fadvise syscall args on powerpc, unify with arm fix
commit 6d38c9cf80
provided an
arm-specific version of posix_fadvise to address the alternate
argument order the kernel expects on arm, but neglected to address
that powerpc (32-bit) has the same issue. instead of having arch
variant files in duplicate, simply put the alternate version in the
top-level file under the control of a macro defined in syscall_arch.h.
This commit is contained in:
parent
3d98146146
commit
3dd27f3aab
|
@ -76,3 +76,5 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo
|
|||
#define VDSO_USEFUL
|
||||
#define VDSO_CGT_SYM "__vdso_clock_gettime"
|
||||
#define VDSO_CGT_VER "LINUX_2.6"
|
||||
|
||||
#define SYSCALL_FADVISE_6_ARG
|
||||
|
|
|
@ -5,3 +5,5 @@
|
|||
|
||||
#undef SYSCALL_NO_INLINE
|
||||
#define SYSCALL_NO_INLINE
|
||||
|
||||
#define SYSCALL_FADVISE_6_ARG
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
#include <fcntl.h>
|
||||
#include "syscall.h"
|
||||
#include "libc.h"
|
||||
|
||||
int posix_fadvise(int fd, off_t base, off_t len, int advice)
|
||||
{
|
||||
/* ARM-specific syscall argument order */
|
||||
return -__syscall(SYS_fadvise, fd, advice,
|
||||
__SYSCALL_LL_E(base), __SYSCALL_LL_E(len));
|
||||
}
|
||||
|
||||
LFS64(posix_fadvise);
|
|
@ -4,8 +4,16 @@
|
|||
|
||||
int posix_fadvise(int fd, off_t base, off_t len, int advice)
|
||||
{
|
||||
#if defined(SYSCALL_FADVISE_6_ARG)
|
||||
/* Some archs, at least arm and powerpc, have the syscall
|
||||
* arguments reordered to avoid needing 7 argument registers
|
||||
* due to 64-bit argument alignment. */
|
||||
return -__syscall(SYS_fadvise, fd, advice,
|
||||
__SYSCALL_LL_E(base), __SYSCALL_LL_E(len));
|
||||
#else
|
||||
return -__syscall(SYS_fadvise, fd, __SYSCALL_LL_O(base),
|
||||
__SYSCALL_LL_E(len), advice);
|
||||
#endif
|
||||
}
|
||||
|
||||
LFS64(posix_fadvise);
|
||||
|
|
Loading…
Reference in New Issue