diff mbox series

[v5,21/21] accel/tcg: Constify @cpu in cpu_mmu_index() and TCGCPUOps handlers

Message ID 20260901095229.72018-22-philmd@oss.qualcomm.com
State New
Headers show
Series None | expand

Commit Message

Philippe Mathieu-Daudé Sept. 1, 2026, 9:52 a.m. UTC
All functions called by cpu_mmu_index() take a const
@cpu argument. Propagate the constness to the caller
(CPU state should not mutate when resolving the MMU
index of the current translation regime).

Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
---
 include/accel/tcg/cpu-mmu-index.h | 2 +-
 include/accel/tcg/cpu-ops.h       | 2 +-
 target/alpha/cpu.h                | 2 +-
 target/arm/internals.h            | 4 ++--
 target/i386/tcg/tcg-cpu.h         | 2 +-
 target/ppc/cpu.h                  | 2 +-
 target/s390x/cpu.h                | 2 +-
 target/alpha/cpu.c                | 2 +-
 target/arm/cpu.c                  | 2 +-
 target/avr/cpu.c                  | 2 +-
 target/hexagon/cpu.c              | 6 +++---
 target/hppa/cpu.c                 | 4 ++--
 target/i386/tcg/tcg-cpu.c         | 6 +++---
 target/loongarch/tcg/tcg_cpu.c    | 4 ++--
 target/m68k/cpu.c                 | 2 +-
 target/microblaze/cpu.c           | 6 +++---
 target/mips/cpu.c                 | 2 +-
 target/or1k/cpu.c                 | 4 ++--
 target/ppc/cpu_init.c             | 2 +-
 target/riscv/tcg/tcg-cpu.c        | 2 +-
 target/rx/cpu.c                   | 2 +-
 target/s390x/cpu.c                | 2 +-
 target/sh4/cpu.c                  | 4 ++--
 target/sparc/cpu.c                | 4 ++--
 target/tricore/cpu.c              | 2 +-
 target/xtensa/cpu.c               | 2 +-
 26 files changed, 38 insertions(+), 38 deletions(-)

Comments

Marc-André Lureau Sept. 1, 2026, 11:09 a.m. UTC | #1
On 2026-09-01 11:52 +0200, Philippe Mathieu-Daudé wrote:
> All functions called by cpu_mmu_index() take a const
> @cpu argument. Propagate the constness to the caller
> (CPU state should not mutate when resolving the MMU
> index of the current translation regime).
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

