⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 op.c.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
📖 第 1 页 / 共 4 页
字号:
{    T2 = !FLAG_SET(PSR_CARRY);}void OPPROTO op_eval_bpos(void){    T2 = !FLAG_SET(PSR_NEG);}void OPPROTO op_eval_bvc(void){    T2 = !FLAG_SET(PSR_OVF);}#ifdef TARGET_SPARC64void OPPROTO op_eval_xbe(void){    T2 = XFLAG_SET(PSR_ZERO);}void OPPROTO op_eval_xble(void){    target_ulong Z = XFLAG_SET(PSR_ZERO), N = XFLAG_SET(PSR_NEG), V = XFLAG_SET(PSR_OVF);    T2 = Z | (N ^ V);}void OPPROTO op_eval_xbl(void){    target_ulong N = XFLAG_SET(PSR_NEG), V = XFLAG_SET(PSR_OVF);    T2 = N ^ V;}void OPPROTO op_eval_xbleu(void){    target_ulong Z = XFLAG_SET(PSR_ZERO), C = XFLAG_SET(PSR_CARRY);    T2 = C | Z;}void OPPROTO op_eval_xbcs(void){    T2 = XFLAG_SET(PSR_CARRY);}void OPPROTO op_eval_xbvs(void){    T2 = XFLAG_SET(PSR_OVF);}void OPPROTO op_eval_xbneg(void){    T2 = XFLAG_SET(PSR_NEG);}void OPPROTO op_eval_xbne(void){    T2 = !XFLAG_SET(PSR_ZERO);}void OPPROTO op_eval_xbg(void){    target_ulong Z = XFLAG_SET(PSR_ZERO), N = XFLAG_SET(PSR_NEG), V = XFLAG_SET(PSR_OVF);    T2 = !(Z | (N ^ V));}void OPPROTO op_eval_xbge(void){    target_ulong N = XFLAG_SET(PSR_NEG), V = XFLAG_SET(PSR_OVF);    T2 = !(N ^ V);}void OPPROTO op_eval_xbgu(void){    target_ulong Z = XFLAG_SET(PSR_ZERO), C = XFLAG_SET(PSR_CARRY);    T2 = !(C | Z);}void OPPROTO op_eval_xbcc(void){    T2 = !XFLAG_SET(PSR_CARRY);}void OPPROTO op_eval_xbpos(void){    T2 = !XFLAG_SET(PSR_NEG);}void OPPROTO op_eval_xbvc(void){    T2 = !XFLAG_SET(PSR_OVF);}#endif#define FCC#define FFLAG_SET(x) (env->fsr & x? 1: 0)#include "fbranch_template.h"#ifdef TARGET_SPARC64#define FCC _fcc1#define FFLAG_SET(x) ((env->fsr & ((uint64_t)x >> 32))? 1: 0)#include "fbranch_template.h"#define FCC _fcc2#define FFLAG_SET(x) ((env->fsr & ((uint64_t)x >> 34))? 1: 0)#include "fbranch_template.h"#define FCC _fcc3#define FFLAG_SET(x) ((env->fsr & ((uint64_t)x >> 36))? 1: 0)#include "fbranch_template.h"#endif#ifdef TARGET_SPARC64void OPPROTO op_eval_brz(void){    T2 = (T0 == 0);}void OPPROTO op_eval_brnz(void){    T2 = (T0 != 0);}void OPPROTO op_eval_brlz(void){    T2 = ((int64_t)T0 < 0);}void OPPROTO op_eval_brlez(void){    T2 = ((int64_t)T0 <= 0);}void OPPROTO op_eval_brgz(void){    T2 = ((int64_t)T0 > 0);}void OPPROTO op_eval_brgez(void){    T2 = ((int64_t)T0 >= 0);}void OPPROTO op_jmp_im64(void){    env->pc = PARAMQ1;}void OPPROTO op_movq_npc_im64(void){    env->npc = PARAMQ1;}#endifvoid OPPROTO op_jmp_im(void){    env->pc = (uint32_t)PARAM1;}void OPPROTO op_movl_npc_im(void){    env->npc = (uint32_t)PARAM1;}void OPPROTO op_movl_npc_T0(void){    env->npc = T0;}void OPPROTO op_mov_pc_npc(void){    env->pc = env->npc;}void OPPROTO op_next_insn(void){    env->pc = env->npc;    env->npc = env->npc + 4;}void OPPROTO op_goto_tb0(void){    GOTO_TB(op_goto_tb0, PARAM1, 0);}void OPPROTO op_goto_tb1(void){    GOTO_TB(op_goto_tb1, PARAM1, 1);}void OPPROTO op_jmp_label(void){    GOTO_LABEL_PARAM(1);}void OPPROTO op_jnz_T2_label(void){    if (T2)        GOTO_LABEL_PARAM(1);    FORCE_RET();}void OPPROTO op_jz_T2_label(void){    if (!T2)        GOTO_LABEL_PARAM(1);    FORCE_RET();}void OPPROTO op_flush_T0(void){    helper_flush(T0);}void OPPROTO op_clear_ieee_excp_and_FTT(void){    env->fsr &= ~(FSR_FTT_MASK | FSR_CEXC_MASK);;}#define F_OP(name, p) void OPPROTO op_f##name##p(void)#if defined(CONFIG_USER_ONLY)#define F_BINOP(name)                                           \    F_OP(name, s)                                               \    {                                                           \        set_float_exception_flags(0, &env->fp_status);          \        FT0 = float32_ ## name (FT0, FT1, &env->fp_status);     \        check_ieee_exceptions();                                \    }                                                           \    F_OP(name, d)                                               \    {                                                           \        set_float_exception_flags(0, &env->fp_status);          \        DT0 = float64_ ## name (DT0, DT1, &env->fp_status);     \        check_ieee_exceptions();                                \    }                                                           \    F_OP(name, q)                                               \    {                                                           \        set_float_exception_flags(0, &env->fp_status);          \        QT0 = float128_ ## name (QT0, QT1, &env->fp_status);    \        check_ieee_exceptions();                                \    }#else#define F_BINOP(name)                                           \    F_OP(name, s)                                               \    {                                                           \        set_float_exception_flags(0, &env->fp_status);          \        FT0 = float32_ ## name (FT0, FT1, &env->fp_status);     \        check_ieee_exceptions();                                \    }                                                           \    F_OP(name, d)                                               \    {                                                           \        set_float_exception_flags(0, &env->fp_status);          \        DT0 = float64_ ## name (DT0, DT1, &env->fp_status);     \        check_ieee_exceptions();                                \    }#endifF_BINOP(add);F_BINOP(sub);F_BINOP(mul);F_BINOP(div);#undef F_BINOPvoid OPPROTO op_fsmuld(void){    set_float_exception_flags(0, &env->fp_status);    DT0 = float64_mul(float32_to_float64(FT0, &env->fp_status),                      float32_to_float64(FT1, &env->fp_status),                      &env->fp_status);    check_ieee_exceptions();}#if defined(CONFIG_USER_ONLY)void OPPROTO op_fdmulq(void){    set_float_exception_flags(0, &env->fp_status);    QT0 = float128_mul(float64_to_float128(DT0, &env->fp_status),                       float64_to_float128(DT1, &env->fp_status),                       &env->fp_status);    check_ieee_exceptions();}#endif#if defined(CONFIG_USER_ONLY)#define F_HELPER(name)    \    F_OP(name, s)         \    {                     \        do_f##name##s();  \    }                     \    F_OP(name, d)         \    {                     \        do_f##name##d();  \    }                     \    F_OP(name, q)         \    {                     \        do_f##name##q();  \    }#else#define F_HELPER(name)    \    F_OP(name, s)         \    {                     \        do_f##name##s();  \    }                     \    F_OP(name, d)         \    {                     \        do_f##name##d();  \    }#endifF_HELPER(sqrt);F_OP(neg, s){    FT0 = float32_chs(FT1);}F_OP(abs, s){    do_fabss();}F_HELPER(cmp);F_HELPER(cmpe);#ifdef TARGET_SPARC64F_OP(neg, d){    DT0 = float64_chs(DT1);}F_OP(abs, d){    do_fabsd();}#if defined(CONFIG_USER_ONLY)F_OP(neg, q){    QT0 = float128_chs(QT1);}F_OP(abs, q){    do_fabsd();}#endifvoid OPPROTO op_fcmps_fcc1(void){    do_fcmps_fcc1();}void OPPROTO op_fcmpd_fcc1(void){    do_fcmpd_fcc1();}void OPPROTO op_fcmps_fcc2(void){    do_fcmps_fcc2();}void OPPROTO op_fcmpd_fcc2(void){    do_fcmpd_fcc2();}void OPPROTO op_fcmps_fcc3(void){    do_fcmps_fcc3();}void OPPROTO op_fcmpd_fcc3(void){    do_fcmpd_fcc3();}void OPPROTO op_fcmpes_fcc1(void){    do_fcmpes_fcc1();}void OPPROTO op_fcmped_fcc1(void){    do_fcmped_fcc1();}void OPPROTO op_fcmpes_fcc2(void){    do_fcmpes_fcc2();}void OPPROTO op_fcmped_fcc2(void){    do_fcmped_fcc2();}void OPPROTO op_fcmpes_fcc3(void){    do_fcmpes_fcc3();}void OPPROTO op_fcmped_fcc3(void){    do_fcmped_fcc3();}#if defined(CONFIG_USER_ONLY)void OPPROTO op_fcmpq_fcc1(void){    do_fcmpq_fcc1();}void OPPROTO op_fcmpq_fcc2(void){    do_fcmpq_fcc2();}void OPPROTO op_fcmpq_fcc3(void){    do_fcmpq_fcc3();}void OPPROTO op_fcmpeq_fcc1(void){    do_fcmpeq_fcc1();}void OPPROTO op_fcmpeq_fcc2(void){    do_fcmpeq_fcc2();}void OPPROTO op_fcmpeq_fcc3(void){    do_fcmpeq_fcc3();}#endif#endif/* Integer to float conversion.  */#ifdef USE_INT_TO_FLOAT_HELPERSF_HELPER(ito);#ifdef TARGET_SPARC64F_HELPER(xto);#endif#elseF_OP(ito, s){    set_float_exception_flags(0, &env->fp_status);    FT0 = int32_to_float32(*((int32_t *)&FT1), &env->fp_status);    check_ieee_exceptions();}F_OP(ito, d){    set_float_exception_flags(0, &env->fp_status);    DT0 = int32_to_float64(*((int32_t *)&FT1), &env->fp_status);    check_ieee_exceptions();}#if defined(CONFIG_USER_ONLY)F_OP(ito, q){    set_float_exception_flags(0, &env->fp_status);    QT0 = int32_to_float128(*((int32_t *)&FT1), &env->fp_status);    check_ieee_exceptions();}#endif#ifdef TARGET_SPARC64F_OP(xto, s){    set_float_exception_flags(0, &env->fp_status);    FT0 = int64_to_float32(*((int64_t *)&DT1), &env->fp_status);    check_ieee_exceptions();}F_OP(xto, d){    set_float_exception_flags(0, &env->fp_status);    DT0 = int64_to_float64(*((int64_t *)&DT1), &env->fp_status);    check_ieee_exceptions();}#if defined(CONFIG_USER_ONLY)F_OP(xto, q){    set_float_exception_flags(0, &env->fp_status);    QT0 = int64_to_float128(*((int64_t *)&DT1), &env->fp_status);    check_ieee_exceptions();}#endif#endif#endif#undef F_HELPER/* floating point conversion */void OPPROTO op_fdtos(void){    set_float_exception_flags(0, &env->fp_status);    FT0 = float64_to_float32(DT1, &env->fp_status);    check_ieee_exceptions();}void OPPROTO op_fstod(void){    set_float_exception_flags(0, &env->fp_status);    DT0 = float32_to_float64(FT1, &env->fp_status);    check_ieee_exceptions();}#if defined(CONFIG_USER_ONLY)void OPPROTO op_fqtos(void){    set_float_exception_flags(0, &env->fp_status);    FT0 = float128_to_float32(QT1, &env->fp_status);    check_ieee_exceptions();}void OPPROTO op_fstoq(void){    set_float_exception_flags(0, &env->fp_status);    QT0 = float32_to_float128(FT1, &env->fp_status);    check_ieee_exceptions();}void OPPROTO op_fqtod(void){    set_float_exception_flags(0, &env->fp_status);    DT0 = float128_to_float64(QT1, &env->fp_status);    check_ieee_exceptions();}void OPPROTO op_fdtoq(void){    set_float_exception_flags(0, &env->fp_status);    QT0 = float64_to_float128(DT1, &env->fp_status);    check_ieee_exceptions();}#endif/* Float to integer conversion.  */void OPPROTO op_fstoi(void){    set_float_exception_flags(0, &env->fp_status);    *((int32_t *)&FT0) = float32_to_int32_round_to_zero(FT1, &env->fp_status);    check_ieee_exceptions();}void OPPROTO op_fdtoi(void){    set_float_exception_flags(0, &env->fp_status);    *((int32_t *)&FT0) = float64_to_int32_round_to_zero(DT1, &env->fp_status);    check_ieee_exceptions();}#if defined(CONFIG_USER_ONLY)void OPPROTO op_fqtoi(void){    set_float_exception_flags(0, &env->fp_status);    *((int32_t *)&FT0) = float128_to_int32_round_to_zero(QT1, &env->fp_status);    check_ieee_exceptions();}#endif#ifdef TARGET_SPARC64void OPPROTO op_fstox(void){    set_float_exception_flags(0, &env->fp_status);    *((int64_t *)&DT0) = float32_to_int64_round_to_zero(FT1, &env->fp_status);    check_ieee_exceptions();}void OPPROTO op_fdtox(void){    set_float_exception_flags(0, &env->fp_status);    *((int64_t *)&DT0) = float64_to_int64_round_to_zero(DT1, &env->fp_status);    check_ieee_exceptions();}#if defined(CONFIG_USER_ONLY)void OPPROTO op_fqtox(void){    set_float_exception_flags(0, &env->fp_status);    *((int64_t *)&DT0) = float128_to_int64_round_to_zero(QT1, &env->fp_status);    check_ieee_exceptions();}#endifvoid OPPROTO op_fmovs_cc(void){    if (T2)        FT0 = FT1;}void OPPROTO op_fmovd_cc(void){    if (T2)        DT0 = DT1;}#if defined(CONFIG_USER_ONLY)void OPPROTO op_fmovq_cc(void){    if (T2)        QT0 = QT1;}#endifvoid OPPROTO op_mov_cc(void){    if (T2)        T0 = T1;}void OPPROTO op_flushw(void){    if (env->cansave != NWINDOWS - 2) {        raise_exception(TT_SPILL | (env->otherwin != 0 ?                                    (TT_WOTHER | ((env->wstate & 0x38) >> 1)):                                    ((env->wstate & 0x7) << 2)));    }}void OPPROTO op_saved(void){    env->cansave++;    if (env->otherwin == 0)        env->canrestore--;    else        env->otherwin--;    FORCE_RET();}void OPPROTO op_restored(void){    env->canrestore++;    if (env->cleanwin < NWINDOWS - 1)        env->cleanwin++;    if (env->otherwin == 0)        env->cansave--;    else        env->otherwin--;    FORCE_RET();}void OPPROTO op_popc(void){    do_popc();}void OPPROTO op_done(void){    do_done();}void OPPROTO op_retry(void){    do_retry();}void OPPROTO op_sir(void){    T0 = 0;  // XXX}void OPPROTO op_ld_asi_reg(){    T0 += PARAM1;    helper_ld_asi(env->asi, PARAM2, PARAM3);}void OPPROTO op_st_asi_reg(){    T0 += PARAM1;    helper_st_asi(env->asi, PARAM2);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -