From 0d2ddecc9aeb232746b76b4eebdb1381053a8951 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Mon, 27 Jan 2025 02:05:07 +0000 Subject: checkpoint. we can fake syscall with the dummy gdt --- service/lib/posix.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 service/lib/posix.c (limited to 'service/lib/posix.c') diff --git a/service/lib/posix.c b/service/lib/posix.c new file mode 100644 index 0000000..a912977 --- /dev/null +++ b/service/lib/posix.c @@ -0,0 +1,19 @@ +#include + +ssize_t write(int fd, const void *buffer, size_t length) +{ + ssize_t result; + + __asm__ ( + "movq %0, %%rdi\n" + "movq %1, %%rsi\n" + "movq %2, %%rdx\n" + "movq $1, %%rax\n" + "syscall" + : "=a"(result) + : "g"(fd), "g"(buffer), "g"(length) + : "rdi", "rsi","rdx"); + + return result; +} + -- cgit v1.3.1-1-g115d