aboutsummaryrefslogtreecommitdiff
path: root/src/core/syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/syscall.c')
-rw-r--r--src/core/syscall.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/core/syscall.c b/src/core/syscall.c
new file mode 100644
index 0000000..300b7aa
--- /dev/null
+++ b/src/core/syscall.c
@@ -0,0 +1,19 @@
+#include "syscall.h"
+#include "gdt.h"
+#include "libc/stdio.h"
+
+void syscall(){
+ int call_number;
+ asm("movl %%eax, %0":"=m"(call_number));
+ if(call_number==1){
+ int msg_addr;
+ asm("movl %%ebx, %0":"=m"(msg_addr));
+ char *msg=(char*)msg_addr;
+ print(msg);
+ }
+ else{
+ print("Syscall ");
+ printi(call_number);
+ print(" unknown");
+ }
+} \ No newline at end of file