summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2001-03-27 23:48:35 +0000
committerRichard Levitte <levitte@openssl.org>2001-03-27 23:48:35 +0000
commit3a1dbce19de3cbcd2023af960e8821643fad84bd (patch)
tree9417d3aff503e6566da0f70afdcc317f26bc68d0
parent10f2bf6d81912492d5fe078dd79e17ab66e27eeb (diff)
Merge in the IRIX fix from the main development line.
-rwxr-xr-xConfigure4
-rw-r--r--crypto/bn/asm/mips3.s8
-rw-r--r--crypto/bn/bn_div.c1
3 files changed, 6 insertions, 7 deletions
diff --git a/Configure b/Configure
index 7d6276205e..c648695c65 100755
--- a/Configure
+++ b/Configure
@@ -89,9 +89,7 @@ my $x86_elf_asm="asm/bn86-elf.o asm/co86-elf.o:asm/dx86-elf.o asm/yx86-elf.o:asm
my $x86_out_asm="asm/bn86-out.o asm/co86-out.o:asm/dx86-out.o asm/yx86-out.o:asm/bx86-out.o:asm/mx86-out.o:asm/sx86-out.o:asm/cx86-out.o:asm/rx86-out.o:asm/rm86-out.o:asm/r586-out.o";
my $x86_bsdi_asm="asm/bn86bsdi.o asm/co86bsdi.o:asm/dx86bsdi.o asm/yx86bsdi.o:asm/bx86bsdi.o:asm/mx86bsdi.o:asm/sx86bsdi.o:asm/cx86bsdi.o:asm/rx86bsdi.o:asm/rm86bsdi.o:asm/r586bsdi.o";
-# There seems to be some kind of fault in asm/mips3.s
-#my $mips3_irix_asm="asm/mips3.o::::::::";
-my $mips3_irix_asm="::::::::";
+my $mips3_irix_asm="asm/mips3.o::::::::";
# There seems to be boundary faults in asm/alpha.s.
#my $alpha_asm="asm/alpha.o::::::::";
my $alpha_asm="::::::::";
diff --git a/crypto/bn/asm/mips3.s b/crypto/bn/asm/mips3.s
index 2df4dcd4b0..45786c00a5 100644
--- a/crypto/bn/asm/mips3.s
+++ b/crypto/bn/asm/mips3.s
@@ -586,13 +586,13 @@ LEAF(bn_div_3_words)
ld a0,(a3)
move ta2,a1
ld a1,-8(a3)
- move ta3,ra
- move v1,zero
+ bne a0,a2,.L_bn_div_3_words_proceed
li v0,-1
- beq a0,a2,.L_bn_div_3_words_skip_div
+ jr ra
+.L_bn_div_3_words_proceed:
+ move ta3,ra
bal bn_div_words
move ra,ta3
-.L_bn_div_3_words_skip_div:
dmultu ta2,v0
ld t2,-16(a3)
move ta0,zero
diff --git a/crypto/bn/bn_div.c b/crypto/bn/bn_div.c
index 891b602631..c328b5b411 100644
--- a/crypto/bn/bn_div.c
+++ b/crypto/bn/bn_div.c
@@ -238,6 +238,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
{
BN_ULONG q,l0;
#if defined(BN_DIV3W) && !defined(NO_ASM)
+ BN_ULONG bn_div_3_words(BN_ULONG*,BN_ULONG,BN_ULONG);
q=bn_div_3_words(wnump,d1,d0);
#else
BN_ULONG n0,n1,rem=0;