> ---
>  include/accel/tcg/cpu-mmu-index.h | 2 +-
>  include/accel/tcg/cpu-ops.h       | 2 +-
>  target/alpha/cpu.h                | 2 +-
>  target/arm/internals.h            | 4 ++--
>  target/i386/tcg/tcg-cpu.h         | 2 +-
>  target/ppc/cpu.h                  | 2 +-
>  target/s390x/cpu.h                | 2 +-
>  target/alpha/cpu.c                | 2 +-
>  target/arm/cpu.c                  | 2 +-
>  target/avr/cpu.c                  | 2 +-
>  target/hexagon/cpu.c              | 6 +++---
>  target/hppa/cpu.c                 | 4 ++--
>  target/i386/tcg/tcg-cpu.c         | 6 +++---
>  target/loongarch/tcg/tcg_cpu.c    | 4 ++--
>  target/m68k/cpu.c                 | 2 +-
>  target/microblaze/cpu.c           | 6 +++---
>  target/mips/cpu.c                 | 2 +-
>  target/or1k/cpu.c                 | 4 ++--
>  target/ppc/cpu_init.c             | 2 +-
>  target/riscv/tcg/tcg-cpu.c        | 2 +-
>  target/rx/cpu.c                   | 2 +-
>  target/s390x/cpu.c                | 2 +-
>  target/sh4/cpu.c                  | 4 ++--
>  target/sparc/cpu.c                | 4 ++--
>  target/tricore/cpu.c              | 2 +-
>  target/xtensa/cpu.c               | 2 +-
>  26 files changed, 38 insertions(+), 38 deletions(-)
> 
> diff --git a/include/accel/tcg/cpu-mmu-index.h b/include/accel/tcg/cpu-mmu-index.h
> index e0fb6ef91c8..01152075372 100644
> --- a/include/accel/tcg/cpu-mmu-index.h
> +++ b/include/accel/tcg/cpu-mmu-index.h
> @@ -30,7 +30,7 @@
>   * Return the core mmu index for the current translation regime.
>   * This function is used by generic TCG code paths.
>   */
> -static inline int cpu_mmu_index(CPUState *cs, bool ifetch)
> +static inline int cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>  #ifdef COMPILING_PER_TARGET
>  # ifdef CONFIG_USER_ONLY
> diff --git a/include/accel/tcg/cpu-ops.h b/include/accel/tcg/cpu-ops.h
> index a88cc4dc572..69d7ec29115 100644
> --- a/include/accel/tcg/cpu-ops.h
> +++ b/include/accel/tcg/cpu-ops.h
> @@ -102,7 +102,7 @@ struct TCGCPUOps {
>      void (*debug_excp_handler)(CPUState *cpu);
>  
>      /** @mmu_index: Callback for choosing softmmu mmu index */
> -    int (*mmu_index)(CPUState *cpu, bool ifetch);
> +    int (*mmu_index)(const CPUState *cpu, bool ifetch);
>  
>  #ifdef CONFIG_USER_ONLY
>      /**
> diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h
> index 378bd96d941..1c9f9fce20b 100644
> --- a/target/alpha/cpu.h
> +++ b/target/alpha/cpu.h
> @@ -383,7 +383,7 @@ enum {
>  
>  #define TB_FLAG_UNALIGN       (1u << 1)
>  
> -static inline int alpha_env_mmu_index(CPUAlphaState *env)
> +static inline int alpha_env_mmu_index(const CPUAlphaState *env)
>  {
>      int ret = env->flags & ENV_FLAG_PS_USER ? MMU_USER_IDX : MMU_KERNEL_IDX;
>      if (env->flags & ENV_FLAG_PAL_MODE) {
> diff --git a/target/arm/internals.h b/target/arm/internals.h
> index f1a80c890ee..d582cefcfa4 100644
> --- a/target/arm/internals.h
> +++ b/target/arm/internals.h
> @@ -55,7 +55,7 @@ static inline MemOp mo_endian(const CPUARMState *env)
>      return EX_TBFLAG_ANY(env->hflags, BE_DATA) ? MO_BE : MO_LE;
>  }
>  
> -static inline int arm_env_mmu_index(CPUARMState *env)
> +static inline int arm_env_mmu_index(const CPUARMState *env)
>  {
>      return EX_TBFLAG_ANY(env->hflags, MMUIDX);
>  }
> @@ -431,7 +431,7 @@ void arm_restore_state_to_opc(CPUState *cs,
>  #ifdef CONFIG_TCG
>  TCGTBCPUState arm_get_tb_cpu_state(CPUState *cs);
>  void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb);
> -int arm_cpu_mmu_index(CPUState *cs, bool ifetch);
> +int arm_cpu_mmu_index(const CPUState *cs, bool ifetch);
>  #endif /* CONFIG_TCG */
>  
>  typedef enum ARMFPRounding {
> diff --git a/target/i386/tcg/tcg-cpu.h b/target/i386/tcg/tcg-cpu.h
> index 85bcd61678f..1127861e337 100644
> --- a/target/i386/tcg/tcg-cpu.h
> +++ b/target/i386/tcg/tcg-cpu.h
> @@ -82,6 +82,6 @@ extern const TCGCPUOps x86_tcg_ops;
>  
>  bool tcg_cpu_realizefn(CPUState *cs, Error **errp);
>  
> -int x86_mmu_index_pl(CPUX86State *env, unsigned pl);
> +int x86_mmu_index_pl(const CPUX86State *env, unsigned pl);
>  
>  #endif /* TCG_CPU_H */
> diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
> index 3fb51bbeb82..56264752c1b 100644
> --- a/target/ppc/cpu.h
> +++ b/target/ppc/cpu.h
> @@ -1736,7 +1736,7 @@ int ppc_dcr_write(ppc_dcr_t *dcr_env, int dcrn, uint32_t val);
>  
>  /* MMU modes definitions */
>  #define MMU_USER_IDX 0
> -static inline int ppc_env_mmu_index(CPUPPCState *env, bool ifetch)
> +static inline int ppc_env_mmu_index(const CPUPPCState *env, bool ifetch)
>  {
>  #ifdef CONFIG_USER_ONLY
>      return MMU_USER_IDX;
> diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
> index 998bbb0d7ff..cd5f9256b24 100644
> --- a/target/s390x/cpu.h
> +++ b/target/s390x/cpu.h
> @@ -373,7 +373,7 @@ QEMU_BUILD_BUG_ON(FLAG_MASK_DAT != PSW_MASK_DAT >> FLAG_MASK_PSW_SHIFT);
>  #define MMU_HOME_IDX            2
>  #define MMU_REAL_IDX            3
>  
> -static inline int s390x_env_mmu_index(CPUS390XState *env, bool ifetch)
> +static inline int s390x_env_mmu_index(const CPUS390XState *env, bool ifetch)
>  {
>  #ifdef CONFIG_USER_ONLY
>      return MMU_USER_IDX;
> diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
> index 21d4f8ac23b..3bf88702dc1 100644
> --- a/target/alpha/cpu.c
> +++ b/target/alpha/cpu.c
> @@ -93,7 +93,7 @@ static bool alpha_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int alpha_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int alpha_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return alpha_env_mmu_index(cpu_env(cs));
>  }
> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
> index ba66359d410..63ef00735ca 100644
> --- a/target/arm/cpu.c
> +++ b/target/arm/cpu.c
> @@ -126,7 +126,7 @@ void arm_restore_state_to_opc(CPUState *cs,
>      }
>  }
>  
> -int arm_cpu_mmu_index(CPUState *cs, bool ifetch)
> +int arm_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return arm_env_mmu_index(cpu_env(cs));
>  }
> diff --git a/target/avr/cpu.c b/target/avr/cpu.c
> index a96bef46ff1..24a5a9debc9 100644
> --- a/target/avr/cpu.c
> +++ b/target/avr/cpu.c
> @@ -50,7 +50,7 @@ static bool avr_cpu_has_work(const CPUState *cs)
>              && cpu_interrupts_enabled(cpu_env(cs));
>  }
>  
> -static int avr_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int avr_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return ifetch ? MMU_CODE_IDX : MMU_DATA_IDX;
>  }
> diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
> index 868aef0cde4..2bc58fc6305 100644
> --- a/target/hexagon/cpu.c
> +++ b/target/hexagon/cpu.c
> @@ -482,11 +482,11 @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp)
>      mcc->parent_realize(dev, errp);
>  }
>  
> -static int hexagon_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int hexagon_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>  #ifndef CONFIG_USER_ONLY
> -    CPUHexagonState *env = cpu_env(cs);
> -    HexagonCPU *cpu = HEXAGON_CPU(cs);
> +    const CPUHexagonState *env = cpu_env(cs);
> +    const HexagonCPU *cpu = HEXAGON_CPU(cs);
>      int cpu_mode;
>  
>      BQL_LOCK_GUARD();
> diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
> index dbf58466c24..ec351302406 100644
> --- a/target/hppa/cpu.c
> +++ b/target/hppa/cpu.c
> @@ -140,9 +140,9 @@ static bool hppa_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int hppa_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int hppa_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
> -    CPUHPPAState *env = cpu_env(cs);
> +    const CPUHPPAState *env = cpu_env(cs);
>  
>      if (env->psw & (ifetch ? PSW_C : PSW_D)) {
>          return PRIV_P_TO_MMU_IDX(env->iaoq_f & 3, env->psw & PSW_P);
> diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
> index e4fc212aca5..da1498ee45d 100644
> --- a/target/i386/tcg/tcg-cpu.c
> +++ b/target/i386/tcg/tcg-cpu.c
> @@ -114,7 +114,7 @@ static void x86_restore_state_to_opc(CPUState *cs,
>      }
>  }
>  
> -int x86_mmu_index_pl(CPUX86State *env, unsigned pl)
> +int x86_mmu_index_pl(const CPUX86State *env, unsigned pl)
>  {
>      int mmu_index_32 = (env->hflags & HF_CS64_MASK) ? 0 : 1;
>      int mmu_index_base =
> @@ -125,9 +125,9 @@ int x86_mmu_index_pl(CPUX86State *env, unsigned pl)
>      return mmu_index_base + mmu_index_32;
>  }
>  
> -static int x86_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int x86_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
> -    CPUX86State *env = cpu_env(cs);
> +    const CPUX86State *env = cpu_env(cs);
>      return x86_mmu_index_pl(env, env->hflags & HF_CPL_MASK);
>  }
>  
> diff --git a/target/loongarch/tcg/tcg_cpu.c b/target/loongarch/tcg/tcg_cpu.c
> index 7ea2a1eb933..a26233d5eed 100644
> --- a/target/loongarch/tcg/tcg_cpu.c
> +++ b/target/loongarch/tcg/tcg_cpu.c
> @@ -301,9 +301,9 @@ static void loongarch_restore_state_to_opc(CPUState *cs,
>      set_pc(cpu_env(cs), data[0]);
>  }
>  
> -static int loongarch_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int loongarch_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
> -    CPULoongArchState *env = cpu_env(cs);
> +    const CPULoongArchState *env = cpu_env(cs);
>      CPUSysState *sys = env_sys(env);
>  
>      if (FIELD_EX64(sys->CSR_CRMD, CSR_CRMD, PG)) {
> diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
> index da3681fab1f..f1fd2e6f14d 100644
> --- a/target/m68k/cpu.c
> +++ b/target/m68k/cpu.c
> @@ -82,7 +82,7 @@ static bool m68k_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int m68k_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int m68k_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return cpu_env(cs)->sr & SR_S ? MMU_KERNEL_IDX : MMU_USER_IDX;
>  }
> diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
> index d1d2f0ec7e3..524175d2236 100644
> --- a/target/microblaze/cpu.c
> +++ b/target/microblaze/cpu.c
> @@ -133,10 +133,10 @@ static bool mb_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int mb_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int mb_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
> -    CPUMBState *env = cpu_env(cs);
> -    MicroBlazeCPU *cpu = env_archcpu(env);
> +    const CPUMBState *env = cpu_env(cs);
> +    const MicroBlazeCPU *cpu = env_archcpu(env);
>  
>      /* Are we in nommu mode?.  */
>      if (!(env->msr & MSR_VM) || !cpu->cfg.use_mmu) {
> diff --git a/target/mips/cpu.c b/target/mips/cpu.c
> index 0f39f8fe0a5..a428176d9e8 100644
> --- a/target/mips/cpu.c
> +++ b/target/mips/cpu.c
> @@ -671,7 +671,7 @@ static const Property mips_cpu_properties[] = {
>  #ifdef CONFIG_TCG
>  #include "accel/tcg/cpu-ops.h"
>  
> -static int mips_cpu_mmu_index(CPUState *cs, bool ifunc)
> +static int mips_cpu_mmu_index(const CPUState *cs, bool ifunc)
>  {
>      return mips_env_mmu_index(cpu_env(cs));
>  }
> diff --git a/target/or1k/cpu.c b/target/or1k/cpu.c
> index 10b13ae69cd..c9ab5c0f1c1 100644
> --- a/target/or1k/cpu.c
> +++ b/target/or1k/cpu.c
> @@ -82,9 +82,9 @@ static bool openrisc_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int openrisc_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int openrisc_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
> -    CPUOpenRISCState *env = cpu_env(cs);
> +    const CPUOpenRISCState *env = cpu_env(cs);
>  
>      if (env->sr & (ifetch ? SR_IME : SR_DME)) {
>          /* The mmu is enabled; test supervisor state.  */
> diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
> index c72a7168a23..a33a074b796 100644
> --- a/target/ppc/cpu_init.c
> +++ b/target/ppc/cpu_init.c
> @@ -7215,7 +7215,7 @@ static void ppc_restore_state_to_opc(CPUState *cs,
>      cpu->env.nip = data[0];
>  }
>  
> -static int ppc_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int ppc_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return ppc_env_mmu_index(cpu_env(cs), ifetch);
>  }
> diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
> index cd303660f1f..a0210ca50e3 100644
> --- a/target/riscv/tcg/tcg-cpu.c
> +++ b/target/riscv/tcg/tcg-cpu.c
> @@ -95,7 +95,7 @@ static const char *cpu_priv_ver_to_str(int priv_ver)
>      return priv_spec_str;
>  }
>  
> -static int riscv_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int riscv_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return riscv_env_mmu_index(cpu_env(cs), ifetch);
>  }
> diff --git a/target/rx/cpu.c b/target/rx/cpu.c
> index dfa09a85bce..c5dfba8976a 100644
> --- a/target/rx/cpu.c
> +++ b/target/rx/cpu.c
> @@ -78,7 +78,7 @@ static bool rx_cpu_has_work(const CPUState *cs)
>      return cpu_test_interrupt(cs, CPU_INTERRUPT_HARD | CPU_INTERRUPT_FIR);
>  }
>  
> -static int rx_cpu_mmu_index(CPUState *cs, bool ifunc)
> +static int rx_cpu_mmu_index(const CPUState *cs, bool ifunc)
>  {
>      return 0;
>  }
> diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
> index c34f4b23472..a043f1e7920 100644
> --- a/target/s390x/cpu.c
> +++ b/target/s390x/cpu.c
> @@ -311,7 +311,7 @@ static const Property s390x_cpu_properties[] = {
>  #include "accel/tcg/cpu-ops.h"
>  #include "tcg/tcg_s390x.h"
>  
> -static int s390x_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int s390x_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return s390x_env_mmu_index(cpu_env(cs), ifetch);
>  }
> diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c
> index b0ed356d0f7..f8b33844d2a 100644
> --- a/target/sh4/cpu.c
> +++ b/target/sh4/cpu.c
> @@ -113,9 +113,9 @@ static bool superh_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int sh4_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int sh4_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
> -    CPUSH4State *env = cpu_env(cs);
> +    const CPUSH4State *env = cpu_env(cs);
>  
>      /*
>       * The instruction in a RTE delay slot is fetched in privileged mode,
> diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
> index 8dd9b0d5ee3..f1ae16c91e9 100644
> --- a/target/sparc/cpu.c
> +++ b/target/sparc/cpu.c
> @@ -790,9 +790,9 @@ static bool sparc_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int sparc_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int sparc_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
> -    CPUSPARCState *env = cpu_env(cs);
> +    const CPUSPARCState *env = cpu_env(cs);
>  
>  #ifndef TARGET_SPARC64
>      if ((env->mmuregs[0] & MMU_E) == 0) { /* MMU disabled */
> diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
> index 357f3737053..09d4270df60 100644
> --- a/target/tricore/cpu.c
> +++ b/target/tricore/cpu.c
> @@ -117,7 +117,7 @@ static bool tricore_cpu_has_work(const CPUState *cs)
>      return true;
>  }
>  
> -static int tricore_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int tricore_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return 0;
>  }
> diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
> index 1b299568776..8cf973632e7 100644
> --- a/target/xtensa/cpu.c
> +++ b/target/xtensa/cpu.c
> @@ -148,7 +148,7 @@ static bool xtensa_cpu_has_work(const CPUState *cs)
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> -static int xtensa_cpu_mmu_index(CPUState *cs, bool ifetch)
> +static int xtensa_cpu_mmu_index(const CPUState *cs, bool ifetch)
>  {
>      return xtensa_get_cring(cpu_env(cs));
>  }
> -- 
> 2.53.0
> 
> 
>
diff mbox series

