Explorar el Código

fix riscv64 syscall asm constraint

having "+r"(a0) is redundant with "0"(a0) in syscalls with at least 1
arg, which is arguably a constraint violation (clang treats it as
such), and an invalid input with indeterminate value in the 0-arg
case. use the "=r"(a0) form instead.
Rich Felker hace 5 años
padre
commit
8eb49e0485
Se han modificado 1 ficheros con 1 adiciones y 1 borrados
  1. 1 1
      arch/riscv64/syscall_arch.h

+ 1 - 1
arch/riscv64/syscall_arch.h

@@ -3,7 +3,7 @@
 
 #define __asm_syscall(...) \
 	__asm__ __volatile__ ("ecall\n\t" \
-	: "+r"(a0) : __VA_ARGS__ : "memory"); \
+	: "=r"(a0) : __VA_ARGS__ : "memory"); \
 	return a0; \
 
 static inline long __syscall0(long n)