diff options
author | ru <ru@FreeBSD.org> | 2006-08-22 08:03:01 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2006-08-22 08:03:01 +0000 |
commit | 4d582ffe096e47ba124286efb831032cbd3cdf2a (patch) | |
tree | 08203fa78d69de58704db3947da0c5c461233445 /lib/libc/alpha/gen | |
parent | 78738a2fe964ce85b0d11862f02a91175c14fd9a (diff) | |
download | FreeBSD-src-4d582ffe096e47ba124286efb831032cbd3cdf2a.zip FreeBSD-src-4d582ffe096e47ba124286efb831032cbd3cdf2a.tar.gz |
Remove alpha left-overs.
Diffstat (limited to 'lib/libc/alpha/gen')
-rw-r--r-- | lib/libc/alpha/gen/Makefile.inc | 47 | ||||
-rw-r--r-- | lib/libc/alpha/gen/_ctx_start.S | 45 | ||||
-rw-r--r-- | lib/libc/alpha/gen/_set_tp.c | 40 | ||||
-rw-r--r-- | lib/libc/alpha/gen/_setjmp.S | 127 | ||||
-rw-r--r-- | lib/libc/alpha/gen/divrem.m4 | 198 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fabs.S | 36 | ||||
-rw-r--r-- | lib/libc/alpha/gen/flt_rounds.c | 60 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpgetmask.c | 52 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpgetround.c | 52 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpgetsticky.c | 52 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpsetmask.c | 54 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpsetround.c | 61 | ||||
-rw-r--r-- | lib/libc/alpha/gen/infinity.c | 39 | ||||
-rw-r--r-- | lib/libc/alpha/gen/makecontext.c | 172 | ||||
-rw-r--r-- | lib/libc/alpha/gen/modf.c | 107 | ||||
-rw-r--r-- | lib/libc/alpha/gen/rfork_thread.S | 66 | ||||
-rw-r--r-- | lib/libc/alpha/gen/setjmp.S | 138 | ||||
-rw-r--r-- | lib/libc/alpha/gen/signalcontext.c | 103 | ||||
-rw-r--r-- | lib/libc/alpha/gen/sigsetjmp.S | 64 |
19 files changed, 0 insertions, 1513 deletions
diff --git a/lib/libc/alpha/gen/Makefile.inc b/lib/libc/alpha/gen/Makefile.inc deleted file mode 100644 index 8f8caf8..0000000 --- a/lib/libc/alpha/gen/Makefile.inc +++ /dev/null @@ -1,47 +0,0 @@ -# $FreeBSD$ - -SRCS+= _setjmp.S _set_tp.c fabs.S infinity.c ldexp.c modf.c setjmp.S -SRCS+= flt_rounds.c fpgetmask.c fpgetround.c fpgetsticky.c fpsetmask.c \ - fpsetround.c - -SRCS+= sigsetjmp.S -SRCS+= __divqu.S __divq.S __divlu.S __divl.S -SRCS+= __remqu.S __remq.S __remlu.S __reml.S -SRCS+= rfork_thread.S -SRCS+= _ctx_start.S makecontext.c signalcontext.c - -CLEANFILES+= __divqu.S __divq.S __divlu.S __divl.S -CLEANFILES+= __remqu.S __remq.S __remlu.S __reml.S - - -__divqu.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__divqu -DOP=div -DS=false -DWORDSIZE=64 \ - ${.ALLSRC} > ${.TARGET} - -__divq.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__divq -DOP=div -DS=true -DWORDSIZE=64 \ - ${.ALLSRC} > ${.TARGET} - -__divlu.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__divlu -DOP=div -DS=false -DWORDSIZE=32 \ - ${.ALLSRC} > ${.TARGET} - -__divl.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__divl -DOP=div -DS=true -DWORDSIZE=32 \ - ${.ALLSRC} > ${.TARGET} - -__remqu.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__remqu -DOP=rem -DS=false -DWORDSIZE=64 \ - ${.ALLSRC} > ${.TARGET} - -__remq.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__remq -DOP=rem -DS=true -DWORDSIZE=64 \ - ${.ALLSRC} > ${.TARGET} - -__remlu.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__remlu -DOP=rem -DS=false -DWORDSIZE=32 \ - ${.ALLSRC} > ${.TARGET} - -__reml.S: ${.CURDIR}/alpha/gen/divrem.m4 - m4 -DNAME=__reml -DOP=rem -DS=true -DWORDSIZE=32 \ - ${.ALLSRC} > ${.TARGET} diff --git a/lib/libc/alpha/gen/_ctx_start.S b/lib/libc/alpha/gen/_ctx_start.S deleted file mode 100644 index 229a6c1..0000000 --- a/lib/libc/alpha/gen/_ctx_start.S +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2001 Daniel Eischen <deischen@freebsd.org> - * 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. Neither the name of the author nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * 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. - */ - -#include <machine/asm.h> -__FBSDID("$FreeBSD$"); - -/* - * A0-A5 are the first 6 arguments to the start routine with the - * remaining arguments (if any) placed on the stack. S0 is the - * address of the user-supplied start routine, and S1 is the pointer - * to the ucontext. - */ - .set noreorder -LEAF(_ctx_start,0) - mov s0, t12 - jsr ra, (s0) /* call start routine; args already set */ - LDGP(ra) - mov s1, a0 /* load A0 (arg 1) with pointer to ucontext */ - CALL(_ctx_done) /* call context completion routine */ - CALL(abort) /* should never return from above call */ - RET -END(_ctx_start) diff --git a/lib/libc/alpha/gen/_set_tp.c b/lib/libc/alpha/gen/_set_tp.c deleted file mode 100644 index 7aff9f7..0000000 --- a/lib/libc/alpha/gen/_set_tp.c +++ /dev/null @@ -1,40 +0,0 @@ -/*- - * Copyright (c) 2004 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/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <machine/alpha_cpu.h> - -void -_set_tp(void *tp) -{ - - alpha_pal_wrunique((uintptr_t) tp); -} diff --git a/lib/libc/alpha/gen/_setjmp.S b/lib/libc/alpha/gen/_setjmp.S deleted file mode 100644 index 85ed8c7..0000000 --- a/lib/libc/alpha/gen/_setjmp.S +++ /dev/null @@ -1,127 +0,0 @@ -/* $NetBSD: _setjmp.S,v 1.2 1996/10/17 03:08:03 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 <machine/asm.h> -__FBSDID("$FreeBSD$"); - -/* - * 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. - */ - - .set noreorder - -LEAF(_setjmp, 1) - 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 t12,((27 + 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 -END(_setjmp) - -XLEAF(_longjmp, 2) -LEAF(___longjmp, 2) - 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 t12,((27 + 4) * 8)(a0) - 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... */ -END(___longjmp) diff --git a/lib/libc/alpha/gen/divrem.m4 b/lib/libc/alpha/gen/divrem.m4 deleted file mode 100644 index 6afa2e1..0000000 --- a/lib/libc/alpha/gen/divrem.m4 +++ /dev/null @@ -1,198 +0,0 @@ -/* $NetBSD: divrem.m4,v 1.7 1996/10/17 03:08:04 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. - */ - -/* - * Division and remainder. - * - * The use of m4 is modeled after the sparc code, but the algorithm is - * simple binary long division. - * - * Note that the loops could probably benefit from unrolling. - */ - -/* - * M4 Parameters - * NAME name of function to generate - * OP OP=div: t10 / t11 -> t12; OP=rem: t10 % t11 -> t12 - * S S=true: signed; S=false: unsigned - * WORDSIZE total number of bits - */ - -define(A, `t10') -define(B, `t11') -define(RESULT, `t12') - -define(BIT, `t0') -define(I, `t1') -define(CC, `t2') -define(T_0, `t3') -ifelse(S, `true', `define(NEG, `t4')') - -#include <machine/asm.h> - -NESTED(NAME, 0, 0, t9, 0, 0) /* Get the right ra */ - lda sp, -64(sp) - stq BIT, 0(sp) - stq I, 8(sp) - stq CC, 16(sp) - stq T_0, 24(sp) -ifelse(S, `true', -` stq NEG, 32(sp)') - stq A, 40(sp) - stq B, 48(sp) - mov zero, RESULT /* Initialize result to zero */ - -ifelse(S, `true', -` - /* Compute sign of result. If either is negative, this is easy. */ - or A, B, NEG /* not the sign, but... */ - srl NEG, WORDSIZE - 1, NEG /* rather, or of high bits */ - blbc NEG, Ldoit /* neither negative? do it! */ - -ifelse(OP, `div', -` xor A, B, NEG /* THIS is the sign! */ -', ` mov A, NEG /* sign follows A. */ -') - srl NEG, WORDSIZE - 1, NEG /* make negation the low bit. */ - - srl A, WORDSIZE - 1, I /* is A negative? */ - blbc I, LnegB /* no. */ - /* A is negative; flip it. */ -ifelse(WORDSIZE, `32', ` - /* top 32 bits may be random junk */ - zap A, 0xf0, A -') - subq zero, A, A - srl B, WORDSIZE - 1, I /* is B negative? */ - blbc I, Ldoit /* no. */ -LnegB: - /* B is definitely negative, no matter how we got here. */ -ifelse(WORDSIZE, `32', ` - /* top 32 bits may be random junk */ - zap B, 0xf0, B -') - subq zero, B, B -Ldoit: -') -ifelse(WORDSIZE, `32', ` - /* - * Clear the top 32 bits of each operand, as they may - * sign extension (if negated above), or random junk. - */ - zap A, 0xf0, A - zap B, 0xf0, B -') - - /* kill the special cases. */ - beq B, Ldotrap /* division by zero! */ - - cmpult A, B, CC /* A < B? */ - /* RESULT is already zero, from above. A is untouched. */ - bne CC, Lret_result - - cmpeq A, B, CC /* A == B? */ - cmovne CC, 1, RESULT - cmovne CC, zero, A - bne CC, Lret_result - - /* - * Find out how many bits of zeros are at the beginning of the divisor. - */ -LBbits: - ldiq T_0, 1 /* I = 0; BIT = 1<<WORDSIZE-1 */ - mov zero, I - sll T_0, WORDSIZE-1, BIT -LBloop: - and B, BIT, CC /* if bit in B is set, done. */ - bne CC, LAbits - addq I, 1, I /* increment I, shift bit */ - srl BIT, 1, BIT - cmplt I, WORDSIZE-1, CC /* if I leaves one bit, done. */ - bne CC, LBloop - -LAbits: - beq I, Ldodiv /* If I = 0, divide now. */ - ldiq T_0, 1 /* BIT = 1<<WORDSIZE-1 */ - sll T_0, WORDSIZE-1, BIT - -LAloop: - and A, BIT, CC /* if bit in A is set, done. */ - bne CC, Ldodiv - subq I, 1, I /* decrement I, shift bit */ - srl BIT, 1, BIT - bne I, LAloop /* If I != 0, loop again */ - -Ldodiv: - sll B, I, B /* B <<= i */ - ldiq T_0, 1 - sll T_0, I, BIT - -Ldivloop: - cmpult A, B, CC - or RESULT, BIT, T_0 - cmoveq CC, T_0, RESULT - subq A, B, T_0 - cmoveq CC, T_0, A - srl BIT, 1, BIT - srl B, 1, B - beq A, Lret_result - bne BIT, Ldivloop - -Lret_result: -ifelse(OP, `div', -`', ` mov A, RESULT -') -ifelse(S, `true', -` - /* Check to see if we should negate it. */ - subq zero, RESULT, T_0 - cmovlbs NEG, T_0, RESULT -') - - ldq BIT, 0(sp) - ldq I, 8(sp) - ldq CC, 16(sp) - ldq T_0, 24(sp) -ifelse(S, `true', -` ldq NEG, 32(sp)') - ldq A, 40(sp) - ldq B, 48(sp) - lda sp, 64(sp) - ret zero, (t9), 1 - -Ldotrap: - ldiq a0, -2 /* This is the signal to SIGFPE! */ - call_pal PAL_gentrap -ifelse(OP, `div', -`', ` mov zero, A /* so that zero will be returned */ -') - br zero, Lret_result - -END(NAME) diff --git a/lib/libc/alpha/gen/fabs.S b/lib/libc/alpha/gen/fabs.S deleted file mode 100644 index 5a742fe..0000000 --- a/lib/libc/alpha/gen/fabs.S +++ /dev/null @@ -1,36 +0,0 @@ -/* $NetBSD: fabs.S,v 1.2 1996/10/17 03:08:05 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 <machine/asm.h> -__FBSDID("$FreeBSD$"); - -LEAF(fabs, 1) - cpys fzero, fa0, fv0 - RET -END(fabs) diff --git a/lib/libc/alpha/gen/flt_rounds.c b/lib/libc/alpha/gen/flt_rounds.c deleted file mode 100644 index c3219d9..0000000 --- a/lib/libc/alpha/gen/flt_rounds.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - * - * $NetBSD: flt_rounds.c,v 1.2 1997/07/18 00:30:30 thorpej Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <machine/float.h> - -static const int map[] = { - 0, /* round to zero */ - 3, /* round to negative infinity */ - 1, /* round to nearest */ - 2 /* round to positive infinity */ -}; - -int -__flt_rounds() -{ - union { - double fpcrval; - u_int64_t intval; - } u; - - __asm__("trapb"); - __asm__("mf_fpcr %0" : "=f" (u.fpcrval)); - __asm__("trapb"); - - return map[(u.intval >> 58) & 0x3]; -} diff --git a/lib/libc/alpha/gen/fpgetmask.c b/lib/libc/alpha/gen/fpgetmask.c deleted file mode 100644 index 036a150..0000000 --- a/lib/libc/alpha/gen/fpgetmask.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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. - * - * $NetBSD: fpgetmask.c,v 1.1 1995/04/29 05:10:55 cgd Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <ieeefp.h> -#include <machine/sysarch.h> - -struct params { - u_int64_t mask; -}; - -fp_except_t -fpgetmask() -{ - struct params p; - - sysarch(ALPHA_GET_FPMASK, &p); - return((fp_except_t) p.mask); -} diff --git a/lib/libc/alpha/gen/fpgetround.c b/lib/libc/alpha/gen/fpgetround.c deleted file mode 100644 index 1fd96b2..0000000 --- a/lib/libc/alpha/gen/fpgetround.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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. - * - * $NetBSD: fpgetround.c,v 1.1 1995/04/29 05:09:55 cgd Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <ieeefp.h> -#include <machine/fpu.h> - -fp_rnd_t -fpgetround() -{ - union { - double fpcrval; - u_int64_t intval; - } u; - - GET_FPCR(u.fpcrval); - - return ((u.intval & FPCR_DYN_MASK) >> FPCR_DYN_SHIFT); -} diff --git a/lib/libc/alpha/gen/fpgetsticky.c b/lib/libc/alpha/gen/fpgetsticky.c deleted file mode 100644 index 7586eb4..0000000 --- a/lib/libc/alpha/gen/fpgetsticky.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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. - * - * $NetBSD: fpgetsticky.c,v 1.1 1995/04/29 05:10:59 cgd Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <ieeefp.h> -#include <machine/fpu.h> - -fp_except_t -fpgetsticky() -{ - union { - double fpcrval; - u_int64_t intval; - } u; - - GET_FPCR(u.fpcrval); - return (((u.intval >> IEEE_STATUS_TO_FPCR_SHIFT) & IEEE_STATUS_MASK) - >> IEEE_STATUS_TO_EXCSUM_SHIFT); -} diff --git a/lib/libc/alpha/gen/fpsetmask.c b/lib/libc/alpha/gen/fpsetmask.c deleted file mode 100644 index 65da3c5..0000000 --- a/lib/libc/alpha/gen/fpsetmask.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - * - * $NetBSD: fpsetmask.c,v 1.1 1995/04/29 05:11:01 cgd Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <ieeefp.h> -#include <machine/sysarch.h> - -struct params { - u_int64_t mask; -}; - -fp_except_t -fpsetmask(mask) - fp_except_t mask; -{ - struct params p; - - p.mask = (u_int64_t) mask; - sysarch(ALPHA_SET_FPMASK, &p); - return ((fp_except_t) p.mask); -} diff --git a/lib/libc/alpha/gen/fpsetround.c b/lib/libc/alpha/gen/fpsetround.c deleted file mode 100644 index 8e994c7..0000000 --- a/lib/libc/alpha/gen/fpsetround.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - * - * $NetBSD: fpsetround.c,v 1.1 1995/04/29 05:09:57 cgd Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <ieeefp.h> -#include <machine/fpu.h> - -fp_rnd_t -fpsetround(rnd_dir) - fp_rnd_t rnd_dir; -{ - union { - double fpcrval; - u_int64_t intval; - } u; - u_int64_t old, new; - - GET_FPCR(u.fpcrval); - - old = u.intval; - new = old & (~FPCR_DYN_MASK); - new |= ((long) rnd_dir << FPCR_DYN_SHIFT) & FPCR_DYN_MASK; - - u.intval = new; - SET_FPCR(u.fpcrval); - - return ((old & FPCR_DYN_MASK) >> FPCR_DYN_SHIFT); -} diff --git a/lib/libc/alpha/gen/infinity.c b/lib/libc/alpha/gen/infinity.c deleted file mode 100644 index b10f6d3..0000000 --- a/lib/libc/alpha/gen/infinity.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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. - * - * $NetBSD: infinity.c,v 1.1 1995/02/10 17:50:23 cgd Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <math.h> - -/* bytes for +Infinity on an Alpha (IEEE double format) */ -const union __infinity_un __infinity = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } }; - -/* bytes for NaN */ -const union __nan_un __nan = { { 0, 0, 0xc0, 0xff } }; diff --git a/lib/libc/alpha/gen/makecontext.c b/lib/libc/alpha/gen/makecontext.c deleted file mode 100644 index bc8ea03..0000000 --- a/lib/libc/alpha/gen/makecontext.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (c) 2001 Daniel M. Eischen <deischen@freebsd.org> - * 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. Neither the name of the author nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * 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. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/signal.h> - -#include <errno.h> -#include <stdarg.h> -#include <stdlib.h> -#include <ucontext.h> -#include <unistd.h> - - -/* Prototypes */ -extern void _ctx_start(int argc, ...); - - -__weak_reference(__makecontext, makecontext); - -void -_ctx_done (ucontext_t *ucp) -{ - if (ucp->uc_link == NULL) - exit(0); - else { - /* - * Since this context has finished, don't allow it - * to be restarted without being reinitialized (via - * setcontext or swapcontext). - */ - ucp->uc_mcontext.mc_format = 0; - - /* Set context to next one in link */ - /* XXX - what to do for error, abort? */ - setcontext((const ucontext_t *)ucp->uc_link); - abort(); /* should never get here */ - } -} - -void -__makecontext(ucontext_t *ucp, void (*start)(void), int argc, ...) -{ - va_list ap; - char *stack_top; - intptr_t *argp; - int i; - - if (ucp == NULL) - return; - else if ((ucp->uc_stack.ss_sp == NULL) || - (ucp->uc_stack.ss_size < MINSIGSTKSZ)) { - /* - * This should really return -1 with errno set to ENOMEM - * or something, but the spec says that makecontext is - * a void function. At least make sure that the context - * isn't valid so it can't be used without an error. - */ - ucp->uc_mcontext.mc_format = 0; - } - /* XXX - Do we want to sanity check argc? */ - else if ((argc < 0) || (argc > NCARGS)) { - ucp->uc_mcontext.mc_format = 0; - } - /* - * Make sure the context is valid. For now, we only allow - * trapframe format contexts to be used for makecontext. - */ - else if (ucp->uc_mcontext.mc_format == _MC_REV0_TRAPFRAME) { - /* - * Alpha passes the first 6 parameters in registers and - * remaining parameters on the stack. Set up the context - * accordingly, with the user start routine in register - * S0, and the context start wrapper (_ctx_start) in the - * program counter and return address. The context must - * be in trapframe format. - * - * Note: The context start wrapper needs to retrieve the - * ucontext pointer. Place this in register S1 - * which must be saved by the callee. - */ - stack_top = (char *)(ucp->uc_stack.ss_sp + - ucp->uc_stack.ss_size - sizeof(double)); - stack_top = (char *)ALIGN(stack_top); - - /* - * Adjust top of stack to allow for any additional integer - * arguments beyond 6. - */ - if (argc > 6) - stack_top = stack_top - (sizeof(intptr_t) * (argc - 6)); - - argp = (intptr_t *)stack_top; - - va_start(ap, argc); - for (i = 0; i < argc; i++) { - switch (i) { - case 0: ucp->uc_mcontext.mc_regs[FRAME_A0] = - (unsigned long)va_arg(ap, intptr_t); - break; - - case 1: ucp->uc_mcontext.mc_regs[FRAME_A1] = - (unsigned long)va_arg(ap, intptr_t); - break; - - case 2: ucp->uc_mcontext.mc_regs[FRAME_A2] = - (unsigned long)va_arg(ap, intptr_t); - break; - - case 3: ucp->uc_mcontext.mc_regs[FRAME_A3] = - (unsigned long)va_arg(ap, intptr_t); - break; - - case 4: ucp->uc_mcontext.mc_regs[FRAME_A4] = - (unsigned long)va_arg(ap, intptr_t); - break; - - case 5: ucp->uc_mcontext.mc_regs[FRAME_A5] = - (unsigned long)va_arg(ap, intptr_t); - break; - - default: - *argp = va_arg(ap, intptr_t); - argp++; - break; - } - } - va_end(ap); - - /* - * The start routine and ucontext are placed in registers - * S0 and S1 respectively. - */ - ucp->uc_mcontext.mc_regs[FRAME_S0] = (unsigned long)start; - ucp->uc_mcontext.mc_regs[FRAME_S1] = (unsigned long)ucp; - - /* - * Set the machine context to point to the top of the stack, - * and the program counter and return address to the context - * start wrapper. - */ - ucp->uc_mcontext.mc_regs[FRAME_SP] = (unsigned long)stack_top; - ucp->uc_mcontext.mc_regs[FRAME_PC] = (unsigned long)_ctx_start; - ucp->uc_mcontext.mc_regs[FRAME_RA] = (unsigned long)_ctx_start; - ucp->uc_mcontext.mc_regs[FRAME_T12] = (unsigned long)_ctx_start; - } -} diff --git a/lib/libc/alpha/gen/modf.c b/lib/libc/alpha/gen/modf.c deleted file mode 100644 index 37786dc..0000000 --- a/lib/libc/alpha/gen/modf.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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. - * - * $NetBSD: modf.c,v 1.1 1995/02/10 17:50:25 cgd Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#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); -} diff --git a/lib/libc/alpha/gen/rfork_thread.S b/lib/libc/alpha/gen/rfork_thread.S deleted file mode 100644 index 68b0233..0000000 --- a/lib/libc/alpha/gen/rfork_thread.S +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * Copyright (c) 2000 Peter Wemm <peter@FreeBSD.org> - * 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. - */ - -#include <machine/asm.h> -__FBSDID("$FreeBSD$"); - -#include "SYS.h" -#include <sys/syscall.h> -/* #include <machine/pal.h> */ - -/* - * This is pretty evil and based mostly on examples from other syscall - * stubs and code that gcc generated. Correctness is uncertain, but it - * seems to work quite happily. - */ -LEAF(rfork_thread, 1) - br gp,L1 /* XXX profiling */ -L1: - LDGP(pv) - lda sp,-16(sp) - stq ra,0(sp) - mov a3,a5 - CALLSYS_ERROR(rfork) - beq v0,$child - addl v0,zero,v0 - ldq ra,0(sp) - lda sp,16(sp) - RET -$child: - mov a1,sp - lda sp,-16(sp) - stq zero,0(sp) - mov a5,a0 - mov a2,t12 - jsr ra,(t12),0 - ldgp gp,0(ra) - mov v0,a0 -#ifdef SYS_exit - CALLSYS_NOERROR(exit) -#else - CALLSYS_NOERROR(sys_exit) -#endif -END(rfork_thread) diff --git a/lib/libc/alpha/gen/setjmp.S b/lib/libc/alpha/gen/setjmp.S deleted file mode 100644 index 779684d..0000000 --- a/lib/libc/alpha/gen/setjmp.S +++ /dev/null @@ -1,138 +0,0 @@ -/* $NetBSD: setjmp.S,v 1.3 1997/12/05 02:06:27 thorpej 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> -__FBSDID("$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. - */ - - .set noreorder - -LEAF(setjmp, 1) - 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 t12,((27 + 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 */ - CALL(_sigprocmask) /* see what's blocked */ - - lda sp, -24(sp) /* sizeof struct sigaltstack */ - mov zero, a0 - mov sp, a1 - CALL(_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, 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 -END(setjmp) - -XLEAF(longjmp, 2) -LEAF(__longjmp, 2) - LDGP(pv) - mov a1, s1 /* save return value */ - mov a0, s0 /* save the sc pointer */ - /* restore the mask */ - mov zero, a2 /* oset: NULL */ - lda a1, (71 * 8)(a0) /* set: sc_reserved */ - addq a2, 3, a0 /* how: SIG_SET */ - CALL(_sigprocmask) /* restore the mask */ - mov s0, a0 /* restore the sc pointer */ - mov s1, a1 /* restore the return value */ - jmp zero, ___longjmp /* use ___longjmp to return */ - -botch: - CALL(longjmperror) - CALL(abort) - RET /* "can't" get here... */ -END(__longjmp) diff --git a/lib/libc/alpha/gen/signalcontext.c b/lib/libc/alpha/gen/signalcontext.c deleted file mode 100644 index a3f6397..0000000 --- a/lib/libc/alpha/gen/signalcontext.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2003 Marcel Moolenaar - * 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 ``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 <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/ucontext.h> -#include <signal.h> -#include <stdlib.h> -#include <strings.h> - -typedef void (*handler_t)(uint64_t, uint64_t, uint64_t); - -/* Prototypes */ -static void ctx_wrapper(ucontext_t *ucp, handler_t func, uint64_t *args); - -__weak_reference(__signalcontext, signalcontext); - -int -__signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func) -{ - uint64_t *args; - siginfo_t *sig_si; - ucontext_t *sig_uc; - uint64_t sp; - - /* Bail out if we don't have a valid ucontext pointer. */ - if (ucp == NULL) - abort(); - - /* - * Build a signal frame and copy the arguments of signal handler - * 'func' onto the stack. We only need 3 arguments, but we - * create room for 4 so that we are 16-byte aligned. - */ - sp = (ucp->uc_mcontext.mc_regs[FRAME_SP] - sizeof(ucontext_t)) & ~15UL; - sig_uc = (ucontext_t *)sp; - bcopy(ucp, sig_uc, sizeof(*sig_uc)); - sp = (sp - sizeof(siginfo_t)) & ~15UL; - sig_si = (siginfo_t *)sp; - bzero(sig_si, sizeof(*sig_si)); - sig_si->si_signo = sig; - sp -= 4 * sizeof(uint64_t); - args = (uint64_t *)sp; - args[0] = sig; - args[1] = (intptr_t)sig_si; - args[2] = (intptr_t)sig_uc; - args[3] = 0; - - /* - * Setup the ucontext of the signal handler. - */ - bzero(&ucp->uc_mcontext, sizeof(ucp->uc_mcontext)); - ucp->uc_link = sig_uc; - sigdelset(&ucp->uc_sigmask, sig); - - ucp->uc_mcontext.mc_format = _MC_REV0_TRAPFRAME; - ucp->uc_mcontext.mc_regs[FRAME_A0] = (register_t)ucp; - ucp->uc_mcontext.mc_regs[FRAME_A1] = (register_t)func; - ucp->uc_mcontext.mc_regs[FRAME_A1] = (register_t)args; - ucp->uc_mcontext.mc_regs[FRAME_SP] = (register_t)sp; - ucp->uc_mcontext.mc_regs[FRAME_PC] = (register_t)ctx_wrapper; - ucp->uc_mcontext.mc_regs[FRAME_RA] = (register_t)ctx_wrapper; - ucp->uc_mcontext.mc_regs[FRAME_T12] = (register_t)ctx_wrapper; - return (0); -} - -static void -ctx_wrapper(ucontext_t *ucp, handler_t func, uint64_t *args) -{ - - (*func)(args[0], args[1], args[2]); - if (ucp->uc_link == NULL) - exit(0); - setcontext((const ucontext_t *)ucp->uc_link); - /* should never get here */ - abort(); - /* NOTREACHED */ -} diff --git a/lib/libc/alpha/gen/sigsetjmp.S b/lib/libc/alpha/gen/sigsetjmp.S deleted file mode 100644 index 0f7e400..0000000 --- a/lib/libc/alpha/gen/sigsetjmp.S +++ /dev/null @@ -1,64 +0,0 @@ -/* $NetBSD: sigsetjmp.S,v 1.2 1996/10/17 03:08:07 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 <machine/asm.h> -__FBSDID("$FreeBSD$"); - -/* - * 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. - */ - - .set noreorder - -LEAF(sigsetjmp, 2) - 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 -END(sigsetjmp) - -XLEAF(siglongjmp, 2) -LEAF(__siglongjmp, 2) - LDGP(pv) - ldq t0, (81 * 8)(a0) /* get the mask */ - bne t0, Lrestoresig /* if !zero, restore signals */ - jmp zero, ___longjmp -Lrestoresig: - jmp zero, __longjmp -END(__siglongjmp) |