target/ppc: cpu_init: Move check_pow and QOM macros to a header

These will need to be accessed from other files once we move the CPUs
code to separate files.

The check_pow_hid0 and check_pow_hid0_74xx are too specific to be
moved to a header so I'll deal with them later when splitting this
code between the multiple CPU families.

Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Message-Id: <20220216162426.1885923-27-farosas@linux.ibm.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
Fabiano Rosas 2022-02-18 08:34:15 +01:00 committed by Cédric Le Goater
parent 565873b380
commit b58fd0c39b
2 changed files with 39 additions and 37 deletions

View File

@ -2732,4 +2732,43 @@ void dump_mmu(CPUPPCState *env);
void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len);
void ppc_store_vscr(CPUPPCState *env, uint32_t vscr);
uint32_t ppc_get_vscr(CPUPPCState *env);
/*****************************************************************************/
/* Power management enable checks */
static inline int check_pow_none(CPUPPCState *env)
{
return 0;
}
static inline int check_pow_nocheck(CPUPPCState *env)
{
return 1;
}
/*****************************************************************************/
/* PowerPC implementations definitions */
#define POWERPC_FAMILY(_name) \
static void \
glue(glue(ppc_, _name), _cpu_family_class_init)(ObjectClass *, void *); \
\
static const TypeInfo \
glue(glue(ppc_, _name), _cpu_family_type_info) = { \
.name = stringify(_name) "-family-" TYPE_POWERPC_CPU, \
.parent = TYPE_POWERPC_CPU, \
.abstract = true, \
.class_init = glue(glue(ppc_, _name), _cpu_family_class_init), \
}; \
\
static void glue(glue(ppc_, _name), _cpu_family_register_types)(void) \
{ \
type_register_static( \
&glue(glue(ppc_, _name), _cpu_family_type_info)); \
} \
\
type_init(glue(glue(ppc_, _name), _cpu_family_register_types)) \
\
static void glue(glue(ppc_, _name), _cpu_family_class_init)
#endif /* PPC_CPU_H */

View File

@ -2480,18 +2480,6 @@ static void init_excp_POWER10(CPUPPCState *env)
#endif
/*****************************************************************************/
/* Power management enable checks */
static int check_pow_none(CPUPPCState *env)
{
return 0;
}
static int check_pow_nocheck(CPUPPCState *env)
{
return 1;
}
static int check_pow_hid0(CPUPPCState *env)
{
if (env->spr[SPR_HID0] & 0x00E00000) {
@ -2510,31 +2498,6 @@ static int check_pow_hid0_74xx(CPUPPCState *env)
return 0;
}
/*****************************************************************************/
/* PowerPC implementations definitions */
#define POWERPC_FAMILY(_name) \
static void \
glue(glue(ppc_, _name), _cpu_family_class_init)(ObjectClass *, void *); \
\
static const TypeInfo \
glue(glue(ppc_, _name), _cpu_family_type_info) = { \
.name = stringify(_name) "-family-" TYPE_POWERPC_CPU, \
.parent = TYPE_POWERPC_CPU, \
.abstract = true, \
.class_init = glue(glue(ppc_, _name), _cpu_family_class_init), \
}; \
\
static void glue(glue(ppc_, _name), _cpu_family_register_types)(void) \
{ \
type_register_static( \
&glue(glue(ppc_, _name), _cpu_family_type_info)); \
} \
\
type_init(glue(glue(ppc_, _name), _cpu_family_register_types)) \
\
static void glue(glue(ppc_, _name), _cpu_family_class_init)
static void init_proc_405(CPUPPCState *env)
{
register_40x_sprs(env);