Browse Source

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.
Szabolcs Nagy 9 years ago
parent
commit
e5b086e1d5
1 changed files with 2 additions and 4 deletions
  1. 2 4
      arch/aarch64/syscall_arch.h

+ 2 - 4
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" \