[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 07/48] target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_
From: |
BALATON Zoltan |
Subject: |
[PATCH v6 07/48] target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_address() |
Date: |
Sat, 11 May 2024 03:45:46 +0200 (CEST) |
Repurpose get_segment_6xx_tlb() to do the whole address translation
for POWERPC_MMU_SOFT_6xx MMU model by moving the BAT check there and
renaming it to match other similar functions. These are only called
once together so no need to keep these separate functions and
combining them simplifies the caller allowing further restructuring.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
---
target/ppc/mmu_common.c | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c
index 3391df61cb..b7c07cf515 100644
--- a/target/ppc/mmu_common.c
+++ b/target/ppc/mmu_common.c
@@ -360,19 +360,23 @@ static int get_bat_6xx_tlb(CPUPPCState *env, mmu_ctx_t
*ctx,
return ret;
}
-/* Perform segment based translation */
-static int get_segment_6xx_tlb(CPUPPCState *env, mmu_ctx_t *ctx,
- target_ulong eaddr, MMUAccessType access_type,
- int type)
+static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
+ target_ulong eaddr,
+ MMUAccessType access_type, int type)
{
PowerPCCPU *cpu = env_archcpu(env);
hwaddr hash;
- target_ulong vsid;
+ target_ulong vsid, sr, pgidx;
int ds, target_page_bits;
bool pr;
int ret;
- target_ulong sr, pgidx;
+ /* First try to find a BAT entry if there are any */
+ if (env->nb_BATs && get_bat_6xx_tlb(env, ctx, eaddr, access_type) == 0) {
+ return 0;
+ }
+
+ /* Perform segment based translation when no BATs matched */
pr = FIELD_EX64(env->msr, MSR, PR);
ctx->eaddr = eaddr;
@@ -1194,14 +1198,8 @@ int get_physical_address_wtlb(CPUPPCState *env,
mmu_ctx_t *ctx,
if (real_mode) {
ret = check_physical(env, ctx, eaddr, access_type);
} else {
- /* Try to find a BAT */
- if (env->nb_BATs != 0) {
- ret = get_bat_6xx_tlb(env, ctx, eaddr, access_type);
- }
- if (ret < 0) {
- /* We didn't match any BAT entry or don't have BATs */
- ret = get_segment_6xx_tlb(env, ctx, eaddr, access_type, type);
- }
+ ret = mmu6xx_get_physical_address(env, ctx, eaddr, access_type,
+ type);
}
break;
--
2.30.9
- [PATCH v6 29/48] target/ppc/mmu_common.c: Remove pte_update_flags(), (continued)
- [PATCH v6 29/48] target/ppc/mmu_common.c: Remove pte_update_flags(), BALATON Zoltan, 2024/05/10
- [PATCH v6 14/48] target/ppc/mmu_common.c: Fix misindented qemu_log_mask() calls, BALATON Zoltan, 2024/05/10
- [PATCH v6 13/48] target/ppc/mmu_common.c: Inline and remove check_physical(), BALATON Zoltan, 2024/05/10
- [PATCH v6 32/48] target/ppc/mmu-hash32.c: Drop a local variable, BALATON Zoltan, 2024/05/10
- [PATCH v6 18/48] target/ppc/mmu_common.c: Don't use mmu_ctx_t in mmubooke_get_physical_address(), BALATON Zoltan, 2024/05/10
- [PATCH v6 22/48] target/ppc/mmu_common.c: Split off BookE handling from ppc_jumbo_xlate(), BALATON Zoltan, 2024/05/10
- [PATCH v6 15/48] target/ppc/mmu_common.c: Deindent ppc_jumbo_xlate(), BALATON Zoltan, 2024/05/10
- [PATCH v6 27/48] target/ppc/mmu_common.c: Transform ppc_jumbo_xlate() into ppc_6xx_xlate(), BALATON Zoltan, 2024/05/10
- [PATCH v6 21/48] target/ppc/mmu_common.c: Remove BookE from direct store handling, BALATON Zoltan, 2024/05/10
- [PATCH v6 16/48] target/ppc/mmu_common.c: Replace hard coded constants in ppc_jumbo_xlate(), BALATON Zoltan, 2024/05/10
- [PATCH v6 07/48] target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_address(),
BALATON Zoltan <=
- [PATCH v6 26/48] target/ppc/mmu_common.c: Split off 40x cases from ppc_jumbo_xlate(), BALATON Zoltan, 2024/05/10
- [PATCH v6 17/48] target/ppc/mmu_common.c: Don't use mmu_ctx_t for mmu40x_get_physical_address(), BALATON Zoltan, 2024/05/10
- [PATCH v6 09/48] target/ppc/mmu_common.c: Move some debug logging, BALATON Zoltan, 2024/05/10
- [PATCH v6 08/48] target/ppc/mmu_common.c: Move else branch to avoid large if block, BALATON Zoltan, 2024/05/10
- [PATCH v6 30/48] target/ppc: Remove id_tlbs flag from CPU env, BALATON Zoltan, 2024/05/10
- [PATCH v6 43/48] target/ppc/mmu_common.c: Remove unused field from mmu_ctx_t, BALATON Zoltan, 2024/05/10
- [PATCH v6 41/48] target/ppc/mmu_common.c: Return directly in ppc6xx_tlb_pte_check(), BALATON Zoltan, 2024/05/10
- [PATCH v6 24/48] target/ppc/mmu_common.c: Simplify ppc_booke_xlate() part 2, BALATON Zoltan, 2024/05/10
- [PATCH v6 34/48] target/ppc: Add a function to check for page protection bit, BALATON Zoltan, 2024/05/10
- [PATCH v6 25/48] target/ppc/mmu_common.c: Split off real mode handling from get_physical_address_wtlb(), BALATON Zoltan, 2024/05/10