Patch

diff --git a/include/accel/tcg/cpu-mmu-index.h b/include/accel/tcg/cpu-mmu-index.h
index e0fb6ef91c8..01152075372 100644
--- a/include/accel/tcg/cpu-mmu-index.h
+++ b/include/accel/tcg/cpu-mmu-index.h
@@ -30,7 +30,7 @@ 
  * Return the core mmu index for the current translation regime.
  * This function is used by generic TCG code paths.
  */
-static inline int cpu_mmu_index(CPUState *cs, bool ifetch)
+static inline int cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
 #ifdef COMPILING_PER_TARGET
 # ifdef CONFIG_USER_ONLY
diff --git a/include/accel/tcg/cpu-ops.h b/include/accel/tcg/cpu-ops.h
index a88cc4dc572..69d7ec29115 100644
--- a/include/accel/tcg/cpu-ops.h
+++ b/include/accel/tcg/cpu-ops.h
@@ -102,7 +102,7 @@  struct TCGCPUOps {
     void (*debug_excp_handler)(CPUState *cpu);
 
     /** @mmu_index: Callback for choosing softmmu mmu index */
-    int (*mmu_index)(CPUState *cpu, bool ifetch);
+    int (*mmu_index)(const CPUState *cpu, bool ifetch);
 
 #ifdef CONFIG_USER_ONLY
     /**
diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h
index 378bd96d941..1c9f9fce20b 100644
--- a/target/alpha/cpu.h
+++ b/target/alpha/cpu.h
@@ -383,7 +383,7 @@  enum {
 
 #define TB_FLAG_UNALIGN       (1u << 1)
 
-static inline int alpha_env_mmu_index(CPUAlphaState *env)
+static inline int alpha_env_mmu_index(const CPUAlphaState *env)
 {
     int ret = env->flags & ENV_FLAG_PS_USER ? MMU_USER_IDX : MMU_KERNEL_IDX;
     if (env->flags & ENV_FLAG_PAL_MODE) {
diff --git a/target/arm/internals.h b/target/arm/internals.h
index f1a80c890ee..d582cefcfa4 100644
--- a/target/arm/internals.h
+++ b/target/arm/internals.h
@@ -55,7 +55,7 @@  static inline MemOp mo_endian(const CPUARMState *env)
     return EX_TBFLAG_ANY(env->hflags, BE_DATA) ? MO_BE : MO_LE;
 }
 
-static inline int arm_env_mmu_index(CPUARMState *env)
+static inline int arm_env_mmu_index(const CPUARMState *env)
 {
     return EX_TBFLAG_ANY(env->hflags, MMUIDX);
 }
@@ -431,7 +431,7 @@  void arm_restore_state_to_opc(CPUState *cs,
 #ifdef CONFIG_TCG
 TCGTBCPUState arm_get_tb_cpu_state(CPUState *cs);
 void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb);
-int arm_cpu_mmu_index(CPUState *cs, bool ifetch);
+int arm_cpu_mmu_index(const CPUState *cs, bool ifetch);
 #endif /* CONFIG_TCG */
 
 typedef enum ARMFPRounding {
diff --git a/target/i386/tcg/tcg-cpu.h b/target/i386/tcg/tcg-cpu.h
index 85bcd61678f..1127861e337 100644
--- a/target/i386/tcg/tcg-cpu.h
+++ b/target/i386/tcg/tcg-cpu.h
@@ -82,6 +82,6 @@  extern const TCGCPUOps x86_tcg_ops;
 
 bool tcg_cpu_realizefn(CPUState *cs, Error **errp);
 
-int x86_mmu_index_pl(CPUX86State *env, unsigned pl);
+int x86_mmu_index_pl(const CPUX86State *env, unsigned pl);
 
 #endif /* TCG_CPU_H */
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index 3fb51bbeb82..56264752c1b 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1736,7 +1736,7 @@  int ppc_dcr_write(ppc_dcr_t *dcr_env, int dcrn, uint32_t val);
 
 /* MMU modes definitions */
 #define MMU_USER_IDX 0
-static inline int ppc_env_mmu_index(CPUPPCState *env, bool ifetch)
+static inline int ppc_env_mmu_index(const CPUPPCState *env, bool ifetch)
 {
 #ifdef CONFIG_USER_ONLY
     return MMU_USER_IDX;
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index 998bbb0d7ff..cd5f9256b24 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -373,7 +373,7 @@  QEMU_BUILD_BUG_ON(FLAG_MASK_DAT != PSW_MASK_DAT >> FLAG_MASK_PSW_SHIFT);
 #define MMU_HOME_IDX            2
 #define MMU_REAL_IDX            3
 
-static inline int s390x_env_mmu_index(CPUS390XState *env, bool ifetch)
+static inline int s390x_env_mmu_index(const CPUS390XState *env, bool ifetch)
 {
 #ifdef CONFIG_USER_ONLY
     return MMU_USER_IDX;
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
index 21d4f8ac23b..3bf88702dc1 100644
--- a/target/alpha/cpu.c
+++ b/target/alpha/cpu.c
@@ -93,7 +93,7 @@  static bool alpha_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int alpha_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int alpha_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return alpha_env_mmu_index(cpu_env(cs));
 }
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index ba66359d410..63ef00735ca 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -126,7 +126,7 @@  void arm_restore_state_to_opc(CPUState *cs,
     }
 }
 
-int arm_cpu_mmu_index(CPUState *cs, bool ifetch)
+int arm_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return arm_env_mmu_index(cpu_env(cs));
 }
diff --git a/target/avr/cpu.c b/target/avr/cpu.c
index a96bef46ff1..24a5a9debc9 100644
--- a/target/avr/cpu.c
+++ b/target/avr/cpu.c
@@ -50,7 +50,7 @@  static bool avr_cpu_has_work(const CPUState *cs)
             && cpu_interrupts_enabled(cpu_env(cs));
 }
 
