root / ia64-syscall.S @ 05efe46e
History | View | Annotate | Download (884 Bytes)
1 |
/* derived from glibc sysdeps/unix/sysv/linux/ia64/sysdep.S */ |
---|---|
2 |
|
3 |
#define __ASSEMBLY__ |
4 |
|
5 |
#include <asm/asmmacro.h> |
6 |
#include <asm/unistd.h> |
7 |
|
8 |
ENTRY(__syscall_error) |
9 |
.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(0) |
10 |
alloc r33=ar.pfs, 0, 4, 0, 0 |
11 |
mov r32=rp |
12 |
.body |
13 |
mov r35=r8 |
14 |
mov r34=r1 |
15 |
;; |
16 |
br.call.sptk.many b0 = __errno_location |
17 |
.Lret0: /* force new bundle */ |
18 |
st4 [r8]=r35 |
19 |
mov r1=r34 |
20 |
mov rp=r32 |
21 |
mov r8=-1 |
22 |
mov ar.pfs=r33 |
23 |
br.ret.sptk.few b0 |
24 |
END(__syscall_error) |
25 |
|
26 |
GLOBAL_ENTRY(__ia64_syscall) |
27 |
mov r15=r37 /* syscall number */ |
28 |
break __BREAK_SYSCALL |
29 |
cmp.eq p6,p0=-1,r10 /* r10 = -1 on error */ |
30 |
(p6) br.cond.spnt.few __syscall_error |
31 |
br.ret.sptk.few b0 |
32 |
.endp __ia64_syscall |