target/mips: fetch code with translator_ld

Similarly to commits ae82adc8e29..7f93879e444, use the
translator_ld*() API introduced in commit 409c1a0bf0
to fetch the code on the MIPS target.

Reviewed-by: Jiaxun Yang  <jiaxun.yang@flygoat.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20210125105818.2707067-1-f4bug@amsat.org>
This commit is contained in:
Philippe Mathieu-Daudé 2021-01-16 18:52:00 +01:00
parent c0928e6ddc
commit 0ab8e33a48
1 changed files with 10 additions and 10 deletions

View File

@ -26,7 +26,7 @@
#include "cpu.h" #include "cpu.h"
#include "internal.h" #include "internal.h"
#include "tcg/tcg-op.h" #include "tcg/tcg-op.h"
#include "exec/cpu_ldst.h" #include "exec/translator.h"
#include "exec/helper-proto.h" #include "exec/helper-proto.h"
#include "exec/helper-gen.h" #include "exec/helper-gen.h"
#include "hw/semihosting/semihost.h" #include "hw/semihosting/semihost.h"
@ -13911,7 +13911,7 @@ static void decode_i64_mips16(DisasContext *ctx,
static int decode_extended_mips16_opc(CPUMIPSState *env, DisasContext *ctx) static int decode_extended_mips16_opc(CPUMIPSState *env, DisasContext *ctx)
{ {
int extend = cpu_lduw_code(env, ctx->base.pc_next + 2); int extend = translator_lduw(env, ctx->base.pc_next + 2);
int op, rx, ry, funct, sa; int op, rx, ry, funct, sa;
int16_t imm, offset; int16_t imm, offset;
@ -14161,7 +14161,7 @@ static int decode_mips16_opc(CPUMIPSState *env, DisasContext *ctx)
/* No delay slot, so just process as a normal instruction */ /* No delay slot, so just process as a normal instruction */
break; break;
case M16_OPC_JAL: case M16_OPC_JAL:
offset = cpu_lduw_code(env, ctx->base.pc_next + 2); offset = translator_lduw(env, ctx->base.pc_next + 2);
offset = (((ctx->opcode & 0x1f) << 21) offset = (((ctx->opcode & 0x1f) << 21)
| ((ctx->opcode >> 5) & 0x1f) << 16 | ((ctx->opcode >> 5) & 0x1f) << 16
| offset) << 2; | offset) << 2;
@ -16295,7 +16295,7 @@ static void decode_micromips32_opc(CPUMIPSState *env, DisasContext *ctx)
uint32_t op, minor, minor2, mips32_op; uint32_t op, minor, minor2, mips32_op;
uint32_t cond, fmt, cc; uint32_t cond, fmt, cc;
insn = cpu_lduw_code(env, ctx->base.pc_next + 2); insn = translator_lduw(env, ctx->base.pc_next + 2);
ctx->opcode = (ctx->opcode << 16) | insn; ctx->opcode = (ctx->opcode << 16) | insn;
rt = (ctx->opcode >> 21) & 0x1f; rt = (ctx->opcode >> 21) & 0x1f;
@ -21350,7 +21350,7 @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
int offset; int offset;
int imm; int imm;
insn = cpu_lduw_code(env, ctx->base.pc_next + 2); insn = translator_lduw(env, ctx->base.pc_next + 2);
ctx->opcode = (ctx->opcode << 16) | insn; ctx->opcode = (ctx->opcode << 16) | insn;
rt = extract32(ctx->opcode, 21, 5); rt = extract32(ctx->opcode, 21, 5);
@ -21469,7 +21469,7 @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
break; break;
case NM_P48I: case NM_P48I:
{ {
insn = cpu_lduw_code(env, ctx->base.pc_next + 4); insn = translator_lduw(env, ctx->base.pc_next + 4);
target_long addr_off = extract32(ctx->opcode, 0, 16) | insn << 16; target_long addr_off = extract32(ctx->opcode, 0, 16) | insn << 16;
switch (extract32(ctx->opcode, 16, 5)) { switch (extract32(ctx->opcode, 16, 5)) {
case NM_LI48: case NM_LI48:
@ -29087,17 +29087,17 @@ static void mips_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
is_slot = ctx->hflags & MIPS_HFLAG_BMASK; is_slot = ctx->hflags & MIPS_HFLAG_BMASK;
if (ctx->insn_flags & ISA_NANOMIPS32) { if (ctx->insn_flags & ISA_NANOMIPS32) {
ctx->opcode = cpu_lduw_code(env, ctx->base.pc_next); ctx->opcode = translator_lduw(env, ctx->base.pc_next);
insn_bytes = decode_nanomips_opc(env, ctx); insn_bytes = decode_nanomips_opc(env, ctx);
} else if (!(ctx->hflags & MIPS_HFLAG_M16)) { } else if (!(ctx->hflags & MIPS_HFLAG_M16)) {
ctx->opcode = cpu_ldl_code(env, ctx->base.pc_next); ctx->opcode = translator_ldl(env, ctx->base.pc_next);
insn_bytes = 4; insn_bytes = 4;
decode_opc(env, ctx); decode_opc(env, ctx);
} else if (ctx->insn_flags & ASE_MICROMIPS) { } else if (ctx->insn_flags & ASE_MICROMIPS) {
ctx->opcode = cpu_lduw_code(env, ctx->base.pc_next); ctx->opcode = translator_lduw(env, ctx->base.pc_next);
insn_bytes = decode_micromips_opc(env, ctx); insn_bytes = decode_micromips_opc(env, ctx);
} else if (ctx->insn_flags & ASE_MIPS16) { } else if (ctx->insn_flags & ASE_MIPS16) {
ctx->opcode = cpu_lduw_code(env, ctx->base.pc_next); ctx->opcode = translator_lduw(env, ctx->base.pc_next);
insn_bytes = decode_mips16_opc(env, ctx); insn_bytes = decode_mips16_opc(env, ctx);
} else { } else {
gen_reserved_instruction(ctx); gen_reserved_instruction(ctx);