qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 36/68] target/arm: Convert SETEND


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH v2 36/68] target/arm: Convert SETEND
Date: Wed, 21 Aug 2019 15:22:33 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0

On 8/19/19 11:37 PM, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <address@hidden>
> ---
>  target/arm/translate.c       | 22 +++++++++++++---------
>  target/arm/a32-uncond.decode |  4 ++++
>  2 files changed, 17 insertions(+), 9 deletions(-)
> 
> diff --git a/target/arm/translate.c b/target/arm/translate.c
> index 928205d993..46e88d1d17 100644
> --- a/target/arm/translate.c
> +++ b/target/arm/translate.c
> @@ -10124,6 +10124,18 @@ static bool trans_SB(DisasContext *s, arg_SB *a)
>      return true;
>  }
>  
> +static bool trans_SETEND(DisasContext *s, arg_SETEND *a)
> +{
> +    if (!ENABLE_ARCH_6) {
> +        return false;
> +    }
> +    if (a->E != (s->be_data == MO_BE)) {

:)

Reviewed-by: Philippe Mathieu-Daudé <address@hidden>

> +        gen_helper_setend(cpu_env);
> +        s->base.is_jmp = DISAS_UPDATE;
> +    }
> +    return true;
> +}
> +
>  /*
>   * Legacy decoder.
>   */
> @@ -10209,15 +10221,7 @@ static void disas_arm_insn(DisasContext *s, unsigned 
> int insn)
>              return; /* v7MP: Unallocated memory hint: must NOP */
>          }
>  
> -        if ((insn & 0x0ffffdff) == 0x01010000) {
> -            ARCH(6);
> -            /* setend */
> -            if (((insn >> 9) & 1) != !!(s->be_data == MO_BE)) {
> -                gen_helper_setend(cpu_env);
> -                s->base.is_jmp = DISAS_UPDATE;
> -            }
> -            return;
> -        } else if ((insn & 0x0e000f00) == 0x0c000100) {
> +        if ((insn & 0x0e000f00) == 0x0c000100) {
>              if (arm_dc_feature(s, ARM_FEATURE_IWMMXT)) {
>                  /* iWMMXt register transfer.  */
>                  if (extract32(s->c15_cpar, 1, 1)) {
> diff --git a/target/arm/a32-uncond.decode b/target/arm/a32-uncond.decode
> index eb1c55b330..d5ed48f0fd 100644
> --- a/target/arm/a32-uncond.decode
> +++ b/target/arm/a32-uncond.decode
> @@ -24,6 +24,7 @@
>  
>  &empty           !extern
>  &i               !extern imm
> +&setend          E
>  
>  # Branch with Link and Exchange
>  
> @@ -50,3 +51,6 @@ DSB              1111 0101 0111 1111 1111 0000 0100 ----
>  DMB              1111 0101 0111 1111 1111 0000 0101 ----
>  ISB              1111 0101 0111 1111 1111 0000 0110 ----
>  SB               1111 0101 0111 1111 1111 0000 0111 0000
> +
> +# Set Endianness
> +SETEND           1111 0001 0000 0001 0000 00 E:1 0 0000 0000  &setend
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]