From c16c82b15f9db5d1cc893a10875f37663bcc8462 Mon Sep 17 00:00:00 2001 From: root <> Date: Wed, 21 May 2025 09:07:31 +0000 Subject: [PATCH] server.s: use r15 not r10 for persisting thru syscalls --- server.s | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/server.s b/server.s index baea35b..fc2d1c7 100644 --- a/server.s +++ b/server.s @@ -9,53 +9,61 @@ make_server: mov rsi, SOCK_STREAM mov rdx, 0 syscall - push rax + push r15 + mov r15, rax + + mov rdi, r15 call nonblocking + + mov rdi, r15 call make_sockaddr - pop r10 mov rax, SYS_BIND - mov rdi, r10 + mov rdi, r15 mov rsi, sockaddr mov rdx, sockaddr_size syscall mov rax, SYS_LISTEN - mov rdi, r10 + mov rdi, r15 mov rsi, 100 syscall - mov rax, r10 + mov rax, r15 + pop r15 ret +; rdi - fd nonblocking: - mov r10, rax + push r15 + mov r15, rdi mov rax, SYS_FCNTL - mov rdi, r10 + mov rdi, r15 mov rsi, F_GETFL syscall - mov r11, rax - xor r11, O_NONBLOCK + mov r10, rax + or r10, O_NONBLOCK mov rax, SYS_FCNTL - mov rdi, r10 + mov rdi, r15 mov rsi, F_SETFL - mov rdx, r11 + mov rdx, r10 syscall + pop r15 ret make_sockaddr: mov word [sockaddr], AF_UNIX - mov rax, 0 + mov r10, 0 make_sockaddr__copy_server_path: - cmp rax, server_path_len + cmp r10, server_path_len jge return - mov r10, [server_path + rax] - mov [sockaddr + rax + 2], r10 - add rax, 8 + mov r8b, [server_path + r10] + mov [sockaddr + 2 + r10], r8b + add r10, 1 jmp make_sockaddr__copy_server_path