Skip to content

Commit bc548d7

Browse files
committed
vendor/golang.org/x/crypto/curve25519: avoid loss of R15 in -dynlink mode
Original code fixed in https://go-review.googlesource.com/#/c/36359/. Fixes #18820. Change-Id: I060e6c9d0e312b4fd5d0674aff131055bf5cf61d Reviewed-on: https://go-review.googlesource.com/36412 Run-TryBot: Russ Cox <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Adam Langley <[email protected]>
1 parent 807c80f commit bc548d7

File tree

6 files changed

+30
-14
lines changed

6 files changed

+30
-14
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Copyright 2012 The Go Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
// This code was translated into a form compatible with 6a from the public
6+
// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html
7+
8+
#define REDMASK51 0x0007FFFFFFFFFFFF

src/vendor/golang_org/x/crypto/curve25519/const_amd64.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
// +build amd64,!gccgo,!appengine
99

10-
DATA ·REDMASK51(SB)/8, $0x0007FFFFFFFFFFFF
11-
GLOBL ·REDMASK51(SB), 8, $8
10+
// These constants cannot be encoded in non-MOVQ immediates.
11+
// We access them directly from memory instead.
1212

1313
DATA ·_121666_213(SB)/8, $996687872
1414
GLOBL ·_121666_213(SB), 8, $8

src/vendor/golang_org/x/crypto/curve25519/freeze_amd64.s

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
// +build amd64,!gccgo,!appengine
99

10+
#include "const_amd64.h"
11+
1012
// func freeze(inout *[5]uint64)
1113
TEXT ·freeze(SB),7,$0-8
1214
MOVQ inout+0(FP), DI
@@ -16,7 +18,7 @@ TEXT ·freeze(SB),7,$0-8
1618
MOVQ 16(DI),CX
1719
MOVQ 24(DI),R8
1820
MOVQ 32(DI),R9
19-
MOVQ ·REDMASK51(SB),AX
21+
MOVQ $REDMASK51,AX
2022
MOVQ AX,R10
2123
SUBQ $18,R10
2224
MOVQ $3,R11

src/vendor/golang_org/x/crypto/curve25519/ladderstep_amd64.s

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
// +build amd64,!gccgo,!appengine
99

