[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
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH] nios2: avoid anonymous unions in designated initializers.,
Peter Maydell <=