-static int avr_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int avr_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return ifetch ? MMU_CODE_IDX : MMU_DATA_IDX;
 }
diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
index 868aef0cde4..2bc58fc6305 100644
--- a/target/hexagon/cpu.c
+++ b/target/hexagon/cpu.c
@@ -482,11 +482,11 @@  static void hexagon_cpu_realize(DeviceState *dev, Error **errp)
     mcc->parent_realize(dev, errp);
 }
 
-static int hexagon_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int hexagon_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
 #ifndef CONFIG_USER_ONLY
-    CPUHexagonState *env = cpu_env(cs);
-    HexagonCPU *cpu = HEXAGON_CPU(cs);
+    const CPUHexagonState *env = cpu_env(cs);
+    const HexagonCPU *cpu = HEXAGON_CPU(cs);
     int cpu_mode;
 
     BQL_LOCK_GUARD();
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
index dbf58466c24..ec351302406 100644
--- a/target/hppa/cpu.c
+++ b/target/hppa/cpu.c
@@ -140,9 +140,9 @@  static bool hppa_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int hppa_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int hppa_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
-    CPUHPPAState *env = cpu_env(cs);
+    const CPUHPPAState *env = cpu_env(cs);
 
     if (env->psw & (ifetch ? PSW_C : PSW_D)) {
         return PRIV_P_TO_MMU_IDX(env->iaoq_f & 3, env->psw & PSW_P);
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
index e4fc212aca5..da1498ee45d 100644
--- a/target/i386/tcg/tcg-cpu.c
+++ b/target/i386/tcg/tcg-cpu.c
@@ -114,7 +114,7 @@  static void x86_restore_state_to_opc(CPUState *cs,
     }
 }
 
