From 8a9687c007b0cc2ee6db52d0b82d63665b0976af Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sat, 20 Sep 2025 20:22:53 +0200 Subject: [PATCH] ulib Make syscall() safe (add "cc" to clobbers) --- ulib/syscall/syscall.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/ulib/syscall/syscall.c b/ulib/syscall/syscall.c index 8ba91b2..c03a979 100644 --- a/ulib/syscall/syscall.c +++ b/ulib/syscall/syscall.c @@ -2,26 +2,16 @@ uint64_t syscall(uint64_t num, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6) { - uint64_t ret = 0; - asm volatile ( - "mov %[SYSNUM], %%rax\n" - "mov %[ARG1], %%rdi\n" - "mov %[ARG2], %%rsi\n" - "mov %[ARG3], %%rdx\n" - "mov %[ARG4], %%r10\n" - "mov %[ARG5], %%r8\n" - "mov %[ARG6], %%r9\n" + uint64_t ret; + asm volatile( + "mov %[a4], %%r10\n" + "mov %[a5], %%r8\n" + "mov %[a6], %%r9\n" "int $0x80\n" - "mov %%rax, %[RESULT]\n" - : [RESULT]"=r"(ret) - : [SYSNUM]"r"(num), - [ARG1]"r"(arg1), - [ARG2]"r"(arg2), - [ARG3]"r"(arg3), - [ARG4]"r"(arg4), - [ARG5]"r"(arg5), - [ARG6]"r"(arg6) - : "rax", "rdi", "rsi", "rdx", "r10", "r8", "r9", "memory" + : "=a"(ret) + : "a"(num), "D"(arg1), "S"(arg2), "d"(arg3), + [a4]"r"(arg4), [a5]"r"(arg5), [a6]"r"(arg6) + : "r10", "r8", "r9", "memory", "cc" ); return ret; }