translate_init.c

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

C
1,866
字号
                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DNV1, "DNV1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DNV2, "DNV2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DNV3, "DNV3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DTV0, "DTV0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DTV1, "DTV1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DTV2, "DTV2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DTV3, "DTV3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DVLIM, "DVLIM",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_INV0, "INV0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_INV1, "INV1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_INV2, "INV2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_INV3, "INV3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_ITV0, "ITV0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_ITV1, "ITV1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_ITV2, "ITV2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_ITV3, "ITV3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_IVLIM, "IVLIM",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Cache debug */    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DCDBTRH, "DCDBTRH",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DCDBTRL, "DCDBTRL",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_ICDBDR, "ICDBDR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_ICDBTRH, "ICDBTRH",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_ICDBTRL, "ICDBTRL",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_440_DBDR, "DBDR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Processor control */    spr_register(env, SPR_4xx_CCR0, "CCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_440_RSTCFG, "RSTCFG",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* Storage control */    spr_register(env, SPR_440_MMUCR, "MMUCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR shared between PowerPC 40x implementations */static void gen_spr_40x (CPUPPCState *env){    /* Cache */    /* not emulated, as Qemu do not emulate caches */    spr_register(env, SPR_40x_DCCR, "DCCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* not emulated, as Qemu do not emulate caches */    spr_register(env, SPR_40x_ICCR, "ICCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* not emulated, as Qemu do not emulate caches */    spr_register(env, SPR_BOOKE_ICDBDR, "ICDBDR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000);    /* Exception */    spr_register(env, SPR_40x_DEAR, "DEAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_40x_ESR, "ESR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_40x_EVPR, "EVPR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_excp_prefix,                 0x00000000);    spr_register(env, SPR_40x_SRR2, "SRR2",                 &spr_read_generic, &spr_write_generic,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_40x_SRR3, "SRR3",                 &spr_read_generic, &spr_write_generic,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Timers */    spr_register(env, SPR_40x_PIT, "PIT",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_40x_pit, &spr_write_40x_pit,                 0x00000000);    spr_register(env, SPR_40x_TCR, "TCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_booke_tcr,                 0x00000000);    spr_register(env, SPR_40x_TSR, "TSR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_booke_tsr,                 0x00000000);}/* SPR specific to PowerPC 405 implementation */static void gen_spr_405 (CPUPPCState *env){    /* MMU */    spr_register(env, SPR_40x_PID, "PID",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_4xx_CCR0, "CCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00700000);    /* Debug interface */    /* XXX : not implemented */    spr_register(env, SPR_40x_DBCR0, "DBCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_40x_dbcr0,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_405_DBCR1, "DBCR1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_40x_DBSR, "DBSR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_clear,                 /* Last reset was system reset */                 0x00000300);    /* XXX : not implemented */    spr_register(env, SPR_40x_DAC1, "DAC1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_40x_DAC2, "DAC2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_405_DVC1, "DVC1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_405_DVC2, "DVC2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_40x_IAC1, "IAC1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_40x_IAC2, "IAC2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_405_IAC3, "IAC3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_405_IAC4, "IAC4",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Storage control */    /* XXX: TODO: not implemented */    spr_register(env, SPR_405_SLER, "SLER",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_40x_sler,                 0x00000000);    spr_register(env, SPR_40x_ZPR, "ZPR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_405_SU0R, "SU0R",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* SPRG */    spr_register(env, SPR_USPRG0, "USPRG0",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    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);    gen_spr_usprgh(env);}/* SPR shared between PowerPC 401 & 403 implementations */static void gen_spr_401_403 (CPUPPCState *env){    /* Time base */    spr_register(env, SPR_403_VTBL,  "TBL",                 &spr_read_tbl, SPR_NOACCESS,                 &spr_read_tbl, SPR_NOACCESS,                 0x00000000);    spr_register(env, SPR_403_TBL,   "TBL",                 SPR_NOACCESS, SPR_NOACCESS,                 SPR_NOACCESS, &spr_write_tbl,                 0x00000000);    spr_register(env, SPR_403_VTBU,  "TBU",                 &spr_read_tbu, SPR_NOACCESS,                 &spr_read_tbu, SPR_NOACCESS,                 0x00000000);    spr_register(env, SPR_403_TBU,   "TBU",                 SPR_NOACCESS, SPR_NOACCESS,                 SPR_NOACCESS, &spr_write_tbu,                 0x00000000);    /* Debug */    /* not emulated, as Qemu do not emulate caches */    spr_register(env, SPR_403_CDBCR, "CDBCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR specific to PowerPC 401 implementation */static void gen_spr_401 (CPUPPCState *env){    /* Debug interface */    /* XXX : not implemented */    spr_register(env, SPR_40x_DBCR0, "DBCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_40x_dbcr0,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_40x_DBSR, "DBSR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_clear,                 /* Last reset was system reset */                 0x00000300);    /* XXX : not implemented */    spr_register(env, SPR_40x_DAC1, "DAC",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_40x_IAC1, "IAC",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Storage control */    /* XXX: TODO: not implemented */    spr_register(env, SPR_405_SLER, "SLER",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_40x_sler,                 0x00000000);    /* not emulated, as Qemu never does speculative access */    spr_register(env, SPR_40x_SGR, "SGR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0xFFFFFFFF);    /* not emulated, as Qemu do not emulate caches */    spr_register(env, SPR_40x_DCWR, "DCWR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}static void gen_spr_401x2 (CPUPPCState *env){    gen_spr_401(env);    spr_register(env, SPR_40x_

⌨️ 快捷键说明

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