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

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

?? helper.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 4 頁
字號:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "cpu.h"#include "exec-all.h"#include "gdbstub.h"static uint32_t cortexa8_cp15_c0_c1[8] ={ 0x1031, 0x11, 0x400, 0, 0x31100003, 0x20000000, 0x01202000, 0x11 };static uint32_t cortexa8_cp15_c0_c2[8] ={ 0x00101111, 0x12112111, 0x21232031, 0x11112131, 0x00111142, 0, 0, 0 };static uint32_t mpcore_cp15_c0_c1[8] ={ 0x111, 0x1, 0, 0x2, 0x01100103, 0x10020302, 0x01222000, 0 };static uint32_t mpcore_cp15_c0_c2[8] ={ 0x00100011, 0x12002111, 0x11221011, 0x01102131, 0x141, 0, 0, 0 };static uint32_t arm1136_cp15_c0_c1[8] ={ 0x111, 0x1, 0x2, 0x3, 0x01130003, 0x10030302, 0x01222110, 0 };static uint32_t arm1136_cp15_c0_c2[8] ={ 0x00140011, 0x12002111, 0x11231111, 0x01102131, 0x141, 0, 0, 0 };static uint32_t cpu_arm_find_by_name(const char *name);static inline void set_feature(CPUARMState *env, int feature){    env->features |= 1u << feature;}static void cpu_reset_model_id(CPUARMState *env, uint32_t id){    env->cp15.c0_cpuid = id;    switch (id) {    case ARM_CPUID_ARM926:        set_feature(env, ARM_FEATURE_VFP);        env->vfp.xregs[ARM_VFP_FPSID] = 0x41011090;        env->cp15.c0_cachetype = 0x1dd20d2;        env->cp15.c1_sys = 0x00090078;        break;    case ARM_CPUID_ARM946:        set_feature(env, ARM_FEATURE_MPU);        env->cp15.c0_cachetype = 0x0f004006;        env->cp15.c1_sys = 0x00000078;        break;    case ARM_CPUID_ARM1026:        set_feature(env, ARM_FEATURE_VFP);        set_feature(env, ARM_FEATURE_AUXCR);        env->vfp.xregs[ARM_VFP_FPSID] = 0x410110a0;        env->cp15.c0_cachetype = 0x1dd20d2;        env->cp15.c1_sys = 0x00090078;        break;    case ARM_CPUID_ARM1136:        set_feature(env, ARM_FEATURE_V6);        set_feature(env, ARM_FEATURE_VFP);        set_feature(env, ARM_FEATURE_AUXCR);        env->vfp.xregs[ARM_VFP_FPSID] = 0x410120b4;        env->vfp.xregs[ARM_VFP_MVFR0] = 0x11111111;        env->vfp.xregs[ARM_VFP_MVFR1] = 0x00000000;        memcpy(env->cp15.c0_c1, arm1136_cp15_c0_c1, 8 * sizeof(uint32_t));        memcpy(env->cp15.c0_c1, arm1136_cp15_c0_c2, 8 * sizeof(uint32_t));        env->cp15.c0_cachetype = 0x1dd20d2;        break;    case ARM_CPUID_ARM11MPCORE:        set_feature(env, ARM_FEATURE_V6);        set_feature(env, ARM_FEATURE_V6K);        set_feature(env, ARM_FEATURE_VFP);        set_feature(env, ARM_FEATURE_AUXCR);        env->vfp.xregs[ARM_VFP_FPSID] = 0x410120b4;        env->vfp.xregs[ARM_VFP_MVFR0] = 0x11111111;        env->vfp.xregs[ARM_VFP_MVFR1] = 0x00000000;        memcpy(env->cp15.c0_c1, mpcore_cp15_c0_c1, 8 * sizeof(uint32_t));        memcpy(env->cp15.c0_c1, mpcore_cp15_c0_c2, 8 * sizeof(uint32_t));        env->cp15.c0_cachetype = 0x1dd20d2;        break;    case ARM_CPUID_CORTEXA8:        set_feature(env, ARM_FEATURE_V6);        set_feature(env, ARM_FEATURE_V6K);        set_feature(env, ARM_FEATURE_V7);        set_feature(env, ARM_FEATURE_AUXCR);        set_feature(env, ARM_FEATURE_THUMB2);        set_feature(env, ARM_FEATURE_VFP);        set_feature(env, ARM_FEATURE_VFP3);        set_feature(env, ARM_FEATURE_NEON);        env->vfp.xregs[ARM_VFP_FPSID] = 0x410330c0;        env->vfp.xregs[ARM_VFP_MVFR0] = 0x11110222;        env->vfp.xregs[ARM_VFP_MVFR1] = 0x00011100;        memcpy(env->cp15.c0_c1, cortexa8_cp15_c0_c1, 8 * sizeof(uint32_t));        memcpy(env->cp15.c0_c1, cortexa8_cp15_c0_c2, 8 * sizeof(uint32_t));        env->cp15.c0_cachetype = 0x1dd20d2;        break;    case ARM_CPUID_CORTEXM3:        set_feature(env, ARM_FEATURE_V6);        set_feature(env, ARM_FEATURE_THUMB2);        set_feature(env, ARM_FEATURE_V7);        set_feature(env, ARM_FEATURE_M);        set_feature(env, ARM_FEATURE_DIV);        break;    case ARM_CPUID_ANY: /* For userspace emulation.  */        set_feature(env, ARM_FEATURE_V6);        set_feature(env, ARM_FEATURE_V6K);        set_feature(env, ARM_FEATURE_V7);        set_feature(env, ARM_FEATURE_THUMB2);        set_feature(env, ARM_FEATURE_VFP);        set_feature(env, ARM_FEATURE_VFP3);        set_feature(env, ARM_FEATURE_NEON);        set_feature(env, ARM_FEATURE_DIV);        break;    case ARM_CPUID_TI915T:    case ARM_CPUID_TI925T:        set_feature(env, ARM_FEATURE_OMAPCP);        env->cp15.c0_cpuid = ARM_CPUID_TI925T; /* Depends on wiring.  */        env->cp15.c0_cachetype = 0x5109149;        env->cp15.c1_sys = 0x00000070;        env->cp15.c15_i_max = 0x000;        env->cp15.c15_i_min = 0xff0;        break;    case ARM_CPUID_PXA250:    case ARM_CPUID_PXA255:    case ARM_CPUID_PXA260:    case ARM_CPUID_PXA261:    case ARM_CPUID_PXA262:        set_feature(env, ARM_FEATURE_XSCALE);        /* JTAG_ID is ((id << 28) | 0x09265013) */        env->cp15.c0_cachetype = 0xd172172;        env->cp15.c1_sys = 0x00000078;        break;    case ARM_CPUID_PXA270_A0:    case ARM_CPUID_PXA270_A1:    case ARM_CPUID_PXA270_B0:    case ARM_CPUID_PXA270_B1:    case ARM_CPUID_PXA270_C0:    case ARM_CPUID_PXA270_C5:        set_feature(env, ARM_FEATURE_XSCALE);        /* JTAG_ID is ((id << 28) | 0x09265013) */        set_feature(env, ARM_FEATURE_IWMMXT);        env->iwmmxt.cregs[ARM_IWMMXT_wCID] = 0x69051000 | 'Q';        env->cp15.c0_cachetype = 0xd172172;        env->cp15.c1_sys = 0x00000078;        break;    default:        cpu_abort(env, "Bad CPU ID: %x\n", id);        break;    }}void cpu_reset(CPUARMState *env){    uint32_t id;    id = env->cp15.c0_cpuid;    memset(env, 0, offsetof(CPUARMState, breakpoints));    if (id)        cpu_reset_model_id(env, id);#if defined (CONFIG_USER_ONLY)    env->uncached_cpsr = ARM_CPU_MODE_USR;    env->vfp.xregs[ARM_VFP_FPEXC] = 1 << 30;#else    /* SVC mode with interrupts disabled.  */    env->uncached_cpsr = ARM_CPU_MODE_SVC | CPSR_A | CPSR_F | CPSR_I;    /* On ARMv7-M the CPSR_I is the value of the PRIMASK register, and is       clear at reset.  */    if (IS_M(env))        env->uncached_cpsr &= ~CPSR_I;    env->vfp.xregs[ARM_VFP_FPEXC] = 0;#endif    env->regs[15] = 0;    tlb_flush(env, 1);}CPUARMState *cpu_arm_init(const char *cpu_model){    CPUARMState *env;    uint32_t id;    id = cpu_arm_find_by_name(cpu_model);    if (id == 0)        return NULL;    env = qemu_mallocz(sizeof(CPUARMState));    if (!env)        return NULL;    cpu_exec_init(env);    env->cpu_model_str = cpu_model;    env->cp15.c0_cpuid = id;    cpu_reset(env);    return env;}struct arm_cpu_t {    uint32_t id;    const char *name;};static const struct arm_cpu_t arm_cpu_names[] = {    { ARM_CPUID_ARM926, "arm926"},    { ARM_CPUID_ARM946, "arm946"},    { ARM_CPUID_ARM1026, "arm1026"},    { ARM_CPUID_ARM1136, "arm1136"},    { ARM_CPUID_ARM11MPCORE, "arm11mpcore"},    { ARM_CPUID_CORTEXM3, "cortex-m3"},    { ARM_CPUID_CORTEXA8, "cortex-a8"},    { ARM_CPUID_TI925T, "ti925t" },    { ARM_CPUID_PXA250, "pxa250" },    { ARM_CPUID_PXA255, "pxa255" },    { ARM_CPUID_PXA260, "pxa260" },    { ARM_CPUID_PXA261, "pxa261" },    { ARM_CPUID_PXA262, "pxa262" },    { ARM_CPUID_PXA270, "pxa270" },    { ARM_CPUID_PXA270_A0, "pxa270-a0" },    { ARM_CPUID_PXA270_A1, "pxa270-a1" },    { ARM_CPUID_PXA270_B0, "pxa270-b0" },    { ARM_CPUID_PXA270_B1, "pxa270-b1" },    { ARM_CPUID_PXA270_C0, "pxa270-c0" },    { ARM_CPUID_PXA270_C5, "pxa270-c5" },    { ARM_CPUID_ANY, "any"},    { 0, NULL}};void arm_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...)){    int i;    (*cpu_fprintf)(f, "Available CPUs:\n");    for (i = 0; arm_cpu_names[i].name; i++) {        (*cpu_fprintf)(f, "  %s\n", arm_cpu_names[i].name);    }}/* return 0 if not found */static uint32_t cpu_arm_find_by_name(const char *name){    int i;    uint32_t id;    id = 0;    for (i = 0; arm_cpu_names[i].name; i++) {        if (strcmp(name, arm_cpu_names[i].name) == 0) {            id = arm_cpu_names[i].id;            break;        }    }    return id;}void cpu_arm_close(CPUARMState *env){    free(env);}/* Polynomial multiplication is like integer multiplcation except the   partial products are XORed, not added.  */uint32_t helper_neon_mul_p8(uint32_t op1, uint32_t op2){    uint32_t mask;    uint32_t result;    result = 0;    while (op1) {        mask = 0;        if (op1 & 1)            mask |= 0xff;        if (op1 & (1 << 8))            mask |= (0xff << 8);        if (op1 & (1 << 16))            mask |= (0xff << 16);        if (op1 & (1 << 24))            mask |= (0xff << 24);        result ^= op2 & mask;        op1 = (op1 >> 1) & 0x7f7f7f7f;        op2 = (op2 << 1) & 0xfefefefe;    }    return result;}uint32_t cpsr_read(CPUARMState *env){    int ZF;    ZF = (env->NZF == 0);    return env->uncached_cpsr | (env->NZF & 0x80000000) | (ZF << 30) |        (env->CF << 29) | ((env->VF & 0x80000000) >> 3) | (env->QF << 27)        | (env->thumb << 5) | ((env->condexec_bits & 3) << 25)        | ((env->condexec_bits & 0xfc) << 8)        | (env->GE << 16);}void cpsr_write(CPUARMState *env, uint32_t val, uint32_t mask){    /* NOTE: N = 1 and Z = 1 cannot be stored currently */    if (mask & CPSR_NZCV) {        env->NZF = (val & 0xc0000000) ^ 0x40000000;        env->CF = (val >> 29) & 1;        env->VF = (val << 3) & 0x80000000;    }    if (mask & CPSR_Q)        env->QF = ((val & CPSR_Q) != 0);    if (mask & CPSR_T)        env->thumb = ((val & CPSR_T) != 0);    if (mask & CPSR_IT_0_1) {        env->condexec_bits &= ~3;        env->condexec_bits |= (val >> 25) & 3;    }    if (mask & CPSR_IT_2_7) {        env->condexec_bits &= 3;        env->condexec_bits |= (val >> 8) & 0xfc;    }    if (mask & CPSR_GE) {        env->GE = (val >> 16) & 0xf;    }    if ((env->uncached_cpsr ^ val) & mask & CPSR_M) {        switch_mode(env, val & CPSR_M);    }    mask &= ~CACHED_CPSR_BITS;    env->uncached_cpsr = (env->uncached_cpsr & ~mask) | (val & mask);}#if defined(CONFIG_USER_ONLY)void do_interrupt (CPUState *env){    env->exception_index = -1;}/* Structure used to record exclusive memory locations.  */typedef struct mmon_state {    struct mmon_state *next;    CPUARMState *cpu_env;    uint32_t addr;} mmon_state;/* Chain of current locks.  */static mmon_state* mmon_head = NULL;int cpu_arm_handle_mmu_fault (CPUState *env, target_ulong address, int rw,                              int mmu_idx, int is_softmmu){    if (rw == 2) {        env->exception_index = EXCP_PREFETCH_ABORT;        env->cp15.c6_insn = address;    } else {        env->exception_index = EXCP_DATA_ABORT;        env->cp15.c6_data = address;    }    return 1;}static void allocate_mmon_state(CPUState *env){    env->mmon_entry = malloc(sizeof (mmon_state));    if (!env->mmon_entry)        abort();    memset (env->mmon_entry, 0, sizeof (mmon_state));    env->mmon_entry->cpu_env = env;    mmon_head = env->mmon_entry;}/* Flush any monitor locks for the specified address.  */static void flush_mmon(uint32_t addr){    mmon_state *mon;    for (mon = mmon_head; mon; mon = mon->next)      {        if (mon->addr != addr)          continue;        mon->addr = 0;        break;      }}/* Mark an address for exclusive access.  */void helper_mark_exclusive(CPUState *env, uint32_t addr){    if (!env->mmon_entry)        allocate_mmon_state(env);    /* Clear any previous locks.  */    flush_mmon(addr);    env->mmon_entry->addr = addr;}/* Test if an exclusive address is still exclusive.  Returns zero   if the address is still exclusive.   */int helper_test_exclusive(CPUState *env, uint32_t addr){    int res;    if (!env->mmon_entry)        return 1;    if (env->mmon_entry->addr == addr)        res = 0;    else        res = 1;    flush_mmon(addr);    return res;}void helper_clrex(CPUState *env){    if (!(env->mmon_entry && env->mmon_entry->addr))        return;    flush_mmon(env->mmon_entry->addr);}target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr){    return addr;}/* These should probably raise undefined insn exceptions.  */void helper_set_cp(CPUState *env, uint32_t insn, uint32_t val){    int op1 = (insn >> 8) & 0xf;    cpu_abort(env, "cp%i insn %08x\n", op1, insn);    return;}uint32_t helper_get_cp(CPUState *env, uint32_t insn){    int op1 = (insn >> 8) & 0xf;    cpu_abort(env, "cp%i insn %08x\n", op1, insn);    return 0;}void helper_set_cp15(CPUState *env, uint32_t insn, uint32_t val){    cpu_abort(env, "cp15 insn %08x\n", insn);}uint32_t helper_get_cp15(CPUState *env, uint32_t insn){    cpu_abort(env, "cp15 insn %08x\n", insn);    return 0;}/* These should probably raise undefined insn exceptions.  */void helper_v7m_msr(CPUState *env, int reg, uint32_t val){    cpu_abort(env, "v7m_mrs %d\n", reg);}uint32_t helper_v7m_mrs(CPUState *env, int reg){    cpu_abort(env, "v7m_mrs %d\n", reg);    return 0;}void switch_mode(CPUState *env, int mode){    if (mode != ARM_CPU_MODE_USR)        cpu_abort(env, "Tried to switch out of user mode\n");}void helper_set_r13_banked(CPUState *env, int mode, uint32_t val){    cpu_abort(env, "banked r13 write\n");}uint32_t helper_get_r13_banked(CPUState *env, int mode){    cpu_abort(env, "banked r13 read\n");    return 0;}#else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃免费观看视频| 国产亚洲综合性久久久影院| 欧美一区二区在线看| 国产日产精品一区| 视频一区二区三区入口| 国产精品1024久久| 制服丝袜中文字幕亚洲| 欧美激情一区二区三区全黄| 蜜桃视频在线一区| 欧美日韩一区二区三区免费看| 久久蜜桃av一区精品变态类天堂| 亚洲成a人v欧美综合天堂| 国产999精品久久| 91麻豆精品久久久久蜜臀| 亚洲三级视频在线观看| 国产不卡免费视频| 精品久久久影院| 三级亚洲高清视频| 色噜噜偷拍精品综合在线| 国产精品女同一区二区三区| 久久91精品久久久久久秒播| 欧美日本在线观看| 亚洲国产一区二区在线播放| 97se狠狠狠综合亚洲狠狠| 国产欧美中文在线| 国产真实乱偷精品视频免| 日韩欧美一级片| 丝袜a∨在线一区二区三区不卡| 在线免费亚洲电影| 亚洲日本在线天堂| 一本一本久久a久久精品综合麻豆| 日本一区二区三区视频视频| 国产91精品精华液一区二区三区| 久久综合成人精品亚洲另类欧美| 国产一区二区三区av电影 | 中文字幕成人av| 九九视频精品免费| 欧美va亚洲va在线观看蝴蝶网| 美女尤物国产一区| 精品国偷自产国产一区| 经典三级一区二区| 久久美女高清视频| av在线不卡免费看| 亚洲欧美一区二区三区久本道91| 色爱区综合激月婷婷| 曰韩精品一区二区| 欧美人牲a欧美精品| 午夜精品福利在线| 日韩精品一区国产麻豆| 国产精品一区二区三区99| 国产亚洲短视频| 色拍拍在线精品视频8848| 亚洲午夜日本在线观看| 91精品国产91久久综合桃花| 久久精品国产亚洲一区二区三区| 26uuu久久天堂性欧美| 国产99久久久国产精品潘金网站| 亚洲欧洲一区二区在线播放| 欧美影院精品一区| 美女诱惑一区二区| 中文字幕一区二区三区四区不卡| 色美美综合视频| 久久狠狠亚洲综合| 中文字幕在线观看一区二区| 欧美中文字幕一二三区视频| 精品一区二区三区久久| 国产精品乱人伦中文| 欧美性感一类影片在线播放| 精品一区二区三区在线播放视频 | 欧美一级国产精品| 国产成人亚洲综合色影视| 亚洲精品高清在线| 精品久久久久久久久久久久包黑料 | 亚洲一线二线三线久久久| 亚洲精品在线观看网站| 99re成人在线| 免费视频一区二区| 一区二区三区四区中文字幕| 欧美xxxx老人做受| 91麻豆国产在线观看| 久久99在线观看| 亚洲在线中文字幕| 国产精品久久久久久久久久久免费看 | 国产精品18久久久久久久久久久久| 亚洲女同女同女同女同女同69| 精品国产一二三| 在线影院国内精品| aaa欧美日韩| 国产一区二区免费看| 午夜成人在线视频| 一个色在线综合| 国产精品免费人成网站| 日韩欧美中文字幕一区| 在线亚洲精品福利网址导航| 成人免费毛片a| 精品一区二区三区视频在线观看 | 国内精品伊人久久久久av影院| 亚洲最新视频在线播放| 久久精品免费在线观看| 日韩午夜在线影院| 欧美高清视频一二三区 | 国产精品一区二区久激情瑜伽 | 亚洲综合在线第一页| 国产精品视频看| 国产视频一区二区在线| 欧美电影免费观看完整版| 欧美日韩一区在线| 在线免费不卡电影| 色综合网色综合| 99视频一区二区三区| 成人h精品动漫一区二区三区| 国精品**一区二区三区在线蜜桃 | 亚洲高清不卡在线观看| 亚洲激情图片一区| 亚洲精品视频免费观看| 亚洲欧美色图小说| 亚洲激情图片一区| 亚洲成国产人片在线观看| 日日夜夜精品视频天天综合网| 亚洲小说欧美激情另类| 午夜精品久久久久久久久| 午夜视黄欧洲亚洲| 蜜桃久久久久久久| 国内精品久久久久影院色| 国产精品一区一区三区| 国产精品一区二区不卡| av一区二区三区黑人| 99久久99久久精品国产片果冻 | 亚洲动漫第一页| 亚洲大片在线观看| 久久精品国产网站| 国产成+人+日韩+欧美+亚洲| 91在线国产观看| 欧美亚洲愉拍一区二区| 91精品国产欧美一区二区成人| 日韩一级完整毛片| 欧美高清在线精品一区| 一区精品在线播放| 香蕉成人啪国产精品视频综合网| 日韩国产在线一| 国产精品一二三区| 色老汉av一区二区三区| 欧美一卡2卡3卡4卡| 国产无遮挡一区二区三区毛片日本| 国产欧美日韩视频一区二区| 亚洲一级片在线观看| 狠狠色2019综合网| jiyouzz国产精品久久| 在线播放国产精品二区一二区四区| 精品美女一区二区| 亚洲特级片在线| 蜜桃av噜噜一区| 一本大道综合伊人精品热热| 日韩精品一区二区三区蜜臀 | 26uuu欧美| 亚洲国产精品一区二区www| 久久国产精品72免费观看| 99re这里只有精品首页| 日韩欧美黄色影院| 亚洲视频你懂的| 久久99久久精品欧美| 91福利视频网站| 国产免费久久精品| 日本亚洲免费观看| 日本大香伊一区二区三区| 精品捆绑美女sm三区| 亚洲一区二区三区国产| 国产69精品一区二区亚洲孕妇| 91精品国产综合久久久蜜臀图片| 久久久精品一品道一区| 亚洲一区在线观看视频| 成人激情图片网| 91精品国产综合久久久久| 亚洲激情校园春色| 成人97人人超碰人人99| 精品久久人人做人人爱| 亚洲国产日韩a在线播放性色| 成人综合婷婷国产精品久久蜜臀| 欧美一级欧美一级在线播放| 亚洲精品国久久99热| 不卡电影免费在线播放一区| 精品国产第一区二区三区观看体验| 一区二区三区欧美亚洲| 成人一区二区视频| 久久一区二区三区四区| 日本va欧美va精品发布| 欧洲一区二区三区在线| 亚洲婷婷在线视频| 成人不卡免费av| 国产日产欧美一区二区三区| 国产麻豆一精品一av一免费 | 91福利区一区二区三区| 亚洲国产精品精华液ab| 精品综合久久久久久8888| 日韩欧美在线影院| 日日噜噜夜夜狠狠视频欧美人| 欧美性大战久久久久久久蜜臀 | 欧美人与性动xxxx| 一区二区三区久久| 色婷婷av一区二区三区大白胸|