This series does some further clean up mostly around BookE MMU to
untangle it from other MMU models. It also contains some other changes
that I've come up with while working on this. The Simplify
ppc_booke_xlate() part 1 and part 2 patches could be squashed together
but left them separate for easier review. This could still be continued
which I might do in the future but I had enough of it for now.
v6:
- Finish breaking up ppc_jumbo_xlate by MMU model as the TODO comment
said and remove it completely
- Add some more small clean ups
v5:
- drop sc patches from this series
- eliminate uninit warning work arounds and also get rid of
get_physical_address_wtlb() (one memset is still needed temporarily
but can be removed at the end)
- use function instead of macro
v4:
- Add a (probably redundant) check for MPC8xx case in ppc_xlate so we
don't have to care about it in lower levels
- Detangle BookE related functions from mmu_ctx_t to avoid some used
uninit work arounds and allow these to be moved out to mmu-booke.c
- Some other tweaks asked during review
v3:
- Address review comments from Nick
- Rebase on master
- Squashed some patches together
- Add some more patches I've done since last version
v2:
- Fix user mode issue in patch 1 by keeping old behaviour for user mode
- Add some more MMU clean up patches
Regards,
BALATON Zoltan
Dr. David Alan Gilbert (1):
target/ppc: Remove unused struct 'mmu_ctx_hash32'
BALATON Zoltan (47):
target/ppc: Remove unused helper
target/ppc/mmu_common.c: Move calculation of a value closer to its
usage
target/ppc/mmu_common.c: Remove unneeded local variable
target/ppc/mmu_common.c: Simplify checking for real mode
target/ppc/mmu_common.c: Drop cases for unimplemented MPC8xx MMU
target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_address()
target/ppc/mmu_common.c: Move else branch to avoid large if block
target/ppc/mmu_common.c: Move some debug logging
target/ppc/mmu_common.c: Eliminate ret from
mmu6xx_get_physical_address()
target/ppc/mmu_common.c: Split out BookE cases before checking real
mode
target/ppc/mmu_common.c: Split off real mode cases in
get_physical_address_wtlb()
target/ppc/mmu_common.c: Inline and remove check_physical()
target/ppc/mmu_common.c: Fix misindented qemu_log_mask() calls
target/ppc/mmu_common.c: Deindent ppc_jumbo_xlate()
target/ppc/mmu_common.c: Replace hard coded constants in
ppc_jumbo_xlate()
target/ppc/mmu_common.c: Don't use mmu_ctx_t for
mmu40x_get_physical_address()
target/ppc/mmu_common.c: Don't use mmu_ctx_t in
mmubooke_get_physical_address()
target/ppc/mmu_common.c: Don't use mmu_ctx_t in
mmubooke206_get_physical_address()
target/ppc: Remove pp_check() and reuse ppc_hash32_pp_prot()
target/ppc/mmu_common.c: Remove BookE from direct store handling
target/ppc/mmu_common.c: Split off BookE handling from
ppc_jumbo_xlate()
target/ppc/mmu_common.c: Simplify ppc_booke_xlate() part 1
target/ppc/mmu_common.c: Simplify ppc_booke_xlate() part 2
target/ppc/mmu_common.c: Split off real mode handling from
get_physical_address_wtlb()
target/ppc/mmu_common.c: Split off 40x cases from ppc_jumbo_xlate()
target/ppc/mmu_common.c: Transform ppc_jumbo_xlate() into
ppc_6xx_xlate()
target/ppc/mmu_common.c: Move mmu_ctx_t type to mmu_common.c
target/ppc/mmu_common.c: Remove pte_update_flags()
target/ppc: Remove id_tlbs flag from CPU env
target/ppc: Split off common embedded TLB init
target/ppc/mmu-hash32.c: Drop a local variable
target/ppc/mmu-radix64.c: Drop a local variable
target/ppc: Add a function to check for page protection bit
target/ppc: Move out BookE and related MMU functions from mmu_common.c
target/ppc/mmu_common.c: Remove local name for a constant
target/ppc/mmu_common.c: Remove single use local variable
target/ppc/mmu_common.c: Remove single use local variable
target/ppc/mmu_common.c: Remove another single use local
target/ppc/mmu_common.c: Remove yet another single use local
target/ppc/mmu_common.c: Return directly in ppc6xx_tlb_pte_check()
target/ppc/mmu_common.c: Simplify ppc6xx_tlb_pte_check()
target/ppc/mmu_common.c: Remove unused field from mmu_ctx_t
target/ppc/mmu_common.c: Remove hash field from mmu_ctx_t
target/ppc/mmu_common.c: Remove nx field from mmu_ctx_t
target/ppc/mmu_common.c: Convert local variable to bool
target/ppc/mmu_common.c: Remove single use local variable
target/ppc/mmu_common.c: Simplify a switch statement
hw/ppc/pegasos2.c | 2 +-
target/ppc/cpu.h | 9 +-
target/ppc/cpu_init.c | 70 +--
target/ppc/helper.h | 2 -
target/ppc/helper_regs.c | 1 -
target/ppc/internal.h | 75 ++-
target/ppc/meson.build | 1 +
target/ppc/mmu-booke.c | 531 ++++++++++++++++
target/ppc/mmu-booke.h | 17 +
target/ppc/mmu-hash32.c | 60 +-
target/ppc/mmu-hash64.c | 2 +-
target/ppc/mmu-radix64.c | 5 +-
target/ppc/mmu_common.c | 1289 ++++++++++----------------------------
target/ppc/mmu_helper.c | 37 +-
14 files changed, 954 insertions(+), 1147 deletions(-)
create mode 100644 target/ppc/mmu-booke.c
create mode 100644 target/ppc/mmu-booke.h