This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
hilbert-os/libraries/euler/syscall.asm
2024-01-27 23:14:29 -05:00

88 lines
1.2 KiB
NASM

bits 64
section .text
global _syscall_encode_color
_syscall_encode_color:
xor rax, rax
and edi, 0xff
and dx, 0xff
shl si, 8
shl edx, 16
or di, si
or edi, edx
syscall
ret
global _syscall_get_framebuffer
_syscall_get_framebuffer:
push rcx
push rdx
push rsi
push rdi
mov rax, 1
syscall
pop rcx
mov qword [rcx], rax
pop rcx
mov dword [rcx], edi
pop rcx
shr rdi, 32
mov dword [rcx], edi
pop rcx
mov dword [rcx], esi
ret
global _syscall_open_file
_syscall_open_file:
mov rax, 2
push rdx
syscall
pop rdx
mov qword [rdx], rdi
ret
global _syscall_get_file_length
_syscall_get_file_length:
mov rax, 3
push rsi
syscall
pop rsi
mov qword [rsi], rdi
ret
global _syscall_read_from_file
_syscall_read_from_file:
mov rax, 4
push rcx
push rdx
push rsi
push rdi
mov rdi, rsp
syscall
add rsp, 32
ret
global _syscall_end_this_process
_syscall_end_this_process:
mov rax, 5
syscall
;does not return
global _syscall_get_new_pages
_syscall_get_new_pages:
mov rax, 6
syscall
ret
global _syscall_close_file
_syscall_close_file:
mov rax, 7
syscall
ret
global _syscall_read_key_packet
_syscall_read_key_packet:
mov rax, 8
syscall
ret