summaryrefslogtreecommitdiff
path: root/interface/syscall.s
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-13 14:40:09 +0200
committerMiguel <m.i@gmx.at>2018-09-13 14:40:09 +0200
commit3bba2df34be1680777ff85ad4fbc43717609ec75 (patch)
tree983e3c2b5667e3aa150502f59453ecebeeeba63a /interface/syscall.s
parentf844fafd324fbf4c7a986df2f0814f2e2d93bcd8 (diff)
thinking about syscalls and newlib ...
Diffstat (limited to 'interface/syscall.s')
-rw-r--r--interface/syscall.s16
1 files changed, 16 insertions, 0 deletions
diff --git a/interface/syscall.s b/interface/syscall.s
new file mode 100644
index 0000000..abce63a
--- /dev/null
+++ b/interface/syscall.s
@@ -0,0 +1,16 @@
+.global syscall
+
+syscall:
+
+ push %ebx // preserve (sysV abi convnetion)
+
+ mov 0x8(%esp),%eax //syscall number
+ mov 0xC(%esp),%edx //p1
+ mov 0x10(%esp),%ecx //p2
+ mov 0x14(%esp),%ebx //p3
+
+ int $0x80
+ mov %ebx, %eax // set as return value
+
+ pop %ebx // preserve
+ ret