summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/sysdeps/linux/x86_64/__syscall_error.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libc/sysdeps/linux/x86_64/__syscall_error.c b/libc/sysdeps/linux/x86_64/__syscall_error.c
index ff2d9f64c..448f50983 100644
--- a/libc/sysdeps/linux/x86_64/__syscall_error.c
+++ b/libc/sysdeps/linux/x86_64/__syscall_error.c
@@ -13,7 +13,9 @@
int __syscall_error(void) attribute_hidden;
int __syscall_error(void)
{
- register int err_no asm("%rax");
- __set_errno(-err_no);
+ register int err_no __asm__ ("%rcx");
+ __asm__ ("mov %rax, %rcx\n\t"
+ "neg %rcx");
+ __set_errno(err_no);
return -1;
}