diff options
author | Richard Henderson <rth@twiddle.net> | 2013-02-19 23:52:09 -0800 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2013-02-23 17:25:29 +0000 |
commit | 2de68a4900ef6eb67380b0c128abfe1976bc66e8 (patch) | |
tree | 1d9cd2639adcad03c0825503ba4304975ac7ce3f /target-arm/op_helper.c | |
parent | 49b4c31efcce45ab714f286f14fa5d5173f9069d (diff) |
target-arm: Implement sbc_cc inline
Use sub2 if available, otherwise use 64-bit arithmetic.
Cc: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'target-arm/op_helper.c')
-rw-r--r-- | target-arm/op_helper.c | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c index 49fc036cc9..a52231346c 100644 --- a/target-arm/op_helper.c +++ b/target-arm/op_helper.c @@ -315,21 +315,6 @@ uint64_t HELPER(get_cp_reg64)(CPUARMState *env, void *rip) The only way to do that in TCG is a conditional branch, which clobbers all our temporaries. For now implement these as helper functions. */ -uint32_t HELPER(sbc_cc)(CPUARMState *env, uint32_t a, uint32_t b) -{ - uint32_t result; - if (!env->CF) { - result = a - b - 1; - env->CF = a > b; - } else { - result = a - b; - env->CF = a >= b; - } - env->VF = (a ^ b) & (a ^ result); - env->NF = env->ZF = result; - return result; -} - /* Similarly for variable shift instructions. */ uint32_t HELPER(shl_cc)(CPUARMState *env, uint32_t x, uint32_t i) |