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

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

?? op_helper.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* *  PowerPC emulation helpers for qemu. * *  Copyright (c) 2003-2007 Jocelyn Mayer * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include "exec.h"#include "host-utils.h"#include "helper_regs.h"#include "op_helper.h"#define MEMSUFFIX _raw#include "op_helper.h"#include "op_helper_mem.h"#if !defined(CONFIG_USER_ONLY)#define MEMSUFFIX _user#include "op_helper.h"#include "op_helper_mem.h"#define MEMSUFFIX _kernel#include "op_helper.h"#include "op_helper_mem.h"#define MEMSUFFIX _hypv#include "op_helper.h"#include "op_helper_mem.h"#endif//#define DEBUG_OP//#define DEBUG_EXCEPTIONS//#define DEBUG_SOFTWARE_TLB/*****************************************************************************//* Exceptions processing helpers */void do_raise_exception_err (uint32_t exception, int error_code){#if 0    printf("Raise exception %3x code : %d\n", exception, error_code);#endif    env->exception_index = exception;    env->error_code = error_code;    cpu_loop_exit();}void do_raise_exception (uint32_t exception){    do_raise_exception_err(exception, 0);}void cpu_dump_EA (target_ulong EA);void do_print_mem_EA (target_ulong EA){    cpu_dump_EA(EA);}/*****************************************************************************//* Registers load and stores */void do_load_cr (void){    T0 = (env->crf[0] << 28) |        (env->crf[1] << 24) |        (env->crf[2] << 20) |        (env->crf[3] << 16) |        (env->crf[4] << 12) |        (env->crf[5] << 8) |        (env->crf[6] << 4) |        (env->crf[7] << 0);}void do_store_cr (uint32_t mask){    int i, sh;    for (i = 0, sh = 7; i < 8; i++, sh--) {        if (mask & (1 << sh))            env->crf[i] = (T0 >> (sh * 4)) & 0xFUL;    }}#if defined(TARGET_PPC64)void do_store_pri (int prio){    env->spr[SPR_PPR] &= ~0x001C000000000000ULL;    env->spr[SPR_PPR] |= ((uint64_t)prio & 0x7) << 50;}#endiftarget_ulong ppc_load_dump_spr (int sprn){    if (loglevel != 0) {        fprintf(logfile, "Read SPR %d %03x => " ADDRX "\n",                sprn, sprn, env->spr[sprn]);    }    return env->spr[sprn];}void ppc_store_dump_spr (int sprn, target_ulong val){    if (loglevel != 0) {        fprintf(logfile, "Write SPR %d %03x => " ADDRX " <= " ADDRX "\n",                sprn, sprn, env->spr[sprn], val);    }    env->spr[sprn] = val;}/*****************************************************************************//* Fixed point operations helpers */void do_adde (void){    T2 = T0;    T0 += T1 + xer_ca;    if (likely(!((uint32_t)T0 < (uint32_t)T2 ||                 (xer_ca == 1 && (uint32_t)T0 == (uint32_t)T2)))) {        xer_ca = 0;    } else {        xer_ca = 1;    }}#if defined(TARGET_PPC64)void do_adde_64 (void){    T2 = T0;    T0 += T1 + xer_ca;    if (likely(!((uint64_t)T0 < (uint64_t)T2 ||                 (xer_ca == 1 && (uint64_t)T0 == (uint64_t)T2)))) {        xer_ca = 0;    } else {        xer_ca = 1;    }}#endifvoid do_addmeo (void){    T1 = T0;    T0 += xer_ca + (-1);    xer_ov = ((uint32_t)T1 & ((uint32_t)T1 ^ (uint32_t)T0)) >> 31;    xer_so |= xer_ov;    if (likely(T1 != 0))        xer_ca = 1;    else        xer_ca = 0;}#if defined(TARGET_PPC64)void do_addmeo_64 (void){    T1 = T0;    T0 += xer_ca + (-1);    xer_ov = ((uint64_t)T1 & ((uint64_t)T1 ^ (uint64_t)T0)) >> 63;    xer_so |= xer_ov;    if (likely(T1 != 0))        xer_ca = 1;    else        xer_ca = 0;}#endifvoid do_divwo (void){    if (likely(!(((int32_t)T0 == INT32_MIN && (int32_t)T1 == (int32_t)-1) ||                 (int32_t)T1 == 0))) {        xer_ov = 0;        T0 = (int32_t)T0 / (int32_t)T1;    } else {        xer_ov = 1;        T0 = UINT32_MAX * ((uint32_t)T0 >> 31);    }    xer_so |= xer_ov;}#if defined(TARGET_PPC64)void do_divdo (void){    if (likely(!(((int64_t)T0 == INT64_MIN && (int64_t)T1 == (int64_t)-1LL) ||                 (int64_t)T1 == 0))) {        xer_ov = 0;        T0 = (int64_t)T0 / (int64_t)T1;    } else {        xer_ov = 1;        T0 = UINT64_MAX * ((uint64_t)T0 >> 63);    }    xer_so |= xer_ov;}#endifvoid do_divwuo (void){    if (likely((uint32_t)T1 != 0)) {        xer_ov = 0;        T0 = (uint32_t)T0 / (uint32_t)T1;    } else {        xer_ov = 1;        xer_so = 1;        T0 = 0;    }}#if defined(TARGET_PPC64)void do_divduo (void){    if (likely((uint64_t)T1 != 0)) {        xer_ov = 0;        T0 = (uint64_t)T0 / (uint64_t)T1;    } else {        xer_ov = 1;        xer_so = 1;        T0 = 0;    }}#endifvoid do_mullwo (void){    int64_t res = (int64_t)T0 * (int64_t)T1;    if (likely((int32_t)res == res)) {        xer_ov = 0;    } else {        xer_ov = 1;        xer_so = 1;    }    T0 = (int32_t)res;}#if defined(TARGET_PPC64)void do_mulldo (void){    int64_t th;    uint64_t tl;    muls64(&tl, &th, T0, T1);    T0 = (int64_t)tl;    /* If th != 0 && th != -1, then we had an overflow */    if (likely((uint64_t)(th + 1) <= 1)) {        xer_ov = 0;    } else {        xer_ov = 1;    }    xer_so |= xer_ov;}#endifvoid do_nego (void){    if (likely((int32_t)T0 != INT32_MIN)) {        xer_ov = 0;        T0 = -(int32_t)T0;    } else {        xer_ov = 1;        xer_so = 1;    }}#if defined(TARGET_PPC64)void do_nego_64 (void){    if (likely((int64_t)T0 != INT64_MIN)) {        xer_ov = 0;        T0 = -(int64_t)T0;    } else {        xer_ov = 1;        xer_so = 1;    }}#endifvoid do_subfe (void){    T0 = T1 + ~T0 + xer_ca;    if (likely((uint32_t)T0 >= (uint32_t)T1 &&               (xer_ca == 0 || (uint32_t)T0 != (uint32_t)T1))) {        xer_ca = 0;    } else {        xer_ca = 1;    }}#if defined(TARGET_PPC64)void do_subfe_64 (void){    T0 = T1 + ~T0 + xer_ca;    if (likely((uint64_t)T0 >= (uint64_t)T1 &&               (xer_ca == 0 || (uint64_t)T0 != (uint64_t)T1))) {        xer_ca = 0;    } else {        xer_ca = 1;    }}#endifvoid do_subfmeo (void){    T1 = T0;    T0 = ~T0 + xer_ca - 1;    xer_ov = ((uint32_t)~T1 & ((uint32_t)~T1 ^ (uint32_t)T0)) >> 31;    xer_so |= xer_ov;    if (likely((uint32_t)T1 != UINT32_MAX))        xer_ca = 1;    else        xer_ca = 0;}#if defined(TARGET_PPC64)void do_subfmeo_64 (void){    T1 = T0;    T0 = ~T0 + xer_ca - 1;    xer_ov = ((uint64_t)~T1 & ((uint64_t)~T1 ^ (uint64_t)T0)) >> 63;    xer_so |= xer_ov;    if (likely((uint64_t)T1 != UINT64_MAX))        xer_ca = 1;    else        xer_ca = 0;}#endifvoid do_subfzeo (void){    T1 = T0;    T0 = ~T0 + xer_ca;    xer_ov = (((uint32_t)~T1 ^ UINT32_MAX) &              ((uint32_t)(~T1) ^ (uint32_t)T0)) >> 31;    xer_so |= xer_ov;    if (likely((uint32_t)T0 >= (uint32_t)~T1)) {        xer_ca = 0;    } else {        xer_ca = 1;    }}#if defined(TARGET_PPC64)void do_subfzeo_64 (void){    T1 = T0;    T0 = ~T0 + xer_ca;    xer_ov = (((uint64_t)~T1 ^  UINT64_MAX) &              ((uint64_t)(~T1) ^ (uint64_t)T0)) >> 63;    xer_so |= xer_ov;    if (likely((uint64_t)T0 >= (uint64_t)~T1)) {        xer_ca = 0;    } else {        xer_ca = 1;    }}#endifvoid do_cntlzw (void){    T0 = clz32(T0);}#if defined(TARGET_PPC64)void do_cntlzd (void){    T0 = clz64(T0);}#endif/* shift right arithmetic helper */void do_sraw (void){    int32_t ret;    if (likely(!(T1 & 0x20UL))) {        if (likely((uint32_t)T1 != 0)) {            ret = (int32_t)T0 >> (T1 & 0x1fUL);            if (likely(ret >= 0 || ((int32_t)T0 & ((1 << T1) - 1)) == 0)) {                xer_ca = 0;            } else {                xer_ca = 1;            }        } else {            ret = T0;            xer_ca = 0;        }    } else {        ret = UINT32_MAX * ((uint32_t)T0 >> 31);        if (likely(ret >= 0 || ((uint32_t)T0 & ~0x80000000UL) == 0)) {            xer_ca = 0;        } else {            xer_ca = 1;        }    }    T0 = ret;}#if defined(TARGET_PPC64)void do_srad (void){    int64_t ret;    if (likely(!(T1 & 0x40UL))) {        if (likely((uint64_t)T1 != 0)) {            ret = (int64_t)T0 >> (T1 & 0x3FUL);            if (likely(ret >= 0 || ((int64_t)T0 & ((1 << T1) - 1)) == 0)) {                xer_ca = 0;            } else {                xer_ca = 1;            }        } else {            ret = T0;            xer_ca = 0;        }    } else {        ret = UINT64_MAX * ((uint64_t)T0 >> 63);        if (likely(ret >= 0 || ((uint64_t)T0 & ~0x8000000000000000ULL) == 0)) {            xer_ca = 0;        } else {            xer_ca = 1;        }    }    T0 = ret;}#endifvoid do_popcntb (void){    uint32_t ret;    int i;    ret = 0;    for (i = 0; i < 32; i += 8)        ret |= ctpop8((T0 >> i) & 0xFF) << i;    T0 = ret;}#if defined(TARGET_PPC64)void do_popcntb_64 (void){    uint64_t ret;    int i;    ret = 0;    for (i = 0; i < 64; i += 8)        ret |= ctpop8((T0 >> i) & 0xFF) << i;    T0 = ret;}#endif/*****************************************************************************//* Floating point operations helpers */static always_inline int fpisneg (float64 f){    union {        float64 f;        uint64_t u;    } u;    u.f = f;    return u.u >> 63 != 0;}static always_inline int isden (float f){    union {        float64 f;        uint64_t u;    } u;    u.f = f;    return ((u.u >> 52) & 0x7FF) == 0;}static always_inline int iszero (float64 f){    union {        float64 f;        uint64_t u;    } u;    u.f = f;    return (u.u & ~0x8000000000000000ULL) == 0;}static always_inline int isinfinity (float64 f){    union {        float64 f;        uint64_t u;    } u;    u.f = f;    return ((u.u >> 52) & 0x7FF) == 0x7FF &&        (u.u & 0x000FFFFFFFFFFFFFULL) == 0;}void do_compute_fprf (int set_fprf){    int isneg;    isneg = fpisneg(FT0);    if (unlikely(float64_is_nan(FT0))) {        if (float64_is_signaling_nan(FT0)) {            /* Signaling NaN: flags are undefined */            T0 = 0x00;        } else {            /* Quiet NaN */            T0 = 0x11;        }    } else if (unlikely(isinfinity(FT0))) {        /* +/- infinity */        if (isneg)            T0 = 0x09;        else            T0 = 0x05;    } else {        if (iszero(FT0)) {            /* +/- zero */            if (isneg)                T0 = 0x12;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草原综合久久大伊人精品优势| 国产高清不卡二三区| 久久久夜色精品亚洲| 欧美中文字幕一区二区三区| 国产综合一区二区| 亚洲国产精品一区二区www在线| 久久综合色一综合色88| 91久久奴性调教| 国产91精品免费| 久久国产精品99久久久久久老狼| 亚洲欧美色图小说| 日本一区二区综合亚洲| 制服丝袜中文字幕一区| 色视频成人在线观看免| 成人在线一区二区三区| 国产尤物一区二区| 日韩国产欧美在线观看| 一区免费观看视频| 久久久久久久久久久99999| 日韩一级精品视频在线观看| 欧美伊人精品成人久久综合97 | 欧美性受xxxx黑人xyx| 国产成人精品亚洲日本在线桃色| 日韩成人午夜电影| 一区二区三区欧美| 最新中文字幕一区二区三区| 国产日韩综合av| 久久久久久久久岛国免费| 日韩精品一区二区三区视频播放 | 91精品一区二区三区久久久久久| 91视频一区二区| 成人免费视频一区| 成人午夜电影久久影院| 激情五月激情综合网| 奇米影视在线99精品| 日精品一区二区三区| 亚洲成人在线观看视频| 亚洲成人资源在线| 日韩高清中文字幕一区| 日韩—二三区免费观看av| 日韩中文字幕一区二区三区| 天堂av在线一区| 日韩精品乱码免费| 麻豆成人免费电影| 国产在线播放一区三区四| 国产精品69毛片高清亚洲| 国产不卡视频在线播放| 99精品久久久久久| 色婷婷久久一区二区三区麻豆| 欧美中文字幕不卡| 欧美一区二区网站| 久久综合九色综合欧美就去吻| 欧美成人vr18sexvr| www国产成人| 国产精品久久久99| 亚洲黄色av一区| 三级成人在线视频| 国产在线一区观看| 暴力调教一区二区三区| 色欧美日韩亚洲| 91精品国产综合久久久久久久 | 精品乱人伦小说| 欧美激情一区二区三区蜜桃视频 | 中文字幕亚洲视频| 亚洲精品久久7777| 日韩国产精品大片| 国产成人精品在线看| 日本二三区不卡| 3d动漫精品啪啪| 国产欧美va欧美不卡在线| 亚洲精品国产a| 日本va欧美va瓶| 成人综合婷婷国产精品久久免费| 91成人在线观看喷潮| 日韩女同互慰一区二区| 成人欧美一区二区三区白人 | 国产精品国产三级国产aⅴ无密码| 亚洲人精品午夜| 精品影视av免费| 97久久超碰国产精品| 欧美一区二区三区性视频| 国产欧美一区二区三区网站| 亚洲国产日日夜夜| 国产精品中文有码| 欧美人牲a欧美精品| 久久精品一区二区三区不卡| 亚洲国产日韩精品| 国产白丝精品91爽爽久久| 欧美日韩的一区二区| 国产精品白丝在线| 日韩中文字幕av电影| 成人av免费在线| 欧美电影免费观看高清完整版在线 | 在线观看免费亚洲| 亚洲精品在线观| 午夜精品爽啪视频| www.av亚洲| 精品福利av导航| 亚洲国产美国国产综合一区二区| 国产一区福利在线| 欧美日本在线视频| 中文字幕字幕中文在线中不卡视频| 另类小说综合欧美亚洲| 欧美综合天天夜夜久久| 国产精品日韩精品欧美在线| 麻豆成人在线观看| 欧美日韩美少妇 | 国产自产2019最新不卡| 欧美专区在线观看一区| 国产精品福利一区二区三区| 国产一区二区三区视频在线播放| 欧美日韩一区二区在线观看视频 | av动漫一区二区| 久久综合av免费| 麻豆91精品91久久久的内涵| 欧美日韩高清在线播放| 亚洲一区在线观看网站| 91视频你懂的| 国产精品久久久久久久岛一牛影视| 国产精品一区二区三区四区| 欧美一级xxx| 美女国产一区二区三区| 欧美群妇大交群中文字幕| 亚洲一区二区av在线| 在线观看视频一区二区| 亚洲综合视频在线观看| 在线国产电影不卡| 亚洲国产精品欧美一二99| 色美美综合视频| 一区二区欧美国产| 欧美性色黄大片| 亚洲国产一区二区在线播放| 欧美网站大全在线观看| 亚洲成a人片综合在线| 欧美在线观看视频一区二区 | 视频一区二区欧美| 欧美一区二区三区影视| 久久精品国产精品亚洲红杏| 日韩欧美视频一区| 国产精品性做久久久久久| 国产喷白浆一区二区三区| 成人在线一区二区三区| 亚洲天堂成人网| 在线观看亚洲a| 日韩电影免费在线观看网站| 日韩欧美一区二区免费| 国产精品综合二区| 国产精品美女视频| 在线免费观看成人短视频| 亚洲成人中文在线| 欧美r级电影在线观看| 国产尤物一区二区| 亚洲丝袜制服诱惑| 欧美日韩一区在线观看| 另类小说欧美激情| 亚洲国产成人午夜在线一区| 色综合天天视频在线观看| 五月天婷婷综合| 久久久www成人免费毛片麻豆 | 欧美精品v国产精品v日韩精品| 午夜电影网亚洲视频| 欧美xfplay| 不卡视频一二三| 日韩专区一卡二卡| 亚洲国产激情av| 欧美日韩一区二区三区四区| 久久精品久久久精品美女| 中文字幕精品—区二区四季| 在线视频综合导航| 国产中文一区二区三区| 亚洲美女免费视频| 日韩免费观看高清完整版| hitomi一区二区三区精品| 亚洲成年人影院| 久久综合精品国产一区二区三区 | 粉嫩一区二区三区性色av| 一区二区三区久久| 精品国产91久久久久久久妲己| 91丨九色丨尤物| 紧缚捆绑精品一区二区| 亚洲日韩欧美一区二区在线| 欧美大肚乱孕交hd孕妇| 97久久精品人人爽人人爽蜜臀| 久久精品国产99国产| 综合久久久久久| 精品国精品国产| 欧美三级视频在线观看| 粉嫩欧美一区二区三区高清影视| 亚洲成人第一页| 国产精品久久福利| 日韩精品影音先锋| 欧美性xxxxxxxx| 成人aaaa免费全部观看| 另类中文字幕网| 天堂久久一区二区三区| 日韩美女久久久| 国产情人综合久久777777| 日韩精品一区二区三区在线观看| 日本二三区不卡| 91在线观看免费视频|