From 0b6eb2dfb2e84a8a51906e7634f3d5edc230b058 Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Wed, 21 Sep 2011 20:11:10 -0400
Subject: update syscalls with off_t arguments to handle argument alignment, if
 needed

the arm syscall abi requires 64-bit arguments to be aligned on an even
register boundary. these new macros facilitate meeting the abi
requirement without imposing significant ugliness on the code.
---
 arch/arm/bits/syscall.h    | 3 ++-
 arch/i386/bits/syscall.h   | 3 ++-
 arch/x86_64/bits/syscall.h | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

(limited to 'arch')

diff --git a/arch/arm/bits/syscall.h b/arch/arm/bits/syscall.h
index 380ac3ca..b0379e02 100644
--- a/arch/arm/bits/syscall.h
+++ b/arch/arm/bits/syscall.h
@@ -1,6 +1,7 @@
-#define __SYSCALL_LL(x) \
+#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))
 
 long (__syscall)(long, ...);
 
diff --git a/arch/i386/bits/syscall.h b/arch/i386/bits/syscall.h
index 88cd0d7d..8d673186 100644
--- a/arch/i386/bits/syscall.h
+++ b/arch/i386/bits/syscall.h
@@ -1,6 +1,7 @@
-#define __SYSCALL_LL(x) \
+#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) __SYSCALL_LL_E((x))
 
 static inline long __syscall0(long __n)
 {
diff --git a/arch/x86_64/bits/syscall.h b/arch/x86_64/bits/syscall.h
index 2339d2e5..5eeb8a69 100644
--- a/arch/x86_64/bits/syscall.h
+++ b/arch/x86_64/bits/syscall.h
@@ -1,4 +1,5 @@
-#define __SYSCALL_LL(x) (x)
+#define __SYSCALL_LL_E(x) (x)
+#define __SYSCALL_LL_O(x) (x)
 
 static inline long __syscall0(long __n)
 {
-- 
cgit v1.2.3-70-g09d2