/*
- * Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2010-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
#include <setjmp.h>
#include <signal.h>
#include "internal/cryptlib.h"
-#include "internal/ctype.h"
+#include "crypto/ctype.h"
#include "s390x_arch.h"
#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
# if __GLIBC_PREREQ(2, 16)
# include <sys/auxv.h>
-# define OSSL_IMPLEMENT_GETAUXVAL
+# if defined(HWCAP_S390_STFLE) && defined(HWCAP_S390_VX)
+# define OSSL_IMPLEMENT_GETAUXVAL
+# endif
# endif
#endif
struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;
+#if defined(__GNUC__) && defined(__linux)
+__attribute__ ((visibility("hidden")))
+#endif
void OPENSSL_cpuid_setup(void)
{
struct OPENSSL_s390xcap_st cap;
/* set a bit that will not be tested later */
OPENSSL_s390xcap_P.stfle[0] |= S390X_CAPBIT(0);
-#ifdef OSSL_IMPLEMENT_GETAUXVAL
+#if defined(OSSL_IMPLEMENT_GETAUXVAL)
{
const unsigned long hwcap = getauxval(AT_HWCAP);
0ULL},
};
+ /*-
+ * z16 (2022) - z/Architecture POP
+ * Implements MSA and MSA1-9 (same as z15).
+ */
+ static const struct OPENSSL_s390xcap_st z16 = z15;
+
char *tok_begin, *tok_end, *buff, tok[S390X_STFLE_MAX][LEN + 1];
int rc, off, i, n;
else if TOK_CPU(z13)
else if TOK_CPU(z14)
else if TOK_CPU(z15)
+ else if TOK_CPU(z16)
/* whitespace(ignored) or invalid tokens */
else {