s390x/cpumodel: enum type S390FeatGroup now gets generated
The enumeration type S390FeatGroup is now generated as well. This shall simplify the definition of new feature groups without the requirement to modify existing code. Signed-off-by: Michael Mueller <mimu@linux.ibm.com> Message-Id: <20180725143617.8731-1-mimu@linux.ibm.com> Acked-by: David Hildenbrand <david@redhat.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
9ca056d68f
commit
a5f9ecc49d
@ -13,7 +13,6 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/module.h"
|
||||
#include "cpu_features.h"
|
||||
#include "gen-features.h"
|
||||
|
||||
#define FEAT_INIT(_name, _type, _bit, _desc) \
|
||||
{ \
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include "qemu/bitmap.h"
|
||||
#include "cpu_features_def.h"
|
||||
#include "gen-features.h"
|
||||
|
||||
/* CPU features are announced via different ways */
|
||||
typedef enum {
|
||||
@ -64,24 +65,6 @@ void s390_add_from_feat_block(S390FeatBitmap features, S390FeatType type,
|
||||
void s390_feat_bitmap_to_ascii(const S390FeatBitmap features, void *opaque,
|
||||
void (*fn)(const char *name, void *opaque));
|
||||
|
||||
/* static groups that will never change */
|
||||
typedef enum {
|
||||
S390_FEAT_GROUP_PLO,
|
||||
S390_FEAT_GROUP_TOD_CLOCK_STEERING,
|
||||
S390_FEAT_GROUP_GEN13_PTFF_ENH,
|
||||
S390_FEAT_GROUP_MSA,
|
||||
S390_FEAT_GROUP_MSA_EXT_1,
|
||||
S390_FEAT_GROUP_MSA_EXT_2,
|
||||
S390_FEAT_GROUP_MSA_EXT_3,
|
||||
S390_FEAT_GROUP_MSA_EXT_4,
|
||||
S390_FEAT_GROUP_MSA_EXT_5,
|
||||
S390_FEAT_GROUP_MSA_EXT_6,
|
||||
S390_FEAT_GROUP_MSA_EXT_7,
|
||||
S390_FEAT_GROUP_MSA_EXT_8,
|
||||
S390_FEAT_GROUP_MULTIPLE_EPOCH_PTFF,
|
||||
S390_FEAT_GROUP_MAX,
|
||||
} S390FeatGroup;
|
||||
|
||||
/* Definition of a CPU feature group */
|
||||
typedef struct {
|
||||
const char *name; /* name exposed to the user */
|
||||
|
@ -661,6 +661,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 +669,7 @@ static CpuFeatDefSpec CpuFeatDef[] = {
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const char *enum_name;
|
||||
BitSpec bits;
|
||||
} FeatGroupDefSpec;
|
||||
|
||||
@ -678,7 +680,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 +689,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 +812,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 +841,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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user