10+
#include "const_amd64.h"
11+
1012
// func ladderstep(inout *[5][5]uint64)
1113
TEXT ·ladderstep(SB),0,$296-8
1214
MOVQ inout+0(FP),DI
@@ -118,7 +120,7 @@ TEXT ·ladderstep(SB),0,$296-8
118120
MULQ 72(SP)
119121
ADDQ AX,R12
120122
ADCQ DX,R13
121-
MOVQ ·REDMASK51(SB),DX
123+
MOVQ $REDMASK51,DX
122124
SHLQ $13,CX:SI
123125
ANDQ DX,SI
124126
SHLQ $13,R9:R8
@@ -233,7 +235,7 @@ TEXT ·ladderstep(SB),0,$296-8
233235
MULQ 32(SP)
234236
ADDQ AX,R12
235237
ADCQ DX,R13
236-
MOVQ ·REDMASK51(SB),DX
238+
MOVQ $REDMASK51,DX
237239
SHLQ $13,CX:SI
238240
ANDQ DX,SI
239241
SHLQ $13,R9:R8
@@ -438,7 +440,7 @@ TEXT ·ladderstep(SB),0,$296-8
438440
MULQ 72(SP)
439441
ADDQ AX,R12
440442
ADCQ DX,R13
441-
MOVQ ·REDMASK51(SB),DX
443+
MOVQ $REDMASK51,DX
442444
SHLQ $13,CX:SI
443445
ANDQ DX,SI
444446
SHLQ $13,R9:R8
@@ -588,7 +590,7 @@ TEXT ·ladderstep(SB),0,$296-8
588590
MULQ 32(SP)
589591
ADDQ AX,R12
590592
ADCQ DX,R13
591-
MOVQ ·REDMASK51(SB),DX
593+
MOVQ $REDMASK51,DX
592594
SHLQ $13,CX:SI
593595
ANDQ DX,SI
594596
SHLQ $13,R9:R8
@@ -728,7 +730,7 @@ TEXT ·ladderstep(SB),0,$296-8
728730
MULQ 152(DI)
729731
ADDQ AX,R12
730732
ADCQ DX,R13
731-
MOVQ ·REDMASK51(SB),DX
733+
MOVQ $REDMASK51,DX
732734
SHLQ $13,CX:SI
733735
ANDQ DX,SI
734736
SHLQ $13,R9:R8
@@ -843,7 +845,7 @@ TEXT ·ladderstep(SB),0,$296-8
843845
MULQ 192(DI)
844846
ADDQ AX,R12
845847
ADCQ DX,R13
846-
MOVQ ·REDMASK51(SB),DX
848+
MOVQ $REDMASK51,DX
847849
SHLQ $13,CX:SI
848850
ANDQ DX,SI
849851
SHLQ $13,R9:R8
@@ -993,7 +995,7 @@ TEXT ·ladderstep(SB),0,$296-8
993995
MULQ 32(DI)
994996
ADDQ AX,R12
995997
ADCQ DX,R13
996-
MOVQ ·REDMASK51(SB),DX
998+
MOVQ $REDMASK51,DX
997999
SHLQ $13,CX:SI
9981000
ANDQ DX,SI
9991001
SHLQ $13,R9:R8
@@ -1143,7 +1145,7 @@ TEXT ·ladderstep(SB),0,$296-8
11431145
MULQ 112(SP)
11441146
ADDQ AX,R12
11451147
ADCQ DX,R13
1146-
MOVQ ·REDMASK51(SB),DX
1148+
MOVQ $REDMASK51,DX
11471149
SHLQ $13,CX:SI
11481150
ANDQ DX,SI
11491151
SHLQ $13,R9:R8
@@ -1329,7 +1331,7 @@ TEXT ·ladderstep(SB),0,$296-8
13291331
MULQ 192(SP)
13301332
ADDQ AX,R12
13311333
ADCQ DX,R13
1332-
MOVQ ·REDMASK51(SB),DX
1334+
MOVQ $REDMASK51,DX
13331335
SHLQ $13,CX:SI
13341336
ANDQ DX,SI
13351337
SHLQ $13,R9:R8

src/vendor/golang_org/x/crypto/curve25519/mul_amd64.s

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
// +build amd64,!gccgo,!appengine
99

10+
#include "const_amd64.h"
11+
1012
// func mul(dest, a, b *[5]uint64)
1113
TEXT ·mul(SB),0,$16-24
1214
MOVQ dest+0(FP), DI
@@ -121,7 +123,7 @@ TEXT ·mul(SB),0,$16-24
121123
MULQ 32(CX)
122124
ADDQ AX,R14
123125
ADCQ DX,R15
124-
MOVQ ·REDMASK51(SB),SI
126+
MOVQ $REDMASK51,SI
125127
SHLQ $13,R9:R8
126128
ANDQ SI,R8
127129
SHLQ $13,R11:R10

src/vendor/golang_org/x/crypto/curve25519/square_amd64.s

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
// +build amd64,!gccgo,!appengine
99

10+
#include "const_amd64.h"
11+
1012
// func square(out, in *[5]uint64)
1113
TEXT ·square(SB),7,$0-16
1214
MOVQ out+0(FP), DI
@@ -84,7 +86,7 @@ TEXT ·square(SB),7,$0-16
8486
MULQ 32(SI)
8587
ADDQ AX,R13
8688
ADCQ DX,R14
87-
MOVQ ·REDMASK51(SB),SI
89+
MOVQ $REDMASK51,SI
8890
SHLQ $13,R8:CX
8991
ANDQ SI,CX
9092
SHLQ $13,R10:R9

0 commit comments

Comments
 (0)