Initial libc port for ia64.
This commit is contained in:
parent
2cd0661ce2
commit
7c5dc96d3c
9
lib/libc/ia64/Makefile.inc
Normal file
9
lib/libc/ia64/Makefile.inc
Normal file
@ -0,0 +1,9 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Machine dependent definitions for the alpha architecture.
|
||||
#
|
||||
|
||||
#
|
||||
# Alpha is 64-bit, so it doesn't need quad functions:
|
||||
#
|
||||
NO_QUAD=1
|
124
lib/libc/ia64/SYS.h
Normal file
124
lib/libc/ia64/SYS.h
Normal file
@ -0,0 +1,124 @@
|
||||
/* $FreeBSD$ */
|
||||
/* From: NetBSD: SYS.h,v 1.5 1997/05/02 18:15:15 kleink Exp */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#define CALLSYS_ERROR(name) \
|
||||
CALLSYS_NOERROR(name); \
|
||||
cmp.ne p6,p0=r0,r10; \
|
||||
(p6) br.cond.sptk.few .cerror
|
||||
|
||||
|
||||
#define SYSCALL(name) \
|
||||
ENTRY(_ ## name,0); /* XXX # of args? */ \
|
||||
WEAK_ALIAS(name, _ ## name); \
|
||||
CALLSYS_ERROR(name)
|
||||
|
||||
#define SYSCALL_NOERROR(name) \
|
||||
ENTRY(name,0); /* XXX # of args? */ \
|
||||
CALLSYS_NOERROR(name)
|
||||
|
||||
|
||||
#define RSYSCALL(name) \
|
||||
SYSCALL(name); \
|
||||
br.ret.sptk.few rp; \
|
||||
END(_ ## name)
|
||||
|
||||
#define RSYSCALL_NOERROR(name) \
|
||||
SYSCALL_NOERROR(name); \
|
||||
br.ret.sptk.few rp; \
|
||||
END(name)
|
||||
|
||||
|
||||
#define PSEUDO(label,name) \
|
||||
ENTRY(_ ## label,0); /* XXX # of args? */ \
|
||||
WEAK_ALIAS(label, _ ## label); \
|
||||
CALLSYS_ERROR(name); \
|
||||
br.ret.sptk.few rp; \
|
||||
END(_ ## label);
|
||||
|
||||
#define PSEUDO_NOERROR(label,name) \
|
||||
ENTRY(label,0); /* XXX # of args? */ \
|
||||
CALLSYS_NOERROR(name); \
|
||||
br.ret.sptk.few rp; \
|
||||
END(label);
|
||||
|
||||
/*
|
||||
* Design note:
|
||||
*
|
||||
* The macros PSYSCALL() and PRSYSCALL() are intended for use where a
|
||||
* syscall needs to be renamed in the threaded library. When building
|
||||
* a normal library, they default to the traditional SYSCALL() and
|
||||
* RSYSCALL(). This avoids the need to #ifdef _THREAD_SAFE everywhere
|
||||
* that the renamed function needs to be called.
|
||||
*/
|
||||
#ifdef _THREAD_SAFE
|
||||
/*
|
||||
* For the thread_safe versions, we prepend _thread_sys_ to the function
|
||||
* name so that the 'C' wrapper can go around the real name.
|
||||
*/
|
||||
#define PCALL(name) \
|
||||
CALL(_thread_sys_ ## name)
|
||||
|
||||
#define PENTRY(name, args) \
|
||||
ENTRY(_thread_sys_ ## name,args)
|
||||
|
||||
#define PEND(name) \
|
||||
END(_thread_sys_ ## name)
|
||||
|
||||
#define PSYSCALL(name) \
|
||||
PENTRY(name,0); /* XXX # of args? */ \
|
||||
CALLSYS_ERROR(name)
|
||||
|
||||
#define PRSYSCALL(name) \
|
||||
PENTRY(name,0); /* XXX # of args? */ \
|
||||
CALLSYS_ERROR(name) \
|
||||
br.ret.sptk.few rp; \
|
||||
PEND(name)
|
||||
|
||||
#define PPSEUDO(label,name) \
|
||||
PENTRY(label,0); /* XXX # of args? */ \
|
||||
CALLSYS_ERROR(name); \
|
||||
br.ret.sptk.few rp; \
|
||||
PEND(label)
|
||||
|
||||
#else
|
||||
/*
|
||||
* The non-threaded library defaults to traditional syscalls where
|
||||
* the function name matches the syscall name.
|
||||
*/
|
||||
#define PSYSCALL(x) SYSCALL(x)
|
||||
#define PRSYSCALL(x) RSYSCALL(x)
|
||||
#define PPSEUDO(x,y) PSEUDO(x,y)
|
||||
#define PENTRY(x,y) ENTRY(x,y)
|
||||
#define PEND(x) END(x)
|
||||
#define PCALL(x) CALL(x)
|
||||
#endif
|
6
lib/libc/ia64/gen/Makefile.inc
Normal file
6
lib/libc/ia64/gen/Makefile.inc
Normal file
@ -0,0 +1,6 @@
|
||||
# $FreeBSD$
|
||||
|
||||
SRCS+= _setjmp.S fabs.S frexp.c isinf.c ldexp.c modf.c setjmp.S
|
||||
SRCS+= sigsetjmp.S
|
||||
SRCS+= __divdi3.S __divsi3.S __moddi3.S __modsi3.S
|
||||
SRCS+= __udivdi3.S __udivsi3.S __umoddi3.S __umodsi3.S
|
141
lib/libc/ia64/gen/__divdi3.S
Normal file
141
lib/libc/ia64/gen/__divdi3.S
Normal file
@ -0,0 +1,141 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__divdi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
.proc __divdi3#
|
||||
.align 32
|
||||
.global __divdi3#
|
||||
.align 32
|
||||
|
||||
// 64-bit signed integer divide
|
||||
|
||||
__divdi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,2,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0;;
|
||||
} { .mmi
|
||||
|
||||
// 64-BIT SIGNED INTEGER DIVIDE BEGINS HERE
|
||||
|
||||
setf.sig f8=r32
|
||||
setf.sig f9=r33
|
||||
nop.i 0;;
|
||||
} { .mfb
|
||||
nop.m 0
|
||||
fcvt.xf f6=f8
|
||||
nop.b 0
|
||||
} { .mfb
|
||||
nop.m 0
|
||||
fcvt.xf f7=f9
|
||||
nop.b 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (1)
|
||||
// y0 = 1 / b in f8
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (2)
|
||||
// e0 = 1 - b * y0 in f9
|
||||
(p6) fnma.s1 f9=f7,f8,f1
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (3)
|
||||
// q0 = a * y0 in f10
|
||||
(p6) fma.s1 f10=f6,f8,f0
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (4)
|
||||
// e1 = e0 * e0 in f11
|
||||
(p6) fma.s1 f11=f9,f9,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (5)
|
||||
// q1 = q0 + e0 * q0 in f10
|
||||
(p6) fma.s1 f10=f9,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (6)
|
||||
// y1 = y0 + e0 * y0 in f8
|
||||
(p6) fma.s1 f8=f9,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (7)
|
||||
// q2 = q1 + e1 * q1 in f9
|
||||
(p6) fma.s1 f9=f11,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (8)
|
||||
// y2 = y1 + e1 * y1 in f8
|
||||
(p6) fma.s1 f8=f11,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (9)
|
||||
// r2 = a - b * q2 in f10
|
||||
(p6) fnma.s1 f10=f7,f9,f6
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (10)
|
||||
// q3 = q2 + r2 * y2 in f8
|
||||
(p6) fma.s1 f8=f10,f8,f9
|
||||
nop.i 0;;
|
||||
} { .mfb
|
||||
nop.m 0
|
||||
// Step (11)
|
||||
// q = trunc (q3)
|
||||
fcvt.fx.trunc.s1 f8=f8
|
||||
nop.b 0;;
|
||||
} { .mmi
|
||||
// quotient will be in r8 (if b != 0)
|
||||
getf.sig r8=f8
|
||||
nop.m 0
|
||||
nop.i 0;;
|
||||
}
|
||||
|
||||
// 64-BIT SIGNED INTEGER DIVIDE ENDS HERE
|
||||
|
||||
{ .mmb
|
||||
nop.m 0
|
||||
nop.m 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __divdi3
|
123
lib/libc/ia64/gen/__divsi3.S
Normal file
123
lib/libc/ia64/gen/__divsi3.S
Normal file
@ -0,0 +1,123 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__divsi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
|
||||
// 32-bit signed integer divide
|
||||
|
||||
.proc __divsi3#
|
||||
.align 32
|
||||
.global __divsi3#
|
||||
.align 32
|
||||
|
||||
__divsi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,2,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0;;
|
||||
} { .mii
|
||||
nop.m 0
|
||||
|
||||
// 32-BIT SIGNED INTEGER DIVIDE BEGINS HERE
|
||||
|
||||
// general register used:
|
||||
// r32 - 32-bit signed integer dividend
|
||||
// r33 - 32-bit signed integer divisor
|
||||
// r8 - 32-bit signed integer result
|
||||
// r2 - scratch register
|
||||
// floating-point registers used: f6, f7, f8, f9
|
||||
// predicate registers used: p6
|
||||
|
||||
sxt4 r32=r32
|
||||
sxt4 r33=r33;;
|
||||
} { .mmb
|
||||
setf.sig f6=r32
|
||||
setf.sig f7=r33
|
||||
nop.b 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xf f6=f6
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xf f7=f7
|
||||
mov r2 = 0x0ffdd;;
|
||||
} { .mfi
|
||||
setf.exp f9 = r2
|
||||
// (1) y0
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (2) q0 = a * y0
|
||||
(p6) fma.s1 f6=f6,f8,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (3) e0 = 1 - b * y0
|
||||
(p6) fnma.s1 f7=f7,f8,f1
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (4) q1 = q0 + e0 * q0
|
||||
(p6) fma.s1 f6=f7,f6,f6
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (5) e1 = e0 * e0 + 2^-34
|
||||
(p6) fma.s1 f7=f7,f7,f9
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (6) q2 = q1 + e1 * q1
|
||||
(p6) fma.s1 f8=f7,f6,f6
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (7) q = trunc(q2)
|
||||
fcvt.fx.trunc.s1 f8=f8
|
||||
nop.i 0;;
|
||||
} { .mmi
|
||||
// quotient will be in the least significant 32 bits of r8 (if b != 0)
|
||||
getf.sig r8=f8
|
||||
nop.m 0
|
||||
nop.i 0;;
|
||||
}
|
||||
|
||||
// 32-BIT SIGNED INTEGER DIVIDE ENDS HERE
|
||||
|
||||
{ .mmb
|
||||
nop.m 0
|
||||
nop.m 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __divsi3
|
158
lib/libc/ia64/gen/__moddi3.S
Normal file
158
lib/libc/ia64/gen/__moddi3.S
Normal file
@ -0,0 +1,158 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__moddi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
|
||||
// 64-bit signed integer remainder
|
||||
|
||||
.proc __moddi3#
|
||||
.align 32
|
||||
.global __moddi3#
|
||||
.align 32
|
||||
|
||||
__moddi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,3,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0
|
||||
} { .mmb
|
||||
|
||||
// 64-BIT SIGNED INTEGER REMAINDER BEGINS HERE
|
||||
|
||||
// general register used:
|
||||
// r32 - 64-bit signed integer dividend
|
||||
// r33 - 64-bit signed integer divisor
|
||||
// r8 - 64-bit signed integer result
|
||||
// r2 - scratch register
|
||||
// floating-point registers used: f6, f7, f8, f9, f10, f11, f12
|
||||
// predicate registers used: p6
|
||||
|
||||
setf.sig f12=r32 // holds a in integer form
|
||||
setf.sig f7=r33
|
||||
nop.b 0
|
||||
} { .mlx
|
||||
nop.m 0
|
||||
//movl r2=0x8000000000000000;;
|
||||
movl r2=0xffffffffffffffff;;
|
||||
} { .mfi
|
||||
// get the 2's complement of b
|
||||
sub r33=r0,r33
|
||||
fcvt.xf f6=f12
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xf f7=f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (1)
|
||||
// y0 = 1 / b in f8
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (2)
|
||||
// q0 = a * y0 in f10
|
||||
(p6) fma.s1 f10=f6,f8,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (3)
|
||||
// e0 = 1 - b * y0 in f9
|
||||
(p6) fnma.s1 f9=f7,f8,f1
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (4)
|
||||
// q1 = q0 + e0 * q0 in f10
|
||||
(p6) fma.s1 f10=f9,f10,f10
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (5)
|
||||
// e1 = e0 * e0 in f11
|
||||
(p6) fma.s1 f11=f9,f9,f0
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (6)
|
||||
// y1 = y0 + e0 * y0 in f8
|
||||
(p6) fma.s1 f8=f9,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (7)
|
||||
// q2 = q1 + e1 * q1 in f9
|
||||
(p6) fma.s1 f9=f11,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (8)
|
||||
// y2 = y1 + e1 * y1 in f8
|
||||
(p6) fma.s1 f8=f11,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (9)
|
||||
// r2 = a - b * q2 in f10
|
||||
(p6) fnma.s1 f10=f7,f9,f6
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
setf.sig f7=r33
|
||||
// Step (10)
|
||||
// q3 = q2 + r2 * y2 in f8
|
||||
(p6) fma.s1 f8=f10,f8,f9
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (11) q = trunc(q3)
|
||||
fcvt.fx.trunc.s1 f8=f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (12) r = a + (-b) * q
|
||||
xma.l f8=f8,f7,f12
|
||||
nop.i 0;;
|
||||
} { .mib
|
||||
getf.sig r8=f8
|
||||
nop.i 0
|
||||
nop.b 0
|
||||
}
|
||||
|
||||
// 64-BIT SIGNED INTEGER REMAINDER ENDS HERE
|
||||
|
||||
{ .mib
|
||||
nop.m 0
|
||||
nop.i 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __moddi3
|
130
lib/libc/ia64/gen/__modsi3.S
Normal file
130
lib/libc/ia64/gen/__modsi3.S
Normal file
@ -0,0 +1,130 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__modsi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
|
||||
// 32-bit signed integer remainder
|
||||
|
||||
.proc __modsi3#
|
||||
.align 32
|
||||
.global __modsi3#
|
||||
.align 32
|
||||
|
||||
__modsi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,2,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0;;
|
||||
} { .mii
|
||||
nop.m 0
|
||||
|
||||
// 32-BIT SIGNED INTEGER REMAINDER BEGINS HERE
|
||||
|
||||
// general register used:
|
||||
// r32 - 32-bit signed integer dividend
|
||||
// r33 - 32-bit signed integer divisor
|
||||
// r8 - 32-bit signed integer result
|
||||
// r2 - scratch register
|
||||
// floating-point registers used: f6, f7, f8, f9, f10, f11
|
||||
// predicate registers used: p6
|
||||
|
||||
sxt4 r32=r32
|
||||
sxt4 r33=r33;;
|
||||
} { .mmb
|
||||
setf.sig f11=r32
|
||||
setf.sig f7=r33
|
||||
nop.b 0;;
|
||||
} { .mfi
|
||||
// get 2's complement of b
|
||||
sub r33=r0,r33
|
||||
fcvt.xf f6=f11
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xf f7=f7
|
||||
mov r2 = 0x0ffdd;;
|
||||
} { .mfi
|
||||
setf.exp f9 = r2
|
||||
// (1) y0
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (2) q0 = a * y0
|
||||
(p6) fma.s1 f10=f6,f8,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (3) e0 = 1 - b * y0
|
||||
(p6) fnma.s1 f8=f7,f8,f1
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
// 2's complement of b
|
||||
setf.sig f7=r33
|
||||
// (4) q1 = q0 + e0 * q0
|
||||
(p6) fma.s1 f10=f8,f10,f10
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (5) e1 = e0 * e0 + 2^-34
|
||||
(p6) fma.s1 f8=f8,f8,f9
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (6) q2 = q1 + e1 * q1
|
||||
(p6) fma.s1 f8=f8,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (7) q = trunc(q2)
|
||||
fcvt.fx.trunc.s1 f8=f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (8) r = a + (-b) * q
|
||||
xma.l f8=f8,f7,f11
|
||||
nop.i 0;;
|
||||
} { .mmi
|
||||
// remainder will be in the least significant 32 bits of r8 (if b != 0)
|
||||
getf.sig r8=f8
|
||||
nop.m 0
|
||||
nop.i 0;;
|
||||
}
|
||||
|
||||
// 32-BIT SIGNED INTEGER REMAINDER ENDS HERE
|
||||
|
||||
{ .mmb
|
||||
nop.m 0
|
||||
nop.m 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __modsi3
|
142
lib/libc/ia64/gen/__udivdi3.S
Normal file
142
lib/libc/ia64/gen/__udivdi3.S
Normal file
@ -0,0 +1,142 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__udivdi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
.proc __udivdi3#
|
||||
.align 32
|
||||
.global __udivdi3#
|
||||
.align 32
|
||||
|
||||
// 64-bit unsigned integer divide
|
||||
|
||||
__udivdi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,2,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0;;
|
||||
}
|
||||
|
||||
{ .mmi
|
||||
|
||||
// 64-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
|
||||
|
||||
setf.sig f8=r32
|
||||
setf.sig f9=r33
|
||||
nop.i 0;;
|
||||
} { .mfb
|
||||
nop.m 0
|
||||
fma.s1 f6=f8,f1,f0
|
||||
nop.b 0
|
||||
} { .mfb
|
||||
nop.m 0
|
||||
fma.s1 f7=f9,f1,f0
|
||||
nop.b 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (1)
|
||||
// y0 = 1 / b in f8
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (2)
|
||||
// e0 = 1 - b * y0 in f9
|
||||
(p6) fnma.s1 f9=f7,f8,f1
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (3)
|
||||
// q0 = a * y0 in f10
|
||||
(p6) fma.s1 f10=f6,f8,f0
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (4)
|
||||
// e1 = e0 * e0 in f11
|
||||
(p6) fma.s1 f11=f9,f9,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (5)
|
||||
// q1 = q0 + e0 * q0 in f10
|
||||
(p6) fma.s1 f10=f9,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (6)
|
||||
// y1 = y0 + e0 * y0 in f8
|
||||
(p6) fma.s1 f8=f9,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (7)
|
||||
// q2 = q1 + e1 * q1 in f9
|
||||
(p6) fma.s1 f9=f11,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (8)
|
||||
// y2 = y1 + e1 * y1 in f8
|
||||
(p6) fma.s1 f8=f11,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (9)
|
||||
// r2 = a - b * q2 in f10
|
||||
(p6) fnma.s1 f10=f7,f9,f6
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (10)
|
||||
// q3 = q2 + r2 * y2 in f8
|
||||
(p6) fma.s1 f8=f10,f8,f9
|
||||
nop.i 0;;
|
||||
} { .mfb
|
||||
nop.m 0
|
||||
// (11) q = trunc(q3)
|
||||
fcvt.fxu.trunc.s1 f8=f8
|
||||
nop.b 0;;
|
||||
} { .mmi
|
||||
// quotient will be in r8 (if b != 0)
|
||||
getf.sig r8=f8
|
||||
nop.m 0
|
||||
nop.i 0;;
|
||||
}
|
||||
|
||||
// 64-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
|
||||
|
||||
{ .mmb
|
||||
nop.m 0
|
||||
nop.m 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __udivdi3
|
123
lib/libc/ia64/gen/__udivsi3.S
Normal file
123
lib/libc/ia64/gen/__udivsi3.S
Normal file
@ -0,0 +1,123 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__udivsi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
|
||||
// 32-bit unsigned integer divide
|
||||
|
||||
.proc __udivsi3#
|
||||
.align 32
|
||||
.global __udivsi3#
|
||||
.align 32
|
||||
|
||||
__udivsi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,2,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0;;
|
||||
} { .mii
|
||||
nop.m 0
|
||||
|
||||
// 32-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
|
||||
|
||||
// general register used:
|
||||
// r32 - 32-bit unsigned integer dividend
|
||||
// r33 - 32-bit unsigned integer divisor
|
||||
// r8 - 32-bit unsigned integer result
|
||||
// r2 - scratch register
|
||||
// floating-point registers used: f6, f7, f8, f9
|
||||
// predicate registers used: p6
|
||||
|
||||
zxt4 r32=r32
|
||||
zxt4 r33=r33;;
|
||||
} { .mmb
|
||||
setf.sig f6=r32
|
||||
setf.sig f7=r33
|
||||
nop.b 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xf f6=f6
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xf f7=f7
|
||||
mov r2 = 0x0ffdd;;
|
||||
} { .mfi
|
||||
setf.exp f9 = r2
|
||||
// (1) y0
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (2) q0 = a * y0
|
||||
(p6) fma.s1 f6=f6,f8,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (3) e0 = 1 - b * y0
|
||||
(p6) fnma.s1 f7=f7,f8,f1
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (4) q1 = q0 + e0 * q0
|
||||
(p6) fma.s1 f6=f7,f6,f6
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (5) e1 = e0 * e0 + 2^-34
|
||||
(p6) fma.s1 f7=f7,f7,f9
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (6) q2 = q1 + e1 * q1
|
||||
(p6) fma.s1 f8=f7,f6,f6
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (7) q = trunc(q2)
|
||||
fcvt.fxu.trunc.s1 f8=f8
|
||||
nop.i 0;;
|
||||
} { .mmi
|
||||
// quotient will be in the least significant 32 bits of r8 (if b != 0)
|
||||
getf.sig r8=f8
|
||||
nop.m 0
|
||||
nop.i 0;;
|
||||
}
|
||||
|
||||
// 32-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
|
||||
|
||||
{ .mmb
|
||||
nop.m 0
|
||||
nop.m 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __udivsi3
|
154
lib/libc/ia64/gen/__umoddi3.S
Normal file
154
lib/libc/ia64/gen/__umoddi3.S
Normal file
@ -0,0 +1,154 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__umoddi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
|
||||
// 64-bit unsigned integer remainder
|
||||
|
||||
.proc __umoddi3#
|
||||
.align 32
|
||||
.global __umoddi3#
|
||||
.align 32
|
||||
|
||||
__umoddi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,3,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0
|
||||
} { .mmb
|
||||
|
||||
// 64-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
|
||||
|
||||
// general register used:
|
||||
// r32 - 64-bit unsigned integer dividend
|
||||
// r33 - 64-bit unsigned integer divisor
|
||||
// r8 - 64-bit unsigned integer result
|
||||
// floating-point registers used: f6, f7, f8, f9, f10, f11, f12
|
||||
// predicate registers used: p6
|
||||
|
||||
setf.sig f12=r32 // holds a in integer form
|
||||
setf.sig f7=r33
|
||||
nop.b 0;;
|
||||
} { .mfi
|
||||
// get 2's complement of b
|
||||
sub r33=r0,r33
|
||||
fcvt.xuf.s1 f6=f12
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xuf.s1 f7=f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (1)
|
||||
// y0 = 1 / b in f8
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (2)
|
||||
// q0 = a * y0 in f10
|
||||
(p6) fma.s1 f10=f6,f8,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (3)
|
||||
// e0 = 1 - b * y0 in f9
|
||||
(p6) fnma.s1 f9=f7,f8,f1
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (4)
|
||||
// q1 = q0 + e0 * q0 in f10
|
||||
(p6) fma.s1 f10=f9,f10,f10
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (5)
|
||||
// e1 = e0 * e0 in f11
|
||||
(p6) fma.s1 f11=f9,f9,f0
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (6)
|
||||
// y1 = y0 + e0 * y0 in f8
|
||||
(p6) fma.s1 f8=f9,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (7)
|
||||
// q2 = q1 + e1 * q1 in f9
|
||||
(p6) fma.s1 f9=f11,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (8)
|
||||
// y2 = y1 + e1 * y1 in f8
|
||||
(p6) fma.s1 f8=f11,f8,f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// Step (9)
|
||||
// r2 = a - b * q2 in f10
|
||||
(p6) fnma.s1 f10=f7,f9,f6
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
// f7=-b
|
||||
setf.sig f7=r33
|
||||
// Step (10)
|
||||
// q3 = q2 + r2 * y2 in f8
|
||||
(p6) fma.s1 f8=f10,f8,f9
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (11) q = trunc(q3)
|
||||
fcvt.fxu.trunc.s1 f8=f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (12) r = a + (-b) * q
|
||||
xma.l f8=f8,f7,f12
|
||||
nop.i 0;;
|
||||
} { .mib
|
||||
getf.sig r8=f8
|
||||
nop.i 0
|
||||
nop.b 0
|
||||
}
|
||||
|
||||
// 64-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
|
||||
|
||||
{ .mib
|
||||
nop.m 0
|
||||
nop.i 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __umoddi3
|
130
lib/libc/ia64/gen/__umodsi3.S
Normal file
130
lib/libc/ia64/gen/__umodsi3.S
Normal file
@ -0,0 +1,130 @@
|
||||
/* $FreeBSD$ */
|
||||
.file "__umodsi3.s"
|
||||
|
||||
//
|
||||
// Copyright (c) 2000, Intel Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
|
||||
// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
|
||||
// Intel Corporation.
|
||||
//
|
||||
// WARRANTY DISCLAIMER
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Intel Corporation is the author of this code, and requests that all
|
||||
// problem reports or change requests be submitted to it directly at
|
||||
// http://developer.intel.com/opensource.
|
||||
//
|
||||
|
||||
.section .text
|
||||
|
||||
// 32-bit unsigned integer remainder
|
||||
|
||||
.proc __umodsi3#
|
||||
.align 32
|
||||
.global __umodsi3#
|
||||
.align 32
|
||||
|
||||
__umodsi3:
|
||||
|
||||
{ .mii
|
||||
alloc r31=ar.pfs,2,0,0,0
|
||||
nop.i 0
|
||||
nop.i 0;;
|
||||
} { .mii
|
||||
nop.m 0
|
||||
|
||||
// 32-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
|
||||
|
||||
// general register used:
|
||||
// r32 - 32-bit unsigned integer dividend
|
||||
// r33 - 32-bit unsigned integer divisor
|
||||
// r8 - 32-bit unsigned integer result
|
||||
// r2 - scratch register
|
||||
// floating-point registers used: f6, f7, f8, f9, f10, f11
|
||||
// predicate registers used: p6
|
||||
|
||||
zxt4 r32=r32
|
||||
zxt4 r33=r33;;
|
||||
} { .mmb
|
||||
setf.sig f11=r32
|
||||
setf.sig f7=r33
|
||||
nop.b 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
fcvt.xf f6=f11
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
// get 2's complement of b
|
||||
sub r33=r0,r33
|
||||
fcvt.xf f7=f7
|
||||
mov r2 = 0x0ffdd;;
|
||||
} { .mfi
|
||||
setf.exp f9 = r2
|
||||
// (1) y0
|
||||
frcpa.s1 f8,p6=f6,f7
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (2) q0 = a * y0
|
||||
(p6) fma.s1 f10=f6,f8,f0
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (3) e0 = 1 - b * y0
|
||||
(p6) fnma.s1 f8=f7,f8,f1
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (4) q1 = q0 + e0 * q0
|
||||
(p6) fma.s1 f10=f8,f10,f10
|
||||
nop.i 0
|
||||
} { .mfi
|
||||
// get 2's complement of b
|
||||
setf.sig f7=r33
|
||||
// (5) e1 = e0 * e0 + 2^-34
|
||||
(p6) fma.s1 f8=f8,f8,f9
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (6) q2 = q1 + e1 * q1
|
||||
(p6) fma.s1 f8=f8,f10,f10
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (7) q = trunc(q2)
|
||||
fcvt.fxu.trunc.s1 f8=f8
|
||||
nop.i 0;;
|
||||
} { .mfi
|
||||
nop.m 0
|
||||
// (8) r = a + (-b) * q
|
||||
xma.l f8=f8,f7,f11
|
||||
nop.i 0;;
|
||||
} { .mmi
|
||||
// remainder will be in the least significant 32 bits of r8 (if b != 0)
|
||||
getf.sig r8=f8
|
||||
nop.m 0
|
||||
nop.i 0;;
|
||||
}
|
||||
|
||||
// 32-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
|
||||
|
||||
{ .mmb
|
||||
nop.m 0
|
||||
nop.m 0
|
||||
br.ret.sptk b0;;
|
||||
}
|
||||
|
||||
.endp __umodsi3
|
137
lib/libc/ia64/gen/_setjmp.S
Normal file
137
lib/libc/ia64/gen/_setjmp.S
Normal file
@ -0,0 +1,137 @@
|
||||
/* $NetBSD: _setjmp.S,v 1.2 1996/10/17 03:08:03 cgd Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
/*
|
||||
* C library -- _setjmp, _longjmp
|
||||
*
|
||||
* _longjmp(a,v)
|
||||
* will generate a "return(v)" from
|
||||
* the last call to
|
||||
* _setjmp(a)
|
||||
* by restoring registers from the stack,
|
||||
* The previous signal state is NOT restored.
|
||||
*/
|
||||
|
||||
ENTRY(_setjmp, 1)
|
||||
#if 0
|
||||
LDGP(pv)
|
||||
stq ra, (2 * 8)(a0) /* sc_pc = return address */
|
||||
stq s0, (( 9 + 4) * 8)(a0) /* saved bits of sc_regs */
|
||||
stq s1, ((10 + 4) * 8)(a0)
|
||||
stq s2, ((11 + 4) * 8)(a0)
|
||||
stq s3, ((12 + 4) * 8)(a0)
|
||||
stq s4, ((13 + 4) * 8)(a0)
|
||||
stq s5, ((14 + 4) * 8)(a0)
|
||||
stq s6, ((15 + 4) * 8)(a0)
|
||||
stq ra, ((26 + 4) * 8)(a0)
|
||||
stq sp, ((30 + 4) * 8)(a0)
|
||||
ldiq t0, 0xacedbadd /* sigcontext magic number */
|
||||
stq t0, ((31 + 4) * 8)(a0) /* magic in sc_regs[31] */
|
||||
/* Too bad we can't check if we actually used FP */
|
||||
ldiq t0, 1
|
||||
stq t0, (36 * 8)(a0) /* say we've used FP. */
|
||||
stt fs0, ((2 + 37) * 8)(a0) /* saved bits of sc_fpregs */
|
||||
stt fs1, ((3 + 37) * 8)(a0)
|
||||
stt fs2, ((4 + 37) * 8)(a0)
|
||||
stt fs3, ((5 + 37) * 8)(a0)
|
||||
stt fs4, ((6 + 37) * 8)(a0)
|
||||
stt fs5, ((7 + 37) * 8)(a0)
|
||||
stt fs6, ((8 + 37) * 8)(a0)
|
||||
stt fs7, ((9 + 37) * 8)(a0)
|
||||
mf_fpcr ft0 /* get FP control reg */
|
||||
stt ft0, (69 * 8)(a0) /* and store it in sc_fpcr */
|
||||
stq zero, (70 * 8)(a0) /* FP software control XXX */
|
||||
stq zero, (71 * 8)(a0) /* sc_reserved[0] */
|
||||
stq zero, (72 * 8)(a0) /* sc_reserved[1] */
|
||||
stq zero, (73 * 8)(a0) /* sc_xxx[0] */
|
||||
stq zero, (74 * 8)(a0) /* sc_xxx[1] */
|
||||
stq zero, (75 * 8)(a0) /* sc_xxx[2] */
|
||||
stq zero, (76 * 8)(a0) /* sc_xxx[3] */
|
||||
stq zero, (77 * 8)(a0) /* sc_xxx[4] */
|
||||
stq zero, (78 * 8)(a0) /* sc_xxx[5] */
|
||||
stq zero, (79 * 8)(a0) /* sc_xxx[6] */
|
||||
stq zero, (80 * 8)(a0) /* sc_xxx[7] */
|
||||
|
||||
mov zero, v0 /* return zero */
|
||||
RET
|
||||
#endif
|
||||
END(_setjmp)
|
||||
|
||||
#ifdef _THREAD_SAFE
|
||||
ENTRY(___longjmp, 2)
|
||||
#else
|
||||
XENTRY(___longjmp)
|
||||
ENTRY(_longjmp, 2)
|
||||
#endif
|
||||
#if 0
|
||||
LDGP(pv)
|
||||
ldq t0, ((31 + 4) * 8)(a0) /* magic in sc_regs[31] */
|
||||
ldiq t1, 0xacedbadd
|
||||
cmpeq t0, t1, t0
|
||||
beq t0, botch /* If the magic was bad, punt */
|
||||
|
||||
ldq ra, (2 * 8)(a0) /* sc_pc = return address */
|
||||
ldq s0, (( 9 + 4) * 8)(a0) /* saved bits of sc_regs */
|
||||
ldq s1, ((10 + 4) * 8)(a0)
|
||||
ldq s2, ((11 + 4) * 8)(a0)
|
||||
ldq s3, ((12 + 4) * 8)(a0)
|
||||
ldq s4, ((13 + 4) * 8)(a0)
|
||||
ldq s5, ((14 + 4) * 8)(a0)
|
||||
ldq s6, ((15 + 4) * 8)(a0)
|
||||
/* ldq ra, ((26 + 4) * 8)(a0) set above */
|
||||
ldq sp, ((30 + 4) * 8)(a0)
|
||||
ldt fs0, ((2 + 37) * 8)(a0) /* saved bits of sc_fpregs */
|
||||
ldt fs1, ((3 + 37) * 8)(a0)
|
||||
ldt fs2, ((4 + 37) * 8)(a0)
|
||||
ldt fs3, ((5 + 37) * 8)(a0)
|
||||
ldt fs4, ((6 + 37) * 8)(a0)
|
||||
ldt fs5, ((7 + 37) * 8)(a0)
|
||||
ldt fs6, ((8 + 37) * 8)(a0)
|
||||
ldt fs7, ((9 + 37) * 8)(a0)
|
||||
ldt ft0, (69 * 8)(a0) /* get sc_fpcr */
|
||||
mt_fpcr ft0 /* and restore it. */
|
||||
|
||||
mov a1, v0 /* return second arg */
|
||||
RET
|
||||
|
||||
botch:
|
||||
CALL(longjmperror)
|
||||
CALL(abort)
|
||||
RET /* "can't" get here... */
|
||||
#endif
|
||||
#ifdef _THREAD_SAFE
|
||||
END(___longjmp)
|
||||
#else
|
||||
END(_longjmp)
|
||||
#endif
|
34
lib/libc/ia64/gen/fabs.S
Normal file
34
lib/libc/ia64/gen/fabs.S
Normal file
@ -0,0 +1,34 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
ENTRY(fabs, 1)
|
||||
fabs fret0=farg0
|
||||
br.ret.sptk.few rp
|
||||
END(fabs)
|
54
lib/libc/ia64/gen/frexp.c
Normal file
54
lib/libc/ia64/gen/frexp.c
Normal file
@ -0,0 +1,54 @@
|
||||
/* $NetBSD: frexp.c,v 1.1 1995/02/10 17:50:22 cgd Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <machine/ieee.h>
|
||||
#include <math.h>
|
||||
|
||||
double
|
||||
frexp(value, eptr)
|
||||
double value;
|
||||
int *eptr;
|
||||
{
|
||||
union doub {
|
||||
double v;
|
||||
struct ieee_double s;
|
||||
} u;
|
||||
|
||||
if (value) {
|
||||
u.v = value;
|
||||
*eptr = u.s.dbl_exp - (DBL_EXP_BIAS - 1);
|
||||
u.s.dbl_exp = DBL_EXP_BIAS - 1;
|
||||
return(u.v);
|
||||
} else {
|
||||
*eptr = 0;
|
||||
return((double)0);
|
||||
}
|
||||
}
|
53
lib/libc/ia64/gen/isinf.c
Normal file
53
lib/libc/ia64/gen/isinf.c
Normal file
@ -0,0 +1,53 @@
|
||||
/* $NetBSD: isinf.c,v 1.1 1995/02/10 17:50:23 cgd Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <machine/ieee.h>
|
||||
#include <math.h>
|
||||
|
||||
int
|
||||
isnan(d)
|
||||
double d;
|
||||
{
|
||||
register struct ieee_double *p = (struct ieee_double *)&d;
|
||||
|
||||
return (p->dbl_exp == DBL_EXP_INFNAN &&
|
||||
(p->dbl_frach || p->dbl_fracl));
|
||||
}
|
||||
|
||||
int
|
||||
isinf(d)
|
||||
double d;
|
||||
{
|
||||
register struct ieee_double *p = (struct ieee_double *)&d;
|
||||
|
||||
return (p->dbl_exp == DBL_EXP_INFNAN &&
|
||||
!p->dbl_frach && !p->dbl_fracl);
|
||||
}
|
135
lib/libc/ia64/gen/ldexp.c
Normal file
135
lib/libc/ia64/gen/ldexp.c
Normal file
@ -0,0 +1,135 @@
|
||||
/* $NetBSD: ldexp.c,v 1.1 1995/02/10 17:50:24 cgd Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <machine/ieee.h>
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
|
||||
/*
|
||||
* double ldexp(double val, int exp)
|
||||
* returns: val * (2**exp)
|
||||
*/
|
||||
double
|
||||
ldexp(val, exp)
|
||||
double val;
|
||||
int exp;
|
||||
{
|
||||
register int oldexp, newexp, mulexp;
|
||||
union doub {
|
||||
double v;
|
||||
struct ieee_double s;
|
||||
} u, mul;
|
||||
|
||||
/*
|
||||
* If input is zero, or no change, just return input.
|
||||
* Likewise, if input is Inf or NaN, just return it.
|
||||
*/
|
||||
u.v = val;
|
||||
oldexp = u.s.dbl_exp;
|
||||
if (val == 0 || exp == 0 || oldexp == DBL_EXP_INFNAN)
|
||||
return (val);
|
||||
|
||||
/*
|
||||
* Compute new exponent and check for over/under flow.
|
||||
* Underflow, unfortunately, could mean switching to denormal.
|
||||
* If result out of range, set ERANGE and return 0 if too small
|
||||
* or Inf if too big, with the same sign as the input value.
|
||||
*/
|
||||
newexp = oldexp + exp;
|
||||
if (newexp >= DBL_EXP_INFNAN) {
|
||||
/* u.s.dbl_sign = val < 0; -- already set */
|
||||
u.s.dbl_exp = DBL_EXP_INFNAN;
|
||||
u.s.dbl_frach = u.s.dbl_fracl = 0;
|
||||
errno = ERANGE;
|
||||
return (u.v); /* Inf */
|
||||
}
|
||||
if (newexp <= 0) {
|
||||
/*
|
||||
* The output number is either a denormal or underflows
|
||||
* (see comments in machine/ieee.h).
|
||||
*/
|
||||
if (newexp <= -DBL_FRACBITS) {
|
||||
/* u.s.dbl_sign = val < 0; -- already set */
|
||||
u.s.dbl_exp = 0;
|
||||
u.s.dbl_frach = u.s.dbl_fracl = 0;
|
||||
errno = ERANGE;
|
||||
return (u.v); /* zero */
|
||||
}
|
||||
/*
|
||||
* We are going to produce a denorm. Our `exp' argument
|
||||
* might be as small as -2097, and we cannot compute
|
||||
* 2^-2097, so we may have to do this as many as three
|
||||
* steps (not just two, as for positive `exp's below).
|
||||
*/
|
||||
mul.v = 0;
|
||||
while (exp <= -DBL_EXP_BIAS) {
|
||||
mul.s.dbl_exp = 1;
|
||||
val *= mul.v;
|
||||
exp += DBL_EXP_BIAS - 1;
|
||||
}
|
||||
mul.s.dbl_exp = exp + DBL_EXP_BIAS;
|
||||
val *= mul.v;
|
||||
return (val);
|
||||
}
|
||||
|
||||
/*
|
||||
* Newexp is positive.
|
||||
*
|
||||
* If oldexp is zero, we are starting with a denorm, and simply
|
||||
* adjusting the exponent will produce bogus answers. We need
|
||||
* to fix that first.
|
||||
*/
|
||||
if (oldexp == 0) {
|
||||
/*
|
||||
* Multiply by 2^mulexp to make the number normalizable.
|
||||
* We cannot multiply by more than 2^1023, but `exp'
|
||||
* argument might be as large as 2046. A single
|
||||
* adjustment, however, will normalize the number even
|
||||
* for huge `exp's, and then we can use exponent
|
||||
* arithmetic just as for normal `double's.
|
||||
*/
|
||||
mulexp = exp <= DBL_EXP_BIAS ? exp : DBL_EXP_BIAS;
|
||||
mul.v = 0;
|
||||
mul.s.dbl_exp = mulexp + DBL_EXP_BIAS;
|
||||
val *= mul.v;
|
||||
if (mulexp == exp)
|
||||
return (val);
|
||||
u.v = val;
|
||||
newexp -= mulexp;
|
||||
}
|
||||
|
||||
/*
|
||||
* Both oldexp and newexp are positive; just replace the
|
||||
* old exponent with the new one.
|
||||
*/
|
||||
u.s.dbl_exp = newexp;
|
||||
return (u.v);
|
||||
}
|
105
lib/libc/ia64/gen/modf.c
Normal file
105
lib/libc/ia64/gen/modf.c
Normal file
@ -0,0 +1,105 @@
|
||||
/* $NetBSD: modf.c,v 1.1 1995/02/10 17:50:25 cgd Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <machine/ieee.h>
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
|
||||
/*
|
||||
* double modf(double val, double *iptr)
|
||||
* returns: f and i such that |f| < 1.0, (f + i) = val, and
|
||||
* sign(f) == sign(i) == sign(val).
|
||||
*
|
||||
* Beware signedness when doing subtraction, and also operand size!
|
||||
*/
|
||||
double
|
||||
modf(val, iptr)
|
||||
double val, *iptr;
|
||||
{
|
||||
union doub {
|
||||
double v;
|
||||
struct ieee_double s;
|
||||
} u, v;
|
||||
u_int64_t frac;
|
||||
|
||||
/*
|
||||
* If input is Inf or NaN, return it and leave i alone.
|
||||
*/
|
||||
u.v = val;
|
||||
if (u.s.dbl_exp == DBL_EXP_INFNAN)
|
||||
return (u.v);
|
||||
|
||||
/*
|
||||
* If input can't have a fractional part, return
|
||||
* (appropriately signed) zero, and make i be the input.
|
||||
*/
|
||||
if ((int)u.s.dbl_exp - DBL_EXP_BIAS > DBL_FRACBITS - 1) {
|
||||
*iptr = u.v;
|
||||
v.v = 0.0;
|
||||
v.s.dbl_sign = u.s.dbl_sign;
|
||||
return (v.v);
|
||||
}
|
||||
|
||||
/*
|
||||
* If |input| < 1.0, return it, and set i to the appropriately
|
||||
* signed zero.
|
||||
*/
|
||||
if (u.s.dbl_exp < DBL_EXP_BIAS) {
|
||||
v.v = 0.0;
|
||||
v.s.dbl_sign = u.s.dbl_sign;
|
||||
*iptr = v.v;
|
||||
return (u.v);
|
||||
}
|
||||
|
||||
/*
|
||||
* There can be a fractional part of the input.
|
||||
* If you look at the math involved for a few seconds, it's
|
||||
* plain to see that the integral part is the input, with the
|
||||
* low (DBL_FRACBITS - (exponent - DBL_EXP_BIAS)) bits zeroed,
|
||||
* the the fractional part is the part with the rest of the
|
||||
* bits zeroed. Just zeroing the high bits to get the
|
||||
* fractional part would yield a fraction in need of
|
||||
* normalization. Therefore, we take the easy way out, and
|
||||
* just use subtraction to get the fractional part.
|
||||
*/
|
||||
v.v = u.v;
|
||||
/* Zero the low bits of the fraction, the sleazy way. */
|
||||
frac = ((u_int64_t)v.s.dbl_frach << 32) + v.s.dbl_fracl;
|
||||
frac >>= DBL_FRACBITS - (u.s.dbl_exp - DBL_EXP_BIAS);
|
||||
frac <<= DBL_FRACBITS - (u.s.dbl_exp - DBL_EXP_BIAS);
|
||||
v.s.dbl_fracl = frac & 0xffffffff;
|
||||
v.s.dbl_frach = frac >> 32;
|
||||
*iptr = v.v;
|
||||
|
||||
u.v -= v.v;
|
||||
u.s.dbl_sign = v.s.dbl_sign;
|
||||
return (u.v);
|
||||
}
|
139
lib/libc/ia64/gen/setjmp.S
Normal file
139
lib/libc/ia64/gen/setjmp.S
Normal file
@ -0,0 +1,139 @@
|
||||
/* $NetBSD: setjmp.S,v 1.3 1997/12/05 02:06:27 thorpej Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
/*
|
||||
* C library -- setjmp, longjmp
|
||||
*
|
||||
* longjmp(a,v)
|
||||
* will generate a "return(v)" from
|
||||
* the last call to
|
||||
* setjmp(a)
|
||||
* by restoring registers from the stack,
|
||||
* and the previous signal state.
|
||||
*/
|
||||
|
||||
ENTRY(setjmp, 1)
|
||||
#if 0
|
||||
LDGP(pv)
|
||||
stq ra, (2 * 8)(a0) /* sc_pc = return address */
|
||||
stq s0, (( 9 + 4) * 8)(a0) /* saved bits of sc_regs */
|
||||
stq s1, ((10 + 4) * 8)(a0)
|
||||
stq s2, ((11 + 4) * 8)(a0)
|
||||
stq s3, ((12 + 4) * 8)(a0)
|
||||
stq s4, ((13 + 4) * 8)(a0)
|
||||
stq s5, ((14 + 4) * 8)(a0)
|
||||
stq s6, ((15 + 4) * 8)(a0)
|
||||
stq ra, ((26 + 4) * 8)(a0)
|
||||
stq sp, ((30 + 4) * 8)(a0)
|
||||
|
||||
/*
|
||||
* get signal information
|
||||
*/
|
||||
mov a0, s0 /* squirrel away ptr to sc */
|
||||
|
||||
/* see what's blocked */
|
||||
lda a2, (71 * 8)(a0) /* oset: sc_reserved */
|
||||
mov zero, a1 /* set: NULL */
|
||||
addq a1, 1, a0 /* how: SIG_BLOCK */
|
||||
PCALL(sigprocmask) /* see what's blocked */
|
||||
|
||||
lda sp, -24(sp) /* sizeof struct sigaltstack */
|
||||
mov zero, a0
|
||||
mov sp, a1
|
||||
PCALL(sigaltstack)
|
||||
ldl t0, 16(sp) /* offset of ss_flags */
|
||||
lda sp, 24(sp) /* sizeof struct sigaltstack */
|
||||
ldq ra, ((26 + 4) * 8)(s0) /* restore return address */
|
||||
blt v0, botch /* check for error */
|
||||
and t0, 0x1, t0 /* get SA_ONSTACK flag */
|
||||
stq t0, (0 * 8)(s0) /* and save it in sc_onstack */
|
||||
/*
|
||||
* Restore old s0 and a0, and continue saving registers
|
||||
*/
|
||||
mov s0, a0
|
||||
ldq s0, (( 9 + 4) * 8)(a0)
|
||||
|
||||
ldiq t0, 0xacedbade /* sigcontext magic number */
|
||||
stq t0, ((31 + 4) * 8)(a0) /* magic in sc_regs[31] */
|
||||
/* Too bad we can't check if we actually used FP */
|
||||
ldiq t0, 1
|
||||
stq t0, (36 * 8)(a0) /* say we've used FP. */
|
||||
stt fs0, ((2 + 37) * 8)(a0) /* saved bits of sc_fpregs */
|
||||
stt fs1, ((3 + 37) * 8)(a0)
|
||||
stt fs2, ((4 + 37) * 8)(a0)
|
||||
stt fs3, ((5 + 37) * 8)(a0)
|
||||
stt fs4, ((6 + 37) * 8)(a0)
|
||||
stt fs5, ((7 + 37) * 8)(a0)
|
||||
stt fs6, ((8 + 37) * 8)(a0)
|
||||
stt fs7, ((9 + 37) * 8)(a0)
|
||||
mf_fpcr ft0 /* get FP control reg */
|
||||
stt ft0, (69 * 8)(a0) /* and store it in sc_fpcr */
|
||||
stq zero, (70 * 8)(a0) /* FP software control XXX */
|
||||
stq zero, (71 * 8)(a0) /* sc_reserved[0] */
|
||||
stq zero, (72 * 8)(a0) /* sc_reserved[1] */
|
||||
stq zero, (73 * 8)(a0) /* sc_xxx[0] */
|
||||
stq zero, (74 * 8)(a0) /* sc_xxx[1] */
|
||||
stq zero, (75 * 8)(a0) /* sc_xxx[2] */
|
||||
stq zero, (76 * 8)(a0) /* sc_xxx[3] */
|
||||
stq zero, (77 * 8)(a0) /* sc_xxx[4] */
|
||||
stq zero, (78 * 8)(a0) /* sc_xxx[5] */
|
||||
stq zero, (79 * 8)(a0) /* sc_xxx[6] */
|
||||
stq zero, (80 * 8)(a0) /* sc_xxx[7] */
|
||||
|
||||
mov zero, v0 /* return zero */
|
||||
RET
|
||||
#endif
|
||||
END(setjmp)
|
||||
|
||||
#ifdef _THREAD_SAFE
|
||||
ENTRY(__longjmp, 2)
|
||||
#else
|
||||
XENTRY(__longjmp)
|
||||
ENTRY(longjmp, 2)
|
||||
#endif
|
||||
#if 0
|
||||
LDGP(pv)
|
||||
stq a1, (( 0 + 4) * 8)(a0) /* save return value */
|
||||
PCALL(sigreturn) /* use sigreturn to return */
|
||||
|
||||
botch:
|
||||
CALL(longjmperror)
|
||||
CALL(abort)
|
||||
RET /* "can't" get here... */
|
||||
#endif
|
||||
#ifdef _THREAD_SAFE
|
||||
END(__longjmp)
|
||||
#else
|
||||
END(longjmp)
|
||||
#endif
|
76
lib/libc/ia64/gen/sigsetjmp.S
Normal file
76
lib/libc/ia64/gen/sigsetjmp.S
Normal file
@ -0,0 +1,76 @@
|
||||
/* $NetBSD: sigsetjmp.S,v 1.2 1996/10/17 03:08:07 cgd Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
/*
|
||||
* C library -- sigsetjmp, siglongjmp
|
||||
*
|
||||
* siglongjmp(a,v)
|
||||
* will generate a "return(v)" from
|
||||
* the last call to
|
||||
* sigsetjmp(a, mask)
|
||||
* by restoring registers from the stack.
|
||||
* If `mask' is non-zero, the previous signal
|
||||
* state will be restored.
|
||||
*/
|
||||
|
||||
ENTRY(sigsetjmp, 2)
|
||||
#if 0
|
||||
LDGP(pv)
|
||||
stq a1, (81 * 8)(a0) /* save the mask */
|
||||
bne a1, Lsavesig /* if !zero, save signals */
|
||||
jmp zero, _setjmp /* else don't. */
|
||||
Lsavesig:
|
||||
jmp zero, setjmp
|
||||
#endif
|
||||
END(sigsetjmp)
|
||||
|
||||
#ifdef _THREAD_SAFE
|
||||
ENTRY(__siglongjmp, 2)
|
||||
#else
|
||||
XENTRY(__siglongjmp)
|
||||
ENTRY(siglongjmp, 2)
|
||||
#endif
|
||||
#if 0
|
||||
LDGP(pv)
|
||||
ldq t0, (81 * 8)(a0) /* get the mask */
|
||||
bne t0, Lrestoresig /* if !zero, restore signals */
|
||||
jmp zero, _longjmp
|
||||
Lrestoresig:
|
||||
jmp zero, longjmp
|
||||
#endif
|
||||
#ifdef _THREAD_SAFE
|
||||
END(__siglongjmp)
|
||||
#else
|
||||
END(siglongjmp)
|
||||
#endif
|
3
lib/libc/ia64/net/Makefile.inc
Normal file
3
lib/libc/ia64/net/Makefile.inc
Normal file
@ -0,0 +1,3 @@
|
||||
# $FreeBSD$
|
||||
|
||||
SRCS+= htonl.S htons.S ntohl.S ntohs.S
|
47
lib/libc/ia64/net/byte_swap_2.S
Normal file
47
lib/libc/ia64/net/byte_swap_2.S
Normal file
@ -0,0 +1,47 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: byte_swap_2.S,v 1.2 1996/10/17 03:08:08 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
#ifndef NAME
|
||||
#define NAME byte_swap_2
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Byte-swap a 2-byte quantity. (Convert 0x0123 to 0x2301.)
|
||||
*
|
||||
* Argument is an unsigned 2-byte integer (u_int16_t).
|
||||
*/
|
||||
ENTRY(NAME, 1) /* in0 = 0x0123 */
|
||||
extr.u ret0=in0,8,8 /* ret0 = 0x 01 */
|
||||
;;
|
||||
dep ret0=ret0,in0,8,8 /* ret0 = 0x2301 */
|
||||
br.ret.sptk.few rp
|
||||
END(NAME)
|
54
lib/libc/ia64/net/byte_swap_4.S
Normal file
54
lib/libc/ia64/net/byte_swap_4.S
Normal file
@ -0,0 +1,54 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: byte_swap_4.S,v 1.2 1996/10/17 03:08:09 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
#ifndef NAME
|
||||
#define NAME byte_swap_4
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Byte-swap a 4-byte quantity. (Convert 0x01234567 to 0x67452301.)
|
||||
*
|
||||
* Argument is an unsigned 4-byte integer (u_int32_t).
|
||||
*/
|
||||
ENTRY(NAME, 1) /* in0 = 0x01234567 */
|
||||
extr.u r16=in0,0,8 /* r16 = 0x 67 */
|
||||
extr.u r17=in0,8,8 /* r17 = 0x 45 */
|
||||
extr.u r18=in0,16,8 /* r18 = 0x 23 */
|
||||
extr.u ret0=in0,24,8 /* ret0 = 0x 01 */
|
||||
;;
|
||||
dep ret0=ret0,r16,24,8 /* ret0 = 0x67 01 */
|
||||
;;
|
||||
dep ret0=ret0,r17,16,8 /* ret0 = 0x6745 01 */
|
||||
;;
|
||||
dep ret0=ret0,r16,8,8 /* ret0 = 0x67452301 */
|
||||
br.ret.sptk.few rp
|
||||
END(NAME)
|
33
lib/libc/ia64/net/htonl.S
Normal file
33
lib/libc/ia64/net/htonl.S
Normal file
@ -0,0 +1,33 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: htonl.S,v 1.1 1996/04/17 22:36:52 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#define NAME htonl
|
||||
|
||||
#include <ia64/net/byte_swap_4.S>
|
33
lib/libc/ia64/net/htons.S
Normal file
33
lib/libc/ia64/net/htons.S
Normal file
@ -0,0 +1,33 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: htons.S,v 1.1 1996/04/17 22:36:54 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#define NAME htons
|
||||
|
||||
#include <ia64/net/byte_swap_2.S>
|
33
lib/libc/ia64/net/ntohl.S
Normal file
33
lib/libc/ia64/net/ntohl.S
Normal file
@ -0,0 +1,33 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: ntohl.S,v 1.1 1996/04/17 22:36:57 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#define NAME ntohl
|
||||
|
||||
#include <ia64/net/byte_swap_4.S>
|
33
lib/libc/ia64/net/ntohs.S
Normal file
33
lib/libc/ia64/net/ntohs.S
Normal file
@ -0,0 +1,33 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: ntohs.S,v 1.1 1996/04/17 22:37:02 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#define NAME ntohs
|
||||
|
||||
#include <ia64/net/byte_swap_2.S>
|
3
lib/libc/ia64/stdlib/Makefile.inc
Normal file
3
lib/libc/ia64/stdlib/Makefile.inc
Normal file
@ -0,0 +1,3 @@
|
||||
# $FreeBSD$
|
||||
|
||||
MDSRCS+= abs.c div.c labs.c ldiv.c
|
3
lib/libc/ia64/string/Makefile.inc
Normal file
3
lib/libc/ia64/string/Makefile.inc
Normal file
@ -0,0 +1,3 @@
|
||||
# $FreeBSD$
|
||||
|
||||
MDSRCS+= bcopy.S bzero.S ffs.S memcpy.S memmove.S
|
96
lib/libc/ia64/string/bcopy.S
Normal file
96
lib/libc/ia64/string/bcopy.S
Normal file
@ -0,0 +1,96 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
/*
|
||||
* Not the fastest bcopy in the world.
|
||||
*/
|
||||
ENTRY(bcopy, 3)
|
||||
|
||||
cmp.le p6,p0=in2,r0 // bail if len <= 0
|
||||
(p6) br.ret.spnt.few rp
|
||||
|
||||
sub r14=in1,in0 ;; // check for overlap
|
||||
cmp.ltu p6,p0=r14,in2 // dst-src < len
|
||||
(p6) br.cond.spnt.few 5f
|
||||
|
||||
extr.u r14=in0,0,3 // src & 7
|
||||
extr.u r15=in1,0,3 ;; // dst & 7
|
||||
cmp.eq p6,p0=r14,r15 // different alignment?
|
||||
(p6) br.cond.spnt.few 2f // branch if same alignment
|
||||
|
||||
1: ld1 r14=[in0],1 ;; // copy bytewise
|
||||
st1 [in1]=r14,1
|
||||
add in2=-1,in2 ;; // len--
|
||||
cmp.ne p6,p0=r0,in2
|
||||
(p6) br.cond.dptk.few 1b // loop
|
||||
br.ret.sptk.few rp // done
|
||||
|
||||
2: cmp.eq p6,p0=r14,r0 // aligned?
|
||||
(p6) br.cond.sptk.few 4f
|
||||
|
||||
3: ld1 r14=[in0],1 ;; // copy bytewise
|
||||
st1 [in1]=r14,1
|
||||
extr.u r15=in0,0,3 // src & 7
|
||||
add in2=-1,in2 ;; // len--
|
||||
cmp.eq p6,p0=r0,in2 // done?
|
||||
cmp.eq p7,p0=r0,r15 ;; // aligned now?
|
||||
(p6) br.ret.spnt.few rp // return if done
|
||||
(p7) br.cond.spnt.few 4f // go to main copy
|
||||
br.cond.sptk.few 3b // more bytes to copy
|
||||
|
||||
// At this point, in2 is non-zero
|
||||
|
||||
4: mov r14=8 ;;
|
||||
cmp.ltu p6,p0=in2,r14 ;; // len < 8?
|
||||
(p6) br.cond.spnt.few 1b // byte copy the end
|
||||
ld8 r15=[in0],8 ;; // copy word
|
||||
st8 [in1]=r15,8
|
||||
add in2=-8,in2 ;; // len -= 8
|
||||
cmp.ne p6,p0=r0,in2 // done?
|
||||
(p6) br.cond.spnt.few 4b // again
|
||||
|
||||
br.ret.sptk.few rp // return
|
||||
|
||||
// Don't bother optimising overlap case
|
||||
|
||||
5: add in0=in0,in2
|
||||
add in1=in1,in2 ;;
|
||||
add in0=-1,in0
|
||||
add in1=-1,in1 ;;
|
||||
|
||||
6: ld1 r14=[in0],-1 ;;
|
||||
st1 [in1]=r14,-1
|
||||
add in2=-1,in2 ;;
|
||||
cmp.ne p6,p0=r0,in2
|
||||
(p6) br.cond.spnt.few 6b
|
||||
|
||||
br.ret.sptk.few rp
|
||||
|
||||
END(bcopy)
|
77
lib/libc/ia64/string/bzero.S
Normal file
77
lib/libc/ia64/string/bzero.S
Normal file
@ -0,0 +1,77 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
ENTRY(bzero, 2)
|
||||
|
||||
cmp.le p6,p0=in1,r0 // bail if len <= 0
|
||||
(p6) br.ret.spnt.few rp
|
||||
|
||||
mov r14=ar.lc // save ar.lc
|
||||
|
||||
cmp.geu p6,p0=17,in1 // check for small
|
||||
(p6) br.dptk.few 2f
|
||||
|
||||
1: mov ar.lc=in1
|
||||
2: st1 [in0]=r0,1 // zero one byte
|
||||
br.cloop.sptk.few 2b // loop
|
||||
|
||||
mov ar.lc=r14 // done
|
||||
br.ret.sptk.few rp
|
||||
|
||||
// Zero up to 8byte alignment
|
||||
|
||||
tbit.nz p6,p0=in1,0 ;;
|
||||
(p6) st1 [in0]=r0,1
|
||||
(p6) add in1=-1,in1
|
||||
|
||||
tbit.nz p6,p0=in1,1 ;;
|
||||
(p6) st2 [in0]=r0,2
|
||||
(p6) add in1=-2,in1
|
||||
|
||||
tbit.nz p6,p0=in1,2 ;;
|
||||
(p6) st4 [in0]=r0,4
|
||||
(p6) add in1=-4,in1
|
||||
|
||||
shr.u r15=in1,3 // word count
|
||||
extr.u in1=in1,0,3 ;; // trailing bytes
|
||||
cmp.eq p6,p0=r15,r0 // check for zero
|
||||
cmp.ne p7,p0=in1,r0
|
||||
(p6) br.dpnt.few 1b // zero last bytes
|
||||
|
||||
mov ar.lc=r15
|
||||
3: st8 [in0]=r0,8
|
||||
br.cloop.sptk.few 3b
|
||||
|
||||
(p7) br.dpnt.few 1b // zero last bytes
|
||||
|
||||
mov ar.lc=r14 // done
|
||||
br.ret.sptk.few rp
|
||||
|
||||
END(bzero)
|
99
lib/libc/ia64/string/ffs.S
Normal file
99
lib/libc/ia64/string/ffs.S
Normal file
@ -0,0 +1,99 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: ffs.S,v 1.3 1996/10/17 03:08:13 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995 Christopher G. Demetriou
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by Christopher G. Demetriou
|
||||
* for the NetBSD Project.
|
||||
* 4. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
ENTRY(ffs, 1)
|
||||
sxt4 r14=in0 ;;
|
||||
cmp.eq p6,p0=r14,r0
|
||||
(p6) br.dpnt.few Lallzero
|
||||
|
||||
/*
|
||||
* Initialize return value (ret0), and set up r15 so that it
|
||||
* contains the mask with only the lowest bit set.
|
||||
*/
|
||||
sub r15=r0,r14
|
||||
mov ret0=1 ;;
|
||||
and r15=r14,r15
|
||||
|
||||
extr.u r16=r15,0,8 ;;
|
||||
cmp.ne p6,p0=r0,r16
|
||||
(p6) br.dptk.few Ldo8
|
||||
|
||||
/*
|
||||
* If lower 16 bits empty, add 16 to result and use upper 16.
|
||||
*/
|
||||
extr.u r16=r15,0,16 ;;
|
||||
cmp.ne p6,p0=r0,r16
|
||||
(p6) br.dptk.few Ldo16
|
||||
extr.u r15=r15,16,16
|
||||
add ret0=16,ret0
|
||||
|
||||
Ldo16:
|
||||
/*
|
||||
* If lower 8 bits empty, add 8 to result and use upper 8.
|
||||
*/
|
||||
extr.u r16=r15,0,8 ;;
|
||||
cmp.ne p6,p0=r0,r16
|
||||
(p6) br.dptk.few Ldo8
|
||||
extr.u r15=r15,8,24
|
||||
add ret0=8,ret0
|
||||
|
||||
Ldo8:
|
||||
and r16=0x0f,r15 /* lower 4 of 8 empty? */
|
||||
and r17=0x33,r15 /* lower 2 of each 4 empty? */
|
||||
and r18=0x55,r15 ;; /* lower 1 of each 2 empty? */
|
||||
cmp.ne p6,p0=r16,r0
|
||||
cmp.ne p7,p0=r17,r0
|
||||
cmp.ne p8,p0=r18,r0
|
||||
|
||||
/* If lower 4 bits empty, add 4 to result. */
|
||||
(p6) br.dptk.few Ldo4
|
||||
add ret0=4,ret0
|
||||
|
||||
Ldo4: /* If lower 2 bits of each 4 empty, add 2 to result. */
|
||||
(p7) br.dptk.few Ldo2
|
||||
add ret0=2,ret0
|
||||
|
||||
Ldo2: /* If lower bit of each 2 empty, add 1 to result. */
|
||||
(p8) br.dptk.few Ldone
|
||||
add ret0=1,ret0
|
||||
|
||||
Ldone:
|
||||
br.ret.sptk.few rp
|
||||
|
||||
Lallzero:
|
||||
mov ret0=0
|
||||
br.ret.sptk.few rp
|
||||
END(ffs)
|
38
lib/libc/ia64/string/memcpy.S
Normal file
38
lib/libc/ia64/string/memcpy.S
Normal file
@ -0,0 +1,38 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
ENTRY(memcpy,3)
|
||||
|
||||
mov r14=in0 ;;
|
||||
mov in0=in1 ;;
|
||||
mov in1=r14
|
||||
br.cond.sptk.few bcopy
|
||||
|
||||
END(memcpy)
|
38
lib/libc/ia64/string/memmove.S
Normal file
38
lib/libc/ia64/string/memmove.S
Normal file
@ -0,0 +1,38 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
ENTRY(memmove,3)
|
||||
|
||||
mov r14=in0 ;;
|
||||
mov in0=in1 ;;
|
||||
mov in1=r14
|
||||
br.cond.sptk.few bcopy
|
||||
|
||||
END(memcpy)
|
17
lib/libc/ia64/sys/Makefile.inc
Normal file
17
lib/libc/ia64/sys/Makefile.inc
Normal file
@ -0,0 +1,17 @@
|
||||
# $FreeBSD$
|
||||
|
||||
MDASM+= Ovfork.S brk.S cerror.S exect.S fork.S pipe.S ptrace.S \
|
||||
sbrk.S setlogin.S sigreturn.S syscall.S
|
||||
|
||||
# Don't generate default code for these syscalls:
|
||||
NOASM= __semctl.o break.o exit.o ftruncate.o getdomainname.o getlogin.o \
|
||||
lseek.o mlockall.o mmap.o msgctl.o msgget.o msgrcv.o msgsnd.o \
|
||||
munlockall.o openbsd_poll.o pread.o pwrite.o semconfig.o semget.o \
|
||||
semop.o setdomainname.o shmat.o shmctl.o shmdt.o shmget.o sstk.o \
|
||||
thr_sleep.o thr_wakeup.o truncate.o uname.o vfork.o yield.o
|
||||
|
||||
PSEUDO= _getlogin.o
|
||||
|
||||
# Pseudo syscalls that are renamed as _thread_sys_{pseudo} when
|
||||
# building libc_r.
|
||||
PSEUDOR= _exit.o
|
34
lib/libc/ia64/sys/Ovfork.S
Normal file
34
lib/libc/ia64/sys/Ovfork.S
Normal file
@ -0,0 +1,34 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
#include "SYS.h"
|
||||
|
||||
PSYSCALL(vfork)
|
||||
cmp.ne p6,p0=ret1,r0 /* ret1!=0 for child */
|
||||
(p6) mov ret0=r0
|
||||
br.ret.sptk.few rp
|
||||
PEND(vfork)
|
51
lib/libc/ia64/sys/brk.S
Normal file
51
lib/libc/ia64/sys/brk.S
Normal file
@ -0,0 +1,51 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: brk.S,v 1.4 1996/10/17 03:08:15 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
.globl _end
|
||||
IMPORT(curbrk, 8)
|
||||
|
||||
.data
|
||||
EXPORT(minbrk)
|
||||
.quad _end
|
||||
|
||||
.text
|
||||
ENTRY(brk, 1)
|
||||
add r14=@gprel(minbrk),gp ;;
|
||||
ld8 r14=[r14] ;;
|
||||
cmp.ltu p6,p0=in0,r14 ;;
|
||||
(p6) mov in0=r14
|
||||
CALLSYS_ERROR(break)
|
||||
add r14=@gprel(curbrk),gp ;;
|
||||
st8 [r14]=in0
|
||||
mov ret0=0
|
||||
br.ret.sptk.few rp
|
||||
END(brk)
|
47
lib/libc/ia64/sys/cerror.S
Normal file
47
lib/libc/ia64/sys/cerror.S
Normal file
@ -0,0 +1,47 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
|
||||
|
||||
ENTRY(.cerror, 0)
|
||||
alloc loc0=ar.pfs,0,3,1,0
|
||||
;;
|
||||
mov loc1=rp
|
||||
mov loc2=ret0
|
||||
mov out0=ret0
|
||||
;;
|
||||
br.call.sptk.few rp=__error
|
||||
st4 [ret0]=loc2
|
||||
;;
|
||||
mov ret0=-1
|
||||
mov ar.pfs=loc0
|
||||
mov rp=loc1
|
||||
;;
|
||||
br.ret.sptk.few rp
|
||||
END(.cerror)
|
36
lib/libc/ia64/sys/exect.S
Normal file
36
lib/libc/ia64/sys/exect.S
Normal file
@ -0,0 +1,36 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: exect.S,v 1.2 1996/10/17 03:08:18 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
ENTRY(exect, 3)
|
||||
CALLSYS_ERROR(execve)
|
||||
br.ret.sptk.few rp
|
||||
END(exect)
|
34
lib/libc/ia64/sys/fork.S
Normal file
34
lib/libc/ia64/sys/fork.S
Normal file
@ -0,0 +1,34 @@
|
||||
/*-
|
||||
* Copyright (c) 2000 Doug Rabson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
#include "SYS.h"
|
||||
|
||||
PSYSCALL(fork)
|
||||
cmp.ne p6,p0=ret1,r0 /* ret1!=0 for child */
|
||||
(p6) mov ret0=r0
|
||||
br.ret.sptk.few rp
|
||||
PEND(fork)
|
39
lib/libc/ia64/sys/pipe.S
Normal file
39
lib/libc/ia64/sys/pipe.S
Normal file
@ -0,0 +1,39 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: pipe.S,v 1.1 1995/02/10 17:50:35 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
PSYSCALL(pipe)
|
||||
.regstk 1,0,0,0
|
||||
st4 [in0]=ret0,4 ;;
|
||||
st4 [in0]=ret1
|
||||
mov ret0=0
|
||||
br.ret.sptk.few rp
|
||||
PEND(pipe)
|
38
lib/libc/ia64/sys/ptrace.S
Normal file
38
lib/libc/ia64/sys/ptrace.S
Normal file
@ -0,0 +1,38 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: ptrace.S,v 1.4 1996/11/08 00:51:24 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
ENTRY(ptrace, 4)
|
||||
add r14=@gprel(errno),gp ;;
|
||||
st4 [r14]=r0
|
||||
CALLSYS_ERROR(ptrace)
|
||||
br.ret.sptk.few rp
|
||||
END(ptrace)
|
52
lib/libc/ia64/sys/sbrk.S
Normal file
52
lib/libc/ia64/sys/sbrk.S
Normal file
@ -0,0 +1,52 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: sbrk.S,v 1.4 1996/10/17 03:08:20 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
.globl _end
|
||||
|
||||
.data
|
||||
EXPORT(curbrk)
|
||||
.quad _end
|
||||
|
||||
.text
|
||||
ENTRY(sbrk, 1)
|
||||
alloc r14=ar.pfs,1,2,0,0
|
||||
|
||||
add loc0=@gprel(curbrk),gp ;;
|
||||
ld8 loc1=[loc0]
|
||||
cmp.eq p6,p0=in0,r0
|
||||
(p6) br.dpnt.few 1f
|
||||
add in0=r14,in0
|
||||
CALLSYS_ERROR(break)
|
||||
st8 [loc0]=in0
|
||||
1: mov ret0=loc1
|
||||
br.ret.sptk.few rp
|
||||
END(sbrk)
|
39
lib/libc/ia64/sys/setlogin.S
Normal file
39
lib/libc/ia64/sys/setlogin.S
Normal file
@ -0,0 +1,39 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: setlogin.S,v 1.1 1995/02/10 17:50:39 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
IMPORT(_logname_valid, 4) /* in getlogin() */
|
||||
|
||||
SYSCALL(setlogin)
|
||||
add r14=@gprel(_logname_valid),gp ;;
|
||||
st4 [r14]=r0 /* clear it */
|
||||
br.ret.sptk.few rp
|
||||
END(setlogin)
|
39
lib/libc/ia64/sys/sigreturn.S
Normal file
39
lib/libc/ia64/sys/sigreturn.S
Normal file
@ -0,0 +1,39 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: sigreturn.S,v 1.1 1995/02/10 17:50:42 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
/*
|
||||
* We must preserve the state of the registers as the user has set them up.
|
||||
* However, that doesn't involve any special work on the ia64.
|
||||
* (XXX PROFILING)
|
||||
*/
|
||||
|
||||
PRSYSCALL(sigreturn)
|
33
lib/libc/ia64/sys/syscall.S
Normal file
33
lib/libc/ia64/sys/syscall.S
Normal file
@ -0,0 +1,33 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $NetBSD: syscall.S,v 1.1 1995/02/10 17:50:44 cgd Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Chris G. Demetriou
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and
|
||||
* its documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
|
||||
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
RSYSCALL(syscall)
|
Loading…
Reference in New Issue
Block a user