aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2006-11-12 21:31:18 +0000
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2006-11-12 21:31:18 +0000
commit2d37be61e3a377843f4e8b8fcc837838294b8b3f (patch)
tree4fa83386a55d426e5ba8c6a175a4b53ef98643b7
parent483dcf538ea2ac86914bf7deef1d07f3b48d8878 (diff)
M68k build fix.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2212 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--target-m68k/op.c7
-rw-r--r--target-m68k/translate.c4
2 files changed, 7 insertions, 4 deletions
diff --git a/target-m68k/op.c b/target-m68k/op.c
index 489eafeef6..8ea7589c3f 100644
--- a/target-m68k/op.c
+++ b/target-m68k/op.c
@@ -412,7 +412,10 @@ OP(divu)
quot = num / den;
rem = num % den;
flags = 0;
- if (PARAM1 && quot > 0xffff)
+ /* Avoid using a PARAM1 of zero. This breaks dyngen because it uses
+ the address of a symbol, and gcc knows symbols can't have address
+ zero. */
+ if (PARAM1 == 2 && quot > 0xffff)
flags |= CCF_V;
if (quot == 0)
flags |= CCF_Z;
@@ -439,7 +442,7 @@ OP(divs)
quot = num / den;
rem = num % den;
flags = 0;
- if (PARAM1 && quot != (int16_t)quot)
+ if (PARAM1 == 2 && quot != (int16_t)quot)
flags |= CCF_V;
if (quot == 0)
flags |= CCF_Z;
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 10728f97d3..9c34c626b2 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -747,9 +747,9 @@ DISAS_INSN(divl)
den = gen_ea(s, insn, OS_LONG, 0, NULL);
gen_op_mov32(QREG_DIV2, den);
if (ext & 0x0800) {
- gen_op_divs(0);
+ gen_op_divs(2);
} else {
- gen_op_divu(0);
+ gen_op_divu(2);
}
if (num == reg) {
/* div */