Am 12.02.2013 17:48, schrieb Andreas Färber:
> Am 12.02.2013 11:13, schrieb Andreas Färber:
>> Turn the array of model definitions into a set of self-registering QOM
>> types with their own class_init. Unique identifiers are obtained from
>> the combination of PVR, SVR and family identifiers; this requires all
>> alias #defines to be removed from the list. Possibly there are some more
>> left after this commit that are not currently being compiled.
>>
>> Prepares for introducing abstract intermediate CPU types for families.
>>
>> Keep the right-aligned macro line breaks within 78 chars to aid
>> three-way merges.
>>
>> Signed-off-by: Andreas Färber <[email protected]>
>> ---
>> target-ppc/cpu-qom.h | 17 ++++-
>> target-ppc/cpu.h | 20 ------
>> target-ppc/translate_init.c | 152
>> ++++++++++++++++++++-----------------------
>> 3 Dateien geändert, 85 Zeilen hinzugefügt(+), 104 Zeilen entfernt(-)
> [...]
>> diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
>> index fd8bf00..93e38ba 100644
>> --- a/target-ppc/translate_init.c
>> +++ b/target-ppc/translate_init.c
> [...]
>> @@ -10316,20 +10317,7 @@ static const TypeInfo ppc_cpu_type_info = {
>>
>> static void ppc_cpu_register_types(void)
>> {
>> - int i;
>> -
>> type_register_static(&ppc_cpu_type_info);
>> -
>> - for (i = 0; i < ARRAY_SIZE(ppc_defs); i++) {
>> - const ppc_def_t *def = &ppc_defs[i];
>> -#if defined(TARGET_PPCEMB)
>> - /* When using the ppcemb target, we only support 440 style cores */
>> - if (def->mmu_model != POWERPC_MMU_BOOKE) {
>> - continue;
>> - }
>> -#endif
>> - ppc_cpu_register_model(def);
>> - }
>> }
>>
>> type_init(ppc_cpu_register_types)
>
> Sorry, I forgot to re-add the TARGET_PPCEMB check above.
Here's the fix (sorry for linewraps):
@@ -7507,6 +7507,14 @@ enum {
/* PowerPC CPU definitions
*/
#define POWERPC_DEF_PREFIX(pvr, svr, type)
\
glue(glue(glue(glue(pvr, _), svr), _), type)
+#if defined(TARGET_PPCEMB)
+#define POWERPC_DEF_CONDITION(type)
\
+ if (glue(POWERPC_MMU_, type) != POWERPC_MMU_BOOKE) {
\
+ return;
\
+ }
+#else
+#define POWERPC_DEF_CONDITION(type)
+#endif
#define POWERPC_DEF_SVR(_name, _pvr, _svr, _type)
\
static void
\
glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type), _cpu_class_init)
\
@@ -7539,6 +7547,7 @@ enum {
static void
\
glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type),
_cpu_register_types)(void) \
{
\
+ POWERPC_DEF_CONDITION(_type)
\
type_register_static(
\
&glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type),
_cpu_type_info)); \
}
\
I'll repost when the family definitions are cleaned up.
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg