summaryrefslogtreecommitdiff
path: root/stdlib/syscall.asm
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/syscall.asm')
-rw-r--r--stdlib/syscall.asm35
1 files changed, 35 insertions, 0 deletions
diff --git a/stdlib/syscall.asm b/stdlib/syscall.asm
new file mode 100644
index 0000000..eba7ec0
--- /dev/null
+++ b/stdlib/syscall.asm
@@ -0,0 +1,35 @@
+bits 64
+
+global encode_color
+global get_framebuffer
+global draw_framebuffer
+
+section .text
+
+encode_color:
+ mov rax, 0
+ syscall
+ ret
+
+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
+ shr rdi, 32
+ pop rcx
+ mov dword [rcx], edi
+ pop rcx
+ mov dword [rcx], esi
+ ret
+
+draw_framebuffer:
+ mov rax, 2
+ syscall
+ ret