-int x86_mmu_index_pl(CPUX86State *env, unsigned pl)
+int x86_mmu_index_pl(const CPUX86State *env, unsigned pl)
 {
     int mmu_index_32 = (env->hflags & HF_CS64_MASK) ? 0 : 1;
     int mmu_index_base =
@@ -125,9 +125,9 @@  int x86_mmu_index_pl(CPUX86State *env, unsigned pl)
     return mmu_index_base + mmu_index_32;
 }
 
-static int x86_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int x86_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
-    CPUX86State *env = cpu_env(cs);
+    const CPUX86State *env = cpu_env(cs);
     return x86_mmu_index_pl(env, env->hflags & HF_CPL_MASK);
 }
 
diff --git a/target/loongarch/tcg/tcg_cpu.c b/target/loongarch/tcg/tcg_cpu.c
index 7ea2a1eb933..a26233d5eed 100644
--- a/target/loongarch/tcg/tcg_cpu.c
+++ b/target/loongarch/tcg/tcg_cpu.c
@@ -301,9 +301,9 @@  static void loongarch_restore_state_to_opc(CPUState *cs,
     set_pc(cpu_env(cs), data[0]);
 }
 
-static int loongarch_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int loongarch_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
-    CPULoongArchState *env = cpu_env(cs);
+    const CPULoongArchState *env = cpu_env(cs);
     CPUSysState *sys = env_sys(env);
 
     if (FIELD_EX64(sys->CSR_CRMD, CSR_CRMD, PG)) {
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index da3681fab1f..f1fd2e6f14d 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -82,7 +82,7 @@  static bool m68k_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int m68k_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int m68k_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return cpu_env(cs)->sr & SR_S ? MMU_KERNEL_IDX : MMU_USER_IDX;
 }
diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
index d1d2f0ec7e3..524175d2236 100644
--- a/target/microblaze/cpu.c
+++ b/target/microblaze/cpu.c
@@ -133,10 +133,10 @@  static bool mb_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int mb_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int mb_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
-    CPUMBState *env = cpu_env(cs);
-    MicroBlazeCPU *cpu = env_archcpu(env);
+    const CPUMBState *env = cpu_env(cs);
+    const MicroBlazeCPU *cpu = env_archcpu(env);
 
     /* Are we in nommu mode?.  */
     if (!(env->msr & MSR_VM) || !cpu->cfg.use_mmu) {
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
index 0f39f8fe0a5..a428176d9e8 100644
--- a/target/mips/cpu.c
+++ b/target/mips/cpu.c
@@ -671,7 +671,7 @@  static const Property mips_cpu_properties[] = {
 #ifdef CONFIG_TCG
 #include "accel/tcg/cpu-ops.h"
 
-static int mips_cpu_mmu_index(CPUState *cs, bool ifunc)
+static int mips_cpu_mmu_index(const CPUState *cs, bool ifunc)
 {
     return mips_env_mmu_index(cpu_env(cs));
 }
diff --git a/target/or1k/cpu.c b/target/or1k/cpu.c
index 10b13ae69cd..c9ab5c0f1c1 100644
--- a/target/or1k/cpu.c
+++ b/target/or1k/cpu.c
@@ -82,9 +82,9 @@  static bool openrisc_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int openrisc_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int openrisc_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
-    CPUOpenRISCState *env = cpu_env(cs);
+    const CPUOpenRISCState *env = cpu_env(cs);
 
     if (env->sr & (ifetch ? SR_IME : SR_DME)) {
         /* The mmu is enabled; test supervisor state.  */
diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
index c72a7168a23..a33a074b796 100644
--- a/target/ppc/cpu_init.c
+++ b/target/ppc/cpu_init.c
@@ -7215,7 +7215,7 @@  static void ppc_restore_state_to_opc(CPUState *cs,
     cpu->env.nip = data[0];
 }
 
-static int ppc_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int ppc_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return ppc_env_mmu_index(cpu_env(cs), ifetch);
 }
diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
index cd303660f1f..a0210ca50e3 100644
--- a/target/riscv/tcg/tcg-cpu.c
+++ b/target/riscv/tcg/tcg-cpu.c
@@ -95,7 +95,7 @@  static const char *cpu_priv_ver_to_str(int priv_ver)
     return priv_spec_str;
 }
 
-static int riscv_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int riscv_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return riscv_env_mmu_index(cpu_env(cs), ifetch);
 }
