Cleanup and add more PowerPC core definitions.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2684 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
j_mayer 2007-04-16 09:31:49 +00:00
parent c55e9aefa7
commit 3a6078548d

View file

@ -1875,7 +1875,7 @@ static void init_ppc_proc (CPUPPCState *env, ppc_def_t *def)
def->pvr); def->pvr);
printf("%s: PVR %08x mask %08x => %08x\n", __func__, printf("%s: PVR %08x mask %08x => %08x\n", __func__,
def->pvr, def->pvr_mask, def->pvr & def->pvr_mask); def->pvr, def->pvr_mask, def->pvr & def->pvr_mask);
switch (def->pvr & def->pvr_mask) { switch (def->pvr) {
/* Embedded PowerPC from IBM */ /* Embedded PowerPC from IBM */
case CPU_PPC_401A1: /* 401 A1 family */ case CPU_PPC_401A1: /* 401 A1 family */
case CPU_PPC_401B2: /* 401 B2 family */ case CPU_PPC_401B2: /* 401 B2 family */
@ -2715,8 +2715,7 @@ int cpu_ppc_register (CPUPPCState *env, ppc_def_t *def)
/*****************************************************************************/ /*****************************************************************************/
/* PowerPC CPU definitions */ /* PowerPC CPU definitions */
static ppc_def_t ppc_defs[] = static ppc_def_t ppc_defs[] = {
{
/* Embedded PowerPC */ /* Embedded PowerPC */
#if defined (TODO) #if defined (TODO)
/* PowerPC 401 */ /* PowerPC 401 */
@ -2806,7 +2805,6 @@ static ppc_def_t ppc_defs[] =
.msr_mask = 0x000000000007D23D, .msr_mask = 0x000000000007D23D,
}, },
#endif #endif
#if defined (TODO)
/* Generic PowerPC 405 */ /* Generic PowerPC 405 */
{ {
.name = "405", .name = "405",
@ -2816,35 +2814,41 @@ static ppc_def_t ppc_defs[] =
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
}, },
#endif
#if defined (TODO)
/* PowerPC 405 CR */ /* PowerPC 405 CR */
{ {
.name = "405cr", .name = "405cr",
.pvr = CPU_PPC_405, .pvr = CPU_PPC_405,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
}, },
#endif
#if defined (TODO) #if defined (TODO)
/* PowerPC 405 GP */ /* PowerPC 405 GP */
{ {
.name = "405gp", .name = "405gp",
.pvr = CPU_PPC_405, .pvr = CPU_PPC_405,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
}, },
#endif #endif
#if defined (TODO)
/* PowerPC 405 EP */ /* PowerPC 405 EP */
{ {
.name = "405ep", .name = "405ep",
.pvr = CPU_PPC_405EP, .pvr = CPU_PPC_405EP,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30,
},
#if defined (TODO)
/* PowerPC 405 EZ */
{
.name = "405ez",
.pvr = CPU_PPC_405EZ,
.pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2855,7 +2859,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "405gpr", .name = "405gpr",
.pvr = CPU_PPC_405GPR, .pvr = CPU_PPC_405GPR,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2866,7 +2870,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "405d2", .name = "405d2",
.pvr = CPU_PPC_405D2, .pvr = CPU_PPC_405D2,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2877,7 +2881,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "405d4", .name = "405d4",
.pvr = CPU_PPC_405D4, .pvr = CPU_PPC_405D4,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2888,7 +2892,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "Npe405H", .name = "Npe405H",
.pvr = CPU_PPC_NPE405H, .pvr = CPU_PPC_NPE405H,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2899,7 +2903,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "Npe405L", .name = "Npe405L",
.pvr = CPU_PPC_NPE405L, .pvr = CPU_PPC_NPE405L,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2910,7 +2914,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "STB01000", .name = "STB01000",
.pvr = CPU_PPC_STB01000, .pvr = CPU_PPC_STB01000,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2921,7 +2925,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "STB01010", .name = "STB01010",
.pvr = CPU_PPC_STB01010, .pvr = CPU_PPC_STB01010,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2932,18 +2936,18 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "STB0210", .name = "STB0210",
.pvr = CPU_PPC_STB0210, .pvr = CPU_PPC_STB0210,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
}, },
#endif #endif
#if defined (TODO) #if defined (TODO) || 1
/* STB03xx */ /* STB03xx */
{ {
.name = "STB03", .name = "STB03",
.pvr = CPU_PPC_STB03, .pvr = CPU_PPC_STB03,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2954,7 +2958,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "STB043", .name = "STB043",
.pvr = CPU_PPC_STB043, .pvr = CPU_PPC_STB043,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2965,18 +2969,18 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "STB045", .name = "STB045",
.pvr = CPU_PPC_STB045, .pvr = CPU_PPC_STB045,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
}, },
#endif #endif
#if defined (TODO) #if defined (TODO) || 1
/* STB25xx */ /* STB25xx */
{ {
.name = "STB25", .name = "STB25",
.pvr = CPU_PPC_STB25, .pvr = CPU_PPC_STB25,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2987,7 +2991,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "STB130", .name = "STB130",
.pvr = CPU_PPC_STB130, .pvr = CPU_PPC_STB130,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -2998,7 +3002,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "x2vp4", .name = "x2vp4",
.pvr = CPU_PPC_X2VP4, .pvr = CPU_PPC_X2VP4,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -3006,7 +3010,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "x2vp7", .name = "x2vp7",
.pvr = CPU_PPC_X2VP7, .pvr = CPU_PPC_X2VP7,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -3014,7 +3018,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "x2vp20", .name = "x2vp20",
.pvr = CPU_PPC_X2VP20, .pvr = CPU_PPC_X2VP20,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -3022,7 +3026,7 @@ static ppc_def_t ppc_defs[] =
{ {
.name = "x2vp50", .name = "x2vp50",
.pvr = CPU_PPC_X2VP50, .pvr = CPU_PPC_X2VP50,
.pvr_mask = 0xFFFF0000, .pvr_mask = 0xFFFFFFFF,
.insns_flags = PPC_INSNS_405, .insns_flags = PPC_INSNS_405,
.flags = PPC_FLAGS_405, .flags = PPC_FLAGS_405,
.msr_mask = 0x00000000020EFF30, .msr_mask = 0x00000000020EFF30,
@ -3697,7 +3701,7 @@ static ppc_def_t ppc_defs[] =
.msr_mask = xxx, .msr_mask = xxx,
}, },
#endif #endif
#if defined (TODO) #if defined (TODO) || 1
/* PowerPC 970 */ /* PowerPC 970 */
{ {
.name = "970", .name = "970",
@ -3855,7 +3859,7 @@ static ppc_def_t ppc_defs[] =
}, },
#endif #endif
/* Generic PowerPCs */ /* Generic PowerPCs */
#if defined (TODO) #if defined (TODO) || 1
{ {
.name = "ppc64", .name = "ppc64",
.pvr = CPU_PPC_970, .pvr = CPU_PPC_970,