All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, patches@linaro.org
Subject: Re: [Qemu-devel] [PATCH 3/5] target-arm/translate.c: Don't use IS_M()
Date: Fri, 31 Oct 2014 13:42:38 +0000	[thread overview]
Message-ID: <87y4rw2w4x.fsf@linaro.org> (raw)
In-Reply-To: <1414524244-20316-4-git-send-email-peter.maydell@linaro.org>


Peter Maydell <peter.maydell@linaro.org> writes:

> Instead of using IS_M(), use arm_dc_feature(s, ARM_FEATURE_M), so we
> don't need to pass CPUARMState pointers around the decoder.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

I almost wondered if it was killing of the IS_M macro and making direct
calls in cpu.h and helper.c.

Anyway:

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>


> ---
>  target-arm/translate.c | 19 +++++++++++--------
>  1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/target-arm/translate.c b/target-arm/translate.c
> index 08ce5b0..5119fb9 100644
> --- a/target-arm/translate.c
> +++ b/target-arm/translate.c
> @@ -7574,8 +7574,9 @@ static void disas_arm_insn(CPUARMState * env, DisasContext *s)
>      s->pc += 4;
>  
>      /* M variants do not implement ARM mode.  */
> -    if (IS_M(env))
> +    if (arm_dc_feature(s, ARM_FEATURE_M)) {
>          goto illegal_op;
> +    }
>      cond = insn >> 28;
>      if (cond == 0xf){
>          /* In ARMv3 and v4 the NV condition is UNPREDICTABLE; we
> @@ -9300,7 +9301,7 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw
>              /* Load/store multiple, RFE, SRS.  */
>              if (((insn >> 23) & 1) == ((insn >> 24) & 1)) {
>                  /* RFE, SRS: not available in user mode or on M profile */
> -                if (IS_USER(s) || IS_M(env)) {
> +                if (IS_USER(s) || arm_dc_feature(s, ARM_FEATURE_M)) {
>                      goto illegal_op;
>                  }
>                  if (insn & (1 << 20)) {
> @@ -9804,7 +9805,7 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw
>                      op = (insn >> 20) & 7;
>                      switch (op) {
>                      case 0: /* msr cpsr.  */
> -                        if (IS_M(env)) {
> +                        if (arm_dc_feature(s, ARM_FEATURE_M)) {
>                              tmp = load_reg(s, rn);
>                              addr = tcg_const_i32(insn & 0xff);
>                              gen_helper_v7m_msr(cpu_env, addr, tmp);
> @@ -9815,8 +9816,9 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw
>                          }
>                          /* fall through */
>                      case 1: /* msr spsr.  */
> -                        if (IS_M(env))
> +                        if (arm_dc_feature(s, ARM_FEATURE_M)) {
>                              goto illegal_op;
> +                        }
>                          tmp = load_reg(s, rn);
>                          if (gen_set_psr(s,
>                                msr_mask(env, s, (insn >> 8) & 0xf, op == 1),
> @@ -9884,7 +9886,7 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw
>                          break;
>                      case 6: /* mrs cpsr.  */
>                          tmp = tcg_temp_new_i32();
> -                        if (IS_M(env)) {
> +                        if (arm_dc_feature(s, ARM_FEATURE_M)) {
>                              addr = tcg_const_i32(insn & 0xff);
>                              gen_helper_v7m_mrs(tmp, cpu_env, addr);
>                              tcg_temp_free_i32(addr);
> @@ -9895,8 +9897,9 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw
>                          break;
>                      case 7: /* mrs spsr.  */
>                          /* Not accessible in user mode.  */
> -                        if (IS_USER(s) || IS_M(env))
> +                        if (IS_USER(s) || arm_dc_feature(s, ARM_FEATURE_M)) {
>                              goto illegal_op;
> +                        }
>                          tmp = load_cpu_field(spsr);
>                          store_reg(s, rd, tmp);
>                          break;
> @@ -10851,7 +10854,7 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s)
>                  if (IS_USER(s)) {
>                      break;
>                  }
> -                if (IS_M(env)) {
> +                if (arm_dc_feature(s, ARM_FEATURE_M)) {
>                      tmp = tcg_const_i32((insn & (1 << 4)) != 0);
>                      /* FAULTMASK */
>                      if (insn & 1) {
> @@ -11123,7 +11126,7 @@ static inline void gen_intermediate_code_internal(ARMCPU *cpu,
>              break;
>          }
>  #else
> -        if (dc->pc >= 0xfffffff0 && IS_M(env)) {
> +        if (dc->pc >= 0xfffffff0 && arm_dc_feature(dc, ARM_FEATURE_M)) {
>              /* We always get here via a jump, so know we are not in a
>                 conditional execution block.  */
>              gen_exception_internal(EXCP_EXCEPTION_EXIT);

-- 
Alex Bennée

  reply	other threads:[~2014-10-31 15:01 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-28 19:23 [Qemu-devel] [PATCH 0/5] target-arm: Avoid passing CPUARMState around the decoder Peter Maydell
2014-10-28 19:24 ` [Qemu-devel] [PATCH 1/5] target-arm/translate.c: Use arm_dc_feature() in ENABLE_ARCH_ macros Peter Maydell
2014-10-31 13:09   ` Alex Bennée
2014-11-04  9:04   ` Claudio Fontana
2014-11-04 12:04     ` Peter Maydell
2014-10-28 19:24 ` [Qemu-devel] [PATCH 2/5] target-arm/translate.c: Use arm_dc_feature() rather than arm_feature() Peter Maydell
2014-10-31 13:40   ` Alex Bennée
2014-11-04  9:02   ` Claudio Fontana
2014-10-28 19:24 ` [Qemu-devel] [PATCH 3/5] target-arm/translate.c: Don't use IS_M() Peter Maydell
2014-10-31 13:42   ` Alex Bennée [this message]
2014-11-04  0:38     ` Peter Maydell
2014-11-04  8:59   ` Claudio Fontana
2014-10-28 19:24 ` [Qemu-devel] [PATCH 4/5] target-arm/translate.c: Don't pass CPUARMState around in the decoder Peter Maydell
2014-10-31 13:43   ` Alex Bennée
2014-11-04  8:57   ` Claudio Fontana
2014-10-28 19:24 ` [Qemu-devel] [PATCH 5/5] target-arm/translate.c: Don't pass CPUARMState * to disas_arm_insn() Peter Maydell
2014-10-31 13:47   ` Alex Bennée
2014-11-04  0:40     ` Peter Maydell
2014-11-04  8:55   ` Claudio Fontana

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87y4rw2w4x.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=patches@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.