From 0d3301964df6d36c72dfa95ba5ae5e3b789cd1f8 Mon Sep 17 00:00:00 2001 From: bellard Date: Tue, 29 Apr 2003 21:10:09 +0000 Subject: ia64 support git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@115 c046a42c-6fe2-441c-8c8c-71466251a162 --- ia64-syscall.S | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 ia64-syscall.S (limited to 'ia64-syscall.S') diff --git a/ia64-syscall.S b/ia64-syscall.S new file mode 100644 index 0000000000..ab073f22b9 --- /dev/null +++ b/ia64-syscall.S @@ -0,0 +1,32 @@ +/* derived from glibc sysdeps/unix/sysv/linux/ia64/sysdep.S */ + +#define __ASSEMBLY__ + +#include +#include + +ENTRY(__syscall_error) + .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(0) + alloc r33=ar.pfs, 0, 4, 0, 0 + mov r32=rp + .body + mov r35=r8 + mov r34=r1 + ;; + br.call.sptk.many b0 = __errno_location +.Lret0: /* force new bundle */ + st4 [r8]=r35 + mov r1=r34 + mov rp=r32 + mov r8=-1 + mov ar.pfs=r33 + br.ret.sptk.few b0 +END(__syscall_error) + +GLOBAL_ENTRY(__ia64_syscall) + mov r15=r37 /* syscall number */ + break __BREAK_SYSCALL + cmp.eq p6,p0=-1,r10 /* r10 = -1 on error */ +(p6) br.cond.spnt.few __syscall_error + br.ret.sptk.few b0 +.endp __ia64_syscall -- cgit v1.2.1