mirror of https://gitee.com/openkylin/qemu.git
target-ppc: fix computation of XER.{CA, OV} in addme, subfme
(Jocelyn Mayer) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5380 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
5bf06a9528
commit
0cadcbbe65
|
@ -640,8 +640,6 @@ void OPPROTO op_add_me (void)
|
||||||
T0 += xer_ca + (-1);
|
T0 += xer_ca + (-1);
|
||||||
if (likely((uint32_t)T1 != 0))
|
if (likely((uint32_t)T1 != 0))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
RETURN();
|
RETURN();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -651,8 +649,6 @@ void OPPROTO op_add_me_64 (void)
|
||||||
T0 += xer_ca + (-1);
|
T0 += xer_ca + (-1);
|
||||||
if (likely((uint64_t)T1 != 0))
|
if (likely((uint64_t)T1 != 0))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
RETURN();
|
RETURN();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -930,8 +926,6 @@ void OPPROTO op_subfme (void)
|
||||||
T0 = ~T0 + xer_ca - 1;
|
T0 = ~T0 + xer_ca - 1;
|
||||||
if (likely((uint32_t)T0 != UINT32_MAX))
|
if (likely((uint32_t)T0 != UINT32_MAX))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
RETURN();
|
RETURN();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -941,8 +935,6 @@ void OPPROTO op_subfme_64 (void)
|
||||||
T0 = ~T0 + xer_ca - 1;
|
T0 = ~T0 + xer_ca - 1;
|
||||||
if (likely((uint64_t)T0 != UINT64_MAX))
|
if (likely((uint64_t)T0 != UINT64_MAX))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
RETURN();
|
RETURN();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -151,10 +151,8 @@ void do_addmeo (void)
|
||||||
T0 += xer_ca + (-1);
|
T0 += xer_ca + (-1);
|
||||||
xer_ov = ((uint32_t)T1 & ((uint32_t)T1 ^ (uint32_t)T0)) >> 31;
|
xer_ov = ((uint32_t)T1 & ((uint32_t)T1 ^ (uint32_t)T0)) >> 31;
|
||||||
xer_so |= xer_ov;
|
xer_so |= xer_ov;
|
||||||
if (likely(T1 != 0))
|
if (likely((uint32_t)T1 != 0))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(TARGET_PPC64)
|
#if defined(TARGET_PPC64)
|
||||||
|
@ -164,10 +162,8 @@ void do_addmeo_64 (void)
|
||||||
T0 += xer_ca + (-1);
|
T0 += xer_ca + (-1);
|
||||||
xer_ov = ((uint64_t)T1 & ((uint64_t)T1 ^ (uint64_t)T0)) >> 63;
|
xer_ov = ((uint64_t)T1 & ((uint64_t)T1 ^ (uint64_t)T0)) >> 63;
|
||||||
xer_so |= xer_ov;
|
xer_so |= xer_ov;
|
||||||
if (likely(T1 != 0))
|
if (likely((uint64_t)T1 != 0))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -312,8 +308,6 @@ void do_subfmeo (void)
|
||||||
xer_so |= xer_ov;
|
xer_so |= xer_ov;
|
||||||
if (likely((uint32_t)T1 != UINT32_MAX))
|
if (likely((uint32_t)T1 != UINT32_MAX))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(TARGET_PPC64)
|
#if defined(TARGET_PPC64)
|
||||||
|
@ -325,8 +319,6 @@ void do_subfmeo_64 (void)
|
||||||
xer_so |= xer_ov;
|
xer_so |= xer_ov;
|
||||||
if (likely((uint64_t)T1 != UINT64_MAX))
|
if (likely((uint64_t)T1 != UINT64_MAX))
|
||||||
xer_ca = 1;
|
xer_ca = 1;
|
||||||
else
|
|
||||||
xer_ca = 0;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue