blob: f3b14c4dc9842fbaa8aacc3496a956f92d70c46e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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");
}
}
|