[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] target/mips: Remove JR opcode unused arguments
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH] target/mips: Remove JR opcode unused arguments |
Date: |
Fri, 6 Aug 2021 23:09:25 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
On 7/31/21 12:55 AM, Philippe Mathieu-Daudé wrote:
> JR opcode (Jump Register) only takes 1 argument, $rs.
> JALR (Jump And Link Register) takes 3: $rs, $rd and $hint.
>
> Commit 6af0bf9c7c3 added their processing into decode_opc() as:
>
> case 0x08 ... 0x09: /* Jumps */
> gen_compute_branch(ctx, op1 | EXT_SPECIAL, rs, rd, sa);
>
> having both opcodes handled in the same function: gen_compute_branch.
>
> Per JR encoding, both $rd and $hint ('sa') are decoded as zero.
>
> Later this code got extracted to decode_opc_special(),
> commit 7a387fffce5 used definitions instead of magic values:
>
> case OPC_JR ... OPC_JALR:
> gen_compute_branch(ctx, op1, rs, rd, sa);
>
> Finally commit 0aefa33318b moved OPC_JR out of decode_opc_special,
> to a new 'decode_opc_special_legacy' function:
>
> @@ -15851,6 +15851,9 @@ static void decode_opc_special_legacy(CPUMIPSState
> *env, DisasContext *ctx)
> + case OPC_JR:
> + gen_compute_branch(ctx, op1, 4, rs, rd, sa);
> + break;
>
> @@ -15933,7 +15936,7 @@ static void decode_opc_special(CPUMIPSState *env,
> DisasContext *ctx)
> - case OPC_JR ... OPC_JALR:
> + case OPC_JALR:
> gen_compute_branch(ctx, op1, 4, rs, rd, sa);
> break;
>
> Since JR is now handled individually, it is pointless to decode
> and pass it unused arguments. Replace them by simple zero value
> to avoid confusion with this opcode.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> target/mips/tcg/translate.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Thanks, applied to mips-next.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] target/mips: Remove JR opcode unused arguments,
Philippe Mathieu-Daudé <=