summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2018-08-24 05:00:36 +0000
committerRobert Mustacchi <rm@joyent.com>2018-08-27 23:01:05 +0000
commitc9808d714ccc28dc72535483d2747dc5245e2169 (patch)
treef3d6db55c3b5454d34c61e850dac460c6077ba51
parent2b41f937aecb3277b76d1d4dd3316f041bd8fc2b (diff)
downloadillumos-joyent-c9808d714ccc28dc72535483d2747dc5245e2169.tar.gz
OS-5557 isainfo should learn about SHA Instrs
Reviewed by: Dan McDonald <danmcd@joyent.com> Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com> Approved by: Jerry Jelinek <jerry.jelinek@joyent.com>
-rw-r--r--usr/src/common/elfcap/elfcap.c4
-rw-r--r--usr/src/common/elfcap/elfcap.h4
-rw-r--r--usr/src/uts/common/sys/auxv_386.h3
-rw-r--r--usr/src/uts/i86pc/os/cpuid.c2
4 files changed, 10 insertions, 3 deletions
diff --git a/usr/src/common/elfcap/elfcap.c b/usr/src/common/elfcap/elfcap.c
index cefb986dfb..54aca25364 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 c71bb37a2f..5324034fcf 100644
--- a/usr/src/uts/i86pc/os/cpuid.c
+++ b/usr/src/uts/i86pc/os/cpuid.c
@@ -3284,6 +3284,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;
}