summaryrefslogtreecommitdiff
path: root/sysdeps/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/sparc')
-rw-r--r--sysdeps/sparc/bsd-_setjmp.S31
-rw-r--r--sysdeps/sparc/bsd-setjmp.S32
-rw-r--r--sysdeps/sparc/rem.S68
-rw-r--r--sysdeps/sparc/sdiv.S68
-rw-r--r--sysdeps/sparc/setjmp.S1
-rw-r--r--sysdeps/sparc/sparc64/add_n.s58
-rw-r--r--sysdeps/sparc/sparc64/addmul_1.s89
-rw-r--r--sysdeps/sparc/sparc64/gmp-mparam.h27
-rw-r--r--sysdeps/sparc/sparc64/lshift.s96
-rw-r--r--sysdeps/sparc/sparc64/mul_1.s86
-rw-r--r--sysdeps/sparc/sparc64/rshift.s93
-rw-r--r--sysdeps/sparc/sparc64/sub_n.s58
-rw-r--r--sysdeps/sparc/sparc64/submul_1.s89
-rw-r--r--sysdeps/sparc/sys/trap.h7
-rw-r--r--sysdeps/sparc/udiv.S68
-rw-r--r--sysdeps/sparc/urem.S68
16 files changed, 157 insertions, 782 deletions
diff --git a/sysdeps/sparc/bsd-_setjmp.S b/sysdeps/sparc/bsd-_setjmp.S
index 522fe0e3a1..bf49765f4d 100644
--- a/sysdeps/sparc/bsd-_setjmp.S
+++ b/sysdeps/sparc/bsd-_setjmp.S
@@ -20,24 +20,21 @@
#include <sysdep.h>
ENTRY (_setjmp)
+
#ifdef PIC
-1:
- jmpl 2f,%o1
- nop
-2:
- sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)),%l7
- or %l7,%lo(_GLOBAL_OFFSET_TABLE_-(1b-.)),%l7
- add %l7,%o1,%l7
- sethi %hi(C_SYMBOL_NAME (__sigsetjmp)),%g1
- or %g1,%lo(C_SYMBOL_NAME (__sigsetjmp)),%g1
- ld [%l7+%g1],%g1
- ld [%g1],%g1
- jmpl %g1,%g0
- mov %g0,%o1 /* Pass second argument of zero */
+ save %sp, -64, %sp
+1: call 2f
+ sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %g1
+2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %g1
+ add %g1, %o7, %g1
+ sethi %hi(C_SYMBOL_NAME(__sigsetjmp)), %g2
+ restore
+ or %g2, %lo(C_SYMBOL_NAME(__sigsetjmp)), %g2
+ ld [%g1+%g2], %g1
#else
+ sethi %hi(C_SYMBOL_NAME(__sigsetjmp)), %g1
+ or %g1, %lo(C_SYMBOL_NAME(__sigsetjmp)), %g1
+#endif
- sethi %hi(C_SYMBOL_NAME (__sigsetjmp)), %g1
- or %lo(C_SYMBOL_NAME (__sigsetjmp)), %g1, %g1
jmp %g1
- mov %g0, %o1 /* Pass second argument of zero. */
-#endif
+ mov %g0, %o1 /* Pass second argument of zero. */
diff --git a/sysdeps/sparc/bsd-setjmp.S b/sysdeps/sparc/bsd-setjmp.S
index 09aee661da..16dc260765 100644
--- a/sysdeps/sparc/bsd-setjmp.S
+++ b/sysdeps/sparc/bsd-setjmp.S
@@ -20,23 +20,21 @@
#include <sysdep.h>
ENTRY (setjmp)
+
#ifdef PIC
-1:
- jmpl 2f,%o1
- nop
-2:
- sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)),%l7
- or %l7,%lo(_GLOBAL_OFFSET_TABLE_-(1b-.)),%l7
- add %l7,%o1,%l7
- sethi %hi(C_SYMBOL_NAME (__sigsetjmp)),%g1
- or %g1,%lo(C_SYMBOL_NAME (__sigsetjmp)),%g1
- ld [%l7+%g1],%g1
- ld [%g1],%g1
- jmpl %g1,%g0
- mov 1,%o1
+ save %sp, -64, %sp
+1: call 2f
+ sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %g1
+2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %g1
+ add %g1, %o7, %g1
+ sethi %hi(C_SYMBOL_NAME(__sigsetjmp)), %g2
+ restore
+ or %g2, %lo(C_SYMBOL_NAME(__sigsetjmp)), %g2
+ ld [%g1+%g2], %g1
#else
- sethi %hi(C_SYMBOL_NAME (__sigsetjmp)), %g1
- or %lo(C_SYMBOL_NAME (__sigsetjmp)), %g1, %g1
- jmp %g1
- mov 1, %o1 /* Pass second argument of one. */
+ sethi %hi(C_SYMBOL_NAME(__sigsetjmp)), %g1
+ or %g1, %lo(C_SYMBOL_NAME(__sigsetjmp)), %g1
#endif
+
+ jmp %g1
+ mov 1, %o1 /* Pass second argument of one. */
diff --git a/sysdeps/sparc/rem.S b/sysdeps/sparc/rem.S
index 565fc0f678..05916f0b06 100644
--- a/sysdeps/sparc/rem.S
+++ b/sysdeps/sparc/rem.S
@@ -38,15 +38,7 @@
#include "DEFS.h"
-#ifdef __linux__
-#include <asm/traps.h>
-#else
-#ifdef __svr4__
#include <sys/trap.h>
-#else
-#include <machine/trap.h>
-#endif
-#endif
FUNC(.rem)
! compute sign of result; if neither is negative, no problem
@@ -189,14 +181,14 @@ Ldivloop:
subcc %o3,%o5,%o3
b 9f
add %o2, (7*2+1), %o2
-
+
L.4.23:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (7*2-1), %o2
-
-
+
+
L.3.19:
! remainder is negative
addcc %o3,%o5,%o3
@@ -207,15 +199,15 @@ L.3.19:
subcc %o3,%o5,%o3
b 9f
add %o2, (5*2+1), %o2
-
+
L.4.21:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (5*2-1), %o2
-
-
-
+
+
+
L.2.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -231,14 +223,14 @@ L.2.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (3*2+1), %o2
-
+
L.4.19:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (3*2-1), %o2
-
-
+
+
L.3.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -249,16 +241,16 @@ L.3.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (1*2+1), %o2
-
+
L.4.17:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (1*2-1), %o2
-
-
-
-
+
+
+
+
L.1.16:
! remainder is negative
addcc %o3,%o5,%o3
@@ -279,14 +271,14 @@ L.1.16:
subcc %o3,%o5,%o3
b 9f
add %o2, (-1*2+1), %o2
-
+
L.4.15:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-1*2-1), %o2
-
-
+
+
L.3.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -297,15 +289,15 @@ L.3.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-3*2+1), %o2
-
+
L.4.13:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-3*2-1), %o2
-
-
-
+
+
+
L.2.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -321,14 +313,14 @@ L.2.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-5*2+1), %o2
-
+
L.4.11:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-5*2-1), %o2
-
-
+
+
L.3.13:
! remainder is negative
addcc %o3,%o5,%o3
@@ -339,16 +331,16 @@ L.3.13:
subcc %o3,%o5,%o3
b 9f
add %o2, (-7*2+1), %o2
-
+
L.4.9:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-7*2-1), %o2
-
-
-
-
+
+
+
+
9:
Lend_regular_divide:
subcc %o4, 1, %o4
diff --git a/sysdeps/sparc/sdiv.S b/sysdeps/sparc/sdiv.S
index 7397e5edb8..910cea528a 100644
--- a/sysdeps/sparc/sdiv.S
+++ b/sysdeps/sparc/sdiv.S
@@ -38,15 +38,7 @@
#include "DEFS.h"
-#ifdef __linux__
-#include <asm/traps.h>
-#else
-#ifdef __svr4__
#include <sys/trap.h>
-#else
-#include <machine/trap.h>
-#endif
-#endif
FUNC(.div)
! compute sign of result; if neither is negative, no problem
@@ -189,14 +181,14 @@ Ldivloop:
subcc %o3,%o5,%o3
b 9f
add %o2, (7*2+1), %o2
-
+
L.4.23:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (7*2-1), %o2
-
-
+
+
L.3.19:
! remainder is negative
addcc %o3,%o5,%o3
@@ -207,15 +199,15 @@ L.3.19:
subcc %o3,%o5,%o3
b 9f
add %o2, (5*2+1), %o2
-
+
L.4.21:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (5*2-1), %o2
-
-
-
+
+
+
L.2.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -231,14 +223,14 @@ L.2.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (3*2+1), %o2
-
+
L.4.19:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (3*2-1), %o2
-
-
+
+
L.3.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -249,16 +241,16 @@ L.3.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (1*2+1), %o2
-
+
L.4.17:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (1*2-1), %o2
-
-
-
-
+
+
+
+
L.1.16:
! remainder is negative
addcc %o3,%o5,%o3
@@ -279,14 +271,14 @@ L.1.16:
subcc %o3,%o5,%o3
b 9f
add %o2, (-1*2+1), %o2
-
+
L.4.15:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-1*2-1), %o2
-
-
+
+
L.3.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -297,15 +289,15 @@ L.3.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-3*2+1), %o2
-
+
L.4.13:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-3*2-1), %o2
-
-
-
+
+
+
L.2.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -321,14 +313,14 @@ L.2.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-5*2+1), %o2
-
+
L.4.11:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-5*2-1), %o2
-
-
+
+
L.3.13:
! remainder is negative
addcc %o3,%o5,%o3
@@ -339,16 +331,16 @@ L.3.13:
subcc %o3,%o5,%o3
b 9f
add %o2, (-7*2+1), %o2
-
+
L.4.9:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-7*2-1), %o2
-
-
-
-
+
+
+
+
9:
Lend_regular_divide:
subcc %o4, 1, %o4
diff --git a/sysdeps/sparc/setjmp.S b/sysdeps/sparc/setjmp.S
index b80a83046e..772ec723a3 100644
--- a/sysdeps/sparc/setjmp.S
+++ b/sysdeps/sparc/setjmp.S
@@ -17,6 +17,7 @@
Boston, MA 02111-1307, USA. */
#include <sysdep.h>
+#include <sys/trap.h>
#define _ASM 1
#include <bits/setjmp.h>
diff --git a/sysdeps/sparc/sparc64/add_n.s b/sysdeps/sparc/sparc64/add_n.s
deleted file mode 100644
index 01d1f49564..0000000000
--- a/sysdeps/sparc/sparc64/add_n.s
+++ /dev/null
@@ -1,58 +0,0 @@
-! SPARC v9 __mpn_add_n -- Add two limb vectors of the same length > 0 and store
-! sum in a third limb vector.
-
-! Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-! MA 02111-1307, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr %o0
-! s1_ptr %o1
-! s2_ptr %o2
-! size %o3
-
-.section ".text"
- .align 4
- .global __mpn_add_n
- .type __mpn_add_n,#function
- .proc 04
-__mpn_add_n:
- sub %g0,%o3,%g3
- sllx %o3,3,%g1
- add %o1,%g1,%o1 ! make s1_ptr point at end
- add %o2,%g1,%o2 ! make s2_ptr point at end
- add %o0,%g1,%o0 ! make res_ptr point at end
- mov 0,%o4 ! clear carry variable
- sllx %g3,3,%o5 ! compute initial address index
-
-.Loop: ldx [%o2+%o5],%g1 ! load s2 limb
- add %g3,1,%g3 ! increment loop count
- ldx [%o1+%o5],%g2 ! load s1 limb
- addcc %g1,%o4,%g1 ! add s2 limb and carry variable
- movcc %xcc,0,%o4 ! if carry-out, o4 was 1; clear it
- addcc %g1,%g2,%g1 ! add s1 limb to sum
- stx %g1,[%o0+%o5] ! store result
- add %o5,8,%o5 ! increment address index
- brnz,pt %g3,.Loop
- movcs %xcc,1,%o4 ! if s1 add gave carry, record it
-
- retl
- mov %o4,%o0
-.LLfe1:
- .size __mpn_add_n,.LLfe1-__mpn_add_n
diff --git a/sysdeps/sparc/sparc64/addmul_1.s b/sysdeps/sparc/sparc64/addmul_1.s
deleted file mode 100644
index 8d86390808..0000000000
--- a/sysdeps/sparc/sparc64/addmul_1.s
+++ /dev/null
@@ -1,89 +0,0 @@
-! SPARC v9 __mpn_addmul_1 -- Multiply a limb vector with a single limb and
-! add the product to a second limb vector.
-
-! Copyright (C) 1996 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-! MA 02111-1307, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr o0
-! s1_ptr o1
-! size o2
-! s2_limb o3
-
-.section ".text"
- .align 4
- .global __mpn_addmul_1
- .type __mpn_addmul_1,#function
- .proc 016
-__mpn_addmul_1:
- !#PROLOGUE# 0
- save %sp,-160,%sp
- !#PROLOGUE# 1
- sub %g0,%i2,%o7
- sllx %o7,3,%g5
- sub %i1,%g5,%o3
- sub %i0,%g5,%o4
- mov 0,%o0 ! zero cy_limb
-
- srl %i3,0,%o1 ! extract low 32 bits of s2_limb
- srlx %i3,32,%i3 ! extract high 32 bits of s2_limb
- mov 1,%o2
- sllx %o2,32,%o2 ! o2 = 0x100000000
-
- ! hi !
- ! mid-1 !
- ! mid-2 !
- ! lo !
-.Loop:
- sllx %o7,3,%g1
- ldx [%o3+%g1],%g5
- srl %g5,0,%i0 ! zero hi bits
- srlx %g5,32,%g5
- mulx %o1,%i0,%i4 ! lo product
- mulx %i3,%i0,%i1 ! mid-1 product
- mulx %o1,%g5,%l2 ! mid-2 product
- mulx %i3,%g5,%i5 ! hi product
- srlx %i4,32,%i0 ! extract high 32 bits of lo product...
- add %i1,%i0,%i1 ! ...and add it to the mid-1 product
- addcc %i1,%l2,%i1 ! add mid products
- mov 0,%l0 ! we need the carry from that add...
- movcs %xcc,%o2,%l0 ! ...compute it and...
- add %i5,%l0,%i5 ! ...add to bit 32 of the hi product
- sllx %i1,32,%i0 ! align low bits of mid product
- srl %i4,0,%g5 ! zero high 32 bits of lo product
- add %i0,%g5,%i0 ! combine into low 64 bits of result
- srlx %i1,32,%i1 ! extract high bits of mid product...
- add %i5,%i1,%i1 ! ...and add them to the high result
- addcc %i0,%o0,%i0 ! add cy_limb to low 64 bits of result
- mov 0,%g5
- movcs %xcc,1,%g5
- add %o7,1,%o7
- ldx [%o4+%g1],%l1
- addcc %l1,%i0,%i0
- movcs %xcc,1,%g5
- stx %i0,[%o4+%g1]
- brnz %o7,.Loop
- add %i1,%g5,%o0 ! compute new cy_limb
-
- mov %o0,%i0
- ret
- restore
-.LLfe1:
- .size __mpn_addmul_1,.LLfe1-__mpn_addmul_1
diff --git a/sysdeps/sparc/sparc64/gmp-mparam.h b/sysdeps/sparc/sparc64/gmp-mparam.h
deleted file mode 100644
index a3c66974de..0000000000
--- a/sysdeps/sparc/sparc64/gmp-mparam.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* gmp-mparam.h -- Compiler/machine parameter header file.
-
-Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#define BITS_PER_MP_LIMB 64
-#define BYTES_PER_MP_LIMB 8
-#define BITS_PER_LONGINT 64
-#define BITS_PER_INT 32
-#define BITS_PER_SHORTINT 16
-#define BITS_PER_CHAR 8
diff --git a/sysdeps/sparc/sparc64/lshift.s b/sysdeps/sparc/sparc64/lshift.s
deleted file mode 100644
index ad1f667fa3..0000000000
--- a/sysdeps/sparc/sparc64/lshift.s
+++ /dev/null
@@ -1,96 +0,0 @@
-! SPARC v9 __mpn_lshift --
-
-! Copyright (C) 1996 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-! MA 02111-1307, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr %o0
-! src_ptr %o1
-! size %o2
-! cnt %o3
-
-.section ".text"
- .align 4
- .global __mpn_lshift
- .type __mpn_lshift,#function
- .proc 04
-__mpn_lshift:
- sllx %o2,3,%g1
- add %o1,%g1,%o1 ! make %o1 point at end of src
- ldx [%o1-8],%g2 ! load first limb
- sub %g0,%o3,%o5 ! negate shift count
- add %o0,%g1,%o0 ! make %o0 point at end of res
- add %o2,-1,%o2
- and %o2,4-1,%g4 ! number of limbs in first loop
- srlx %g2,%o5,%g1 ! compute function result
- brz,pn %g4,.L0 ! if multiple of 4 limbs, skip first loop
- stx %g1,[%sp+80]
-
- sub %o2,%g4,%o2 ! adjust count for main loop
-
-.Loop0: ldx [%o1-16],%g3
- add %o0,-8,%o0
- add %o1,-8,%o1
- add %g4,-1,%g4
- sllx %g2,%o3,%o4
- srlx %g3,%o5,%g1
- mov %g3,%g2
- or %o4,%g1,%o4
- brnz,pt %g4,.Loop0
- stx %o4,[%o0+0]
-
-.L0: brz,pn %o2,.Lend
- nop
-
-.Loop: ldx [%o1-16],%g3
- add %o0,-32,%o0
- add %o2,-4,%o2
- sllx %g2,%o3,%o4
- srlx %g3,%o5,%g1
-
- ldx [%o1-24],%g2
- sllx %g3,%o3,%g4
- or %o4,%g1,%o4
- stx %o4,[%o0+24]
- srlx %g2,%o5,%g1
-
- ldx [%o1-32],%g3
- sllx %g2,%o3,%o4
- or %g4,%g1,%g4
- stx %g4,[%o0+16]
- srlx %g3,%o5,%g1
-
- ldx [%o1-40],%g2
- sllx %g3,%o3,%g4
- or %o4,%g1,%o4
- stx %o4,[%o0+8]
- srlx %g2,%o5,%g1
-
- add %o1,-32,%o1
- or %g4,%g1,%g4
- brnz,pt %o2,.Loop
- stx %g4,[%o0+0]
-
-.Lend: sllx %g2,%o3,%g2
- stx %g2,[%o0-8]
- retl
- ldx [%sp+80],%o0
-.LLfe1:
- .size __mpn_lshift,.LLfe1-__mpn_lshift
diff --git a/sysdeps/sparc/sparc64/mul_1.s b/sysdeps/sparc/sparc64/mul_1.s
deleted file mode 100644
index 91d6eb01b8..0000000000
--- a/sysdeps/sparc/sparc64/mul_1.s
+++ /dev/null
@@ -1,86 +0,0 @@
-! SPARC v9 __mpn_mul_1 -- Multiply a limb vector with a single limb and
-! store the product in a second limb vector.
-
-! Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-! MA 02111-1307, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr o0
-! s1_ptr o1
-! size o2
-! s2_limb o3
-
-.section ".text"
- .align 4
- .global __mpn_mul_1
- .type __mpn_mul_1,#function
- .proc 016
-__mpn_mul_1:
- !#PROLOGUE# 0
- save %sp,-160,%sp
- !#PROLOGUE# 1
- sub %g0,%i2,%o7
- sllx %o7,3,%g5
- sub %i1,%g5,%o3
- sub %i0,%g5,%o4
- mov 0,%o0 ! zero cy_limb
-
- srl %i3,0,%o1 ! extract low 32 bits of s2_limb
- srlx %i3,32,%i3 ! extract high 32 bits of s2_limb
- mov 1,%o2
- sllx %o2,32,%o2 ! o2 = 0x100000000
-
- ! hi !
- ! mid-1 !
- ! mid-2 !
- ! lo !
-.Loop:
- sllx %o7,3,%g1
- ldx [%o3+%g1],%g5
- srl %g5,0,%i0 ! zero hi bits
- srlx %g5,32,%g5
- mulx %o1,%i0,%i4 ! lo product
- mulx %i3,%i0,%i1 ! mid-1 product
- mulx %o1,%g5,%l2 ! mid-2 product
- mulx %i3,%g5,%i5 ! hi product
- srlx %i4,32,%i0 ! extract high 32 bits of lo product...
- add %i1,%i0,%i1 ! ...and add it to the mid-1 product
- addcc %i1,%l2,%i1 ! add mid products
- mov 0,%l0 ! we need the carry from that add...
- movcs %xcc,%o2,%l0 ! ...compute it and...
- add %i5,%l0,%i5 ! ...add to bit 32 of the hi product
- sllx %i1,32,%i0 ! align low bits of mid product
- srl %i4,0,%g5 ! zero high 32 bits of lo product
- add %i0,%g5,%i0 ! combine into low 64 bits of result
- srlx %i1,32,%i1 ! extract high bits of mid product...
- add %i5,%i1,%i1 ! ...and add them to the high result
- addcc %i0,%o0,%i0 ! add cy_limb to low 64 bits of result
- mov 0,%g5
- movcs %xcc,1,%g5
- add %o7,1,%o7
- stx %i0,[%o4+%g1]
- brnz %o7,.Loop
- add %i1,%g5,%o0 ! compute new cy_limb
-
- mov %o0,%i0
- ret
- restore
-.LLfe1:
- .size __mpn_mul_1,.LLfe1-__mpn_mul_1
diff --git a/sysdeps/sparc/sparc64/rshift.s b/sysdeps/sparc/sparc64/rshift.s
deleted file mode 100644
index ff6a380160..0000000000
--- a/sysdeps/sparc/sparc64/rshift.s
+++ /dev/null
@@ -1,93 +0,0 @@
-! SPARC v9 __mpn_rshift --
-
-! Copyright (C) 1996 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-! MA 02111-1307, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr %o0
-! src_ptr %o1
-! size %o2
-! cnt %o3
-
-.section ".text"
- .align 4
- .global __mpn_rshift
- .type __mpn_rshift,#function
- .proc 04
-__mpn_rshift:
- ldx [%o1],%g2 ! load first limb
- sub %g0,%o3,%o5 ! negate shift count
- add %o2,-1,%o2
- and %o2,4-1,%g4 ! number of limbs in first loop
- sllx %g2,%o5,%g1 ! compute function result
- brz,pn %g4,.L0 ! if multiple of 4 limbs, skip first loop
- stx %g1,[%sp+80]
-
- sub %o2,%g4,%o2 ! adjust count for main loop
-
-.Loop0: ldx [%o1+8],%g3
- add %o0,8,%o0
- add %o1,8,%o1
- add %g4,-1,%g4
- srlx %g2,%o3,%o4
- sllx %g3,%o5,%g1
- mov %g3,%g2
- or %o4,%g1,%o4
- brnz,pt %g4,.Loop0
- stx %o4,[%o0-8]
-
-.L0: brz,pn %o2,.Lend
- nop
-
-.Loop: ldx [%o1+8],%g3
- add %o0,32,%o0
- add %o2,-4,%o2
- srlx %g2,%o3,%o4
- sllx %g3,%o5,%g1
-
- ldx [%o1+16],%g2
- srlx %g3,%o3,%g4
- or %o4,%g1,%o4
- stx %o4,[%o0-32]
- sllx %g2,%o5,%g1
-
- ldx [%o1+24],%g3
- srlx %g2,%o3,%o4
- or %g4,%g1,%g4
- stx %g4,[%o0-24]
- sllx %g3,%o5,%g1
-
- ldx [%o1+32],%g2
- srlx %g3,%o3,%g4
- or %o4,%g1,%o4
- stx %o4,[%o0-16]
- sllx %g2,%o5,%g1
-
- add %o1,32,%o1
- or %g4,%g1,%g4
- brnz %o2,.Loop
- stx %g4,[%o0-8]
-
-.Lend: srlx %g2,%o3,%g2
- stx %g2,[%o0-0]
- retl
- ldx [%sp+80],%o0
-.LLfe1:
- .size __mpn_rshift,.LLfe1-__mpn_rshift
diff --git a/sysdeps/sparc/sparc64/sub_n.s b/sysdeps/sparc/sparc64/sub_n.s
deleted file mode 100644
index d4842b8cdd..0000000000
--- a/sysdeps/sparc/sparc64/sub_n.s
+++ /dev/null
@@ -1,58 +0,0 @@
-! SPARC v9 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
-! store difference in a third limb vector.
-
-! Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-! MA 02111-1307, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr %o0
-! s1_ptr %o1
-! s2_ptr %o2
-! size %o3
-
-.section ".text"
- .align 4
- .global __mpn_sub_n
- .type __mpn_sub_n,#function
- .proc 04
-__mpn_sub_n:
- sub %g0,%o3,%g3
- sllx %o3,3,%g1
- add %o1,%g1,%o1 ! make s1_ptr point at end
- add %o2,%g1,%o2 ! make s2_ptr point at end
- add %o0,%g1,%o0 ! make res_ptr point at end
- mov 0,%o4 ! clear carry variable
- sllx %g3,3,%o5 ! compute initial address index
-
-.Loop: ldx [%o2+%o5],%g1 ! load s2 limb
- add %g3,1,%g3 ! increment loop count
- ldx [%o1+%o5],%g2 ! load s1 limb
- addcc %g1,%o4,%g1 ! add s2 limb and carry variable
- movcc %xcc,0,%o4 ! if carry-out, o4 was 1; clear it
- subcc %g1,%g2,%g1 ! subtract s1 limb from sum
- stx %g1,[%o0+%o5] ! store result
- add %o5,8,%o5 ! increment address index
- brnz,pt %g3,.Loop
- movcs %xcc,1,%o4 ! if s1 subtract gave carry, record it
-
- retl
- mov %o4,%o0
-.LLfe1:
- .size __mpn_sub_n,.LLfe1-__mpn_sub_n
diff --git a/sysdeps/sparc/sparc64/submul_1.s b/sysdeps/sparc/sparc64/submul_1.s
deleted file mode 100644
index e796243470..0000000000
--- a/sysdeps/sparc/sparc64/submul_1.s
+++ /dev/null
@@ -1,89 +0,0 @@
-! SPARC v9 __mpn_submul_1 -- Multiply a limb vector with a single limb and
-! subtract the product from a second limb vector.
-
-! Copyright (C) 1996 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-! MA 02111-1307, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr o0
-! s1_ptr o1
-! size o2
-! s2_limb o3
-
-.section ".text"
- .align 4
- .global __mpn_submul_1
- .type __mpn_submul_1,#function
- .proc 016
-__mpn_submul_1:
- !#PROLOGUE# 0
- save %sp,-160,%sp
- !#PROLOGUE# 1
- sub %g0,%i2,%o7
- sllx %o7,3,%g5
- sub %i1,%g5,%o3
- sub %i0,%g5,%o4
- mov 0,%o0 ! zero cy_limb
-
- srl %i3,0,%o1 ! extract low 32 bits of s2_limb
- srlx %i3,32,%i3 ! extract high 32 bits of s2_limb
- mov 1,%o2
- sllx %o2,32,%o2 ! o2 = 0x100000000
-
- ! hi !
- ! mid-1 !
- ! mid-2 !
- ! lo !
-.Loop:
- sllx %o7,3,%g1
- ldx [%o3+%g1],%g5
- srl %g5,0,%i0 ! zero hi bits
- srlx %g5,32,%g5
- mulx %o1,%i0,%i4 ! lo product
- mulx %i3,%i0,%i1 ! mid-1 product
- mulx %o1,%g5,%l2 ! mid-2 product
- mulx %i3,%g5,%i5 ! hi product
- srlx %i4,32,%i0 ! extract high 32 bits of lo product...
- add %i1,%i0,%i1 ! ...and add it to the mid-1 product
- addcc %i1,%l2,%i1 ! add mid products
- mov 0,%l0 ! we need the carry from that add...
- movcs %xcc,%o2,%l0 ! ...compute it and...
- add %i5,%l0,%i5 ! ...add to bit 32 of the hi product
- sllx %i1,32,%i0 ! align low bits of mid product
- srl %i4,0,%g5 ! zero high 32 bits of lo product
- add %i0,%g5,%i0 ! combine into low 64 bits of result
- srlx %i1,32,%i1 ! extract high bits of mid product...
- add %i5,%i1,%i1 ! ...and add them to the high result
- addcc %i0,%o0,%i0 ! add cy_limb to low 64 bits of result
- mov 0,%g5
- movcs %xcc,1,%g5
- add %o7,1,%o7
- ldx [%o4+%g1],%l1
- subcc %l1,%i0,%i0
- movcs %xcc,1,%g5
- stx %i0,[%o4+%g1]
- brnz %o7,.Loop
- add %i1,%g5,%o0 ! compute new cy_limb
-
- mov %o0,%i0
- ret
- restore
-.LLfe1:
- .size __mpn_submul_1,.LLfe1-__mpn_submul_1
diff --git a/sysdeps/sparc/sys/trap.h b/sysdeps/sparc/sys/trap.h
new file mode 100644
index 0000000000..50be40668f
--- /dev/null
+++ b/sysdeps/sparc/sys/trap.h
@@ -0,0 +1,7 @@
+/* Include trap definitions. */
+#ifndef _SYS_TRAP_H
+#define _SYS_TRAP_H 1
+
+#include <machine/trap.h>
+
+#endif /* sys/trap.h */
diff --git a/sysdeps/sparc/udiv.S b/sysdeps/sparc/udiv.S
index 252afd0193..49df8ab2a7 100644
--- a/sysdeps/sparc/udiv.S
+++ b/sysdeps/sparc/udiv.S
@@ -38,15 +38,7 @@
#include "DEFS.h"
-#ifdef __linux__
-#include <asm/traps.h>
-#else
-#ifdef __svr4__
#include <sys/trap.h>
-#else
-#include <machine/trap.h>
-#endif
-#endif
FUNC(.udiv)
@@ -176,14 +168,14 @@ Ldivloop:
subcc %o3,%o5,%o3
b 9f
add %o2, (7*2+1), %o2
-
+
L.4.23:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (7*2-1), %o2
-
-
+
+
L.3.19:
! remainder is negative
addcc %o3,%o5,%o3
@@ -194,15 +186,15 @@ L.3.19:
subcc %o3,%o5,%o3
b 9f
add %o2, (5*2+1), %o2
-
+
L.4.21:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (5*2-1), %o2
-
-
-
+
+
+
L.2.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -218,14 +210,14 @@ L.2.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (3*2+1), %o2
-
+
L.4.19:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (3*2-1), %o2
-
-
+
+
L.3.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -236,16 +228,16 @@ L.3.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (1*2+1), %o2
-
+
L.4.17:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (1*2-1), %o2
-
-
-
-
+
+
+
+
L.1.16:
! remainder is negative
addcc %o3,%o5,%o3
@@ -266,14 +258,14 @@ L.1.16:
subcc %o3,%o5,%o3
b 9f
add %o2, (-1*2+1), %o2
-
+
L.4.15:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-1*2-1), %o2
-
-
+
+
L.3.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -284,15 +276,15 @@ L.3.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-3*2+1), %o2
-
+
L.4.13:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-3*2-1), %o2
-
-
-
+
+
+
L.2.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -308,14 +300,14 @@ L.2.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-5*2+1), %o2
-
+
L.4.11:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-5*2-1), %o2
-
-
+
+
L.3.13:
! remainder is negative
addcc %o3,%o5,%o3
@@ -326,16 +318,16 @@ L.3.13:
subcc %o3,%o5,%o3
b 9f
add %o2, (-7*2+1), %o2
-
+
L.4.9:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-7*2-1), %o2
-
-
-
-
+
+
+
+
9:
Lend_regular_divide:
subcc %o4, 1, %o4
diff --git a/sysdeps/sparc/urem.S b/sysdeps/sparc/urem.S
index 99a5acf40a..7f6a0812bf 100644
--- a/sysdeps/sparc/urem.S
+++ b/sysdeps/sparc/urem.S
@@ -38,15 +38,7 @@
#include "DEFS.h"
-#ifdef __linux__
-#include <asm/traps.h>
-#else
-#ifdef __svr4__
#include <sys/trap.h>
-#else
-#include <machine/trap.h>
-#endif
-#endif
FUNC(.urem)
@@ -176,14 +168,14 @@ Ldivloop:
subcc %o3,%o5,%o3
b 9f
add %o2, (7*2+1), %o2
-
+
L.4.23:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (7*2-1), %o2
-
-
+
+
L.3.19:
! remainder is negative
addcc %o3,%o5,%o3
@@ -194,15 +186,15 @@ L.3.19:
subcc %o3,%o5,%o3
b 9f
add %o2, (5*2+1), %o2
-
+
L.4.21:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (5*2-1), %o2
-
-
-
+
+
+
L.2.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -218,14 +210,14 @@ L.2.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (3*2+1), %o2
-
+
L.4.19:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (3*2-1), %o2
-
-
+
+
L.3.17:
! remainder is negative
addcc %o3,%o5,%o3
@@ -236,16 +228,16 @@ L.3.17:
subcc %o3,%o5,%o3
b 9f
add %o2, (1*2+1), %o2
-
+
L.4.17:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (1*2-1), %o2
-
-
-
-
+
+
+
+
L.1.16:
! remainder is negative
addcc %o3,%o5,%o3
@@ -266,14 +258,14 @@ L.1.16:
subcc %o3,%o5,%o3
b 9f
add %o2, (-1*2+1), %o2
-
+
L.4.15:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-1*2-1), %o2
-
-
+
+
L.3.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -284,15 +276,15 @@ L.3.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-3*2+1), %o2
-
+
L.4.13:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-3*2-1), %o2
-
-
-
+
+
+
L.2.15:
! remainder is negative
addcc %o3,%o5,%o3
@@ -308,14 +300,14 @@ L.2.15:
subcc %o3,%o5,%o3
b 9f
add %o2, (-5*2+1), %o2
-
+
L.4.11:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-5*2-1), %o2
-
-
+
+
L.3.13:
! remainder is negative
addcc %o3,%o5,%o3
@@ -326,16 +318,16 @@ L.3.13:
subcc %o3,%o5,%o3
b 9f
add %o2, (-7*2+1), %o2
-
+
L.4.9:
! remainder is negative
addcc %o3,%o5,%o3
b 9f
add %o2, (-7*2-1), %o2
-
-
-
-
+
+
+
+
9:
Lend_regular_divide:
subcc %o4, 1, %o4