diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-09-08 22:43:14 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-09-08 22:43:14 -0400 |
commit | 208eb584efbf995e0c5d92f76d5f4c08ae0054b4 (patch) | |
tree | 1d2613b937b371ca2fb3a1d550758ac298a4ebb7 /arch/arm/syscall_arch.h | |
parent | fe0260400eebb613338a720c9568c10ab4f17225 (diff) | |
download | musl-208eb584efbf995e0c5d92f76d5f4c08ae0054b4.tar.gz musl-208eb584efbf995e0c5d92f76d5f4c08ae0054b4.tar.bz2 musl-208eb584efbf995e0c5d92f76d5f4c08ae0054b4.tar.xz musl-208eb584efbf995e0c5d92f76d5f4c08ae0054b4.zip |
syscall organization overhaul
now public syscall.h only exposes __NR_* and SYS_* constants and the
variadic syscall function. no macros or inline functions, no
__syscall_ret or other internal details, no 16-/32-bit legacy syscall
renaming, etc. this logic has all been moved to src/internal/syscall.h
with the arch-specific parts in arch/$(ARCH)/syscall_arch.h, and the
amount of arch-specific stuff has been reduced to a minimum.
changes still need to be reviewed/double-checked. minimal testing on
i386 and mips has already been performed.
Diffstat (limited to 'arch/arm/syscall_arch.h')
-rw-r--r-- | arch/arm/syscall_arch.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/arch/arm/syscall_arch.h b/arch/arm/syscall_arch.h new file mode 100644 index 00000000..48b0e36b --- /dev/null +++ b/arch/arm/syscall_arch.h @@ -0,0 +1,41 @@ +#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_SSLEN 8 + +static inline long __syscall0(long n) +{ + return (__syscall)(n); +} + +static inline long __syscall1(long n, long a) +{ + return (__syscall)(n, a); +} + +static inline long __syscall2(long n, long a, long b) +{ + return (__syscall)(n, a, b); +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + return (__syscall)(n, a, b, c); +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + return (__syscall)(n, a, b, c, d); +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + return (__syscall)(n, a, b, c, d, e); +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + return (__syscall)(n, a, b, c, d, e, f); +} |