From: Szabolcs Nagy Date: Tue, 11 Aug 2015 20:55:18 +0000 (+0000) Subject: aarch64: fix 64-bit syscall argument passing X-Git-Tag: v1.1.11~6 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e5b086e1d5fe52bf1553357ee790de86eda27bf1;p=oweals%2Fmusl.git 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. --- 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" \