亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? op_helper.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 4 頁
字號:
    case 0x83: // Secondary no-fault    case 0x89: // Secondary LE    case 0x8b: // Secondary no-fault LE        // XXX        break;    case 0x45: // LSU        ret = env->lsu;        break;    case 0x50: // I-MMU regs        {            int reg = (T0 >> 3) & 0xf;            ret = env->immuregs[reg];            break;        }    case 0x51: // I-MMU 8k TSB pointer    case 0x52: // I-MMU 64k TSB pointer    case 0x55: // I-MMU data access        // XXX        break;    case 0x56: // I-MMU tag read        {            unsigned int i;            for (i = 0; i < 64; i++) {                // Valid, ctx match, vaddr match                if ((env->itlb_tte[i] & 0x8000000000000000ULL) != 0 &&                    env->itlb_tag[i] == T0) {                    ret = env->itlb_tag[i];                    break;                }            }            break;        }    case 0x58: // D-MMU regs        {            int reg = (T0 >> 3) & 0xf;            ret = env->dmmuregs[reg];            break;        }    case 0x5e: // D-MMU tag read        {            unsigned int i;            for (i = 0; i < 64; i++) {                // Valid, ctx match, vaddr match                if ((env->dtlb_tte[i] & 0x8000000000000000ULL) != 0 &&                    env->dtlb_tag[i] == T0) {                    ret = env->dtlb_tag[i];                    break;                }            }            break;        }    case 0x59: // D-MMU 8k TSB pointer    case 0x5a: // D-MMU 64k TSB pointer    case 0x5b: // D-MMU data pointer    case 0x5d: // D-MMU data access    case 0x48: // Interrupt dispatch, RO    case 0x49: // Interrupt data receive    case 0x7f: // Incoming interrupt vector, RO        // XXX        break;    case 0x54: // I-MMU data in, WO    case 0x57: // I-MMU demap, WO    case 0x5c: // D-MMU data in, WO    case 0x5f: // D-MMU demap, WO    case 0x77: // Interrupt vector, WO    default:        do_unassigned_access(T0, 0, 0, 1);        ret = 0;        break;    }    /* Convert from little endian */    switch (asi) {    case 0x0c: // Nucleus Little Endian (LE)    case 0x18: // As if user primary LE    case 0x19: // As if user secondary LE    case 0x1c: // Bypass LE    case 0x1d: // Bypass, non-cacheable LE    case 0x88: // Primary LE    case 0x89: // Secondary LE    case 0x8a: // Primary no-fault LE    case 0x8b: // Secondary no-fault LE        switch(size) {        case 2:            ret = bswap16(ret);            break;        case 4:            ret = bswap32(ret);            break;        case 8:            ret = bswap64(ret);            break;        default:            break;        }    default:        break;    }    /* Convert to signed number */    if (sign) {        switch(size) {        case 1:            ret = (int8_t) ret;            break;        case 2:            ret = (int16_t) ret;            break;        case 4:            ret = (int32_t) ret;            break;        default:            break;        }    }    T1 = ret;}void helper_st_asi(int asi, int size){    if ((asi < 0x80 && (env->pstate & PS_PRIV) == 0)        || (asi >= 0x30 && asi < 0x80 && !(env->hpstate & HS_PRIV)))        raise_exception(TT_PRIV_ACT);    /* Convert to little endian */    switch (asi) {    case 0x0c: // Nucleus Little Endian (LE)    case 0x18: // As if user primary LE    case 0x19: // As if user secondary LE    case 0x1c: // Bypass LE    case 0x1d: // Bypass, non-cacheable LE    case 0x88: // Primary LE    case 0x89: // Secondary LE        switch(size) {        case 2:            T0 = bswap16(T0);            break;        case 4:            T0 = bswap32(T0);            break;        case 8:            T0 = bswap64(T0);            break;        default:            break;        }    default:        break;    }    switch(asi) {    case 0x10: // As if user primary    case 0x18: // As if user primary LE    case 0x80: // Primary    case 0x88: // Primary LE        if ((asi & 0x80) && (env->pstate & PS_PRIV)) {            if (env->hpstate & HS_PRIV) {                switch(size) {                case 1:                    stb_hypv(T0, T1);                    break;                case 2:                    stw_hypv(T0 & ~1, T1);                    break;                case 4:                    stl_hypv(T0 & ~3, T1);                    break;                case 8:                default:                    stq_hypv(T0 & ~7, T1);                    break;                }            } else {                switch(size) {                case 1:                    stb_kernel(T0, T1);                    break;                case 2:                    stw_kernel(T0 & ~1, T1);                    break;                case 4:                    stl_kernel(T0 & ~3, T1);                    break;                case 8:                default:                    stq_kernel(T0 & ~7, T1);                    break;                }            }        } else {            switch(size) {            case 1:                stb_user(T0, T1);                break;            case 2:                stw_user(T0 & ~1, T1);                break;            case 4:                stl_user(T0 & ~3, T1);                break;            case 8:            default:                stq_user(T0 & ~7, T1);                break;            }        }        break;    case 0x14: // Bypass    case 0x15: // Bypass, non-cacheable    case 0x1c: // Bypass LE    case 0x1d: // Bypass, non-cacheable LE        {            switch(size) {            case 1:                stb_phys(T0, T1);                break;            case 2:                stw_phys(T0 & ~1, T1);                break;            case 4:                stl_phys(T0 & ~3, T1);                break;            case 8:            default:                stq_phys(T0 & ~7, T1);                break;            }        }        return;    case 0x04: // Nucleus    case 0x0c: // Nucleus Little Endian (LE)    case 0x11: // As if user secondary    case 0x19: // As if user secondary LE    case 0x24: // Nucleus quad LDD 128 bit atomic    case 0x2c: // Nucleus quad LDD 128 bit atomic    case 0x4a: // UPA config    case 0x81: // Secondary    case 0x89: // Secondary LE        // XXX        return;    case 0x45: // LSU        {            uint64_t oldreg;            oldreg = env->lsu;            env->lsu = T1 & (DMMU_E | IMMU_E);            // Mappings generated during D/I MMU disabled mode are            // invalid in normal mode            if (oldreg != env->lsu) {                DPRINTF_MMU("LSU change: 0x%" PRIx64 " -> 0x%" PRIx64 "\n", oldreg, env->lsu);#ifdef DEBUG_MMU                dump_mmu(env);#endif                tlb_flush(env, 1);            }            return;        }    case 0x50: // I-MMU regs        {            int reg = (T0 >> 3) & 0xf;            uint64_t oldreg;            oldreg = env->immuregs[reg];            switch(reg) {            case 0: // RO            case 4:                return;            case 1: // Not in I-MMU            case 2:            case 7:            case 8:                return;            case 3: // SFSR                if ((T1 & 1) == 0)                    T1 = 0; // Clear SFSR                break;            case 5: // TSB access            case 6: // Tag access            default:                break;            }            env->immuregs[reg] = T1;            if (oldreg != env->immuregs[reg]) {                DPRINTF_MMU("mmu change reg[%d]: 0x%08" PRIx64 " -> 0x%08" PRIx64 "\n", reg, oldreg, env->immuregs[reg]);            }#ifdef DEBUG_MMU            dump_mmu(env);#endif            return;        }    case 0x54: // I-MMU data in        {            unsigned int i;            // Try finding an invalid entry            for (i = 0; i < 64; i++) {                if ((env->itlb_tte[i] & 0x8000000000000000ULL) == 0) {                    env->itlb_tag[i] = env->immuregs[6];                    env->itlb_tte[i] = T1;                    return;                }            }            // Try finding an unlocked entry            for (i = 0; i < 64; i++) {                if ((env->itlb_tte[i] & 0x40) == 0) {                    env->itlb_tag[i] = env->immuregs[6];                    env->itlb_tte[i] = T1;                    return;                }            }            // error state?            return;        }    case 0x55: // I-MMU data access        {            unsigned int i = (T0 >> 3) & 0x3f;            env->itlb_tag[i] = env->immuregs[6];            env->itlb_tte[i] = T1;            return;        }    case 0x57: // I-MMU demap        // XXX        return;    case 0x58: // D-MMU regs        {            int reg = (T0 >> 3) & 0xf;            uint64_t oldreg;            oldreg = env->dmmuregs[reg];            switch(reg) {            case 0: // RO            case 4:                return;            case 3: // SFSR                if ((T1 & 1) == 0) {                    T1 = 0; // Clear SFSR, Fault address                    env->dmmuregs[4] = 0;                }                env->dmmuregs[reg] = T1;                break;            case 1: // Primary context            case 2: // Secondary context            case 5: // TSB access            case 6: // Tag access            case 7: // Virtual Watchpoint            case 8: // Physical Watchpoint            default:                break;            }            env->dmmuregs[reg] = T1;            if (oldreg != env->dmmuregs[reg]) {                DPRINTF_MMU("mmu change reg[%d]: 0x%08" PRIx64 " -> 0x%08" PRIx64 "\n", reg, oldreg, env->dmmuregs[reg]);            }#ifdef DEBUG_MMU            dump_mmu(env);#endif            return;        }    case 0x5c: // D-MMU data in        {            unsigned int i;            // Try finding an invalid entry            for (i = 0; i < 64; i++) {                if ((env->dtlb_tte[i] & 0x8000000000000000ULL) == 0) {                    env->dtlb_tag[i] = env->dmmuregs[6];                    env->dtlb_tte[i] = T1;                    return;                }            }            // Try finding an unlocked entry            for (i = 0; i < 64; i++) {                if ((env->dtlb_tte[i] & 0x40) == 0) {                    env->dtlb_tag[i] = env->dmmuregs[6];                    env->dtlb_tte[i] = T1;                    return;                }            }            // error state?            return;        }    case 0x5d: // D-MMU data access        {            unsigned int i = (T0 >> 3) & 0x3f;            env->dtlb_tag[i] = env->dmmuregs[6];            env->dtlb_tte[i] = T1;            return;        }    case 0x5f: // D-MMU demap    case 0x49: // Interrupt data receive        // XXX        return;    case 0x51: // I-MMU 8k TSB pointer, RO    case 0x52: // I-MMU 64k TSB pointer, RO    case 0x56: // I-MMU tag read, RO    case 0x59: // D-MMU 8k TSB pointer, RO    case 0x5a: // D-MMU 64k TSB pointer, RO    case 0x5b: // D-MMU data pointer, RO    case 0x5e: // D-MMU tag read, RO    case 0x48: // Interrupt dispatch, RO    case 0x7f: // Incoming interrupt vector, RO    case 0x82: // Primary no-fault, RO    case 0x83: // Secondary no-fault, RO    case 0x8a: // Primary no-fault LE, RO    case 0x8b: // Secondary no-fault LE, RO    default:        do_unassigned_access(T0, 1, 0, 1);        return;    }}#endif /* CONFIG_USER_ONLY */void helper_ldf_asi(int asi, int size, int rd){    target_ulong tmp_T0 = T0, tmp_T1 = T1;    unsigned int i;    switch (asi) {    case 0xf0: // Block load primary    case 0xf1: // Block load secondary    case 0xf8: // Block load primary LE    case 0xf9: // Block load secondary LE        if (rd & 7) {            raise_exception(TT_ILL_INSN);            return;        }        if (T0 & 0x3f) {            raise_exception(TT_UNALIGNED);            return;        }        for (i = 0; i < 16; i++) {            helper_ld_asi(asi & 0x8f, 4, 0);            *(uint32_t *)&env->fpr[rd++] = T1;            T0 += 4;        }        T0 = tmp_T0;        T1 = tmp_T1;        return;    default:        break;    }    helper_ld_asi(asi, size, 0);    switch(size) {    default:    case 4:        *((uint32_t *)&FT0) = T1;        break;    case 8:        *((int64_t *)&DT0) = T1;        break;#if defined(CONFIG_USER_ONLY)    case 16:        // XXX        break;#endif    }    T1 = tmp_T1;}void helper_stf_asi(int asi, int size, int rd){    target_ulong tmp_T0 = T0, tmp_T1 = T1;    unsigned int i;    switch (asi) {    case 0xf0: // Block store primary    case 0xf1: // Block store secondary    case 0xf8: // Block store primary LE    case 0xf9: // Block store secondary LE        if (rd & 7) {            raise_exception(TT_ILL_INSN);            return;        }        if (T0 & 0x3f) {            raise_exception(TT_UNALIGNED);            return;        }        for (i = 0; i < 16; i++) {            T1 = *(uint32_t *)&env->fpr[rd++];            helper_st_asi(asi & 0x8f, 4);            T0 += 4;        }        T0 = tmp_T0;        T1 = tmp_T1;        return;    default:        break;    }    switch(size) {    default:    case 4:        T1 = *((uint32_t *)&FT0);        break;    case 8:        T1 = *((int64_t *)&DT0);        break;#if defined(CONFIG_USER_ONLY)    case 16:        // XXX

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美在线视频| 国产成人免费在线视频| 日韩三级免费观看| 99久久精品免费看| 日日摸夜夜添夜夜添国产精品| 久久久99精品免费观看不卡| 天天操天天色综合| 久久女同精品一区二区| 在线观看日韩电影| 国产99久久久国产精品免费看| 亚洲高清久久久| 国产精品久久久久久久久动漫| 日韩一区二区中文字幕| 91成人免费在线视频| 国产精品69毛片高清亚洲| 日韩黄色在线观看| 亚洲欧美电影一区二区| 久久精品一区四区| 日韩美女视频一区二区在线观看| 色老汉av一区二区三区| fc2成人免费人成在线观看播放| 老司机精品视频线观看86| 亚洲成人激情自拍| 亚洲高清免费一级二级三级| 亚洲日本一区二区| 国产精品天美传媒沈樵| 欧美久久一二区| 欧美性猛交xxxxxx富婆| 日本精品视频一区二区三区| 成人激情小说网站| 成人美女在线观看| 从欧美一区二区三区| 777亚洲妇女| 成人视屏免费看| 国产美女精品人人做人人爽| 老司机午夜精品| 蜜桃视频第一区免费观看| 视频在线观看91| 五月婷婷久久丁香| 国产成人精品一区二区三区四区| 久久99热这里只有精品| 久久精品噜噜噜成人88aⅴ| 日韩精品国产精品| 日韩国产欧美三级| 石原莉奈在线亚洲二区| 日韩激情av在线| 蜜臀va亚洲va欧美va天堂| 日韩av二区在线播放| 日韩在线一区二区三区| 日本成人在线不卡视频| 蜜臀av一区二区在线观看| 美女视频黄频大全不卡视频在线播放| 日本成人在线视频网站| 蜜桃精品视频在线观看| 国内偷窥港台综合视频在线播放| 国产一区二区免费看| 国产成人亚洲精品狼色在线| 成人动漫一区二区在线| 972aa.com艺术欧美| 在线中文字幕一区| 69av一区二区三区| 精品黑人一区二区三区久久| 久久网站热最新地址| 国产精品视频一二| 亚洲精品日韩一| 日韩电影免费一区| 国产在线一区二区综合免费视频| 粉嫩av亚洲一区二区图片| 成人蜜臀av电影| 欧美巨大另类极品videosbest | 欧美日韩一区久久| 日韩欧美成人一区| 亚洲国产高清不卡| 亚洲五码中文字幕| 久久99精品久久久| 91视频在线看| 日韩精品一区二区三区视频播放 | 日本三级韩国三级欧美三级| 国产不卡视频一区二区三区| 在线欧美小视频| 精品国产一区二区亚洲人成毛片| 日韩伦理av电影| 美国三级日本三级久久99| 国产老肥熟一区二区三区| 不卡av在线免费观看| 色婷婷综合久久久中文字幕| 日韩视频在线一区二区| 欧美激情在线免费观看| 一区二区三区在线观看国产| 日韩av午夜在线观看| 国产精品一区一区三区| 国产精品综合视频| 欧美色老头old∨ideo| 精品国产乱码久久久久久影片| 国产日产精品一区| 亚洲午夜精品网| 经典三级在线一区| 91麻豆视频网站| 94色蜜桃网一区二区三区| 精品少妇一区二区三区视频免付费| 中文字幕第一页久久| 亚洲一区欧美一区| 国产在线一区观看| 欧美日精品一区视频| 精品国产sm最大网站| 亚洲一级二级在线| 国产呦萝稀缺另类资源| 欧美在线一区二区| 久久久精品免费观看| 91久久免费观看| 午夜精品爽啪视频| 蜜臀精品一区二区三区在线观看| 韩国av一区二区三区在线观看 | 99视频一区二区| 欧美精品日韩综合在线| 国产精品无遮挡| 日韩二区三区在线观看| av中文字幕一区| 欧美精品一区二区在线观看| 夜夜精品视频一区二区| 国产91丝袜在线观看| 91精品国产色综合久久久蜜香臀| 中文字幕免费在线观看视频一区| 免费三级欧美电影| 色婷婷久久久久swag精品| 中文字幕在线一区| 国内国产精品久久| 7777精品伊人久久久大香线蕉经典版下载 | 激情五月激情综合网| 欧美日韩卡一卡二| 亚洲色图在线看| 丁香激情综合国产| ww亚洲ww在线观看国产| 日韩国产高清影视| 成人高清在线视频| 亚洲视频网在线直播| 国产91对白在线观看九色| 日韩免费电影一区| 日本美女一区二区三区视频| 欧美日韩大陆在线| 亚洲自拍偷拍麻豆| 91国产免费看| 亚洲乱码中文字幕综合| 色综合天天天天做夜夜夜夜做| 日本一二三不卡| 国产精品一区二区久久精品爱涩 | 欧美成人性战久久| 蜜臀久久99精品久久久久宅男| 日本韩国欧美三级| 亚洲一区二区三区四区的| 欧美日本视频在线| 亚洲成人精品一区| 欧美人动与zoxxxx乱| 亚洲123区在线观看| 欧美视频一区在线观看| 国产精品网站在线播放| 91久久奴性调教| 亚洲成年人网站在线观看| 欧美日韩久久久| 人人超碰91尤物精品国产| 91精品国产色综合久久不卡电影| 美国欧美日韩国产在线播放| 欧美成人猛片aaaaaaa| 精品影视av免费| 久久久久久99精品| 国产盗摄一区二区三区| 久久久久久麻豆| 国产成人啪免费观看软件| 亚洲少妇屁股交4| 欧美性受xxxx黑人xyx| 免费看日韩a级影片| 久久久久99精品一区| 99免费精品在线观看| 自拍偷拍国产亚洲| 欧美一级生活片| 国内国产精品久久| 中文字幕一区二区三区在线播放| 一本色道综合亚洲| 自拍偷拍亚洲激情| 精品久久久久久久久久久久久久久 | 成人免费av资源| 亚洲一区二区在线视频| 久久精品人人爽人人爽| 91在线porny国产在线看| 午夜欧美电影在线观看| 欧美成人三级在线| jlzzjlzz欧美大全| 午夜伦理一区二区| 久久九九久久九九| 欧美在线免费观看亚洲| 老司机精品视频在线| 国产精品剧情在线亚洲| 欧美私人免费视频| 国产成人午夜精品影院观看视频| 亚洲伦理在线免费看| 在线成人免费观看| 91麻豆福利精品推荐| 蜜臀av国产精品久久久久| 国产精品久久久久久一区二区三区| 欧美日韩在线免费视频|