Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/um/sys-i386/stub.S
10817 views
1
#include "as-layout.h"
2
3
.globl syscall_stub
4
.section .__syscall_stub, "ax"
5
6
.globl batch_syscall_stub
7
batch_syscall_stub:
8
/* load pointer to first operation */
9
mov $(STUB_DATA+8), %esp
10
11
again:
12
/* load length of additional data */
13
mov 0x0(%esp), %eax
14
15
/* if(length == 0) : end of list */
16
/* write possible 0 to header */
17
mov %eax, STUB_DATA+4
18
cmpl $0, %eax
19
jz done
20
21
/* save current pointer */
22
mov %esp, STUB_DATA+4
23
24
/* skip additional data */
25
add %eax, %esp
26
27
/* load syscall-# */
28
pop %eax
29
30
/* load syscall params */
31
pop %ebx
32
pop %ecx
33
pop %edx
34
pop %esi
35
pop %edi
36
pop %ebp
37
38
/* execute syscall */
39
int $0x80
40
41
/* check return value */
42
pop %ebx
43
cmp %ebx, %eax
44
je again
45
46
done:
47
/* save return value */
48
mov %eax, STUB_DATA
49
50
/* stop */
51
int3
52
53