translate_init.c

来自「xen虚拟机源代码安装包」· C语言 代码 · 共 1,866 行 · 第 1/5 页

C
1,866
字号
static void gen_spr_G2_755 (CPUPPCState *env){    /* SGPRs */    spr_register(env, SPR_SPRG4, "SPRG4",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_SPRG5, "SPRG5",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_SPRG6, "SPRG6",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_SPRG7, "SPRG7",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR common to all 7xx PowerPC implementations */static void gen_spr_7xx (CPUPPCState *env){    /* Breakpoints */    /* XXX : not implemented */    spr_register(env, SPR_DABR, "DABR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_IABR, "IABR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Cache management */    /* XXX : not implemented */    spr_register(env, SPR_ICTC, "ICTC",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Performance monitors */    /* XXX : not implemented */    spr_register(env, SPR_MMCR0, "MMCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_MMCR1, "MMCR1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_PMC1, "PMC1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_PMC2, "PMC2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_PMC3, "PMC3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_PMC4, "PMC4",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_SIAR, "SIAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_UMMCR0, "UMMCR0",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_UMMCR1, "UMMCR1",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_UPMC1, "UPMC1",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_UPMC2, "UPMC2",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_UPMC3, "UPMC3",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_UPMC4, "UPMC4",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_USIAR, "USIAR",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* External access control */    /* XXX : not implemented */    spr_register(env, SPR_EAR, "EAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}static void gen_spr_thrm (CPUPPCState *env){    /* Thermal management */    /* XXX : not implemented */    spr_register(env, SPR_THRM1, "THRM1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_THRM2, "THRM2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_THRM3, "THRM3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR specific to PowerPC 604 implementation */static void gen_spr_604 (CPUPPCState *env){    /* Processor identification */    spr_register(env, SPR_PIR, "PIR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_pir,                 0x00000000);    /* Breakpoints */    /* XXX : not implemented */    spr_register(env, SPR_IABR, "IABR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_DABR, "DABR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Performance counters */    /* XXX : not implemented */    spr_register(env, SPR_MMCR0, "MMCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_PMC1, "PMC1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_PMC2, "PMC2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_SIAR, "SIAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_SDA, "SDA",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* External access control */    /* XXX : not implemented */    spr_register(env, SPR_EAR, "EAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR specific to PowerPC 603 implementation */static void gen_spr_603 (CPUPPCState *env){    /* External access control */    /* XXX : not implemented */    spr_register(env, SPR_EAR, "EAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR specific to PowerPC G2 implementation */static void gen_spr_G2 (CPUPPCState *env){    /* Memory base address */    /* MBAR */    /* XXX : not implemented */    spr_register(env, SPR_MBAR, "MBAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Exception processing */    spr_register(env, SPR_BOOKE_CSRR0, "CSRR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_BOOKE_CSRR1, "CSRR1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Breakpoints */    /* XXX : not implemented */    spr_register(env, SPR_DABR, "DABR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_DABR2, "DABR2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_IABR, "IABR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_IABR2, "IABR2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_IBCR, "IBCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_DBCR, "DBCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR specific to PowerPC 602 implementation */static void gen_spr_602 (CPUPPCState *env){    /* ESA registers */    /* XXX : not implemented */    spr_register(env, SPR_SER, "SER",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_SEBR, "SEBR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_ESASRR, "ESASRR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Floating point status */    /* XXX : not implemented */    spr_register(env, SPR_SP, "SP",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_LT, "LT",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Watchdog timer */    /* XXX : not implemented */    spr_register(env, SPR_TCR, "TCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Interrupt base */    spr_register(env, SPR_IBR, "IBR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_IABR, "IABR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR specific to PowerPC 601 implementation */static void gen_spr_601 (CPUPPCState *env){    /* Multiplication/division register */    /* MQ */    spr_register(env, SPR_MQ, "MQ",                 &spr_read_generic, &spr_write_generic,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* RTC registers */    spr_register(env, SPR_601_RTCU, "RTCU",                 SPR_NOACCESS, SPR_NOACCESS,                 SPR_NOACCESS, &spr_write_601_rtcu,                 0x00000000);    spr_register(env, SPR_601_VRTCU, "RTCU",                 &spr_read_601_rtcu, SPR_NOACCESS,                 &spr_read_601_rtcu, SPR_NOACCESS,                 0x00000000);    spr_register(env, SPR_601_RTCL, "RTCL",                 SPR_NOACCESS, SPR_NOACCESS,                 SPR_NOACCESS, &spr_write_601_rtcl,                 0x00000000);    spr_register(env, SPR_601_VRTCL, "RTCL",                 &spr_read_601_rtcl, SPR_NOACCESS,                 &spr_read_601_rtcl, SPR_NOACCESS,                 0x00000000);    /* Timer */#if 0 /* ? */    spr_register(env, SPR_601_UDECR, "UDECR",                 &spr_read_decr, SPR_NOACCESS,                 &spr_read_decr, SPR_NOACCESS,                 0x00000000);#endif    /* External access control */    /* XXX : not implemented */    spr_register(env, SPR_EAR, "EAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Memory management */#if !defined(CONFIG_USER_ONLY)    spr_register(env, SPR_IBAT0U, "IBAT0U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatu,                 0x00000000);    spr_register(env, SPR_IBAT0L, "IBAT0L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatl,                 0x00000000);    spr_register(env, SPR_IBAT1U, "IBAT1U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatu,                 0x00000000);    spr_register(env, SPR_IBAT1L, "IBAT1L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatl,                 0x00000000);    spr_register(env, SPR_IBAT2U, "IBAT2U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatu,                 0x00000000);    spr_register(env, SPR_IBAT2L, "IBAT2L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatl,                 0x00000000);    spr_register(env, SPR_IBAT3U, "IBAT3U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatu,                 0x00000000);    spr_register(env, SPR_IBAT3L, "IBAT3L",

⌨️ 快捷键说明

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