mirror of
https://github.com/golang/go
synced 2024-11-08 08:06:17 -07:00
7ba0c6235f
Hardware AES support in Go on s390x currently requires ECB, CBC and CTR modes be available. It also requires that either the GHASH or GCM facilities are available. The existing checks missed some of these constraints. While we're here simplify the cpu package on s390x, moving masking code out of assembly and into Go code. Also, update SHA-{1,256,512} implementations to use the cpu package since that is now trivial. Finally I also added a test for internal/cpu on s390x which loads /proc/cpuinfo and checks it against the flags set by internal/cpu. Updates #25822 for changes to vet whitelist. Change-Id: Iac4183f571643209e027f730989c60a811c928eb Reviewed-on: https://go-review.googlesource.com/114397 Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
21 lines
555 B
ArmAsm
21 lines
555 B
ArmAsm
// Copyright 2016 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
#include "textflag.h"
|
|
|
|
// func block(dig *digest, p []byte)
|
|
TEXT ·block(SB), NOSPLIT|NOFRAME, $0-32
|
|
MOVBZ ·useAsm(SB), R4
|
|
LMG dig+0(FP), R1, R3 // R2 = &p[0], R3 = len(p)
|
|
MOVBZ $2, R0 // SHA-256 function code
|
|
CMPBEQ R4, $0, generic
|
|
|
|
loop:
|
|
WORD $0xB93E0002 // KIMD R2
|
|
BVS loop // continue if interrupted
|
|
RET
|
|
|
|
generic:
|
|
BR ·blockGeneric(SB)
|