[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.5 25/30] m68k: add abcd, sbcd, nbcd instru
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH for-2.5 25/30] m68k: add abcd, sbcd, nbcd instructions |
Date: |
Wed, 12 Aug 2015 10:57:02 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 08/09/2015 01:13 PM, Laurent Vivier wrote:
> Signed-off-by: Laurent Vivier <address@hidden>
> ---
> target-m68k/helper.c | 91
> +++++++++++++++++++++++++++++++++++++++++++++++++
> target-m68k/helper.h | 3 ++
> target-m68k/translate.c | 82 ++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 176 insertions(+)
>
> diff --git a/target-m68k/helper.c b/target-m68k/helper.c
> index 8c10fbc..f4be52b 100644
> --- a/target-m68k/helper.c
> +++ b/target-m68k/helper.c
> @@ -938,3 +938,94 @@ void HELPER(set_mac_extu)(CPUM68KState *env, uint32_t
> val, uint32_t acc)
> res |= (uint64_t)(val & 0xffff0000) << 16;
> env->macc[acc + 1] = res;
> }
> +
> +uint32_t HELPER(abcd_cc)(CPUM68KState *env, uint32_t src, uint32_t dest)
> +{
> + uint16_t hi, lo;
> + uint16_t res;
> + uint32_t flags;
> + int extend = 0;
> +
> + flags = env->cc_dest;
> + flags &= ~CCF_C;
> +
> + lo = (src & 0x0f) + (dest & 0x0f);
> + if (env->cc_x) {
> + lo++;
> + }
A nit: Since CC_X == 0 or 1, you can just add it.
> +uint32_t HELPER(sbcd_cc)(CPUM68KState *env, uint32_t src, uint32_t dest)
> +{
> + uint16_t hi, lo;
> + uint16_t res;
> + uint32_t flags;
> + int bcd = 0, carry = 0, extend = 0;
> +
> + flags = env->cc_dest;
> + flags &= CCF_C;
> +
> + if (env->cc_x) {
> + carry = 1;
> + }
Likewise with subtracting it. carry == env->cc_x.
> +DISAS_INSN(nbcd)
> +{
> + TCGv dest;
> + TCGv addr;
> +
> + SRC_EA(env, dest, OS_BYTE, -1, &addr);
> +
> + gen_flush_flags(s);
> + gen_helper_sbcd_cc(dest, cpu_env, dest, tcg_const_i32(0));
Free the zero temp.
r~
- [Qemu-devel] [PATCH for-2.5 20/30] m68k: add exg, (continued)
[Qemu-devel] [PATCH for-2.5 21/30] m68k: add bkpt, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 19/30] m68k: add cmpm, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 25/30] m68k: add abcd, sbcd, nbcd instructions, Laurent Vivier, 2015/08/09
- Re: [Qemu-devel] [PATCH for-2.5 25/30] m68k: add abcd, sbcd, nbcd instructions,
Richard Henderson <=
[Qemu-devel] [PATCH for-2.5 24/30] m68k: add DBcc and Scc (memory operand), Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 22/30] m68k: add cas instruction, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 23/30] m68k: add linkl, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 27/30] m68k: add addx/subx/negx, Laurent Vivier, 2015/08/09