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

📄 op.c.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
📖 第 1 页 / 共 4 页
字号:
    xer_so |= xer_ov;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_check_addo_64 (void){    xer_ov = (((uint64_t)T2 ^ (uint64_t)T1 ^ UINT64_MAX) &              ((uint64_t)T2 ^ (uint64_t)T0)) >> 63;    xer_so |= xer_ov;    RETURN();}#endif/* add carrying */void OPPROTO op_check_addc (void){    if (likely((uint32_t)T0 >= (uint32_t)T2)) {        xer_ca = 0;    } else {        xer_ca = 1;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_check_addc_64 (void){    if (likely((uint64_t)T0 >= (uint64_t)T2)) {        xer_ca = 0;    } else {        xer_ca = 1;    }    RETURN();}#endif/* add extended */void OPPROTO op_adde (void){    do_adde();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_adde_64 (void){    do_adde_64();    RETURN();}#endif/* add immediate */void OPPROTO op_addi (void){    T0 += (int32_t)PARAM1;    RETURN();}/* add to minus one extended */void OPPROTO op_add_me (void){    T0 += xer_ca + (-1);    if (likely((uint32_t)T1 != 0))        xer_ca = 1;    else        xer_ca = 0;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_add_me_64 (void){    T0 += xer_ca + (-1);    if (likely((uint64_t)T1 != 0))        xer_ca = 1;    else        xer_ca = 0;    RETURN();}#endifvoid OPPROTO op_addmeo (void){    do_addmeo();    RETURN();}void OPPROTO op_addmeo_64 (void){    do_addmeo();    RETURN();}/* add to zero extended */void OPPROTO op_add_ze (void){    T0 += xer_ca;    RETURN();}/* divide word */void OPPROTO op_divw (void){    if (unlikely(((int32_t)T0 == INT32_MIN && (int32_t)T1 == (int32_t)-1) ||                 (int32_t)T1 == 0)) {        T0 = (int32_t)(UINT32_MAX * ((uint32_t)T0 >> 31));    } else {        T0 = (int32_t)T0 / (int32_t)T1;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_divd (void){    if (unlikely(((int64_t)T0 == INT64_MIN && (int64_t)T1 == (int64_t)-1LL) ||                 (int64_t)T1 == 0)) {        T0 = (int64_t)(UINT64_MAX * ((uint64_t)T0 >> 63));    } else {        T0 = (int64_t)T0 / (int64_t)T1;    }    RETURN();}#endifvoid OPPROTO op_divwo (void){    do_divwo();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_divdo (void){    do_divdo();    RETURN();}#endif/* divide word unsigned */void OPPROTO op_divwu (void){    if (unlikely(T1 == 0)) {        T0 = 0;    } else {        T0 = (uint32_t)T0 / (uint32_t)T1;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_divdu (void){    if (unlikely(T1 == 0)) {        T0 = 0;    } else {        T0 /= T1;    }    RETURN();}#endifvoid OPPROTO op_divwuo (void){    do_divwuo();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_divduo (void){    do_divduo();    RETURN();}#endif/* multiply high word */void OPPROTO op_mulhw (void){    T0 = ((int64_t)((int32_t)T0) * (int64_t)((int32_t)T1)) >> 32;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_mulhd (void){    uint64_t tl, th;    muls64(&tl, &th, T0, T1);    T0 = th;    RETURN();}#endif/* multiply high word unsigned */void OPPROTO op_mulhwu (void){    T0 = ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1) >> 32;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_mulhdu (void){    uint64_t tl, th;    mulu64(&tl, &th, T0, T1);    T0 = th;    RETURN();}#endif/* multiply low immediate */void OPPROTO op_mulli (void){    T0 = ((int32_t)T0 * (int32_t)PARAM1);    RETURN();}/* multiply low word */void OPPROTO op_mullw (void){    T0 = (int32_t)(T0 * T1);    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_mulld (void){    T0 *= T1;    RETURN();}#endifvoid OPPROTO op_mullwo (void){    do_mullwo();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_mulldo (void){    do_mulldo();    RETURN();}#endif/* negate */void OPPROTO op_neg (void){    if (likely(T0 != INT32_MIN)) {        T0 = -(int32_t)T0;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_neg_64 (void){    if (likely(T0 != INT64_MIN)) {        T0 = -(int64_t)T0;    }    RETURN();}#endifvoid OPPROTO op_nego (void){    do_nego();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_nego_64 (void){    do_nego_64();    RETURN();}#endif/* subtract from */void OPPROTO op_subf (void){    T0 = T1 - T0;    RETURN();}/* subtract from carrying */void OPPROTO op_check_subfc (void){    if (likely((uint32_t)T0 > (uint32_t)T1)) {        xer_ca = 0;    } else {        xer_ca = 1;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_check_subfc_64 (void){    if (likely((uint64_t)T0 > (uint64_t)T1)) {        xer_ca = 0;    } else {        xer_ca = 1;    }    RETURN();}#endif/* subtract from extended */void OPPROTO op_subfe (void){    do_subfe();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_subfe_64 (void){    do_subfe_64();    RETURN();}#endif/* subtract from immediate carrying */void OPPROTO op_subfic (void){    T0 = (int32_t)PARAM1 + ~T0 + 1;    if ((uint32_t)T0 <= (uint32_t)PARAM1) {        xer_ca = 1;    } else {        xer_ca = 0;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_subfic_64 (void){    T0 = (int64_t)PARAM1 + ~T0 + 1;    if ((uint64_t)T0 <= (uint64_t)PARAM1) {        xer_ca = 1;    } else {        xer_ca = 0;    }    RETURN();}#endif/* subtract from minus one extended */void OPPROTO op_subfme (void){    T0 = ~T0 + xer_ca - 1;    if (likely((uint32_t)T0 != UINT32_MAX))        xer_ca = 1;    else        xer_ca = 0;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_subfme_64 (void){    T0 = ~T0 + xer_ca - 1;    if (likely((uint64_t)T0 != UINT64_MAX))        xer_ca = 1;    else        xer_ca = 0;    RETURN();}#endifvoid OPPROTO op_subfmeo (void){    do_subfmeo();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_subfmeo_64 (void){    do_subfmeo_64();    RETURN();}#endif/* subtract from zero extended */void OPPROTO op_subfze (void){    T1 = ~T0;    T0 = T1 + xer_ca;    if ((uint32_t)T0 < (uint32_t)T1) {        xer_ca = 1;    } else {        xer_ca = 0;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_subfze_64 (void){    T1 = ~T0;    T0 = T1 + xer_ca;    if ((uint64_t)T0 < (uint64_t)T1) {        xer_ca = 1;    } else {        xer_ca = 0;    }    RETURN();}#endifvoid OPPROTO op_subfzeo (void){    do_subfzeo();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_subfzeo_64 (void){    do_subfzeo_64();    RETURN();}#endif/***                           Integer comparison                          ***//* compare */void OPPROTO op_cmp (void){    if ((int32_t)T0 < (int32_t)T1) {        T0 = 0x08;    } else if ((int32_t)T0 > (int32_t)T1) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_cmp_64 (void){    if ((int64_t)T0 < (int64_t)T1) {        T0 = 0x08;    } else if ((int64_t)T0 > (int64_t)T1) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#endif/* compare immediate */void OPPROTO op_cmpi (void){    if ((int32_t)T0 < (int32_t)PARAM1) {        T0 = 0x08;    } else if ((int32_t)T0 > (int32_t)PARAM1) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_cmpi_64 (void){    if ((int64_t)T0 < (int64_t)((int32_t)PARAM1)) {        T0 = 0x08;    } else if ((int64_t)T0 > (int64_t)((int32_t)PARAM1)) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#endif/* compare logical */void OPPROTO op_cmpl (void){    if ((uint32_t)T0 < (uint32_t)T1) {        T0 = 0x08;    } else if ((uint32_t)T0 > (uint32_t)T1) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_cmpl_64 (void){    if ((uint64_t)T0 < (uint64_t)T1) {        T0 = 0x08;    } else if ((uint64_t)T0 > (uint64_t)T1) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#endif/* compare logical immediate */void OPPROTO op_cmpli (void){    if ((uint32_t)T0 < (uint32_t)PARAM1) {        T0 = 0x08;    } else if ((uint32_t)T0 > (uint32_t)PARAM1) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_cmpli_64 (void){    if ((uint64_t)T0 < (uint64_t)PARAM1) {        T0 = 0x08;    } else if ((uint64_t)T0 > (uint64_t)PARAM1) {        T0 = 0x04;    } else {        T0 = 0x02;    }    T0 |= xer_so;    RETURN();}#endifvoid OPPROTO op_isel (void){    if (T0)        T0 = T1;    else        T0 = T2;    RETURN();}void OPPROTO op_popcntb (void){    do_popcntb();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_popcntb_64 (void){    do_popcntb_64();    RETURN();}#endif/***                            Integer logical                            ***//* and */void OPPROTO op_and (void){    T0 &= T1;    RETURN();}/* andc */void OPPROTO op_andc (void){    T0 &= ~T1;    RETURN();}/* andi. */void OPPROTO op_andi_T0 (void){    T0 &= (uint32_t)PARAM1;    RETURN();}void OPPROTO op_andi_T1 (void){    T1 &= (uint32_t)PARAM1;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_andi_T0_64 (void){    T0 &= ((uint64_t)PARAM1 << 32) | (uint64_t)PARAM2;    RETURN();}void OPPROTO op_andi_T1_64 (void){    T1 &= ((uint64_t)PARAM1 << 32) | (uint64_t)PARAM2;    RETURN();}#endif/* count leading zero */void OPPROTO op_cntlzw (void){    do_cntlzw();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_cntlzd (void){    do_cntlzd();    RETURN();}#endif/* eqv */void OPPROTO op_eqv (void){    T0 = ~(T0 ^ T1);    RETURN();}/* extend sign byte */void OPPROTO op_extsb (void){#if defined (TARGET_PPC64)    T0 = (int64_t)((int8_t)T0);#else    T0 = (int32_t)((int8_t)T0);#endif    RETURN();}/* extend sign half word */void OPPROTO op_extsh (void){#if defined (TARGET_PPC64)    T0 = (int64_t)((int16_t)T0);#else    T0 = (int32_t)((int16_t)T0);#endif    RETURN();}#if defined (TARGET_PPC64)void OPPROTO op_extsw (void){    T0 = (int64_t)((int32_t)T0);    RETURN();}#endif/* nand */void OPPROTO op_nand (void){    T0 = ~(T0 & T1);    RETURN();}/* nor */void OPPROTO op_nor (void){    T0 = ~(T0 | T1);    RETURN();}/* or */void OPPROTO op_or (void){    T0 |= T1;    RETURN();}/* orc */void OPPROTO op_orc (void){    T0 |= ~T1;    RETURN();}/* ori */void OPPROTO op_ori (void){    T0 |= (uint32_t)PARAM1;    RETURN();}/* xor */void OPPROTO op_xor (void){    T0 ^= T1;    RETURN();}/* xori */void OPPROTO op_xori (void){    T0 ^= (uint32_t)PARAM1;    RETURN();}/***                             Integer rotate                            ***/void OPPROTO op_rotl32_T0_T1 (void){    T0 = rotl32(T0, T1 & 0x1F);    RETURN();}void OPPROTO op_rotli32_T0 (void){    T0 = rotl32(T0, PARAM1);    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_rotl64_T0_T1 (void){    T0 = rotl64(T0, T1 & 0x3F);    RETURN();}void OPPROTO op_rotli64_T0 (void){    T0 = rotl64(T0, PARAM1);    RETURN();}#endif/***                             Integer shift                             ***//* shift left word */void OPPROTO op_slw (void){    if (T1 & 0x20) {        T0 = 0;    } else {        T0 = (uint32_t)(T0 << T1);    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_sld (void){    if (T1 & 0x40) {        T0 = 0;    } else {        T0 = T0 << T1;    }    RETURN();}#endif/* shift right algebraic word */void OPPROTO op_sraw (void){    do_sraw();    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_srad (void){    do_srad();    RETURN();}#endif/* shift right algebraic word immediate */void OPPROTO op_srawi (void){    uint32_t mask = (uint32_t)PARAM2;    T0 = (int32_t)T0 >> PARAM1;    if ((int32_t)T1 < 0 && (T1 & mask) != 0) {        xer_ca = 1;    } else {        xer_ca = 0;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_sradi (void){    uint64_t mask = ((uint64_t)PARAM2 << 32) | (uint64_t)PARAM3;    T0 = (int64_t)T0 >> PARAM1;    if ((int64_t)T1 < 0 && ((uint64_t)T1 & mask) != 0) {        xer_ca = 1;    } else {        xer_ca = 0;    }    RETURN();}#endif/* shift right word */void OPPROTO op_srw (void){    if (T1 & 0x20) {        T0 = 0;    } else {        T0 = (uint32_t)T0 >> T1;    }    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_srd (void){    if (T1 & 0x40) {        T0 = 0;    } else {        T0 = (uint64_t)T0 >> T1;    }    RETURN();}#endifvoid OPPROTO op_sl_T0_T1 (void){    T0 = T0 << T1;    RETURN();}void OPPROTO op_sli_T0 (void){    T0 = T0 << PARAM1;    RETURN();}void OPPROTO op_sli_T1 (void){    T1 = T1 << PARAM1;    RETURN();}void OPPROTO op_srl_T0_T1 (void){    T0 = (uint32_t)T0 >> T1;    RETURN();}#if defined(TARGET_PPC64)void OPPROTO op_srl_T0_T1_64 (void){    T0 = (uint32_t)T0 >> T1;    RETURN();}

⌨️ 快捷键说明

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