summaryrefslogtreecommitdiffstats
path: root/secure/lib/libcrypto/amd64/x86_64-mont.S
diff options
context:
space:
mode:
Diffstat (limited to 'secure/lib/libcrypto/amd64/x86_64-mont.S')
-rw-r--r--secure/lib/libcrypto/amd64/x86_64-mont.S40
1 files changed, 37 insertions, 3 deletions
diff --git a/secure/lib/libcrypto/amd64/x86_64-mont.S b/secure/lib/libcrypto/amd64/x86_64-mont.S
index 5997f3c..9e7fa54 100644
--- a/secure/lib/libcrypto/amd64/x86_64-mont.S
+++ b/secure/lib/libcrypto/amd64/x86_64-mont.S
@@ -31,6 +31,20 @@ bn_mul_mont:
movq %r11,8(%rsp,%r9,8)
.Lmul_body:
+
+
+
+
+
+
+ subq %rsp,%r11
+ andq $-4096,%r11
+.Lmul_page_walk:
+ movq (%rsp,%r11,1),%r10
+ subq $4096,%r11
+.byte 0x66,0x2e
+ jnc .Lmul_page_walk
+
movq %rdx,%r12
movq (%r8),%r8
movq (%r12),%rbx
@@ -228,6 +242,14 @@ bn_mul4x_mont:
movq %r11,8(%rsp,%r9,8)
.Lmul4x_body:
+ subq %rsp,%r11
+ andq $-4096,%r11
+.Lmul4x_page_walk:
+ movq (%rsp,%r11,1),%r10
+ subq $4096,%r11
+.byte 0x2e
+ jnc .Lmul4x_page_walk
+
movq %rdi,16(%rsp,%r9,8)
movq %rdx,%r12
movq (%r8),%r8
@@ -610,6 +632,7 @@ bn_mul4x_mont:
.align 16
bn_sqr4x_mont:
.Lsqr4x_enter:
+ movq %rsp,%rax
pushq %rbx
pushq %rbp
pushq %r12
@@ -618,13 +641,24 @@ bn_sqr4x_mont:
pushq %r15
shll $3,%r9d
- xorq %r10,%r10
movq %rsp,%r11
- subq %r9,%r10
+ negq %r9
movq (%r8),%r8
- leaq -72(%rsp,%r10,2),%rsp
+ leaq -72(%rsp,%r9,2),%rsp
andq $-1024,%rsp
+ subq %rsp,%r11
+ andq $-4096,%r11
+.Lsqr4x_page_walk:
+ movq (%rsp,%r11,1),%r10
+ subq $4096,%r11
+.byte 0x2e
+ jnc .Lsqr4x_page_walk
+
+ movq %r9,%r10
+ negq %r9
+ leaq -48(%rax),%r11
+
OpenPOWER on IntegriCloud