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

📄 translate_init.c.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
                 &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",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_601_ubat, &spr_write_601_ubatl,                 0x00000000);    env->nb_BATs = 4;#endif}static void gen_spr_74xx (CPUPPCState *env){    /* Processor identification */    spr_register(env, SPR_PIR, "PIR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_pir,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_MMCR2, "MMCR2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_UMMCR2, "UMMCR2",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    /* XXX: not implemented */    spr_register(env, SPR_BAMR, "BAMR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_MSSCR0, "MSSCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Hardware implementation registers */    /* XXX : not implemented */    spr_register(env, SPR_HID0, "HID0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_HID1, "HID1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* Altivec */    spr_register(env, SPR_VRSAVE, "VRSAVE",                 &spr_read_generic, &spr_write_generic,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_L2CR, "L2CR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}static void gen_l3_ctrl (CPUPPCState *env){    /* L3CR */    /* XXX : not implemented */    spr_register(env, SPR_L3CR, "L3CR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* L3ITCR0 */    /* XXX : not implemented */    spr_register(env, SPR_L3ITCR0, "L3ITCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* L3PM */    /* XXX : not implemented */    spr_register(env, SPR_L3PM, "L3PM",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);}static void gen_74xx_soft_tlb (CPUPPCState *env, int nb_tlbs, int nb_ways){#if !defined(CONFIG_USER_ONLY)    env->nb_tlb = nb_tlbs;    env->nb_ways = nb_ways;    env->id_tlbs = 1;    /* XXX : not implemented */    spr_register(env, SPR_PTEHI, "PTEHI",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_PTELO, "PTELO",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_TLBMISS, "TLBMISS",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);#endif}static void gen_spr_usprgh (CPUPPCState *env){    spr_register(env, SPR_USPRG4, "USPRG4",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    spr_register(env, SPR_USPRG5, "USPRG5",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    spr_register(env, SPR_USPRG6, "USPRG6",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);    spr_register(env, SPR_USPRG7, "USPRG7",                 &spr_read_ureg, SPR_NOACCESS,                 &spr_read_ureg, SPR_NOACCESS,                 0x00000000);}/* PowerPC BookE SPR */static void gen_spr_BookE (CPUPPCState *env, uint64_t ivor_mask){    const unsigned char *ivor_names[64] = {        "IVOR0",  "IVOR1",  "IVOR2",  "IVOR3",        "IVOR4",  "IVOR5",  "IVOR6",  "IVOR7",        "IVOR8",  "IVOR9",  "IVOR10", "IVOR11",        "IVOR12", "IVOR13", "IVOR14", "IVOR15",        "IVOR16", "IVOR17", "IVOR18", "IVOR19",        "IVOR20", "IVOR21", "IVOR22", "IVOR23",        "IVOR24", "IVOR25", "IVOR26", "IVOR27",        "IVOR28", "IVOR29", "IVOR30", "IVOR31",        "IVOR32", "IVOR33", "IVOR34", "IVOR35",        "IVOR36", "IVOR37", "IVOR38", "IVOR39",        "IVOR40", "IVOR41", "IVOR42", "IVOR43",        "IVOR44", "IVOR45", "IVOR46", "IVOR47",        "IVOR48", "IVOR49", "IVOR50", "IVOR51",        "IVOR52", "IVOR53", "IVOR54", "IVOR55",        "IVOR56", "IVOR57", "IVOR58", "IVOR59",        "IVOR60", "IVOR61", "IVOR62", "IVOR63",    };#define SPR_BOOKE_IVORxx (-1)    int ivor_sprn[64] = {        SPR_BOOKE_IVOR0,  SPR_BOOKE_IVOR1,  SPR_BOOKE_IVOR2,  SPR_BOOKE_IVOR3,        SPR_BOOKE_IVOR4,  SPR_BOOKE_IVOR5,  SPR_BOOKE_IVOR6,  SPR_BOOKE_IVOR7,        SPR_BOOKE_IVOR8,  SPR_BOOKE_IVOR9,  SPR_BOOKE_IVOR10, SPR_BOOKE_IVOR11,        SPR_BOOKE_IVOR12, SPR_BOOKE_IVOR13, SPR_BOOKE_IVOR14, SPR_BOOKE_IVOR15,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVOR32, SPR_BOOKE_IVOR33, SPR_BOOKE_IVOR34, SPR_BOOKE_IVOR35,        SPR_BOOKE_IVOR36, SPR_BOOKE_IVOR37, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,        SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx, SPR_BOOKE_IVORxx,    };    int i;    /* Interrupt 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);    /* Debug */    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_IAC1, "IAC1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_IAC2, "IAC2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DAC1, "DAC1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DAC2, "DAC2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DBCR0, "DBCR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DBCR1, "DBCR1",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DBCR2, "DBCR2",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    /* XXX : not implemented */    spr_register(env, SPR_BOOKE_DBSR, "DBSR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_clear,                 0x00000000);    spr_register(env, SPR_BOOKE_DEAR, "DEAR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_BOOKE_ESR, "ESR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_BOOKE_IVPR, "IVPR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_excp_prefix,                 0x00000000);    /* Exception vectors */    for (i = 0; i < 64; i++) {        if (ivor_mask & (1ULL << i)) {            if (ivor_sprn[i] == SPR_BOOKE_IVORxx) {                fprintf(stderr, "ERROR: IVOR %d SPR is not defined\n", i);                exit(1);            }            spr_register(env, ivor_sprn[i], ivor_names[i],                         SPR_NOACCESS, SPR_NOACCESS,                         &spr_read_generic, &spr_write_excp_vector,                         0x00000000);        }    }    spr_register(env, SPR_BOOKE_PID, "PID",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000);    spr_register(env, SPR_BOOKE_TCR, "TCR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_booke_tcr,                 0x00000000);    spr_register(env, SPR_BOOKE_TSR, "TSR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_booke_tsr,                 0x00000000);    /* Timer */    spr_register(env, SPR_DECR, "DECR",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_decr, &spr_write_decr,                 0x00000000);    spr_register(env, SPR_BOOKE_DECAR, "DECAR",                 SPR_NOACCESS, SPR_NOACCESS,                 SPR_NOACCESS, &spr_write_generic,                 0x00000000);    /* SPRGs */    spr_register(env, SPR_USPRG0, "USPRG0",                 &spr_read_generic, &spr_write_generic,                 &spr_read_generic, &spr_write_generic,                 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);}/* FSL storage control registers */static void gen_spr_BookE_FSL (CPUPPCState *env, uint32_t mas_mask){#if !defined(CONFIG_USER_ONLY)    const unsigned char *mas_names[8] = {        "MAS0", "MAS1", "MAS2", "MAS3", "MAS4", "MAS5", "MAS6", "MAS7",    };    int mas_sprn[8] = {        SPR_BOOKE_MAS0, SPR_BOOKE_MAS1, SPR_BOOKE_MAS2, SPR_BOOKE_MAS3,        SPR_BOOKE_MAS4, SPR_BOOKE_MAS5, SPR_BOOKE_MAS6, SPR_BOOKE_MAS7,    };    int i;    /* TLB assist registers */    /* XXX : not implemented */    for (i = 0; i < 8; i++) {        if (mas_mask & (1 << i)) {            spr_register(env, mas_sprn[i], mas_names[i],                         SPR_NOACCESS, SPR_NOACCESS,                         &spr_read_generic, &spr_write_generic,                         0x00000000);        }    }    if (env->nb_pids > 1) {        /* XXX : not implemented */        spr_register(env, SPR_BOOKE_PID1, "PID1",                     SPR_NOACCESS, SPR_NOACCESS,                     &spr_read_generic, &spr_write_generic,                     0x00000000);    }    if (env->nb_pids > 2) {        /* XXX : not implemented */        spr_register(env, SPR_BOOKE_PID2, "PID2",                     SPR_NOACCESS, SPR_NOACCESS,                     &spr_read_generic, &spr_write_generic,                     0x00000000);    }    /* XXX : not implemented */    spr_register(env, SPR_MMUCFG, "MMUCFG",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, SPR_NOACCESS,                 0x00000000); /* TOFIX */    /* XXX : not implemented */    spr_register(env, SPR_MMUCSR0, "MMUCSR0",                 SPR_NOACCESS, SPR_NOACCESS,                 &spr_read_generic, &spr_write_generic,                 0x00000000); /* TOFIX */    switch (env->nb_ways) {    case 4:        /* XXX : not implemented */        spr_register(env, SPR_BOOKE_TLB3CFG, "TLB3CFG",                     SPR_NOACCESS, SPR_NOACCESS,                     &spr_read_generic, SPR_NOACCESS,                     0x00000000); /* TOFIX */        /* Fallthru */

⌨️ 快捷键说明

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