fix 64-bit syscall argument passing on or1k
authorRich Felker <dalias@aerifal.cx>
Wed, 5 Nov 2014 05:38:40 +0000 (00:38 -0500)
committerRich Felker <dalias@aerifal.cx>
Wed, 5 Nov 2014 05:38:40 +0000 (00:38 -0500)
the kernel syscall interface for or1k does not expect 64-bit arguments
to be aligned to "even" register boundaries. this incorrect alignment
broke truncate/ftruncate and as well as a few less-common syscalls.

arch/or1k/syscall_arch.h

index 9d90b11..fe66455 100644 (file)
@@ -1,7 +1,7 @@
 #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_O(x) __SYSCALL_LL_E((x))
 
 #define SYSCALL_MMAP2_UNIT 8192ULL