From 3983a157056f10651f120cf39c5d3637aa956903 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Fri, 17 Oct 2014 01:00:27 +0200 Subject: added simple syscall interface --- asm/int_syscall_handler.asm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 asm/int_syscall_handler.asm (limited to 'asm') diff --git a/asm/int_syscall_handler.asm b/asm/int_syscall_handler.asm new file mode 100644 index 0000000..e607ff5 --- /dev/null +++ b/asm/int_syscall_handler.asm @@ -0,0 +1,41 @@ +global int_syscall_handler + +[extern example_syscall] +[extern example_syscall_2] + +[bits 32] +int_syscall_handler: + + cli + + push ebx + push ecx + push edx + + cmp eax, 10 + je call_example_syscall + + cmp eax, 20 + je call_example_syscall_2 + +done: + + pop ebx + pop ecx + pop edx + + mov ebx,eax + + mov al, 0x20 ;Port number AND command number to Acknowledge IRQ + out 0x20, al ;Acknowledge IRQ, so we keep getting interrupts + + sti + iret ;Interrupt-Return + +call_example_syscall: + call example_syscall + jmp done + +call_example_syscall_2 + call example_syscall_2 + jmp done -- cgit v1.2.3