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

📄 translate_init.c.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
    /* Must stop the translation as endianness may have changed */    GEN_STOP(ctx);}#endif/* Unified bats */#if !defined(CONFIG_USER_ONLY)static void spr_read_601_ubat (void *opaque, int sprn){    gen_op_load_601_bat(sprn & 1, (sprn - SPR_IBAT0U) / 2);}static void spr_write_601_ubatu (void *opaque, int sprn){    gen_op_store_601_batu((sprn - SPR_IBAT0U) / 2);}static void spr_write_601_ubatl (void *opaque, int sprn){    gen_op_store_601_batl((sprn - SPR_IBAT0L) / 2);}#endif/* PowerPC 40x specific registers */#if !defined(CONFIG_USER_ONLY)static void spr_read_40x_pit (void *opaque, int sprn){    gen_op_load_40x_pit();}static void spr_write_40x_pit (void *opaque, int sprn){    gen_op_store_40x_pit();}static void spr_write_40x_dbcr0 (void *opaque, int sprn){    DisasContext *ctx = opaque;    gen_op_store_40x_dbcr0();    /* We must stop translation as we may have rebooted */    GEN_STOP(ctx);}static void spr_write_40x_sler (void *opaque, int sprn){    gen_op_store_40x_sler();}static void spr_write_booke_tcr (void *opaque, int sprn){    gen_op_store_booke_tcr();}static void spr_write_booke_tsr (void *opaque, int sprn){    gen_op_store_booke_tsr();}#endif/* PowerPC 403 specific registers *//* PBL1 / PBU1 / PBL2 / PBU2 */#if !defined(CONFIG_USER_ONLY)static void spr_read_403_pbr (void *opaque, int sprn){    gen_op_load_403_pb(sprn - SPR_403_PBL1);}static void spr_write_403_pbr (void *opaque, int sprn){    gen_op_store_403_pb(sprn - SPR_403_PBL1);}static void spr_write_pir (void *opaque, int sprn){    gen_op_store_pir();}#endif#if !defined(CONFIG_USER_ONLY)/* Callback used to write the exception vector base */static void spr_write_excp_prefix (void *opaque, int sprn){    gen_op_store_excp_prefix();    gen_op_store_spr(sprn);}static void spr_write_excp_vector (void *opaque, int sprn){    DisasContext *ctx = opaque;    if (sprn >= SPR_BOOKE_IVOR0 && sprn <= SPR_BOOKE_IVOR15) {        gen_op_store_excp_vector(sprn - SPR_BOOKE_IVOR0);        gen_op_store_spr(sprn);    } else if (sprn >= SPR_BOOKE_IVOR32 && sprn <= SPR_BOOKE_IVOR37) {        gen_op_store_excp_vector(sprn - SPR_BOOKE_IVOR32 + 32);        gen_op_store_spr(sprn);    } else {        printf("Trying to write an unknown exception vector %d %03x\n",               sprn, sprn);        GEN_EXCP_PRIVREG(ctx);    }}#endif#if defined(CONFIG_USER_ONLY)#define spr_register(env, num, name, uea_read, uea_write,                     \                     oea_read, oea_write, initial_value)                      \do {                                                                          \     _spr_register(env, num, name, uea_read, uea_write, initial_value);       \} while (0)static inline void _spr_register (CPUPPCState *env, int num,                                  const unsigned char *name,                                  void (*uea_read)(void *opaque, int sprn),                                  void (*uea_write)(void *opaque, int sprn),                                  target_ulong initial_value)#elsestatic inline void spr_register (CPUPPCState *env, int num,                                 const unsigned char *name,                                 void (*uea_read)(void *opaque, int sprn),                                 void (*uea_write)(void *opaque, int sprn),                                 void (*oea_read)(void *opaque, int sprn),                                 void (*oea_write)(void *opaque, int sprn),                                 target_ulong initial_value)#endif{    ppc_spr_t *spr;    spr = &env->spr_cb[num];    if (spr->name != NULL ||env-> spr[num] != 0x00000000 ||#if !defined(CONFIG_USER_ONLY)        spr->oea_read != NULL || spr->oea_write != NULL ||#endif        spr->uea_read != NULL || spr->uea_write != NULL) {        printf("Error: Trying to register SPR %d (%03x) twice !\n", num, num);        exit(1);    }#if defined(PPC_DEBUG_SPR)    printf("*** register spr %d (%03x) %s val " ADDRX "\n", num, num, name,           initial_value);#endif    spr->name = name;    spr->uea_read = uea_read;    spr->uea_write = uea_write;#if !defined(CONFIG_USER_ONLY)    spr->oea_read = oea_read;    spr->oea_write = oea_write;#endif    env->spr[num] = initial_value;}/* Generic PowerPC SPRs */static void gen_spr_generic (CPUPPCState *env){    /* Integer processing */    spr_register(env, SPR_XER, "XER",                 &spr_read_xer, &spr_write_xer,                 &spr_read_xer, &spr_write_xer,                 0x00000000);    /* Branch contol */    spr_register(env, SPR_LR, "LR",                 &spr_read_lr, &spr_write_lr,                 &spr_read_lr, &spr_write_lr,                 0x00000000);    spr_register(env, SPR_CTR, "CTR",                 &spr_read_ctr, &spr_write_ctr,                 &spr_read_ctr, &spr_write_ctr,                 0x00000000);    /* Interrupt processing */    spr_register(env, SPR_SRR0, "SRR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_SRR1, "SRR1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Processor control */    spr_register(env, SPR_SPRG0, "SPRG0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_SPRG1, "SPRG1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_SPRG2, "SPRG2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_SPRG3, "SPRG3",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}/* SPR common to all non-embedded PowerPC, including 601 */static void gen_spr_ne_601 (CPUPPCState *env){    /* Exception processing */    spr_register(env, SPR_DSISR, "DSISR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_DAR, "DAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Timer */    spr_register(env, SPR_DECR, "DECR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_decr, &spr_write_decr,                 0x00000000);    /* Memory management */    spr_register(env, SPR_SDR1, "SDR1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_sdr1, &spr_write_sdr1,                 0x00000000);}/* BATs 0-3 */static void gen_low_BATs (CPUPPCState *env){#if !defined(CONFIG_USER_ONLY)    spr_register(env, SPR_IBAT0U, "IBAT0U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatu,                 0x00000000);    spr_register(env, SPR_IBAT0L, "IBAT0L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatl,                 0x00000000);    spr_register(env, SPR_IBAT1U, "IBAT1U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatu,                 0x00000000);    spr_register(env, SPR_IBAT1L, "IBAT1L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatl,                 0x00000000);    spr_register(env, SPR_IBAT2U, "IBAT2U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatu,                 0x00000000);    spr_register(env, SPR_IBAT2L, "IBAT2L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatl,                 0x00000000);    spr_register(env, SPR_IBAT3U, "IBAT3U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatu,                 0x00000000);    spr_register(env, SPR_IBAT3L, "IBAT3L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat, &spr_write_ibatl,                 0x00000000);    spr_register(env, SPR_DBAT0U, "DBAT0U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatu,                 0x00000000);    spr_register(env, SPR_DBAT0L, "DBAT0L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatl,                 0x00000000);    spr_register(env, SPR_DBAT1U, "DBAT1U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatu,                 0x00000000);    spr_register(env, SPR_DBAT1L, "DBAT1L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatl,                 0x00000000);    spr_register(env, SPR_DBAT2U, "DBAT2U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatu,                 0x00000000);    spr_register(env, SPR_DBAT2L, "DBAT2L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatl,                 0x00000000);    spr_register(env, SPR_DBAT3U, "DBAT3U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatu,                 0x00000000);    spr_register(env, SPR_DBAT3L, "DBAT3L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat, &spr_write_dbatl,                 0x00000000);    env->nb_BATs += 4;#endif}/* BATs 4-7 */static void gen_high_BATs (CPUPPCState *env){#if !defined(CONFIG_USER_ONLY)    spr_register(env, SPR_IBAT4U, "IBAT4U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatu_h,                 0x00000000);    spr_register(env, SPR_IBAT4L, "IBAT4L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatl_h,                 0x00000000);    spr_register(env, SPR_IBAT5U, "IBAT5U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatu_h,                 0x00000000);    spr_register(env, SPR_IBAT5L, "IBAT5L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatl_h,                 0x00000000);    spr_register(env, SPR_IBAT6U, "IBAT6U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatu_h,                 0x00000000);    spr_register(env, SPR_IBAT6L, "IBAT6L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatl_h,                 0x00000000);    spr_register(env, SPR_IBAT7U, "IBAT7U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatu_h,                 0x00000000);    spr_register(env, SPR_IBAT7L, "IBAT7L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_ibat_h, &spr_write_ibatl_h,                 0x00000000);    spr_register(env, SPR_DBAT4U, "DBAT4U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatu_h,                 0x00000000);    spr_register(env, SPR_DBAT4L, "DBAT4L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatl_h,                 0x00000000);    spr_register(env, SPR_DBAT5U, "DBAT5U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatu_h,                 0x00000000);    spr_register(env, SPR_DBAT5L, "DBAT5L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatl_h,                 0x00000000);    spr_register(env, SPR_DBAT6U, "DBAT6U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatu_h,                 0x00000000);    spr_register(env, SPR_DBAT6L, "DBAT6L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatl_h,                 0x00000000);    spr_register(env, SPR_DBAT7U, "DBAT7U",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatu_h,                 0x00000000);    spr_register(env, SPR_DBAT7L, "DBAT7L",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_dbat_h, &spr_write_dbatl_h,                 0x00000000);    env->nb_BATs += 4;#endif}/* Generic PowerPC time base */static void gen_tbl (CPUPPCState *env){    spr_register(env, SPR_VTBL,  "TBL",                 &spr_read_tbl, SPR_NOACCESS,                 &spr_read_tbl, SPR_NOACCESS,                 0x00000000);    spr_register(env, SPR_TBL,   "TBL",                 SPR_NOACCESS, SPR_NOACCESS,                 SPR_NOACCESS, &spr_write_tbl,                 0x00000000);    spr_register(env, SPR_VTBU,  "TBU",                 &spr_read_tbu, SPR_NOACCESS,                 &spr_read_tbu, SPR_NOACCESS,                 0x00000000);

⌨️ 快捷键说明

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