diff --git a/target/rx/cpu.c b/target/rx/cpu.c
index dfa09a85bce..c5dfba8976a 100644
--- a/target/rx/cpu.c
+++ b/target/rx/cpu.c
@@ -78,7 +78,7 @@  static bool rx_cpu_has_work(const CPUState *cs)
     return cpu_test_interrupt(cs, CPU_INTERRUPT_HARD | CPU_INTERRUPT_FIR);
 }
 
-static int rx_cpu_mmu_index(CPUState *cs, bool ifunc)
+static int rx_cpu_mmu_index(const CPUState *cs, bool ifunc)
 {
     return 0;
 }
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index c34f4b23472..a043f1e7920 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -311,7 +311,7 @@  static const Property s390x_cpu_properties[] = {
 #include "accel/tcg/cpu-ops.h"
 #include "tcg/tcg_s390x.h"
 
-static int s390x_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int s390x_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return s390x_env_mmu_index(cpu_env(cs), ifetch);
 }
diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c
index b0ed356d0f7..f8b33844d2a 100644
--- a/target/sh4/cpu.c
+++ b/target/sh4/cpu.c
@@ -113,9 +113,9 @@  static bool superh_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int sh4_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int sh4_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
-    CPUSH4State *env = cpu_env(cs);
+    const CPUSH4State *env = cpu_env(cs);
 
     /*
      * The instruction in a RTE delay slot is fetched in privileged mode,
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index 8dd9b0d5ee3..f1ae16c91e9 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -790,9 +790,9 @@  static bool sparc_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int sparc_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int sparc_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
-    CPUSPARCState *env = cpu_env(cs);
+    const CPUSPARCState *env = cpu_env(cs);
 
 #ifndef TARGET_SPARC64
     if ((env->mmuregs[0] & MMU_E) == 0) { /* MMU disabled */
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
index 357f3737053..09d4270df60 100644
--- a/target/tricore/cpu.c
+++ b/target/tricore/cpu.c
@@ -117,7 +117,7 @@  static bool tricore_cpu_has_work(const CPUState *cs)
     return true;
 }
 
-static int tricore_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int tricore_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return 0;
 }
diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
index 1b299568776..8cf973632e7 100644
--- a/target/xtensa/cpu.c
+++ b/target/xtensa/cpu.c
@@ -148,7 +148,7 @@  static bool xtensa_cpu_has_work(const CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static int xtensa_cpu_mmu_index(CPUState *cs, bool ifetch)
+static int xtensa_cpu_mmu_index(const CPUState *cs, bool ifetch)
 {
     return xtensa_get_cring(cpu_env(cs));
 }