0.6.2-alt1.1
[qemu] / qemu-snapshot-2004-11-28_23 / ia64-syscall.S
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