summaryrefslogtreecommitdiffstats
path: root/target/m68k/helper.c
diff options
context:
space:
mode:
authorRichard Henderson2016-11-09 14:46:09 +0100
committerLaurent Vivier2016-12-27 18:28:40 +0100
commit367790cce8e14131426f5190dfd7d1bdbf656e4d (patch)
tree22b147272686e13cb9c3a6ae6af09d69031bdb86 /target/m68k/helper.c
parenttarget-m68k: Do not cpu_abort on undefined insns (diff)
downloadqemu-367790cce8e14131426f5190dfd7d1bdbf656e4d.tar.gz
qemu-367790cce8e14131426f5190dfd7d1bdbf656e4d.tar.xz
qemu-367790cce8e14131426f5190dfd7d1bdbf656e4d.zip
target-m68k: Inline shifts
Also manage word and byte operands and fix the computation of overflow in the case of M68000 arithmetic shifts. Signed-off-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Richard Henderson <rth@twiddle.net> Message-Id: <1478699171-10637-4-git-send-email-rth@twiddle.net>
Diffstat (limited to 'target/m68k/helper.c')
-rw-r--r--target/m68k/helper.c52
1 files changed, 0 insertions, 52 deletions
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index 7aed9ffd2f..f750d3dbaa 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -284,58 +284,6 @@ void HELPER(set_sr)(CPUM68KState *env, uint32_t val)
m68k_switch_sp(env);
}
-uint32_t HELPER(shl_cc)(CPUM68KState *env, uint32_t val, uint32_t shift)
-{
- uint64_t result;
-
- shift &= 63;
- result = (uint64_t)val << shift;
-
- env->cc_c = (result >> 32) & 1;
- env->cc_n = result;
- env->cc_z = result;
- env->cc_v = 0;
- env->cc_x = shift ? env->cc_c : env->cc_x;
-
- return result;
-}
-
-uint32_t HELPER(shr_cc)(CPUM68KState *env, uint32_t val, uint32_t shift)
-{
- uint64_t temp;
- uint32_t result;
-
- shift &= 63;
- temp = (uint64_t)val << 32 >> shift;
- result = temp >> 32;
-
- env->cc_c = (temp >> 31) & 1;
- env->cc_n = result;
- env->cc_z = result;
- env->cc_v = 0;
- env->cc_x = shift ? env->cc_c : env->cc_x;
-
- return result;
-}
-
-uint32_t HELPER(sar_cc)(CPUM68KState *env, uint32_t val, uint32_t shift)
-{
- uint64_t temp;
- uint32_t result;
-
- shift &= 63;
- temp = (int64_t)val << 32 >> shift;
- result = temp >> 32;
-
- env->cc_c = (temp >> 31) & 1;
- env->cc_n = result;
- env->cc_z = result;
- env->cc_v = result ^ val;
- env->cc_x = shift ? env->cc_c : env->cc_x;
-
- return result;
-}
-
/* FPU helpers. */
uint32_t HELPER(f64_to_i32)(CPUM68KState *env, float64 val)
{