loongarch64:add $a7 to assembler constraints
Change-Id: I6252916f52ecb061b8b5ea80e602c25bac505132
Reviewed-on: https://chromium-review.googlesource.com/c/linux-syscall-support/+/3945798
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/linux_syscall_support.h b/linux_syscall_support.h
index 6dc5888..aab95e6 100644
--- a/linux_syscall_support.h
+++ b/linux_syscall_support.h
@@ -3949,11 +3949,11 @@
#undef LSS_BODY
#define LSS_BODY(type,name,args...) \
register int64_t __res_a0 __asm__("a0"); \
+ register int64_t __a7 __asm__("a7") = __NR_##name; \
int64_t __res; \
- __asm__ __volatile__ ("li.d $a7, %1\n" \
- "syscall 0x0\n" \
+ __asm__ __volatile__ ("syscall 0x0\n" \
: "=r"(__res_a0) \
- : "i"(__NR_##name) , ## args \
+ : "r"(__a7), ## args \
: LSS_SYSCALL_CLOBBERS); \
__res = __res_a0; \
LSS_RETURN(type, __res)
@@ -4055,7 +4055,7 @@
: "r"(fn), "r"(__stack), "r"(__flags), "r"(arg),
"r"(__ptid), "r"(__tls), "r"(__ctid),
"i"(__NR_clone), "i"(__NR_exit)
- : LSS_SYSCALL_CLOBBERS);
+ : "a7", LSS_SYSCALL_CLOBBERS);
__res = __res_a0;
}
LSS_RETURN(int, __res);