亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区中文| 欧美电影免费观看高清完整版在线 | 亚洲综合激情网| 日本伦理一区二区| 亚洲最大成人综合| 欧美群妇大交群的观看方式| 亚洲va韩国va欧美va精品| 欧美日韩国产成人在线免费| 午夜av电影一区| 精品成人一区二区| 波多野结衣一区二区三区 | 精品国产乱码久久久久久影片| 久久精品国产精品亚洲红杏| 久久精品欧美日韩精品| 91免费版在线| 日韩精品一级二级| 久久久国产一区二区三区四区小说| 成人h动漫精品| 亚洲一区国产视频| 久久一区二区视频| aa级大片欧美| 日韩专区一卡二卡| 国产亚洲综合性久久久影院| 色综合天天在线| 久久av老司机精品网站导航| 国产欧美一区视频| 欧美区视频在线观看| 国产99久久久精品| 三级不卡在线观看| 国产精品精品国产色婷婷| 欧美在线色视频| 国产精品1区二区.| 亚洲成av人片在线观看| 日本一区二区在线不卡| 欧美精品在线一区二区三区| 国产精品一区二区三区四区| 一区二区三区在线免费视频 | 国产成人在线观看免费网站| 日韩久久一区二区| 欧美tk—视频vk| 91蝌蚪porny成人天涯| 国内欧美视频一区二区| 一区二区三区四区国产精品| 26uuu国产在线精品一区二区| 日本韩国欧美一区| 国产成人鲁色资源国产91色综| 一区二区三区不卡视频在线观看| 久久久午夜精品| 欧美日韩成人高清| 成人动漫一区二区| 国内成人免费视频| 丝袜亚洲另类丝袜在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 亚洲欧洲av另类| 2023国产精品视频| 91麻豆精品91久久久久同性| 色综合中文综合网| 99精品欧美一区二区蜜桃免费| 麻豆91免费看| 婷婷综合另类小说色区| 亚洲自拍与偷拍| 亚洲欧美日韩国产一区二区三区 | 国产精品一区专区| 久久精品噜噜噜成人88aⅴ| 亚洲网友自拍偷拍| 亚洲欧美视频在线观看| 中文字幕色av一区二区三区| 久久午夜电影网| 亚洲精品在线观看网站| 欧美一区二区三区男人的天堂| 欧美色综合网站| 91福利小视频| 欧美午夜精品一区二区蜜桃| 在线观看欧美黄色| 欧洲国产伦久久久久久久| 日本高清无吗v一区| 9i看片成人免费高清| 成人禁用看黄a在线| 丁香激情综合国产| 成人激情图片网| 91在线精品一区二区三区| 不卡视频一二三| 91麻豆国产精品久久| 色综合色狠狠天天综合色| 99久久久久久| 日本精品裸体写真集在线观看| 欧美性大战xxxxx久久久| 欧美日韩一二三区| 91精品婷婷国产综合久久性色| 3d动漫精品啪啪| 久久亚洲精华国产精华液| 久久影院视频免费| 欧美国产一区视频在线观看| 最近日韩中文字幕| 亚洲国产裸拍裸体视频在线观看乱了| 日韩不卡在线观看日韩不卡视频| 午夜精彩视频在线观看不卡| 麻豆91在线看| 成人美女视频在线观看18| 99国产精品国产精品毛片| 欧美日韩在线精品一区二区三区激情 | 国产福利不卡视频| 99久久亚洲一区二区三区青草| 91国产视频在线观看| 日韩一区二区免费视频| 国产亚洲综合色| 亚洲一区二区美女| 国内精品久久久久影院薰衣草| 99久久精品久久久久久清纯| 欧美日韩国产美| 国产日韩av一区二区| 亚洲一区在线视频观看| 激情五月激情综合网| 一本到高清视频免费精品| 欧美一区二区三区在线看 | 亚洲精品视频一区二区| 日本网站在线观看一区二区三区 | 亚洲国产乱码最新视频 | 亚洲成av人片在www色猫咪| 久久91精品久久久久久秒播| 99久久99久久精品国产片果冻 | 亚洲欧美视频在线观看| 日本不卡一二三区黄网| 成人av小说网| 欧美精品在线观看一区二区| 中文字幕av一区 二区| 亚洲成人在线免费| 粉嫩aⅴ一区二区三区四区| 欧美美女直播网站| 国产精品萝li| 久久99久久精品欧美| 欧美综合欧美视频| 国产日产欧美一区| 免费成人美女在线观看| 欧美在线一二三| 中文字幕在线观看不卡| 理论电影国产精品| 欧美性猛交xxxx乱大交退制版| 国产午夜亚洲精品午夜鲁丝片| 婷婷成人激情在线网| 99re成人精品视频| 久久久久久久久蜜桃| 日本午夜精品视频在线观看| 91在线观看一区二区| 久久久久久久综合| 看片的网站亚洲| 欧美一级日韩不卡播放免费| 一个色妞综合视频在线观看| 99国产精品国产精品久久| 国产欧美视频在线观看| 国模无码大尺度一区二区三区| 欧美日韩精品一区二区在线播放| 亚洲另类在线一区| 不卡一区在线观看| 久久精品视频在线看| 激情综合色综合久久综合| 91精品在线一区二区| 五月综合激情日本mⅴ| 欧美午夜在线观看| 一区二区高清视频在线观看| 一本到不卡免费一区二区| 亚洲欧美影音先锋| 成人看片黄a免费看在线| 国产日韩欧美综合在线| 国产麻豆精品视频| 国产肉丝袜一区二区| 波多野结衣在线aⅴ中文字幕不卡| 国产亚洲欧美一区在线观看| 国产精品99久久久久久有的能看| 精品欧美一区二区三区精品久久| 日本不卡一区二区| 日韩一级二级三级精品视频| 人禽交欧美网站| 精品噜噜噜噜久久久久久久久试看| 免费人成网站在线观看欧美高清| 欧美成人福利视频| 精品一区二区精品| 久久九九久久九九| av不卡在线播放| 亚洲精品自拍动漫在线| 欧美少妇一区二区| 麻豆免费看一区二区三区| 精品欧美久久久| 成人黄色在线网站| 亚洲黄色小视频| 欧美在线观看你懂的| 日韩av中文字幕一区二区三区| 日韩欧美在线一区二区三区| 国精产品一区一区三区mba视频| 国产欧美综合色| 一本一道久久a久久精品| 日韩电影在线一区二区三区| 久久久99精品久久| 色综合天天狠狠| 日韩影院精彩在线| 欧美韩国日本不卡| 欧美日韩视频在线一区二区| 国产一区二区三区在线看麻豆| 国产精品对白交换视频 | 亚洲福中文字幕伊人影院|