summaryrefslogtreecommitdiff
path: root/security/nss/lib/freebl
diff options
context:
space:
mode:
authornelsonb%netscape.com <devnull@localhost>2001-01-12 01:37:02 +0000
committernelsonb%netscape.com <devnull@localhost>2001-01-12 01:37:02 +0000
commit448eb29b3ba6d51da9359283a0c65be64dd147df (patch)
tree460502792b0365baaa97a306f4178d1aea3c82cb /security/nss/lib/freebl
parent4266cf7323de5a9d36476f085220d00dda8b078e (diff)
downloadnss-hg-448eb29b3ba6d51da9359283a0c65be64dd147df.tar.gz
Save and restore %ebx register in all functions. Fixes bug 64940.
Diffstat (limited to 'security/nss/lib/freebl')
-rw-r--r--security/nss/lib/freebl/mpi/mpi_x86.s36
1 files changed, 23 insertions, 13 deletions
diff --git a/security/nss/lib/freebl/mpi/mpi_x86.s b/security/nss/lib/freebl/mpi/mpi_x86.s
index 350160bfa..427b7e61e 100644
--- a/security/nss/lib/freebl/mpi/mpi_x86.s
+++ b/security/nss/lib/freebl/mpi/mpi_x86.s
@@ -64,6 +64,7 @@ s_mpv_mul_d:
sub $28,%esp
push %edi
push %esi
+ push %ebx
movl $0,%ebx # carry = 0
mov 12(%ebp),%ecx # ecx = a_len
mov 20(%ebp),%edi
@@ -85,6 +86,7 @@ s_mpv_mul_d:
jnz 1b # jmp if a_len != 0
2:
mov %ebx,0(%edi) # *c = carry
+ pop %ebx
pop %esi
pop %edi
leave
@@ -121,6 +123,7 @@ s_mpv_mul_d_add:
sub $28,%esp
push %edi
push %esi
+ push %ebx
movl $0,%ebx # carry = 0
mov 12(%ebp),%ecx # ecx = a_len
mov 20(%ebp),%edi
@@ -145,6 +148,7 @@ s_mpv_mul_d_add:
jnz 3b # jmp if a_len != 0
4:
mov %ebx,0(%edi) # *c = carry
+ pop %ebx
pop %esi
pop %edi
leave
@@ -181,6 +185,7 @@ s_mpv_mul_d_add_prop:
sub $28,%esp
push %edi
push %esi
+ push %ebx
movl $0,%ebx # carry = 0
mov 12(%ebp),%ecx # ecx = a_len
mov 20(%ebp),%edi
@@ -216,6 +221,7 @@ s_mpv_mul_d_add_prop:
stosl # [es:edi] = ax; edi += 4;
jc 7b
8:
+ pop %ebx
pop %esi
pop %edi
leave
@@ -249,6 +255,7 @@ s_mpv_sqr_add_prop:
sub $12,%esp
push %edi
push %esi
+ push %ebx
movl $0,%ebx # carry = 0
mov 12(%ebp),%ecx # a_len
mov 16(%ebp),%edi # edi = ps
@@ -286,6 +293,7 @@ s_mpv_sqr_add_prop:
stosl # [es:edi] = ax; edi += 4;
jc 12b
14:
+ pop %ebx
pop %esi
pop %edi
leave
@@ -299,14 +307,13 @@ s_mpv_sqr_add_prop:
# mp_err s_mpv_div_2dx1d(mp_digit Nhi, mp_digit Nlo, mp_digit divisor,
# mp_digit *qp, mp_digit *rp)
- # Dump of assembler code for function s_mpv_div_2dx1d:
- #
- # esp + 0: return address
- # esp + 4: Nhi argument
- # esp + 8: Nlo argument
- # esp + 12: divisor argument
- # esp + 16: qp argument
- # esp + 20: rp argument
+ # esp + 0: Caller's ebx
+ # esp + 4: return address
+ # esp + 8: Nhi argument
+ # esp + 12: Nlo argument
+ # esp + 16: divisor argument
+ # esp + 20: qp argument
+ # esp + 24: rp argument
# registers:
# eax:
# ebx: carry
@@ -315,18 +322,21 @@ s_mpv_sqr_add_prop:
# esi: a ptr
# edi: c ptr
#
+
.globl s_mpv_div_2dx1d
.type s_mpv_div_2dx1d,@function
s_mpv_div_2dx1d:
- mov 4(%esp),%edx
- mov 8(%esp),%eax
- mov 12(%esp),%ebx
- div %ebx
+ push %ebx
+ mov 8(%esp),%edx
+ mov 12(%esp),%eax
mov 16(%esp),%ebx
- mov %eax,0(%ebx)
+ div %ebx
mov 20(%esp),%ebx
+ mov %eax,0(%ebx)
+ mov 24(%esp),%ebx
mov %edx,0(%ebx)
xor %eax,%eax # return zero
+ pop %ebx
ret
nop