📄 translate_init.c
字号:
#endif#if defined (TODO) /* MPC745P (G3) */ { .name = "745p", .pvr = CPU_PPC_74xP, .pvr_mask = 0xFFFFF000, .insns_flags = PPC_INSNS_7x5, .flags = PPC_FLAGS_7x5, .msr_mask = 0x000000000007FF77, },#endif /* MPC750P (G3) */ { .name = "750p", .pvr = CPU_PPC_74xP, .pvr_mask = 0xFFFFF000, .insns_flags = PPC_INSNS_7x0, .flags = PPC_FLAGS_7x0, .msr_mask = 0x000000000007FF77, },#if defined (TODO) /* MPC755P (G3) */ { .name = "755p", .pvr = CPU_PPC_74xP, .pvr_mask = 0xFFFFF000, .insns_flags = PPC_INSNS_7x5, .flags = PPC_FLAGS_7x5, .msr_mask = 0x000000000007FF77, },#endif /* IBM 750CXe (G3 embedded) */ { .name = "750cxe", .pvr = CPU_PPC_750CXE, .pvr_mask = 0xFFFFF000, .insns_flags = PPC_INSNS_7x0, .flags = PPC_FLAGS_7x0, .msr_mask = 0x000000000007FF77, }, /* IBM 750FX (G3 embedded) */ { .name = "750fx", .pvr = CPU_PPC_750FX, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_7x0, .flags = PPC_FLAGS_7x0, .msr_mask = 0x000000000007FF77, }, /* IBM 750GX (G3 embedded) */ { .name = "750gx", .pvr = CPU_PPC_750GX, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_7x0, .flags = PPC_FLAGS_7x0, .msr_mask = 0x000000000007FF77, },#if defined (TODO) /* generic G4 */ { .name = "G4", .pvr = CPU_PPC_7400, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, },#endif#if defined (TODO) /* PPC 7400 (G4) */ { .name = "7400", .pvr = CPU_PPC_7400, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, }, { .name = "Max", .pvr = CPU_PPC_7400, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, },#endif#if defined (TODO) /* PPC 7410 (G4) */ { .name = "7410", .pvr = CPU_PPC_7410, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, }, { .name = "Nitro", .pvr = CPU_PPC_7410, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, },#endif /* XXX: 7441 */ /* XXX: 7445 */ /* XXX: 7447 */ /* XXX: 7447A */#if defined (TODO) /* PPC 7450 (G4) */ { .name = "7450", .pvr = CPU_PPC_7450, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, }, { .name = "Vger", .pvr = CPU_PPC_7450, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, },#endif /* XXX: 7451 */#if defined (TODO) /* PPC 7455 (G4) */ { .name = "7455", .pvr = CPU_PPC_7455, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, }, { .name = "Apollo 6", .pvr = CPU_PPC_7455, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, },#endif#if defined (TODO) /* PPC 7457 (G4) */ { .name = "7457", .pvr = CPU_PPC_7457, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, }, { .name = "Apollo 7", .pvr = CPU_PPC_7457, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, },#endif#if defined (TODO) /* PPC 7457A (G4) */ { .name = "7457A", .pvr = CPU_PPC_7457A, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, }, { .name = "Apollo 7 PM", .pvr = CPU_PPC_7457A, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_74xx, .flags = PPC_FLAGS_74xx, .msr_mask = 0x000000000205FF77, },#endif /* 64 bits PPC */#if defined (TODO) /* PPC 620 */ { .name = "620", .pvr = CPU_PPC_620, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_620, .flags = PPC_FLAGS_620, .msr_mask = 0x800000000005FF73, },#endif#if defined (TODO) /* PPC 630 (POWER3) */ { .name = "630", .pvr = CPU_PPC_630, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_630, .flags = PPC_FLAGS_630, .msr_mask = xxx, } { .name = "POWER3", .pvr = CPU_PPC_630, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_630, .flags = PPC_FLAGS_630, .msr_mask = xxx, }#endif#if defined (TODO) /* PPC 631 (Power 3+)*/ { .name = "631", .pvr = CPU_PPC_631, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_631, .flags = PPC_FLAGS_631, .msr_mask = xxx, }, { .name = "POWER3+", .pvr = CPU_PPC_631, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_631, .flags = PPC_FLAGS_631, .msr_mask = xxx, },#endif#if defined (TODO) /* POWER4 */ { .name = "POWER4", .pvr = CPU_PPC_POWER4, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_POWER4, .flags = PPC_FLAGS_POWER4, .msr_mask = xxx, },#endif#if defined (TODO) /* POWER4p */ { .name = "POWER4+", .pvr = CPU_PPC_POWER4P, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_POWER4, .flags = PPC_FLAGS_POWER4, .msr_mask = xxx, },#endif#if defined (TODO) /* POWER5 */ { .name = "POWER5", .pvr = CPU_PPC_POWER5, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_POWER5, .flags = PPC_FLAGS_POWER5, .msr_mask = xxx, },#endif#if defined (TODO) /* POWER5+ */ { .name = "POWER5+", .pvr = CPU_PPC_POWER5P, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_POWER5, .flags = PPC_FLAGS_POWER5, .msr_mask = xxx, },#endif#if defined (TODO) /* PPC 970 */ { .name = "970", .pvr = CPU_PPC_970, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_970, .flags = PPC_FLAGS_970, .msr_mask = 0x900000000204FF36, },#endif#if defined (TODO) /* PPC 970FX (G5) */ { .name = "970fx", .pvr = CPU_PPC_970FX, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_970FX, .flags = PPC_FLAGS_970FX, .msr_mask = 0x800000000204FF36, },#endif#if defined (TODO) /* RS64 (Apache/A35) */ /* This one seems to support the whole POWER2 instruction set * and the PowerPC 64 one. */ { .name = "RS64", .pvr = CPU_PPC_RS64, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "Apache", .pvr = CPU_PPC_RS64, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "A35", .pvr = CPU_PPC_RS64, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, },#endif#if defined (TODO) /* RS64-II (NorthStar/A50) */ { .name = "RS64-II", .pvr = CPU_PPC_RS64II, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "NortStar", .pvr = CPU_PPC_RS64II, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "A50", .pvr = CPU_PPC_RS64II, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, },#endif#if defined (TODO) /* RS64-III (Pulsar) */ { .name = "RS64-III", .pvr = CPU_PPC_RS64III, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "Pulsar", .pvr = CPU_PPC_RS64III, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, },#endif#if defined (TODO) /* RS64-IV (IceStar/IStar/SStar) */ { .name = "RS64-IV", .pvr = CPU_PPC_RS64IV, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "IceStar", .pvr = CPU_PPC_RS64IV, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "IStar", .pvr = CPU_PPC_RS64IV, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, }, { .name = "SStar", .pvr = CPU_PPC_RS64IV, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_RS64, .flags = PPC_FLAGS_RS64, .msr_mask = xxx, },#endif /* POWER */#if defined (TODO) /* Original POWER */ { .name = "POWER", .pvr = CPU_POWER, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_POWER, .flags = PPC_FLAGS_POWER, .msr_mask = xxx, },#endif#if defined (TODO) /* POWER2 */ { .name = "POWER2", .pvr = CPU_POWER2, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_POWER, .flags = PPC_FLAGS_POWER, .msr_mask = xxx, },#endif /* Generic PowerPCs */#if defined (TODO) { .name = "ppc64", .pvr = CPU_PPC_970, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_PPC64, .flags = PPC_FLAGS_PPC64, .msr_mask = 0xA00000000204FF36, },#endif { .name = "ppc32", .pvr = CPU_PPC_604, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_PPC32, .flags = PPC_FLAGS_PPC32, .msr_mask = 0x000000000005FF77, }, /* Fallback */ { .name = "ppc", .pvr = CPU_PPC_604, .pvr_mask = 0xFFFF0000, .insns_flags = PPC_INSNS_PPC32, .flags = PPC_FLAGS_PPC32, .msr_mask = 0x000000000005FF77, },};int ppc_find_by_name (const unsigned char *name, ppc_def_t **def){ int i, ret; ret = -1; *def = NULL; for (i = 0; strcmp(ppc_defs[i].name, "ppc") != 0; i++) { if (strcasecmp(name, ppc_defs[i].name) == 0) { *def = &ppc_defs[i]; ret = 0; break; } } return ret;}int ppc_find_by_pvr (uint32_t pvr, ppc_def_t **def){ int i, ret; ret = -1; *def = NULL; for (i = 0; ppc_defs[i].name != NULL; i++) { if ((pvr & ppc_defs[i].pvr_mask) == (ppc_defs[i].pvr & ppc_defs[i].pvr_mask)) { *def = &ppc_defs[i]; ret = 0; break; } } return ret;}void ppc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...)){ int i; for (i = 0; ; i++) { (*cpu_fprintf)(f, "PowerPC '%s' PVR %08x mask %08x\n", ppc_defs[i].name, ppc_defs[i].pvr, ppc_defs[i].pvr_mask); if (strcmp(ppc_defs[i].name, "ppc") == 0) break; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -