diff --git a/kernel/src/system_calls.cpp b/kernel/src/system_calls.cpp index 5807ffdd..69c6e750 100644 --- a/kernel/src/system_calls.cpp +++ b/kernel/src/system_calls.cpp @@ -8,8 +8,26 @@ #include "system_calls.hpp" #include "console.hpp" +namespace { + +void sc_print_char(const interrupt::syscall_regs& regs){ + k_print(static_cast(regs.rbx)); +} + +} //End of anonymous namespace + void system_call_entry(const interrupt::syscall_regs& regs){ - k_print_line("system_call"); + auto code = regs.rax; + + switch(code){ + case 0: + sc_print_char(regs); + break; + + default: + k_print_line("Invalid system call"); + break; + } } void install_system_calls(){ diff --git a/programs/one/src/main.cpp b/programs/one/src/main.cpp index fd333bac..b909ad50 100644 --- a/programs/one/src/main.cpp +++ b/programs/one/src/main.cpp @@ -6,7 +6,7 @@ //======================================================================= int main(){ - asm volatile("int 50"); + asm volatile("mov rax, 0; mov rbx, 0x41; int 50" : : : "rax", "rbx"); return 1; } \ No newline at end of file