Commit 9bb234b3b170299c39c9e88cfe7da5434a92d99d

Authored by ths
1 parent 290a0933

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
Showing 1 changed file with 10 additions and 0 deletions
target-sparc/op.c
... ... @@ -671,6 +671,11 @@ void OPPROTO op_udiv_T1_T0(void)
671 671  
672 672 x0 = T0 | ((uint64_t) (env->y) << 32);
673 673 x1 = T1;
  674 +
  675 + if (x1 == 0) {
  676 + raise_exception(TT_DIV_ZERO);
  677 + }
  678 +
674 679 x0 = x0 / x1;
675 680 if (x0 > 0xffffffff) {
676 681 T0 = 0xffffffff;
... ... @@ -689,6 +694,11 @@ void OPPROTO op_sdiv_T1_T0(void)
689 694  
690 695 x0 = T0 | ((int64_t) (env->y) << 32);
691 696 x1 = T1;
  697 +
  698 + if (x1 == 0) {
  699 + raise_exception(TT_DIV_ZERO);
  700 + }
  701 +
692 702 x0 = x0 / x1;
693 703 if ((int32_t) x0 != x0) {
694 704 T0 = x0 < 0? 0x80000000: 0x7fffffff;
... ...