aboutsummaryrefslogtreecommitdiff
path: root/target/s390x/gen-features.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/s390x/gen-features.c')
-rw-r--r--target/s390x/gen-features.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
index 6626b6f565..384b61cd67 100644
--- a/target/s390x/gen-features.c
+++ b/target/s390x/gen-features.c
@@ -1,7 +1,7 @@
/*
* S390 feature list generator
*
- * Copyright 2016 IBM Corp.
+ * Copyright IBM Corp. 2016, 2018
*
* Author(s): Michael Mueller <mimu@linux.vnet.ibm.com>
* David Hildenbrand <dahi@linux.vnet.ibm.com>
@@ -471,6 +471,7 @@ static uint16_t full_GEN14_GA1[] = {
S390_FEAT_GROUP_MSA_EXT_7,
S390_FEAT_GROUP_MSA_EXT_8,
S390_FEAT_CMM_NT,
+ S390_FEAT_ETOKEN,
S390_FEAT_HPMA2,
S390_FEAT_SIE_KSS,
S390_FEAT_GROUP_MULTIPLE_EPOCH_PTFF,
@@ -661,6 +662,7 @@ static CpuFeatDefSpec CpuFeatDef[] = {
#define FEAT_GROUP_INITIALIZER(_name) \
{ \
.name = "S390_FEAT_GROUP_LIST_" #_name, \
+ .enum_name = "S390_FEAT_GROUP_" #_name, \
.bits = \
{ .data = group_##_name, \
.len = ARRAY_SIZE(group_##_name) }, \
@@ -668,6 +670,7 @@ static CpuFeatDefSpec CpuFeatDef[] = {
typedef struct {
const char *name;
+ const char *enum_name;
BitSpec bits;
} FeatGroupDefSpec;
@@ -678,7 +681,6 @@ static FeatGroupDefSpec FeatGroupDef[] = {
FEAT_GROUP_INITIALIZER(PLO),
FEAT_GROUP_INITIALIZER(TOD_CLOCK_STEERING),
FEAT_GROUP_INITIALIZER(GEN13_PTFF),
- FEAT_GROUP_INITIALIZER(MULTIPLE_EPOCH_PTFF),
FEAT_GROUP_INITIALIZER(MSA),
FEAT_GROUP_INITIALIZER(MSA_EXT_1),
FEAT_GROUP_INITIALIZER(MSA_EXT_2),
@@ -688,6 +690,7 @@ static FeatGroupDefSpec FeatGroupDef[] = {
FEAT_GROUP_INITIALIZER(MSA_EXT_6),
FEAT_GROUP_INITIALIZER(MSA_EXT_7),
FEAT_GROUP_INITIALIZER(MSA_EXT_8),
+ FEAT_GROUP_INITIALIZER(MULTIPLE_EPOCH_PTFF),
};
#define QEMU_FEAT_INITIALIZER(_name) \
@@ -810,6 +813,19 @@ static void print_feature_group_defs(void)
}
}
+static void print_feature_group_enum_type(void)
+{
+ int i;
+
+ printf("\n/* CPU feature group enum type */\n"
+ "typedef enum {\n");
+ for (i = 0; i < ARRAY_SIZE(FeatGroupDef); i++) {
+ printf("\t%s,\n", FeatGroupDef[i].enum_name);
+ }
+ printf("\tS390_FEAT_GROUP_MAX,\n"
+ "} S390FeatGroup;\n");
+}
+
int main(int argc, char *argv[])
{
printf("/*\n"
@@ -826,6 +842,7 @@ int main(int argc, char *argv[])
print_feature_defs();
print_feature_group_defs();
print_qemu_feature_defs();
+ print_feature_group_enum_type();
printf("\n#endif\n");
return 0;
}