mirror of
https://github.com/golang/sys.git
synced 2026-02-08 03:36:03 +03:00
Add basic support for IBM Z (s390x) CPU feature (known as 'facilities') detection. Note that some of these features are mandatory when using the Go compiler (for example, ldisp and eimm) but aren't mandatory when using gccgo. Cryptographic function detection is not yet implemented for gccgo. Change-Id: Ic6494d0df0bc1c1ad1713c9ff11ae23fba03d215 Reviewed-on: https://go-review.googlesource.com/c/163003 Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
58 lines
2.0 KiB
ArmAsm
58 lines
2.0 KiB
ArmAsm
// Copyright 2019 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.
|
|
|
|
// +build !gccgo
|
|
|
|
#include "textflag.h"
|
|
|
|
// func stfle() facilityList
|
|
TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32
|
|
MOVD $ret+0(FP), R1
|
|
MOVD $3, R0 // last doubleword index to store
|
|
XC $32, (R1), (R1) // clear 4 doublewords (32 bytes)
|
|
WORD $0xb2b01000 // store facility list extended (STFLE)
|
|
RET
|
|
|
|
// func kmQuery() queryResult
|
|
TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
MOVD $0, R0 // set function code to 0 (KM-Query)
|
|
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
WORD $0xB92E0024 // cipher message (KM)
|
|
RET
|
|
|
|
// func kmcQuery() queryResult
|
|
TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
MOVD $0, R0 // set function code to 0 (KMC-Query)
|
|
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
WORD $0xB92F0024 // cipher message with chaining (KMC)
|
|
RET
|
|
|
|
// func kmctrQuery() queryResult
|
|
TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
MOVD $0, R0 // set function code to 0 (KMCTR-Query)
|
|
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
WORD $0xB92D4024 // cipher message with counter (KMCTR)
|
|
RET
|
|
|
|
// func kmaQuery() queryResult
|
|
TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
MOVD $0, R0 // set function code to 0 (KMA-Query)
|
|
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
WORD $0xb9296024 // cipher message with authentication (KMA)
|
|
RET
|
|
|
|
// func kimdQuery() queryResult
|
|
TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
MOVD $0, R0 // set function code to 0 (KIMD-Query)
|
|
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
WORD $0xB93E0024 // compute intermediate message digest (KIMD)
|
|
RET
|
|
|
|
// func klmdQuery() queryResult
|
|
TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
MOVD $0, R0 // set function code to 0 (KLMD-Query)
|
|
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
WORD $0xB93F0024 // compute last message digest (KLMD)
|
|
RET
|