Fix qemu crash due to sparc division-by-zero, by Aurelien Jarno.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2510 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
ths 2007-03-19 19:16:00 +00:00
parent 290a0933c0
commit 9bb234b3b1

View File

@ -671,6 +671,11 @@ void OPPROTO op_udiv_T1_T0(void)
x0 = T0 | ((uint64_t) (env->y) << 32);
x1 = T1;
if (x1 == 0) {
raise_exception(TT_DIV_ZERO);
}
x0 = x0 / x1;
if (x0 > 0xffffffff) {
T0 = 0xffffffff;
@ -689,6 +694,11 @@ void OPPROTO op_sdiv_T1_T0(void)
x0 = T0 | ((int64_t) (env->y) << 32);
x1 = T1;
if (x1 == 0) {
raise_exception(TT_DIV_ZERO);
}
x0 = x0 / x1;
if ((int32_t) x0 != x0) {
T0 = x0 < 0? 0x80000000: 0x7fffffff;