summaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-10-23 08:41:34 +0200
committerMichal Idziorek <m.i@gmx.at>2014-10-23 08:41:34 +0200
commit463736887fbb6439fe5e676f6fd7990adc6bb727 (patch)
tree00dcb1fb5d426d13ef854820a8672470e49530a7 /asm
parentfde24d20cd6a7d5fd1f1df71515e377586b91e24 (diff)
added execve syscall
Diffstat (limited to 'asm')
-rw-r--r--asm/int_syscall_handler.asm30
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!?
+