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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cpu-exec.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 4 頁
字號:
#elif defined(TARGET_SPARC)                    do_interrupt(env->exception_index);#elif defined(TARGET_ARM)                    do_interrupt(env);#elif defined(TARGET_SH4)		    do_interrupt(env);#elif defined(TARGET_ALPHA)                    do_interrupt(env);#elif defined(TARGET_CRIS)                    do_interrupt(env);#elif defined(TARGET_M68K)                    do_interrupt(0);#endif                }                env->exception_index = -1;            }#ifdef USE_KQEMU            if (kqemu_is_ok(env) && env->interrupt_request == 0) {                int ret;                env->eflags = env->eflags | cc_table[CC_OP].compute_all() | (DF & DF_MASK);                ret = kqemu_cpu_exec(env);                /* put eflags in CPU temporary format */                CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);                DF = 1 - (2 * ((env->eflags >> 10) & 1));                CC_OP = CC_OP_EFLAGS;                env->eflags &= ~(DF_MASK | CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);                if (ret == 1) {                    /* exception */                    longjmp(env->jmp_env, 1);                } else if (ret == 2) {                    /* softmmu execution needed */                } else {                    if (env->interrupt_request != 0) {                        /* hardware interrupt will be executed just after */                    } else {                        /* otherwise, we restart */                        longjmp(env->jmp_env, 1);                    }                }            }#endif            T0 = 0; /* force lookup of first TB */            for(;;) {                SAVE_GLOBALS();                interrupt_request = env->interrupt_request;                if (__builtin_expect(interrupt_request, 0)#if defined(TARGET_I386)			&& env->hflags & HF_GIF_MASK#endif				) {                    if (interrupt_request & CPU_INTERRUPT_DEBUG) {                        env->interrupt_request &= ~CPU_INTERRUPT_DEBUG;                        env->exception_index = EXCP_DEBUG;                        cpu_loop_exit();                    }#if defined(TARGET_ARM) || defined(TARGET_SPARC) || defined(TARGET_MIPS) || \    defined(TARGET_PPC) || defined(TARGET_ALPHA) || defined(TARGET_CRIS)                    if (interrupt_request & CPU_INTERRUPT_HALT) {                        env->interrupt_request &= ~CPU_INTERRUPT_HALT;                        env->halted = 1;                        env->exception_index = EXCP_HLT;                        cpu_loop_exit();                    }#endif#if defined(TARGET_I386)                    if ((interrupt_request & CPU_INTERRUPT_SMI) &&                        !(env->hflags & HF_SMM_MASK)) {                        svm_check_intercept(SVM_EXIT_SMI);                        env->interrupt_request &= ~CPU_INTERRUPT_SMI;                        do_smm_enter();                        BREAK_CHAIN;                    } else if ((interrupt_request & CPU_INTERRUPT_HARD) &&                        (env->eflags & IF_MASK || env->hflags & HF_HIF_MASK) &&                        !(env->hflags & HF_INHIBIT_IRQ_MASK)) {                        int intno;                        svm_check_intercept(SVM_EXIT_INTR);                        env->interrupt_request &= ~(CPU_INTERRUPT_HARD | CPU_INTERRUPT_VIRQ);                        intno = cpu_get_pic_interrupt(env);                        if (loglevel & CPU_LOG_TB_IN_ASM) {                            fprintf(logfile, "Servicing hardware INT=0x%02x\n", intno);                        }                        do_interrupt(intno, 0, 0, 0, 1);                        /* ensure that no TB jump will be modified as                           the program flow was changed */                        BREAK_CHAIN;#if !defined(CONFIG_USER_ONLY)                    } else if ((interrupt_request & CPU_INTERRUPT_VIRQ) &&                        (env->eflags & IF_MASK) && !(env->hflags & HF_INHIBIT_IRQ_MASK)) {                         int intno;                         /* FIXME: this should respect TPR */                         env->interrupt_request &= ~CPU_INTERRUPT_VIRQ;                         svm_check_intercept(SVM_EXIT_VINTR);                         intno = ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_vector));                         if (loglevel & CPU_LOG_TB_IN_ASM)                             fprintf(logfile, "Servicing virtual hardware INT=0x%02x\n", intno);	                 do_interrupt(intno, 0, 0, -1, 1);                         stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_ctl),                                  ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_ctl)) & ~V_IRQ_MASK);                        BREAK_CHAIN;#endif                    }#elif defined(TARGET_PPC)#if 0                    if ((interrupt_request & CPU_INTERRUPT_RESET)) {                        cpu_ppc_reset(env);                    }#endif                    if (interrupt_request & CPU_INTERRUPT_HARD) {                        ppc_hw_interrupt(env);                        if (env->pending_interrupts == 0)                            env->interrupt_request &= ~CPU_INTERRUPT_HARD;                        BREAK_CHAIN;                    }#elif defined(TARGET_MIPS)                    if ((interrupt_request & CPU_INTERRUPT_HARD) &&                        (env->CP0_Status & env->CP0_Cause & CP0Ca_IP_mask) &&                        (env->CP0_Status & (1 << CP0St_IE)) &&                        !(env->CP0_Status & (1 << CP0St_EXL)) &&                        !(env->CP0_Status & (1 << CP0St_ERL)) &&                        !(env->hflags & MIPS_HFLAG_DM)) {                        /* Raise it */                        env->exception_index = EXCP_EXT_INTERRUPT;                        env->error_code = 0;                        do_interrupt(env);                        BREAK_CHAIN;                    }#elif defined(TARGET_SPARC)                    if ((interrupt_request & CPU_INTERRUPT_HARD) &&			(env->psret != 0)) {			int pil = env->interrupt_index & 15;			int type = env->interrupt_index & 0xf0;			if (((type == TT_EXTINT) &&			     (pil == 15 || pil > env->psrpil)) ||			    type != TT_EXTINT) {			    env->interrupt_request &= ~CPU_INTERRUPT_HARD;			    do_interrupt(env->interrupt_index);			    env->interrupt_index = 0;#if !defined(TARGET_SPARC64) && !defined(CONFIG_USER_ONLY)                            cpu_check_irqs(env);#endif                        BREAK_CHAIN;			}		    } else if (interrupt_request & CPU_INTERRUPT_TIMER) {			//do_interrupt(0, 0, 0, 0, 0);			env->interrupt_request &= ~CPU_INTERRUPT_TIMER;		    }#elif defined(TARGET_ARM)                    if (interrupt_request & CPU_INTERRUPT_FIQ                        && !(env->uncached_cpsr & CPSR_F)) {                        env->exception_index = EXCP_FIQ;                        do_interrupt(env);                        BREAK_CHAIN;                    }                    /* ARMv7-M interrupt return works by loading a magic value                       into the PC.  On real hardware the load causes the                       return to occur.  The qemu implementation performs the                       jump normally, then does the exception return when the                       CPU tries to execute code at the magic address.                       This will cause the magic PC value to be pushed to                       the stack if an interrupt occured at the wrong time.                       We avoid this by disabling interrupts when                       pc contains a magic address.  */                    if (interrupt_request & CPU_INTERRUPT_HARD                        && ((IS_M(env) && env->regs[15] < 0xfffffff0)                            || !(env->uncached_cpsr & CPSR_I))) {                        env->exception_index = EXCP_IRQ;                        do_interrupt(env);                        BREAK_CHAIN;                    }#elif defined(TARGET_SH4)                    if (interrupt_request & CPU_INTERRUPT_HARD) {                        do_interrupt(env);                        BREAK_CHAIN;                    }#elif defined(TARGET_ALPHA)                    if (interrupt_request & CPU_INTERRUPT_HARD) {                        do_interrupt(env);                        BREAK_CHAIN;                    }#elif defined(TARGET_CRIS)                    if (interrupt_request & CPU_INTERRUPT_HARD) {                        do_interrupt(env);			env->interrupt_request &= ~CPU_INTERRUPT_HARD;                        BREAK_CHAIN;                    }#elif defined(TARGET_M68K)                    if (interrupt_request & CPU_INTERRUPT_HARD                        && ((env->sr & SR_I) >> SR_I_SHIFT)                            < env->pending_level) {                        /* Real hardware gets the interrupt vector via an                           IACK cycle at this point.  Current emulated                           hardware doesn't rely on this, so we                           provide/save the vector when the interrupt is                           first signalled.  */                        env->exception_index = env->pending_vector;                        do_interrupt(1);                        BREAK_CHAIN;                    }#endif                   /* Don't use the cached interupt_request value,                      do_interrupt may have updated the EXITTB flag. */                    if (env->interrupt_request & CPU_INTERRUPT_EXITTB) {                        env->interrupt_request &= ~CPU_INTERRUPT_EXITTB;                        /* ensure that no TB jump will be modified as                           the program flow was changed */                        BREAK_CHAIN;                    }                    if (interrupt_request & CPU_INTERRUPT_EXIT) {                        env->interrupt_request &= ~CPU_INTERRUPT_EXIT;                        env->exception_index = EXCP_INTERRUPT;                        cpu_loop_exit();                    }                }#ifdef DEBUG_EXEC                if ((loglevel & CPU_LOG_TB_CPU)) {                    /* restore flags in standard format */                    regs_to_env();#if defined(TARGET_I386)                    env->eflags = env->eflags | cc_table[CC_OP].compute_all() | (DF & DF_MASK);                    cpu_dump_state(env, logfile, fprintf, X86_DUMP_CCOP);                    env->eflags &= ~(DF_MASK | CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);#elif defined(TARGET_ARM)                    cpu_dump_state(env, logfile, fprintf, 0);#elif defined(TARGET_SPARC)		    REGWPTR = env->regbase + (env->cwp * 16);		    env->regwptr = REGWPTR;                    cpu_dump_state(env, logfile, fprintf, 0);#elif defined(TARGET_PPC)                    cpu_dump_state(env, logfile, fprintf, 0);#elif defined(TARGET_M68K)                    cpu_m68k_flush_flags(env, env->cc_op);                    env->cc_op = CC_OP_FLAGS;                    env->sr = (env->sr & 0xffe0)                              | env->cc_dest | (env->cc_x << 4);                    cpu_dump_state(env, logfile, fprintf, 0);#elif defined(TARGET_MIPS)                    cpu_dump_state(env, logfile, fprintf, 0);#elif defined(TARGET_SH4)		    cpu_dump_state(env, logfile, fprintf, 0);#elif defined(TARGET_ALPHA)                    cpu_dump_state(env, logfile, fprintf, 0);#elif defined(TARGET_CRIS)                    cpu_dump_state(env, logfile, fprintf, 0);#else#error unsupported target CPU#endif                }#endif                tb = tb_find_fast();#ifdef DEBUG_EXEC                if ((loglevel & CPU_LOG_EXEC)) {                    fprintf(logfile, "Trace 0x%08lx [" TARGET_FMT_lx "] %s\n",                            (long)tb->tc_ptr, tb->pc,                            lookup_symbol(tb->pc));                }#endif                RESTORE_GLOBALS();                /* see if we can patch the calling TB. When the TB                   spans two pages, we cannot safely do a direct                   jump. */                {                    if (T0 != 0 &&#if USE_KQEMU                        (env->kqemu_enabled != 2) &&#endif                        tb->page_addr[1] == -1) {                    spin_lock(&tb_lock);                    tb_add_jump((TranslationBlock *)(long)(T0 & ~3), T0 & 3, tb);                    spin_unlock(&tb_lock);                }                }                tc_ptr = tb->tc_ptr;                env->current_tb = tb;                /* execute the generated code */                gen_func = (void *)tc_ptr;#if defined(__sparc__)                __asm__ __volatile__("call	%0\n\t"                                     "mov	%%o7,%%i0"                                     : /* no outputs */                                     : "r" (gen_func)                                     : "i0", "i1", "i2", "i3", "i4", "i5",                                       "o0", "o1", "o2", "o3", "o4", "o5",                                       "l0", "l1", "l2", "l3", "l4", "l5",                                       "l6", "l7");#elif defined(__arm__)                asm volatile ("mov pc, %0\n\t"                              ".global exec_loop\n\t"                              "exec_loop:\n\t"                              : /* no outputs */                              : "r" (gen_func)                              : "r1", "r2", "r3", "r8", "r9", "r10", "r12", "r14");#elif defined(__ia64)		struct fptr {			void *ip;			void *gp;		} fp;		fp.ip = tc_ptr;		fp.gp = code_gen_buffer + 2 * (1 << 20);		(*(void (*)(void)) &fp)();#else                gen_func();#endif                env->current_tb = NULL;                /* reset soft MMU for next block (it can currently                   only be set by a memory fault) */#if defined(TARGET_I386) && !defined(CONFIG_SOFTMMU)                if (env->hflags & HF_SOFTMMU_MASK) {                    env->hflags &= ~HF_SOFTMMU_MASK;                    /* do not allow linking to another block */                    T0 = 0;                }#endif#if defined(USE_KQEMU)#define MIN_CYCLE_BEFORE_SWITCH (100 * 1000)                if (kqemu_is_ok(env) &&                    (cpu_get_time_fast() - env->last_io_time) >= MIN_CYCLE_BEFORE_SWITCH) {                    cpu_loop_exit();                }#endif            } /* for(;;) */        } else {            env_to_regs();        }    } /* for(;;) */#if defined(TARGET_I386)    /* restore flags in standard format */    env->eflags = env->eflags | cc_table[CC_OP].compute_all() | (DF & DF_MASK);#elif defined(TARGET_ARM)    /* XXX: Save/restore host fpu exception state?.  */#elif defined(TARGET_SPARC)#if defined(reg_REGWPTR)    REGWPTR = saved_regwptr;#endif#elif defined(TARGET_PPC)#elif defined(TARGET_M68K)    cpu_m68k_flush_flags(env, env->cc_op);    env->cc_op = CC_OP_FLAGS;    env->sr = (env->sr & 0xffe0)              | env->cc_dest | (env->cc_x << 4);#elif defined(TARGET_MIPS)#elif defined(TARGET_SH4)#elif defined(TARGET_ALPHA)#elif defined(TARGET_CRIS)    /* XXXXX */#else#error unsupported target CPU#endif    /* restore global registers */    RESTORE_GLOBALS();#include "hostregs_helper.h"    /* fail safe : never use cpu_single_env outside cpu_exec() */    cpu_single_env = NULL;    return ret;}/* must only be called from the generated code as an exception can be   generated */void tb_invalidate_page_range(target_ulong start, target_ulong end){    /* XXX: cannot enable it yet because it yields to MMU exception       where NIP != read address on PowerPC */#if 0    target_ulong phys_addr;    phys_addr = get_phys_addr_code(env, start);    tb_invalidate_phys_page_range(phys_addr, phys_addr + end - start, 0);#endif}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色女孩综合影院| 国产盗摄视频一区二区三区| 欧美一区二区播放| 国产电影一区二区三区| 一区二区三区中文字幕精品精品 | 国产精品国产自产拍高清av| 欧美在线视频不卡| 国产精品伊人色| 亚洲国产欧美日韩另类综合| 欧美电影免费提供在线观看| 97久久人人超碰| 久久99精品久久久久久动态图 | 久久久久久久性| 欧美日韩国产首页| k8久久久一区二区三区| 另类综合日韩欧美亚洲| 一区二区成人在线| 中文成人综合网| 精品女同一区二区| 欧美精品一二三| 91看片淫黄大片一级在线观看| 国产伦精品一区二区三区在线观看 | 激情文学综合插| 日日骚欧美日韩| 一区二区成人在线观看| 中文字幕日韩欧美一区二区三区| 精品国产一区二区三区av性色| 欧美无乱码久久久免费午夜一区| 粉嫩绯色av一区二区在线观看| 精品系列免费在线观看| 日韩成人午夜精品| 午夜视频一区二区| 亚洲午夜在线视频| 亚洲欧洲日韩在线| 欧美国产日产图区| 国产欧美一区二区在线| 久久综合色鬼综合色| 欧美一区日本一区韩国一区| 欧美影院精品一区| 欧美三级午夜理伦三级中视频| bt欧美亚洲午夜电影天堂| 国产乱色国产精品免费视频| 精东粉嫩av免费一区二区三区| 天堂av在线一区| 日韩中文字幕91| 天使萌一区二区三区免费观看| 亚洲6080在线| 青娱乐精品在线视频| 美国精品在线观看| 极品少妇xxxx偷拍精品少妇| 黄一区二区三区| 国产精品一区二区男女羞羞无遮挡| 国产一区二区三区美女| 九一九一国产精品| 国产999精品久久久久久绿帽| 粉嫩一区二区三区性色av| 成人教育av在线| 一本色道**综合亚洲精品蜜桃冫| 91免费在线看| 欧美日韩国产综合一区二区| 4438成人网| 久久亚洲一区二区三区明星换脸 | 亚洲天天做日日做天天谢日日欢| 综合久久国产九一剧情麻豆| 亚洲视频狠狠干| 亚洲成人福利片| 麻豆精品国产传媒mv男同| 久久国产精品区| 粉嫩欧美一区二区三区高清影视 | www.视频一区| 欧美私人免费视频| 精品国产一区久久| 最新国产の精品合集bt伙计| 爽好久久久欧美精品| 久久精品国产秦先生| 成人免费看片app下载| 色综合天天天天做夜夜夜夜做| 欧美午夜电影网| 欧美精品一区二区三区蜜臀| 国产精品欧美久久久久无广告| 亚洲女同ⅹxx女同tv| 日本美女一区二区三区| 国产98色在线|日韩| 91国产丝袜在线播放| 日韩一二三四区| 亚洲欧洲日产国产综合网| 亚洲h精品动漫在线观看| 国产很黄免费观看久久| 在线观看网站黄不卡| 精品乱人伦一区二区三区| 国产精品高潮呻吟久久| 五月天丁香久久| 国产精品一二三四| 精品视频在线免费看| 99精品视频免费在线观看| 国产精品区一区二区三| 亚洲男人电影天堂| 7777精品伊人久久久大香线蕉完整版 | 亚洲精品视频一区| 美腿丝袜亚洲三区| 91亚洲男人天堂| 欧美xxx久久| 一区二区三区av电影| 激情五月播播久久久精品| 色欧美片视频在线观看| 久久久亚洲综合| 日韩精品电影在线| 波多野结衣欧美| 2023国产精品自拍| 午夜a成v人精品| 一本大道久久a久久精品综合| 久久先锋影音av鲁色资源网| 亚洲一区国产视频| 成人激情免费视频| 精品国产区一区| 午夜婷婷国产麻豆精品| 色综合久久久久综合99| 国产三级三级三级精品8ⅰ区| 午夜精品免费在线| 色婷婷久久久久swag精品| 亚洲国产成人自拍| 久久成人久久鬼色| 91精品国产福利| 亚洲成a人v欧美综合天堂| 91在线精品一区二区三区| wwwwxxxxx欧美| 美腿丝袜一区二区三区| 欧美日韩一级大片网址| 亚洲欧洲av一区二区三区久久| 国产精品99久久久久久久vr| 日韩午夜激情av| 天天色综合成人网| 欧美特级限制片免费在线观看| 亚洲欧美aⅴ...| 色综合中文综合网| 91精品国产aⅴ一区二区| 亚洲国产精品久久一线不卡| av毛片久久久久**hd| 欧美激情一区不卡| 成人永久免费视频| 国产欧美中文在线| 日韩免费电影一区| 日韩精品电影在线观看| 欧美一级一区二区| 麻豆国产一区二区| 26uuu色噜噜精品一区| 精品在线一区二区三区| 久久在线观看免费| 国产精品99久久久久久久女警| 中文av一区特黄| 91蝌蚪porny九色| 亚洲第一综合色| 欧美一级片免费看| 国内精品久久久久影院一蜜桃| 久久综合九色综合久久久精品综合| 狠狠色丁香久久婷婷综| 国产女同互慰高潮91漫画| av不卡免费在线观看| 亚洲综合激情另类小说区| 欧美日韩精品欧美日韩精品一| 日韩在线一区二区三区| 久久精品一区二区三区四区 | 欧美另类z0zxhd电影| 天天色图综合网| 国产亚洲精品免费| 99国产精品视频免费观看| 亚洲一线二线三线视频| 91精品蜜臀在线一区尤物| 国产伦精品一区二区三区在线观看| 国产精品久久久久一区| 欧美日韩极品在线观看一区| 麻豆国产91在线播放| 亚洲天堂av一区| 91麻豆精品国产91久久久资源速度 | 一区二区三区在线观看网站| 6080午夜不卡| 高清av一区二区| 亚洲成人免费影院| 国产三级欧美三级| 欧美三级一区二区| 粉嫩蜜臀av国产精品网站| 亚洲动漫第一页| 国产欧美中文在线| 在线成人免费视频| 成人听书哪个软件好| 丝袜美腿亚洲色图| 国产精品人妖ts系列视频| 欧美日本在线一区| 不卡影院免费观看| 蜜桃av一区二区三区| 亚洲欧美日韩系列| 日韩欧美高清在线| 在线观看一区二区精品视频| 国模套图日韩精品一区二区| 一区二区三区欧美激情| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩亚洲综合一区二区三区| 丁香婷婷综合五月| 久久99精品国产麻豆婷婷洗澡| 亚洲精品中文字幕乱码三区|