⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 translate_init.c

📁 qemu虚拟机代码
💻 C
📖 第 1 页 / 共 4 页
字号:
                    if (opc->opc2 == 0xFF) {                        printf(" %02x -- -- (%2d ----) : %s\n",                               opc->opc1, opc->opc1, opc->oname);                    } else {                        printf(" %02x %02x -- (%2d %4d) : %s\n",                               opc->opc1, opc->opc2, opc->opc1, opc->opc2,                                    opc->oname);                    }                } else {                    printf(" %02x %02x %02x (%2d %4d) : %s\n",                           opc->opc1, opc->opc2, opc->opc3,                           opc->opc1, (opc->opc3 << 5) | opc->opc2,                           opc->oname);                }            }#endif        }    }    fix_opcode_tables(env->opcodes);    fflush(stdout);    fflush(stderr);    return 0;}int cpu_ppc_register (CPUPPCState *env, ppc_def_t *def){    env->msr_mask = def->msr_mask;    env->flags = def->flags;    if (create_ppc_opcodes(env, def) < 0) {        printf("Error creating opcodes table\n");        fflush(stdout);        fflush(stderr);        return -1;    }    init_ppc_proc(env, def);#if defined(PPC_DUMP_CPU)    dump_sprs(env);#endif    fflush(stdout);    fflush(stderr);    return 0;}CPUPPCState *cpu_ppc_init(void){    CPUPPCState *env;    env = qemu_mallocz(sizeof(CPUPPCState));    if (!env)        return NULL;    cpu_exec_init(env);    tlb_flush(env, 1);#if defined (DO_SINGLE_STEP) && 0    /* Single step trace mode */    msr_se = 1;    msr_be = 1;#endif    msr_fp = 1; /* Allow floating point exceptions */    msr_me = 1; /* Allow machine check exceptions  */#if defined(CONFIG_USER_ONLY)    msr_pr = 1;#else    env->nip = 0xFFFFFFFC;#endif    do_compute_hflags(env);    env->reserve = -1;    return env;}void cpu_ppc_close(CPUPPCState *env){    /* Should also remove all opcode tables... */    free(env);}/*****************************************************************************//* PowerPC CPU definitions */static ppc_def_t ppc_defs[] ={    /* Embedded PPC */#if defined (TODO)    /* PPC 401 */    {        .name        = "401",        .pvr         = CPU_PPC_401,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_401,        .flags       = PPC_FLAGS_401,        .msr_mask    = xxx,    },#endif#if defined (TODO)    /* IOP480 (401 microcontroler) */    {        .name        = "iop480",        .pvr         = CPU_PPC_IOP480,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_401,        .flags       = PPC_FLAGS_401,        .msr_mask    = xxx,    },#endif#if defined (TODO)    /* PPC 403 GA */    {        .name        = "403ga",        .pvr         = CPU_PPC_403GA,        .pvr_mask    = 0xFFFFFF00,        .insns_flags = PPC_INSNS_403,        .flags       = PPC_FLAGS_403,        .msr_mask    = 0x000000000007D23D,    },#endif#if defined (TODO)    /* PPC 403 GB */    {        .name        = "403gb",        .pvr         = CPU_PPC_403GB,        .pvr_mask    = 0xFFFFFF00,        .insns_flags = PPC_INSNS_403,        .flags       = PPC_FLAGS_403,        .msr_mask    = 0x000000000007D23D,    },#endif#if defined (TODO)    /* PPC 403 GC */    {        .name        = "403gc",        .pvr         = CPU_PPC_403GC,        .pvr_mask    = 0xFFFFFF00,        .insns_flags = PPC_INSNS_403,        .flags       = PPC_FLAGS_403,        .msr_mask    = 0x000000000007D23D,    },#endif#if defined (TODO)    /* PPC 403 GCX */    {        .name        = "403gcx",        .pvr         = CPU_PPC_403GCX,        .pvr_mask    = 0xFFFFFF00,        .insns_flags = PPC_INSNS_403,        .flags       = PPC_FLAGS_403,        .msr_mask    = 0x000000000007D23D,    },#endif#if defined (TODO)    /* PPC 405 CR */    {        .name        = "405cr",        .pvr         = CPU_PPC_405,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* PPC 405 GP */    {        .name        = "405gp",        .pvr         = CPU_PPC_405,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* PPC 405 EP */    {        .name        = "405ep",        .pvr         = CPU_PPC_405EP,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* PPC 405 GPR */    {        .name        = "405gpr",        .pvr         = CPU_PPC_405GPR,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* PPC 405 D2 */    {        .name        = "405d2",        .pvr         = CPU_PPC_405D2,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* PPC 405 D4 */    {        .name        = "405d4",        .pvr         = CPU_PPC_405D4,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* Npe405 H */    {        .name        = "Npe405H",        .pvr         = CPU_PPC_NPE405H,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* Npe405 L */    {        .name        = "Npe405L",        .pvr         = CPU_PPC_NPE405L,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* STB03xx */    {        .name        = "STB03",        .pvr         = CPU_PPC_STB03,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* STB04xx */    {        .name        = "STB04",        .pvr         = CPU_PPC_STB04,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* STB25xx */    {        .name        = "STB25",        .pvr         = CPU_PPC_STB25,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_405,        .msr_mask    = 0x00000000020EFF30,    },#endif#if defined (TODO)    /* PPC 440 EP */    {        .name        = "440ep",        .pvr         = CPU_PPC_440EP,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_440,        .flags       = PPC_FLAGS_440,        .msr_mask    = 0x000000000006D630,    },#endif#if defined (TODO)    /* PPC 440 GP */    {        .name        = "440gp",        .pvr         = CPU_PPC_440GP,        .pvr_mask    = 0xFFFFFF00,        .insns_flags = PPC_INSNS_440,        .flags       = PPC_FLAGS_440,        .msr_mask    = 0x000000000006D630,    },#endif#if defined (TODO)    /* PPC 440 GX */    {        .name        = "440gx",        .pvr         = CPU_PPC_440GX,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_405,        .flags       = PPC_FLAGS_440,        .msr_mask    = 0x000000000006D630,    },#endif    /* 32 bits "classic" powerpc */#if defined (TODO)    /* PPC 601 */    {        .name        = "601",        .pvr         = CPU_PPC_601,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_601,        .flags       = PPC_FLAGS_601,        .msr_mask    = 0x000000000000FD70,    },#endif#if defined (TODO)    /* PPC 602 */    {        .name        = "602",        .pvr         = CPU_PPC_602,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_602,        .flags       = PPC_FLAGS_602,        .msr_mask    = 0x0000000000C7FF73,    },#endif#if defined (TODO)    /* PPC 603 */    {        .name        = "603",        .pvr         = CPU_PPC_603,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_603,        .flags       = PPC_FLAGS_603,        .msr_mask    = 0x000000000007FF73,    },#endif#if defined (TODO)    /* PPC 603e */    {        .name        = "603e",        .pvr         = CPU_PPC_603E,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_603,        .flags       = PPC_FLAGS_603,        .msr_mask    = 0x000000000007FF73,    },    {        .name        = "Stretch",        .pvr         = CPU_PPC_603E,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_603,        .flags       = PPC_FLAGS_603,        .msr_mask    = 0x000000000007FF73,    },#endif#if defined (TODO)    /* PPC 603ev */    {        .name        = "603ev",        .pvr         = CPU_PPC_603EV,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_603,        .flags       = PPC_FLAGS_603,        .msr_mask    = 0x000000000007FF73,    },#endif#if defined (TODO)    /* PPC 603r */    {        .name        = "603r",        .pvr         = CPU_PPC_603R,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_603,        .flags       = PPC_FLAGS_603,        .msr_mask    = 0x000000000007FF73,    },    {        .name        = "Goldeneye",        .pvr         = CPU_PPC_603R,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_603,        .flags       = PPC_FLAGS_603,        .msr_mask    = 0x000000000007FF73,    },#endif#if defined (TODO)    /* XXX: TODO: according to Motorola UM, this is a derivative to 603e */    {        .name        = "G2",        .pvr         = CPU_PPC_G2,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_G2,        .flags       = PPC_FLAGS_G2,        .msr_mask    = 0x000000000006FFF2,    },    { /* Same as G2, with LE mode support */        .name        = "G2le",        .pvr         = CPU_PPC_G2LE,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_G2,        .flags       = PPC_FLAGS_G2,        .msr_mask    = 0x000000000007FFF3,    },#endif    /* PPC 604 */    {        .name        = "604",        .pvr         = CPU_PPC_604,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_604,        .flags       = PPC_FLAGS_604,        .msr_mask    = 0x000000000005FF77,    },    /* PPC 604e */    {        .name        = "604e",        .pvr         = CPU_PPC_604E,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_604,        .flags       = PPC_FLAGS_604,        .msr_mask    = 0x000000000005FF77,    },    /* PPC 604r */    {        .name        = "604r",        .pvr         = CPU_PPC_604R,        .pvr_mask    = 0xFFFF0000,        .insns_flags = PPC_INSNS_604,        .flags       = PPC_FLAGS_604,        .msr_mask    = 0x000000000005FF77,    },    /* generic G3 */    {        .name        = "G3",        .pvr         = CPU_PPC_74x,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x0,        .flags       = PPC_FLAGS_7x0,        .msr_mask    = 0x000000000007FF77,    },#if defined (TODO)    /* MPC740 (G3) */    {        .name        = "740",        .pvr         = CPU_PPC_74x,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x0,        .flags       = PPC_FLAGS_7x0,        .msr_mask    = 0x000000000007FF77,    },    {        .name        = "Arthur",        .pvr         = CPU_PPC_74x,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x0,        .flags       = PPC_FLAGS_7x0,        .msr_mask    = 0x000000000007FF77,    },#endif#if defined (TODO)    /* MPC745 (G3) */    {        .name        = "745",        .pvr         = CPU_PPC_74x,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x5,        .flags       = PPC_FLAGS_7x5,        .msr_mask    = 0x000000000007FF77,    },    {        .name        = "Goldfinger",        .pvr         = CPU_PPC_74x,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x5,        .flags       = PPC_FLAGS_7x5,        .msr_mask    = 0x000000000007FF77,    },#endif    /* MPC750 (G3) */    {        .name        = "750",        .pvr         = CPU_PPC_74x,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x0,        .flags       = PPC_FLAGS_7x0,        .msr_mask    = 0x000000000007FF77,    },#if defined (TODO)    /* MPC755 (G3) */    {        .name        = "755",        .pvr         = CPU_PPC_755,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x5,        .flags       = PPC_FLAGS_7x5,        .msr_mask    = 0x000000000007FF77,    },#endif#if defined (TODO)    /* MPC740P (G3) */    {        .name        = "740p",        .pvr         = CPU_PPC_74xP,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x0,        .flags       = PPC_FLAGS_7x0,        .msr_mask    = 0x000000000007FF77,    },    {        .name        = "Conan/Doyle",        .pvr         = CPU_PPC_74xP,        .pvr_mask    = 0xFFFFF000,        .insns_flags = PPC_INSNS_7x0,        .flags       = PPC_FLAGS_7x0,        .msr_mask    = 0x000000000007FF77,    },

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -