projects
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
290a093
)
Fix qemu crash due to sparc division-by-zero, by Aurelien Jarno.
author
ths
<ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 19 Mar 2007 19:16:00 +0000
(19:16 +0000)
committer
ths
<ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 19 Mar 2007 19:16:00 +0000
(19:16 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2510
c046a42c
-6fe2-441c-8c8c-
71466251a162
target-sparc/op.c
patch
|
blob
|
history
diff --git
a/target-sparc/op.c
b/target-sparc/op.c
index fd30e90e1f2a62a6eccba35874dbf8e09874dc96..9e16a29a43527ac09f9ec50563ecfd1cf7c214df 100644
(file)
--- a/
target-sparc/op.c
+++ b/
target-sparc/op.c
@@
-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;