From e5b086e1d5fe52bf1553357ee790de86eda27bf1 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Tue, 11 Aug 2015 20:55:18 +0000 Subject: [PATCH] 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. --- arch/aarch64/syscall_arch.h | 6 ++---- 1 file 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" \ -- 2.25.1