aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-04-10 17:24:33 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-04-10 17:24:33 +0200
commit3212145e94e0c68a5da96306545c116292dfbe85 (patch)
tree347c59149e4bfa108ef53a7028d7faa5ade587e7 /src
parent242fe4a5752bf66ae4c00438f5e9ce66b0774c38 (diff)
Add syscall sources
Diffstat (limited to 'src')
-rw-r--r--src/utils/syscall.c20
-rw-r--r--src/utils/syscall.h6
2 files changed, 26 insertions, 0 deletions
diff --git a/src/utils/syscall.c b/src/utils/syscall.c
new file mode 100644
index 0000000..f3b14c4
--- /dev/null
+++ b/src/utils/syscall.c
@@ -0,0 +1,20 @@
+#include "syscall.h"
+#include "gdt.h"
+#include "libc/stdio.h"
+
+void syscall(){
+ int call_number;
+ asm("movl %%eax, %0":"=m"(call_number));
+ int user_ds=gdt_user_ds_base();
+ if(call_number==1){
+ int msg_addr;
+ asm("movl %%ebx, %0":"=m"(msg_addr));
+ char *msg=(char*)user_ds+msg_addr;
+ print(msg);
+ }
+ else{
+ print("Syscall ");
+ printi(call_number);
+ print(" unknown");
+ }
+} \ No newline at end of file
diff --git a/src/utils/syscall.h b/src/utils/syscall.h
new file mode 100644
index 0000000..26f3682
--- /dev/null
+++ b/src/utils/syscall.h
@@ -0,0 +1,6 @@
+#ifndef SYSCALL_H
+#define SYSCALL_H
+
+void syscall();
+
+#endif \ No newline at end of file