1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include "dietfeatures.h"
.text
.globl syscall
#ifdef __arm__
.type syscall,function
#else
.type syscall,@function
#endif
syscall:
#ifdef __i386__
movl %esp, %eax
pushl %edi
pushl %esi
pushl %ebx
pushl %ebp
movl 0x08(%eax), %ebx
movl 0x0c(%eax), %ecx
movl 0x10(%eax), %edx
movl 0x14(%eax), %esi
movl 0x18(%eax), %edi
movl 0x1c(%eax), %ebp
movl 0x04(%eax), %eax
int $0x80
cmpl $-255, %eax
jbe .Lret
negl %eax
#ifdef WANT_THREADSAFE
movl %eax, %ebx
call __errno_location
movl %ebx, (%eax)
xorl %eax, %eax
decl %eax
#else
mov %eax, errno
sbb %eax, %eax
#endif
.Lret:
pop %ebp
pop %ebx
pop %esi
pop %edi
ret
#elif (defined(__hppa__))
copy %r26, %r20
copy %r25, %r26
copy %r24, %r25
copy %r23, %r24
ldw -0x34(%sr0, %sp), %r23
ldw -0x38(%sr0, %sp), %r22
be,l 0x100(%sr2, %r0), %sr0, %r31
ldw -0x3c(%sr0, %sp), %r21
ldi -0x100, %r1
cmpb,<<=,n %r1, %ret0, __error_unified_syscall
.Lret:
bv,n %r0(%rp)
#elif (defined(__ia64__))
mov r15=r32
mov r32=r33
mov r33=r34
mov r34=r35
mov r35=r36
mov r36=r37
break.i 0x100000
cmp.eq p6,p0=-1,r10
(p6) br __error_unified_syscall
br.ret.sptk.few rp
#endif
.size syscall, . - syscall
|