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
|
#include <dietfeatures.h>
.global __unified_syscall
__unified_syscall:
callsys
bne $19, .Lerror
ret $31, ($26), 0x01
.Lerror:
.global error_unified_syscall
error_unified_syscall:
#ifdef WANT_THREAD_SAVE
lda $sp, -16($sp) /* alloc 2 qwords on stack */
stq $26, 0($sp) /* save ra to stack */
stq $0, 8($sp) /* save v0 to stack */
jsr $26, __errno_location /* call __errno_location */
ldq $1, 8($sp) /* write old v0 to errno */
stl $1, 0($0)
lda $0, -1($31) /* new return value is -1 */
ldq $26, 0($sp) /* restore return address */
lda $sp, 16($sp) /* free 2 qwords on stack */
#else
lda $1, errno
stl $0, 0($1)
#endif
ret $31, ($26), 0x01 /* return */
|