mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
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:
parent
565873b380
commit
b58fd0c39b
2 changed files with 39 additions and 37 deletions
|
@ -2732,4 +2732,43 @@ void dump_mmu(CPUPPCState *env);
|
||||||
void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len);
|
void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len);
|
||||||
void ppc_store_vscr(CPUPPCState *env, uint32_t vscr);
|
void ppc_store_vscr(CPUPPCState *env, uint32_t vscr);
|
||||||
uint32_t ppc_get_vscr(CPUPPCState *env);
|
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 */
|
#endif /* PPC_CPU_H */
|
||||||
|
|
|
@ -2480,18 +2480,6 @@ static void init_excp_POWER10(CPUPPCState *env)
|
||||||
|
|
||||||
#endif
|
#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)
|
static int check_pow_hid0(CPUPPCState *env)
|
||||||
{
|
{
|
||||||
if (env->spr[SPR_HID0] & 0x00E00000) {
|
if (env->spr[SPR_HID0] & 0x00E00000) {
|
||||||
|
@ -2510,31 +2498,6 @@ static int check_pow_hid0_74xx(CPUPPCState *env)
|
||||||
return 0;
|
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)
|
static void init_proc_405(CPUPPCState *env)
|
||||||
{
|
{
|
||||||
register_40x_sprs(env);
|
register_40x_sprs(env);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue