diff options
Diffstat (limited to 'lib/libc/alpha')
-rw-r--r-- | lib/libc/alpha/SYS.h | 4 | ||||
-rw-r--r-- | lib/libc/alpha/gen/Makefile.inc | 8 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpgetmask.c | 11 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpgetround.c | 7 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpgetsticky.c | 10 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpsetmask.c | 12 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpsetround.c | 17 | ||||
-rw-r--r-- | lib/libc/alpha/gen/fpsetsticky.c | 16 | ||||
-rw-r--r-- | lib/libc/alpha/gen/setjmp.S | 2 | ||||
-rw-r--r-- | lib/libc/alpha/sys/cerror.S | 6 |
10 files changed, 33 insertions, 60 deletions
diff --git a/lib/libc/alpha/SYS.h b/lib/libc/alpha/SYS.h index 01d114d2903a3..cfc0909d8d321 100644 --- a/lib/libc/alpha/SYS.h +++ b/lib/libc/alpha/SYS.h @@ -1,4 +1,4 @@ -/* $Id: SYS.h,v 1.4 1998/12/23 11:50:51 dfr Exp $ */ +/* $Id: SYS.h,v 1.2 1998/06/09 22:43:34 jb Exp $ */ /* From: NetBSD: SYS.h,v 1.5 1997/05/02 18:15:15 kleink Exp */ /* @@ -41,7 +41,7 @@ LLABEL(name,0): \ LDGP(gp); \ beq a3, LLABEL(name,1); \ - jmp zero, .cerror; \ + jmp zero, cerror; \ LLABEL(name,1): diff --git a/lib/libc/alpha/gen/Makefile.inc b/lib/libc/alpha/gen/Makefile.inc index cc7a87c10cffd..3ff99f0014397 100644 --- a/lib/libc/alpha/gen/Makefile.inc +++ b/lib/libc/alpha/gen/Makefile.inc @@ -1,8 +1,10 @@ -# $Id: Makefile.inc,v 1.4 1998/08/17 03:38:54 jb Exp $ +# $Id: Makefile.inc,v 1.3 1998/08/08 02:18:07 jb Exp $ SRCS+= _setjmp.S fabs.S frexp.c infinity.c isinf.c ldexp.c modf.c setjmp.S -SRCS+= flt_rounds.c fpgetmask.c fpgetround.c fpgetsticky.c fpsetmask.c \ - fpsetround.c fpsetsticky.c +SRCS+= flt_rounds.c + +#SRCS+= flt_rounds.c fpgetmask.c fpgetround.c fpgetsticky.c fpsetmask.c \ +# fpsetround.c fpsetsticky.c SRCS+= sigsetjmp.S SRCS+= __divqu.S __divq.S __divlu.S __divl.S diff --git a/lib/libc/alpha/gen/fpgetmask.c b/lib/libc/alpha/gen/fpgetmask.c index 516ae981d55c7..c52a7ef071129 100644 --- a/lib/libc/alpha/gen/fpgetmask.c +++ b/lib/libc/alpha/gen/fpgetmask.c @@ -31,19 +31,12 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/types.h> #include <ieeefp.h> -#include <machine/sysarch.h> - -struct params { - u_int64_t mask; -}; fp_except fpgetmask() { - struct params p; - sysarch(ALPHA_GET_FPMASK, (char *) &p); - return((fp_except) p.mask); + /* XXX */ + abort(); } diff --git a/lib/libc/alpha/gen/fpgetround.c b/lib/libc/alpha/gen/fpgetround.c index 46976c2e4c11e..39b9b4744a6be 100644 --- a/lib/libc/alpha/gen/fpgetround.c +++ b/lib/libc/alpha/gen/fpgetround.c @@ -33,7 +33,6 @@ #include <sys/types.h> #include <ieeefp.h> -#include <machine/fpu.h> fp_rnd fpgetround() @@ -41,8 +40,10 @@ fpgetround() double fpcrval; u_int64_t old; - GET_FPCR(fpcrval); + __asm__("trapb"); + __asm__("mf_fpcr %0" : "=f" (fpcrval)); + __asm__("trapb"); old = *(u_int64_t *)&fpcrval; - return ((old & FPCR_DYN_MASK) >> FPCR_DYN_SHIFT); + return ((old >> 58) & 0x3); } diff --git a/lib/libc/alpha/gen/fpgetsticky.c b/lib/libc/alpha/gen/fpgetsticky.c index c0ff4d75c88ab..c36db3913d5ff 100644 --- a/lib/libc/alpha/gen/fpgetsticky.c +++ b/lib/libc/alpha/gen/fpgetsticky.c @@ -31,18 +31,12 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/types.h> #include <ieeefp.h> -#include <machine/fpu.h> fp_except fpgetsticky() { - double fpcrval; - u_int64_t old; - GET_FPCR(fpcrval); - old = *(u_int64_t *)&fpcrval; - return (((old >> IEEE_STATUS_TO_FPCR_SHIFT) & IEEE_STATUS_MASK) - >> IEEE_STATUS_TO_EXCSUM_SHIFT); + /* XXX */ + abort(); } diff --git a/lib/libc/alpha/gen/fpsetmask.c b/lib/libc/alpha/gen/fpsetmask.c index 05201ce81d405..87fc5a2f4b4ce 100644 --- a/lib/libc/alpha/gen/fpsetmask.c +++ b/lib/libc/alpha/gen/fpsetmask.c @@ -31,21 +31,13 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/types.h> #include <ieeefp.h> -#include <machine/sysarch.h> - -struct params { - u_int64_t mask; -}; fp_except fpsetmask(mask) fp_except mask; { - struct params p; - p.mask = (u_int64_t) mask; - sysarch(ALPHA_SET_FPMASK, (char *) &p); - return ((fp_except) p.mask); + /* XXX */ + abort(); } diff --git a/lib/libc/alpha/gen/fpsetround.c b/lib/libc/alpha/gen/fpsetround.c index 0d8f40af6d651..c28093cad87c1 100644 --- a/lib/libc/alpha/gen/fpsetround.c +++ b/lib/libc/alpha/gen/fpsetround.c @@ -33,7 +33,6 @@ #include <sys/types.h> #include <ieeefp.h> -#include <machine/fpu.h> fp_rnd fpsetround(rnd_dir) @@ -42,14 +41,18 @@ fpsetround(rnd_dir) double fpcrval; u_int64_t old, new; - GET_FPCR(fpcrval); + __asm__("trapb"); + __asm__("mf_fpcr %0" : "=f" (fpcrval)); + __asm__("trapb"); old = *(u_int64_t *)&fpcrval; - new = old & (~FPCR_DYN_MASK); - new |= ((long) rnd_dir << FPCR_DYN_SHIFT) & FPCR_DYN_MASK; - + new = old & ~(long)0x0c00000000000000; + new = (long)rnd_dir << 58; *(u_int64_t *)&fpcrval = new; - SET_FPCR(fpcrval); - return ((old & FPCR_DYN_MASK) >> FPCR_DYN_SHIFT); + __asm__("trapb"); + __asm__("mt_fpcr %0" : : "f" (fpcrval)); + __asm__("trapb"); + + return ((old >> 58) & 0x3); } diff --git a/lib/libc/alpha/gen/fpsetsticky.c b/lib/libc/alpha/gen/fpsetsticky.c index ae0d742f79f06..90a993ee642a0 100644 --- a/lib/libc/alpha/gen/fpsetsticky.c +++ b/lib/libc/alpha/gen/fpsetsticky.c @@ -31,25 +31,13 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/types.h> #include <ieeefp.h> -#include <machine/fpu.h> fp_except fpsetsticky(sticky) fp_except sticky; { - double fpcrval; - u_int64_t old,new ; - GET_FPCR(fpcrval); - old = *(u_int64_t *)&fpcrval; - new = old & ~ (IEEE_STATUS_MASK << IEEE_STATUS_TO_FPCR_SHIFT); - new |= ((sticky << IEEE_STATUS_TO_EXCSUM_SHIFT) & IEEE_STATUS_MASK) - << IEEE_STATUS_TO_FPCR_SHIFT; - *(u_int64_t *)&fpcrval = new; - SET_FPCR(fpcrval); - - return (((old >> IEEE_STATUS_TO_FPCR_SHIFT) & IEEE_STATUS_MASK) - >> IEEE_STATUS_TO_EXCSUM_SHIFT); + /* XXX */ + abort(); } diff --git a/lib/libc/alpha/gen/setjmp.S b/lib/libc/alpha/gen/setjmp.S index a6d10836ae954..86dbb38f1b903 100644 --- a/lib/libc/alpha/gen/setjmp.S +++ b/lib/libc/alpha/gen/setjmp.S @@ -68,7 +68,7 @@ LEAF(setjmp, 1) lda sp, -24(sp) /* sizeof struct sigaltstack */ mov zero, a0 mov sp, a1 - PCALL(sigaltstack) + 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 */ diff --git a/lib/libc/alpha/sys/cerror.S b/lib/libc/alpha/sys/cerror.S index 63771c0ffa080..cce30068de6ca 100644 --- a/lib/libc/alpha/sys/cerror.S +++ b/lib/libc/alpha/sys/cerror.S @@ -1,4 +1,4 @@ -/* $Id: cerror.S,v 1.3 1998/12/23 11:50:51 dfr Exp $ */ +/* $Id$ */ /* From: NetBSD: cerror.S,v 1.4 1996/11/08 00:52:46 cgd Exp */ /* @@ -34,7 +34,7 @@ #define FRAME_RA_OFFSET 0 #define FRAME_V0_OFFSET 8 -NESTED(.cerror, 0, FRAME_SIZE, ra, IM_RA|IM_V0, 0) +NESTED(cerror, 0, FRAME_SIZE, ra, IM_RA|IM_V0, 0) br t0, L1 L1: LDGP(t0) @@ -51,4 +51,4 @@ L1: LDGP(t0) ldq ra, FRAME_RA_OFFSET(sp) lda sp, FRAME_SIZE(sp) RET -END(.cerror) +END(cerror) |