diff options
author | Szabolcs Nagy <nsz@port70.net> | 2015-08-11 20:55:18 +0000 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2015-08-11 23:11:57 +0000 |
commit | e5b086e1d5fe52bf1553357ee790de86eda27bf1 (patch) | |
tree | 576741cbba2d1b0542af2f20012ec490f76a32f0 | |
parent | 062bb737de06c3906b4b4a07c7fc0fb286287efe (diff) | |
download | musl-e5b086e1d5fe52bf1553357ee790de86eda27bf1.tar.gz musl-e5b086e1d5fe52bf1553357ee790de86eda27bf1.tar.bz2 musl-e5b086e1d5fe52bf1553357ee790de86eda27bf1.tar.xz musl-e5b086e1d5fe52bf1553357ee790de86eda27bf1.zip |
aarch64: fix 64-bit syscall argument passing
On 32bit systems long long arguments are passed in a special way
to some syscalls; this accidentally got copied to the AArch64 port.
The following interfaces were broken: fallocate, fanotify, ftruncate,
posix_fadvise, posix_fallocate, pread, pwrite, readahead,
sync_file_range, truncate.
-rw-r--r-- | arch/aarch64/syscall_arch.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/aarch64/syscall_arch.h b/arch/aarch64/syscall_arch.h index a92bff97..25f5ce67 100644 --- a/arch/aarch64/syscall_arch.h +++ b/arch/aarch64/syscall_arch.h @@ -1,7 +1,5 @@ -#define __SYSCALL_LL_E(x) \ -((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ -((union { long long ll; long l[2]; }){ .ll = x }).l[1] -#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) #define __asm_syscall(...) do { \ __asm__ __volatile__ ( "svc 0" \ |