qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] nios2: avoid anonymous unions in designated ini


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] nios2: avoid anonymous unions in designated initializers.
Date: Sat, 4 Mar 2017 15:13:08 +0000

On 3 March 2017 at 16:28, Paolo Bonzini <address@hidden> wrote:
> These cause compilation failures on CentOS 6 or other operating
> systems with older GCCs.
>
> Cc: Richard Henderson <address@hidden>
> Cc: Peter Maydell <address@hidden>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
>         Peter, please consider applying this as a build fix, because
>         the centos6 docker target is broken.

Applied to master, thanks.

(The mailing list server seems to have eaten this mail -- I got
the copy directly by being on cc but patchwork never saw it.)

thanks
-- PMM


>  target/nios2/translate.c | 36 ++++++++++++++++++------------------
>  1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/target/nios2/translate.c b/target/nios2/translate.c
> index 2d73839..cfec479 100644
> --- a/target/nios2/translate.c
> +++ b/target/nios2/translate.c
> @@ -48,14 +48,14 @@
>      struct {                               \
>          uint8_t op;                        \
>          union {                            \
> -            uint16_t imm16;                \
> -            int16_t imm16s;                \
> -        };                                 \
> +            uint16_t u;                    \
> +            int16_t s;                     \
> +        } imm16;                           \
>          uint8_t b;                         \
>          uint8_t a;                         \
>      } (instr) = {                          \
>          .op    = extract32((code), 0, 6),  \
> -        .imm16 = extract32((code), 6, 16), \
> +        .imm16.u = extract32((code), 6, 16), \
>          .b     = extract32((code), 22, 5), \
>          .a     = extract32((code), 27, 5), \
>      }
> @@ -232,7 +232,7 @@ static void gen_ldx(DisasContext *dc, uint32_t code, 
> uint32_t flags)
>          data = tcg_temp_new();
>      }
>
> -    tcg_gen_addi_tl(addr, load_gpr(dc, instr.a), instr.imm16s);
> +    tcg_gen_addi_tl(addr, load_gpr(dc, instr.a), instr.imm16.s);
>      tcg_gen_qemu_ld_tl(data, addr, dc->mem_idx, flags);
>
>      if (unlikely(instr.b == R_ZERO)) {
> @@ -249,7 +249,7 @@ static void gen_stx(DisasContext *dc, uint32_t code, 
> uint32_t flags)
>      TCGv val = load_gpr(dc, instr.b);
>
>      TCGv addr = tcg_temp_new();
> -    tcg_gen_addi_tl(addr, load_gpr(dc, instr.a), instr.imm16s);
> +    tcg_gen_addi_tl(addr, load_gpr(dc, instr.a), instr.imm16.s);
>      tcg_gen_qemu_st_tl(val, addr, dc->mem_idx, flags);
>      tcg_temp_free(addr);
>  }
> @@ -259,7 +259,7 @@ static void br(DisasContext *dc, uint32_t code, uint32_t 
> flags)
>  {
>      I_TYPE(instr, code);
>
> -    gen_goto_tb(dc, 0, dc->pc + 4 + (instr.imm16s & -4));
> +    gen_goto_tb(dc, 0, dc->pc + 4 + (instr.imm16.s & -4));
>      dc->is_jmp = DISAS_TB_JUMP;
>  }
>
> @@ -271,7 +271,7 @@ static void gen_bxx(DisasContext *dc, uint32_t code, 
> uint32_t flags)
>      tcg_gen_brcond_tl(flags, dc->cpu_R[instr.a], dc->cpu_R[instr.b], l1);
>      gen_goto_tb(dc, 0, dc->pc + 4);
>      gen_set_label(l1);
> -    gen_goto_tb(dc, 1, dc->pc + 4 + (instr.imm16s & -4));
> +    gen_goto_tb(dc, 1, dc->pc + 4 + (instr.imm16.s & -4));
>      dc->is_jmp = DISAS_TB_JUMP;
>  }
>
> @@ -284,8 +284,8 @@ static void (fname)(DisasContext *dc, uint32_t code, 
> uint32_t flags)         \
>                          (op3));                                              
> \
>  }
>
> -gen_i_cmpxx(gen_cmpxxsi, instr.imm16s)
> -gen_i_cmpxx(gen_cmpxxui, instr.imm16)
> +gen_i_cmpxx(gen_cmpxxsi, instr.imm16.s)
> +gen_i_cmpxx(gen_cmpxxui, instr.imm16.u)
>
>  /* Math/logic instructions */
>  #define gen_i_math_logic(fname, insn, resimm, op3)                          \
> @@ -302,16 +302,16 @@ static void (fname)(DisasContext *dc, uint32_t code, 
> uint32_t flags)        \
>      }                                                                       \
>  }
>
> -gen_i_math_logic(addi,  addi, 1, instr.imm16s)
> -gen_i_math_logic(muli,  muli, 0, instr.imm16s)
> +gen_i_math_logic(addi,  addi, 1, instr.imm16.s)
> +gen_i_math_logic(muli,  muli, 0, instr.imm16.s)
>
> -gen_i_math_logic(andi,  andi, 0, instr.imm16)
> -gen_i_math_logic(ori,   ori,  1, instr.imm16)
> -gen_i_math_logic(xori,  xori, 1, instr.imm16)
> +gen_i_math_logic(andi,  andi, 0, instr.imm16.u)
> +gen_i_math_logic(ori,   ori,  1, instr.imm16.u)
> +gen_i_math_logic(xori,  xori, 1, instr.imm16.u)
>
> -gen_i_math_logic(andhi, andi, 0, instr.imm16 << 16)
> -gen_i_math_logic(orhi , ori,  1, instr.imm16 << 16)
> -gen_i_math_logic(xorhi, xori, 1, instr.imm16 << 16)
> +gen_i_math_logic(andhi, andi, 0, instr.imm16.u << 16)
> +gen_i_math_logic(orhi , ori,  1, instr.imm16.u << 16)
> +gen_i_math_logic(xorhi, xori, 1, instr.imm16.u << 16)
>
>  /* Prototype only, defined below */
>  static void handle_r_type_instr(DisasContext *dc, uint32_t code,
> --
> 1.8.3.1
>



reply via email to

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