From 008b34be09d7b9c3e7a18d3ce9ef8b5c4f4ff8b8 Mon Sep 17 00:00:00 2001 From: Robert Mustacchi Date: Fri, 24 Aug 2018 05:00:36 +0000 Subject: [PATCH] 9813 isainfo should learn about SHA Instrs Reviewed by: Dan McDonald Reviewed by: Jerry Jelinek Reviewed by: Yuri Pankov Reviewed by: Garrett D'Amore Reviewed by: Andy Fiddaman Approved by: Richard Lowe --- usr/src/common/elfcap/elfcap.c | 4 ++++ usr/src/common/elfcap/elfcap.h | 4 ++-- usr/src/uts/common/sys/auxv_386.h | 3 ++- usr/src/uts/i86pc/os/cpuid.c | 2 ++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/usr/src/common/elfcap/elfcap.c b/usr/src/common/elfcap/elfcap.c index 7c39f30a2b..e905e256ed 100644 --- a/usr/src/common/elfcap/elfcap.c +++ b/usr/src/common/elfcap/elfcap.c @@ -388,6 +388,10 @@ static const elfcap_desc_t hw2_386[ELFCAP_NUM_HW2_386] = { AV_386_2_AVX512_4FMAPS, STRDESC("AV_386_2_AVX512_4FMAPS"), STRDESC("AVX512_4FMAPS"), STRDESC("avx512_4fmaps"), }, + { /* 0x00100000 */ + AV_386_2_SHA, STRDESC("AV_386_2_SHA"), + STRDESC("SHA"), STRDESC("sha"), + } }; /* diff --git a/usr/src/common/elfcap/elfcap.h b/usr/src/common/elfcap/elfcap.h index 8c883bc208..123514b0a6 100644 --- a/usr/src/common/elfcap/elfcap.h +++ b/usr/src/common/elfcap/elfcap.h @@ -21,7 +21,7 @@ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2017, Joyent, Inc. + * Copyright (c) 2018, Joyent, Inc. */ #ifndef _ELFCAP_DOT_H @@ -115,7 +115,7 @@ typedef enum { #define ELFCAP_NUM_SF1 3 #define ELFCAP_NUM_HW1_SPARC 17 #define ELFCAP_NUM_HW1_386 32 -#define ELFCAP_NUM_HW2_386 20 +#define ELFCAP_NUM_HW2_386 21 /* diff --git a/usr/src/uts/common/sys/auxv_386.h b/usr/src/uts/common/sys/auxv_386.h index dbc6116c25..0f367a4b19 100644 --- a/usr/src/uts/common/sys/auxv_386.h +++ b/usr/src/uts/common/sys/auxv_386.h @@ -106,9 +106,10 @@ extern "C" { #define AV_386_2_AVX512VPOPCDQ 0x20000 /* AVX512VPOPCNTDQ insns */ #define AV_386_2_AVX512_4NNIW 0x40000 /* AVX512 4NNIW insns */ #define AV_386_2_AVX512_4FMAPS 0x80000 /* AVX512 4FMAPS insns */ +#define AV_386_2_SHA 0x100000 /* SHA insns */ #define FMT_AV_386_2 \ - "\024avx512_4fmaps\023avx512_4nniw\022avx512vpopcntdq" \ + "\025sha\024avx512_4fmaps\023avx512_4nniw\022avx512vpopcntdq" \ "\021avx512vbmi\020avx512vl\017avx512bw\016avx512cd" \ "\015avx512er\014avx512pf\013avx512ifma\012avx512dq\011avx512f" \ "\010rdseed\07adx\06avx2\05fma\04bmi2\03bmi1\02rdrand\01f16c" diff --git a/usr/src/uts/i86pc/os/cpuid.c b/usr/src/uts/i86pc/os/cpuid.c index 80b56b2518..e11ee5b70e 100644 --- a/usr/src/uts/i86pc/os/cpuid.c +++ b/usr/src/uts/i86pc/os/cpuid.c @@ -3221,6 +3221,8 @@ cpuid_pass4(cpu_t *cpu, uint_t *hwcap_out) hwcap_flags_2 |= AV_386_2_ADX; if (*ebx & CPUID_INTC_EBX_7_0_RDSEED) hwcap_flags_2 |= AV_386_2_RDSEED; + if (*ebx & CPUID_INTC_EBX_7_0_SHA) + hwcap_flags_2 |= AV_386_2_SHA; } -- 2.11.4.GIT