]> git.proxmox.com Git - mirror_qemu.git/blame - ia64-syscall.S
avoid rounding problems
[mirror_qemu.git] / ia64-syscall.S
CommitLineData
0d330196
FB
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
8ENTRY(__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
24END(__syscall_error)
25
26GLOBAL_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