diff options
Diffstat (limited to 'asm')
| -rw-r--r-- | asm/int_syscall_handler.asm | 41 |
1 files changed, 41 insertions, 0 deletions
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 |
