[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 01/54] target/ppc: introduce do_ea_calc
From: |
David Gibson |
Subject: |
[PULL 01/54] target/ppc: introduce do_ea_calc |
Date: |
Tue, 9 Nov 2021 16:51:11 +1100 |
From: Fernando Eckhardt Valle <phervalle@gmail.com>
The do_ea_calc function will calculate the effective address(EA)
according to PowerIsa 3.1. With that, it was replaced part of
do_ldst() that calculates the EA by this new function.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Fernando Eckhardt Valle (pherde) <phervalle@gmail.com>
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br>
Message-Id: <20211029202424.175401-2-matheus.ferst@eldorado.org.br>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
target/ppc/translate.c | 14 ++++++++++++++
target/ppc/translate/fixedpoint-impl.c.inc | 10 +---------
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index 518337bcb7..b3264aab58 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -3197,6 +3197,20 @@ static inline void gen_align_no_le(DisasContext *ctx)
(ctx->opcode & 0x03FF0000) | POWERPC_EXCP_ALIGN_LE);
}
+static TCGv do_ea_calc(DisasContext *ctx, int ra, TCGv displ)
+{
+ TCGv ea = tcg_temp_new();
+ if (ra) {
+ tcg_gen_add_tl(ea, cpu_gpr[ra], displ);
+ } else {
+ tcg_gen_mov_tl(ea, displ);
+ }
+ if (NARROW_MODE(ctx)) {
+ tcg_gen_ext32u_tl(ea, ea);
+ }
+ return ea;
+}
+
/*** Integer load ***/
#define DEF_MEMOP(op) ((op) | ctx->default_tcg_memop_mask)
#define BSWAP_MEMOP(op) ((op) | (ctx->default_tcg_memop_mask ^ MO_BSWAP))
diff --git a/target/ppc/translate/fixedpoint-impl.c.inc
b/target/ppc/translate/fixedpoint-impl.c.inc
index 2e2518ee15..caef5d89cd 100644
--- a/target/ppc/translate/fixedpoint-impl.c.inc
+++ b/target/ppc/translate/fixedpoint-impl.c.inc
@@ -51,15 +51,7 @@ static bool do_ldst(DisasContext *ctx, int rt, int ra, TCGv
displ, bool update,
}
gen_set_access_type(ctx, ACCESS_INT);
- ea = tcg_temp_new();
- if (ra) {
- tcg_gen_add_tl(ea, cpu_gpr[ra], displ);
- } else {
- tcg_gen_mov_tl(ea, displ);
- }
- if (NARROW_MODE(ctx)) {
- tcg_gen_ext32u_tl(ea, ea);
- }
+ ea = do_ea_calc(ctx, ra, displ);
mop ^= ctx->default_tcg_memop_mask;
if (store) {
tcg_gen_qemu_st_tl(cpu_gpr[rt], ea, ctx->mem_idx, mop);
--
2.33.1
- [PULL 00/54] ppc-for-6.2 queue 20211109, David Gibson, 2021/11/09
- [PULL 04/54] target/ppc: Implement PLFS, PLFD, PSTFS and PSTFD instructions, David Gibson, 2021/11/09
- [PULL 02/54] target/ppc: move resolve_PLS_D to translate.c, David Gibson, 2021/11/09
- [PULL 01/54] target/ppc: introduce do_ea_calc,
David Gibson <=
- [PULL 03/54] target/ppc: Move load and store floating point instructions to decodetree, David Gibson, 2021/11/09
- [PULL 15/54] host-utils: Introduce mulu128, David Gibson, 2021/11/09
- [PULL 08/54] target/ppc: Implement cnttzdm, David Gibson, 2021/11/09
- [PULL 09/54] target/ppc: Implement pdepd instruction, David Gibson, 2021/11/09
- [PULL 07/54] target/ppc: Implement cntlzdm, David Gibson, 2021/11/09
- [PULL 05/54] target/ppc: Move LQ and STQ to decodetree, David Gibson, 2021/11/09