summaryrefslogtreecommitdiff
path: root/sysdeps/alpha
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/alpha')
-rw-r--r--sysdeps/alpha/__math.h2
-rw-r--r--sysdeps/alpha/_mcount.S9
-rw-r--r--sysdeps/alpha/bb_init_func.S18
-rw-r--r--sysdeps/alpha/bsd-setjmp.S8
-rw-r--r--sysdeps/alpha/copysign.S29
-rw-r--r--sysdeps/alpha/divl.S2
-rw-r--r--sysdeps/alpha/divlu.S2
-rw-r--r--sysdeps/alpha/divq.S2
-rw-r--r--sysdeps/alpha/divqu.S2
-rw-r--r--sysdeps/alpha/divrem.h (renamed from sysdeps/alpha/divrem.S)23
-rw-r--r--sysdeps/alpha/fabs.S27
-rw-r--r--sysdeps/alpha/ffs.S5
-rw-r--r--sysdeps/alpha/htonl.S24
-rw-r--r--sysdeps/alpha/htons.S12
-rw-r--r--sysdeps/alpha/memchr.S7
-rw-r--r--sysdeps/alpha/reml.S2
-rw-r--r--sysdeps/alpha/remlu.S2
-rw-r--r--sysdeps/alpha/remq.S2
-rw-r--r--sysdeps/alpha/remqu.S2
-rw-r--r--sysdeps/alpha/setjmp.S13
-rw-r--r--sysdeps/alpha/strlen.S5
-rw-r--r--sysdeps/alpha/udiv_qrnnd.S12
22 files changed, 133 insertions, 77 deletions
diff --git a/sysdeps/alpha/__math.h b/sysdeps/alpha/__math.h
index 9aea9d7097..50d8ac3b0a 100644
--- a/sysdeps/alpha/__math.h
+++ b/sysdeps/alpha/__math.h
@@ -46,7 +46,7 @@ extern __inline double
cabs (struct __cabs_complex __z)
{
extern double __hypot (double, double);
- return __hypot(__z.__x, __z.__y);
+ return __hypot(__z.x, __z.y);
}
#endif
diff --git a/sysdeps/alpha/_mcount.S b/sysdeps/alpha/_mcount.S
index 2d6e2ed532..7944544e18 100644
--- a/sysdeps/alpha/_mcount.S
+++ b/sysdeps/alpha/_mcount.S
@@ -34,18 +34,15 @@ holds the return address of the function's caller (selfpc and frompc,
respectively in gmon.c language...). */
#include <sysdep.h>
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-# include <regdef.h>
-#endif
#undef ret /* discard `ret' as defined in sysdep.h */
.set noat
.set noreorder
-ENTRY(_mcount)
+LEAF(_mcount, 0xb0)
+ .prologue 0
+
subq sp, 0xb0, sp
stq a0, 0x00(sp)
mov ra, a0 # a0 = caller-pc
diff --git a/sysdeps/alpha/bb_init_func.S b/sysdeps/alpha/bb_init_func.S
index 9bf985ccc0..cd860b8303 100644
--- a/sysdeps/alpha/bb_init_func.S
+++ b/sysdeps/alpha/bb_init_func.S
@@ -24,11 +24,6 @@ caller-saved (call-used) registers (except for argument registers
a1-a5). */
#include <sysdep.h>
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-# include <regdef.h>
-#endif
/*
* These offsets should match with "struct bb" declared in gcc/libgcc2.c.
@@ -40,12 +35,19 @@ a1-a5). */
.set noreorder
ENTRY(__bb_init_func)
+ .prologue 0
+
ldq t0, ZERO_WORD(a0) /* t0 <- blocks->zero_word */
beq t0, init /* not initialized yet -> */
ret
+
+ .end __bb_init_func
+
+LEAF(init, 0x38)
+ subq sp, 0x38, sp
+ .prologue 0
-init: subq sp, 0x38, sp
stq pv, 0x30(sp)
br pv, 1f
1: ldgp gp, 0(pv)
@@ -81,5 +83,5 @@ init: subq sp, 0x38, sp
leave: ldq pv, 0x30(sp)
addq sp, 0x38, sp
ret
-
- .end __bb_init_func
+
+ .end init
diff --git a/sysdeps/alpha/bsd-setjmp.S b/sysdeps/alpha/bsd-setjmp.S
index 470f7bc47d..113bc47c88 100644
--- a/sysdeps/alpha/bsd-setjmp.S
+++ b/sysdeps/alpha/bsd-setjmp.S
@@ -23,8 +23,8 @@ Cambridge, MA 02139, USA. */
#include <sysdep.h>
-ENTRY (setjmp)
- lda $27, __sigsetjmp /* Load address to jump to. */
- bis $31, 1, $17 /* Pass a second argument of one. */
- jmp $31, ($27), __sigsetjmp /* Call __sigsetjmp. */
+ENTRY(setjmp)
+ lda $27, __sigsetjmp /* Load address to jump to. */
+ bis $31, 1, $17 /* Pass a second argument of one. */
+ jmp $31, ($27), __sigsetjmp /* Call __sigsetjmp. */
.end setjmp
diff --git a/sysdeps/alpha/copysign.S b/sysdeps/alpha/copysign.S
new file mode 100644
index 0000000000..9e9dff3ed0
--- /dev/null
+++ b/sysdeps/alpha/copysign.S
@@ -0,0 +1,29 @@
+/* Copyright (C) 1996 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by David Mosberger <davidm@azstarnet.com>
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#include <sysdep.h>
+
+ENTRY(__copysign)
+ .prologue 0
+ cpys $f17,$f16,$f0
+ ret
+
+ .end __copysign
+
+weak_alias(__copysign, copysign)
diff --git a/sysdeps/alpha/divl.S b/sysdeps/alpha/divl.S
index 7dbb5048c7..6990665937 100644
--- a/sysdeps/alpha/divl.S
+++ b/sysdeps/alpha/divl.S
@@ -3,4 +3,4 @@
#define SIGNED 1
#define FUNC_NAME __divl
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/divlu.S b/sysdeps/alpha/divlu.S
index 9cc71da308..ee96c95008 100644
--- a/sysdeps/alpha/divlu.S
+++ b/sysdeps/alpha/divlu.S
@@ -3,4 +3,4 @@
#define SIGNED 0
#define FUNC_NAME __divlu
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/divq.S b/sysdeps/alpha/divq.S
index f7af8d62a3..bde3425f37 100644
--- a/sysdeps/alpha/divq.S
+++ b/sysdeps/alpha/divq.S
@@ -3,4 +3,4 @@
#define SIGNED 1
#define FUNC_NAME __divq
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/divqu.S b/sysdeps/alpha/divqu.S
index faf2932cb5..72dcf971dd 100644
--- a/sysdeps/alpha/divqu.S
+++ b/sysdeps/alpha/divqu.S
@@ -3,4 +3,4 @@
#define SIGNED 0
#define FUNC_NAME __divqu
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/divrem.S b/sysdeps/alpha/divrem.h
index e6293bf355..ee7f64ef1e 100644
--- a/sysdeps/alpha/divrem.S
+++ b/sysdeps/alpha/divrem.h
@@ -103,10 +103,29 @@ clobbered (assembly temporary), anything else must be saved. */
.ent FUNC_NAME
.globl FUNC_NAME
+#define FRAME_SIZE 0x30
+
.align 5
FUNC_NAME:
-# define FRAME_SIZE 0x30
- .frame sp,FRAME_SIZE,ra,0
+#ifdef PROF
+ lda sp, -0x18(sp)
+ stq ra, 0x00(sp)
+ stq pv, 0x08(sp)
+ stq gp, 0x10(sp)
+
+ br AT, 1f
+1: ldgp gp, 0(AT)
+ lda AT, _mcount
+
+ mov retaddr, ra
+ jsr AT, (AT), _mcount
+
+ ldq ra, 0x00(sp)
+ ldq pv, 0x08(sp)
+ ldq gp, 0x10(sp)
+ lda sp, 0x18(sp)
+#endif
+ .frame sp, FRAME_SIZE, ra, 0
lda sp,-FRAME_SIZE(sp)
.prologue 1
stq arg1,0x00(sp)
diff --git a/sysdeps/alpha/fabs.S b/sysdeps/alpha/fabs.S
new file mode 100644
index 0000000000..88e64b4718
--- /dev/null
+++ b/sysdeps/alpha/fabs.S
@@ -0,0 +1,27 @@
+/* Copyright (C) 1996 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by David Mosberger <davidm@azstarnet.com>
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#include <sysdep.h>
+
+ENTRY(fabs)
+ .prologue 0
+ cpys $f31,$f16,$f0
+ ret
+
+ .end fabs
diff --git a/sysdeps/alpha/ffs.S b/sysdeps/alpha/ffs.S
index 7676b85aaa..7cf6281682 100644
--- a/sysdeps/alpha/ffs.S
+++ b/sysdeps/alpha/ffs.S
@@ -22,11 +22,6 @@ Cambridge, MA 02139, USA. */
architecture. */
#include <sysdep.h>
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-#include <regdef.h>
-#endif
.set noreorder
.set noat
diff --git a/sysdeps/alpha/htonl.S b/sysdeps/alpha/htonl.S
index d0bf7e1718..8c1c700212 100644
--- a/sysdeps/alpha/htonl.S
+++ b/sysdeps/alpha/htonl.S
@@ -17,22 +17,18 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <sysdep.h>
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-#include <regdef.h>
-#endif
ENTRY(__htonl)
- extlh a0,5,t1 # t1 = dd000000
- zap a0,0xfd,t2 # t2 = 0000cc00
- sll t2,5,t2 # t2 = 00198000
- s8addl t2,t1,t1 # t1 = ddcc0000
- zap a0,0xfb,t2 # t2 = 00bb0000
- srl t2,8,t2 # t2 = 0000bb00
- extbl a0,3,v0 # v0 = 000000aa
- or t1,v0,v0 # v0 = ddcc00aa
- or t2,v0,v0 # v0 = ddccbbaa
+ .prologue 0
+ extlh a0, 5, t1 # t1 = dd000000
+ zap a0, 0xfd, t2 # t2 = 0000cc00
+ sll t2, 5, t2 # t2 = 00198000
+ s8addl t2, t1, t1 # t1 = ddcc0000
+ zap a0, 0xfb, t2 # t2 = 00bb0000
+ srl t2, 8, t2 # t2 = 0000bb00
+ extbl a0, 3, v0 # v0 = 000000aa
+ or t1, v0, v0 # v0 = ddcc00aa
+ or t2, v0, v0 # v0 = ddccbbaa
ret
.end __htonl
diff --git a/sysdeps/alpha/htons.S b/sysdeps/alpha/htons.S
index 6e18c7c441..cb22b21661 100644
--- a/sysdeps/alpha/htons.S
+++ b/sysdeps/alpha/htons.S
@@ -17,16 +17,12 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <sysdep.h>
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-#include <regdef.h>
-#endif
ENTRY(__htons)
- extwh a0,7,t1 # t1 = bb00
- extbl a0,1,v0 # v0 = 00aa
- bis v0,t1,v0 # v0 = bbaa
+ .prologue 0
+ extwh a0, 7, t1 # t1 = bb00
+ extbl a0, 1, v0 # v0 = 00aa
+ bis v0, t1, v0 # v0 = bbaa
ret
.end __htons
diff --git a/sysdeps/alpha/memchr.S b/sysdeps/alpha/memchr.S
index 118a1f13d1..2f78697418 100644
--- a/sysdeps/alpha/memchr.S
+++ b/sysdeps/alpha/memchr.S
@@ -35,16 +35,13 @@ For correctness consider that:
*/
#include <sysdep.h>
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-#include <regdef.h>
-#endif
.set noreorder
.set noat
ENTRY(memchr)
+ .prologue 0
+
beq a2, not_found
ldq_u t0, 0(a0) # load first quadword (a0 may be misaligned)
addq a0, a2, t4
diff --git a/sysdeps/alpha/reml.S b/sysdeps/alpha/reml.S
index cede136acd..b631a02c31 100644
--- a/sysdeps/alpha/reml.S
+++ b/sysdeps/alpha/reml.S
@@ -3,4 +3,4 @@
#define SIGNED 1
#define FUNC_NAME __reml
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/remlu.S b/sysdeps/alpha/remlu.S
index 3658d92bc1..8d527e4678 100644
--- a/sysdeps/alpha/remlu.S
+++ b/sysdeps/alpha/remlu.S
@@ -3,4 +3,4 @@
#define SIGNED 0
#define FUNC_NAME __remlu
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/remq.S b/sysdeps/alpha/remq.S
index 61f2067383..8bd9f334f4 100644
--- a/sysdeps/alpha/remq.S
+++ b/sysdeps/alpha/remq.S
@@ -3,4 +3,4 @@
#define SIGNED 1
#define FUNC_NAME __remq
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/remqu.S b/sysdeps/alpha/remqu.S
index e22d5ac1c8..14a7486148 100644
--- a/sysdeps/alpha/remqu.S
+++ b/sysdeps/alpha/remqu.S
@@ -3,4 +3,4 @@
#define SIGNED 0
#define FUNC_NAME __remqu
-#include "divrem.S"
+#include "divrem.h"
diff --git a/sysdeps/alpha/setjmp.S b/sysdeps/alpha/setjmp.S
index 04b8068eb9..b165d2c2c8 100644
--- a/sysdeps/alpha/setjmp.S
+++ b/sysdeps/alpha/setjmp.S
@@ -22,9 +22,12 @@ Cambridge, MA 02139, USA. */
reliably access the stack or frame pointers, so we pass them in as
extra arguments. */
ENTRY (__sigsetjmp)
- ldgp $29, 0($27)
- lda $27, __sigsetjmp_aux/* Load address to jump to. */
- bis $30, $30, $18 /* Pass SP as 3rd arg. */
- bis $15, $15, $19 /* Pass FP as 4th arg. */
- jmp $31, ($27), __sigsetjmp_aux /* Call __sigsetjmp_aux. */
+ ldgp $29, 0($27)
+ .prologue 1
+
+ lda $27, __sigsetjmp_aux /* Load address to jump to. */
+ bis $30, $30, $18 /* Pass SP as 3rd arg. */
+ bis $15, $15, $19 /* Pass FP as 4th arg. */
+ jmp $31, ($27), __sigsetjmp_aux /* Call __sigsetjmp_aux. */
+
.end __sigsetjmp
diff --git a/sysdeps/alpha/strlen.S b/sysdeps/alpha/strlen.S
index 7e6a61be8c..c64126164a 100644
--- a/sysdeps/alpha/strlen.S
+++ b/sysdeps/alpha/strlen.S
@@ -29,11 +29,6 @@ architecture:
binary search needs). */
#include <sysdep.h>
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-#include <regdef.h>
-#endif
.set noreorder
.set noat
diff --git a/sysdeps/alpha/udiv_qrnnd.S b/sysdeps/alpha/udiv_qrnnd.S
index d3d2cee93d..eb134f25c7 100644
--- a/sysdeps/alpha/udiv_qrnnd.S
+++ b/sysdeps/alpha/udiv_qrnnd.S
@@ -19,15 +19,15 @@
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA.
+#include <sysdep.h>
.set noreorder
.set noat
-.text
- .align 3
- .globl __udiv_qrnnd
- .ent __udiv_qrnnd
-__udiv_qrnnd:
- .frame $30,0,$26,0
+
+ .text
+
+LEAF(__udiv_qrnnd, 0)
+
.prologue 0
#define cnt $2
#define tmp $3