diff options
| -rw-r--r-- | arch/arm/syscall_arch.h | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/arch/arm/syscall_arch.h b/arch/arm/syscall_arch.h index 845f2e4d..c1c94666 100644 --- a/arch/arm/syscall_arch.h +++ b/arch/arm/syscall_arch.h @@ -54,10 +54,23 @@ static inline long __syscall4(long n, long a, long b, long c, long 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); +	register long r7 __asm__("r7") = n; +	register long r0 __asm__("r0") = a; +	register long r1 __asm__("r1") = b; +	register long r2 __asm__("r2") = c; +	register long r3 __asm__("r3") = d; +	register long r4 __asm__("r4") = e; +	__asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));  }  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); +	register long r7 __asm__("r7") = n; +	register long r0 __asm__("r0") = a; +	register long r1 __asm__("r1") = b; +	register long r2 __asm__("r2") = c; +	register long r3 __asm__("r3") = d; +	register long r4 __asm__("r4") = e; +	register long r5 __asm__("r5") = f; +	__asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));  } | 
