Commit f39ad8dc authored by Patrick Steuer's avatar Patrick Steuer Committed by Andy Polyakov
Browse files

s390x assembly pack: add OPENSSL_s390xcap environment variable.

The OPENSSL_s390xcap environment variable is used to set bits in the s390x
capability vector to zero. This simplifies testing of different code paths.

Signed-off-by: default avatarPatrick Steuer <patrick.steuer@de.ibm.com>

Reviewed-by: default avatarAndy Polyakov <appro@openssl.org>
Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6813)
parent 9453b196
Loading
Loading
Loading
Loading
+20 −3
Changes for crypto/s390x_arch.h: 20 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -49,6 +49,9 @@ struct OPENSSL_s390xcap_st {

extern struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;

/* Max number of 64-bit words currently returned by STFLE */
#  define S390X_STFLE_MAX	3

/* convert facility bit number or function code to bit mask */
#  define S390X_CAPBIT(i)	(1ULL << (63 - (i) % 64))

@@ -68,9 +71,15 @@ extern struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;
# define S390X_KMA		0xb0

/* Facility Bit Numbers */
# define S390X_VX		129
# define S390X_VXD		134
# define S390X_VXE		135
# define S390X_MSA		17	/* message-security-assist */
# define S390X_STCKF		25	/* store-clock-fast */
# define S390X_MSA5		57	/* message-security-assist-ext. 5 */
# define S390X_MSA3		76	/* message-security-assist-ext. 3 */
# define S390X_MSA4		77	/* message-security-assist-ext. 4 */
# define S390X_VX		129	/* vector */
# define S390X_VXD		134	/* vector packed decimal */
# define S390X_VXE		135	/* vector enhancements 1 */
# define S390X_MSA8		146	/* message-security-assist-ext. 8 */

/* Function Codes */

@@ -78,6 +87,9 @@ extern struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;
# define S390X_QUERY		0

/* kimd/klmd */
# define S390X_SHA_1		1
# define S390X_SHA_256		2
# define S390X_SHA_512		3
# define S390X_SHA3_224		32
# define S390X_SHA3_256		33
# define S390X_SHA3_384		34
@@ -91,7 +103,12 @@ extern struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;
# define S390X_AES_192		19
# define S390X_AES_256		20

/* km */
# define S390X_XTS_AES_128	50
# define S390X_XTS_AES_256	52

/* prno */
# define S390X_SHA_512_DRNG	3
# define S390X_TRNG		114

/* Register 0 Flags */
+515 −0

File changed.

Preview size limit exceeded, changes collapsed.

+21 −10
Changes for crypto/s390xcpuid.pl: 21 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -38,7 +38,26 @@ OPENSSL_s390x_facilities:
	stg	%r0,S390X_STFLE+8(%r4)	# wipe capability vectors
	stg	%r0,S390X_STFLE+16(%r4)
	stg	%r0,S390X_STFLE+24(%r4)
	stg	%r0,S390X_KIMD(%r4)

	.long	0xb2b04000		# stfle	0(%r4)
	brc	8,.Ldone
	lghi	%r0,1
	.long	0xb2b04000		# stfle 0(%r4)
	brc	8,.Ldone
	lghi	%r0,2
	.long	0xb2b04000		# stfle 0(%r4)
.Ldone:
	br	$ra
.size	OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities

.globl	OPENSSL_s390x_functions
.type	OPENSSL_s390x_functions,\@function
.align	16
OPENSSL_s390x_functions:
	lghi	%r0,0
	larl	%r4,OPENSSL_s390xcap_P

	stg	%r0,S390X_KIMD(%r4)	# wipe capability vectors
	stg	%r0,S390X_KIMD+8(%r4)
	stg	%r0,S390X_KLMD(%r4)
	stg	%r0,S390X_KLMD+8(%r4)
@@ -59,14 +78,6 @@ OPENSSL_s390x_facilities:
	stg	%r0,S390X_KMA(%r4)
	stg	%r0,S390X_KMA+8(%r4)

	.long	0xb2b04000		# stfle	0(%r4)
	brc	8,.Ldone
	lghi	%r0,1
	.long	0xb2b04000		# stfle 0(%r4)
	brc	8,.Ldone
	lghi	%r0,2
	.long	0xb2b04000		# stfle 0(%r4)
.Ldone:
	lmg	%r2,%r3,S390X_STFLE(%r4)
	tmhl	%r2,0x4000		# check for message-security-assist
	jz	.Lret
@@ -123,7 +134,7 @@ OPENSSL_s390x_facilities:

.Lret:
	br	$ra
.size	OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
.size	OPENSSL_s390x_functions,.-OPENSSL_s390x_functions

.globl	OPENSSL_rdtsc
.type	OPENSSL_rdtsc,\@function