diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-10-23 08:41:34 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-10-23 08:41:34 +0200 |
| commit | 463736887fbb6439fe5e676f6fd7990adc6bb727 (patch) | |
| tree | 00dcb1fb5d426d13ef854820a8672470e49530a7 /asm | |
| parent | fde24d20cd6a7d5fd1f1df71515e377586b91e24 (diff) | |
added execve syscall
Diffstat (limited to 'asm')
| -rw-r--r-- | asm/int_syscall_handler.asm | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/asm/int_syscall_handler.asm b/asm/int_syscall_handler.asm index c36b9b5..25de51a 100644 --- a/asm/int_syscall_handler.asm +++ b/asm/int_syscall_handler.asm @@ -1,11 +1,9 @@ global int_syscall_handler -[extern example_syscall] -[extern example_syscall_2] - [extern syscall_write] [extern syscall_read] [extern syscall_readdir] +[extern syscall_execve] [bits 32] int_syscall_handler: @@ -16,12 +14,6 @@ int_syscall_handler: push ecx push edx - cmp eax, 10 - je call_example_syscall - - cmp eax, 20 - je call_example_syscall_2 - cmp eax, 61 je call_write @@ -31,6 +23,9 @@ int_syscall_handler: cmp eax, 63 je call_readdir + cmp eax, 64 + je call_execve + done: mov ebx,eax @@ -54,15 +49,6 @@ done_blocking: iret ;Interrupt-Return - -call_example_syscall: - call example_syscall - jmp done - -call_example_syscall_2: - call example_syscall_2 - jmp done - call_write: call syscall_write jmp done @@ -72,7 +58,6 @@ call_readdir: jmp done call_read: - mov al, 0x20 ;Port number AND command number to Acknowledge IRQ out 0x20, al ;Acknowledge IRQ, so we keep getting interrupts sti @@ -81,3 +66,10 @@ call_read: jmp done_blocking +call_execve: + mov al, 0x20 ;Port number AND command number to Acknowledge IRQ + out 0x20, al ;Acknowledge IRQ, so we keep getting interrupts + sti + call syscall_execve + jmp $ ; this should never return TODO: pop stack!? + |
