summaryrefslogtreecommitdiffstats
path: root/target-ppc
diff options
context:
space:
mode:
Diffstat (limited to 'target-ppc')
-rw-r--r--target-ppc/op.c4
-rw-r--r--target-ppc/op_helper.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/target-ppc/op.c b/target-ppc/op.c
index 6416659..4ab0f00 100644
--- a/target-ppc/op.c
+++ b/target-ppc/op.c
@@ -798,7 +798,11 @@ void OPPROTO op_mulli (void)
/* multiply low word */
void OPPROTO op_mullw (void)
{
+#if defined(TARGET_PPC64)
+ T0 = (int64_t)(int32_t)T0 * (int64_t)(int32_t)T1;
+#else
T0 = (int32_t)(T0 * T1);
+#endif
RETURN();
}
diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
index 46e9b7a..d398640 100644
--- a/target-ppc/op_helper.c
+++ b/target-ppc/op_helper.c
@@ -227,7 +227,7 @@ void do_divduo (void)
void do_mullwo (void)
{
- int64_t res = (int64_t)T0 * (int64_t)T1;
+ int64_t res = (int64_t)(int32_t)T0 * (int64_t)(int32_t)T1;
if (likely((int32_t)res == res)) {
xer_ov = 0;
OpenPOWER on IntegriCloud