summaryrefslogtreecommitdiff
path: root/asm/syscallasm.s
blob: 8860d896420abc81db29f0d2ac1f1aa44bb4af71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.global syscall

// call from c with 4 x 32bit params
// syscall number, p1,p2,p3,p4

// TODO: push stack frame?

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