These expand inline to the *_mmuidx_ra api with
a lookup of the target's cpu_mmu_index().
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
include/exec/cpu_ldst.h | 144 +++++++++++++++++++++++++++++-------
accel/tcg/ldst_common.c.inc | 108 ---------------------------
2 files changed, 118 insertions(+), 134 deletions(-)
diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
index b33755169e..963c538176 100644
--- a/include/exec/cpu_ldst.h
+++ b/include/exec/cpu_ldst.h
@@ -84,17 +84,6 @@ int cpu_ldsw_le_data(CPUArchState *env, abi_ptr ptr);
uint32_t cpu_ldl_le_data(CPUArchState *env, abi_ptr ptr);
uint64_t cpu_ldq_le_data(CPUArchState *env, abi_ptr ptr);
-uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
-
void cpu_stb_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
void cpu_stw_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
void cpu_stl_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
@@ -103,21 +92,6 @@ void cpu_stw_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
void cpu_stl_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
void cpu_stq_le_data(CPUArchState *env, abi_ptr ptr, uint64_t val);
-void cpu_stb_data_ra(CPUArchState *env, abi_ptr ptr,
- uint32_t val, uintptr_t ra);
-void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr ptr,
- uint32_t val, uintptr_t ra);
-void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr ptr,
- uint32_t val, uintptr_t ra);
-void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr ptr,
- uint64_t val, uintptr_t ra);
-void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr ptr,
- uint32_t val, uintptr_t ra);
-void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr ptr,
- uint32_t val, uintptr_t ra);
-void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr,
- uint64_t val, uintptr_t ra);
-
static inline uint32_t
cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr, int mmu_idx, uintptr_t ra)
{
@@ -249,6 +223,124 @@ cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
cpu_stq_mmu(env, addr, val, oi, ra);
}
+/*--------------------------*/
+
+static inline uint32_t
+cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ return cpu_ldub_mmuidx_ra(env, addr, mmu_index, ra);
+}
+
+static inline int
+cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return (int8_t)cpu_ldub_data_ra(env, addr, ra);
+}
+
+static inline uint32_t
+cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ return cpu_lduw_be_mmuidx_ra(env, addr, mmu_index, ra);
+}
+
+static inline int
+cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
+}
+
+static inline uint32_t
+cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ return cpu_ldl_be_mmuidx_ra(env, addr, mmu_index, ra);
+}
+
+static inline uint64_t
+cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ return cpu_ldq_be_mmuidx_ra(env, addr, mmu_index, ra);
+}
+
+static inline uint32_t
+cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ return cpu_lduw_le_mmuidx_ra(env, addr, mmu_index, ra);
+}
+
+static inline int
+cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
+}
+
+static inline uint32_t
+cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ return cpu_ldl_le_mmuidx_ra(env, addr, mmu_index, ra);
+}
+
+static inline uint64_t
+cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ return cpu_ldq_le_mmuidx_ra(env, addr, mmu_index, ra);
+}
+
+static inline void
+cpu_stb_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ cpu_stb_mmuidx_ra(env, addr, val, mmu_index, ra);
+}
+
+static inline void
+cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ cpu_stw_be_mmuidx_ra(env, addr, val, mmu_index, ra);
+}
+
+static inline void
+cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ cpu_stl_be_mmuidx_ra(env, addr, val, mmu_index, ra);
+}
+
+static inline void
+cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr, uint64_t val, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ cpu_stq_be_mmuidx_ra(env, addr, val, mmu_index, ra);
+}
+
+static inline void
+cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ cpu_stw_le_mmuidx_ra(env, addr, val, mmu_index, ra);
+}
+
+static inline void
+cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ cpu_stl_le_mmuidx_ra(env, addr, val, mmu_index, ra);
+}
+
+static inline void
+cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr, uint64_t val, uintptr_t ra)
+{
+ int mmu_index = cpu_mmu_index(env_cpu(env), false);
+ cpu_stq_le_mmuidx_ra(env, addr, val, mmu_index, ra);
+}
+
#if TARGET_BIG_ENDIAN
# define cpu_lduw_data cpu_lduw_be_data
# define cpu_ldsw_data cpu_ldsw_be_data
diff --git a/accel/tcg/ldst_common.c.inc b/accel/tcg/ldst_common.c.inc
index 99a56df3fb..2f203290db 100644
--- a/accel/tcg/ldst_common.c.inc
+++ b/accel/tcg/ldst_common.c.inc
@@ -248,114 +248,6 @@ void cpu_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
* Wrappers of the above
*/
-uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- return cpu_ldub_mmuidx_ra(env, addr, mmu_index, ra);
-}
-
-int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- return (int8_t)cpu_ldub_data_ra(env, addr, ra);
-}
-
-uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- return cpu_lduw_be_mmuidx_ra(env, addr, mmu_index, ra);
-}
-
-int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
-}
-
-uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- return cpu_ldl_be_mmuidx_ra(env, addr, mmu_index, ra);
-}
-
-uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- return cpu_ldq_be_mmuidx_ra(env, addr, mmu_index, ra);
-}
-
-uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- return cpu_lduw_le_mmuidx_ra(env, addr, mmu_index, ra);
-}
-
-int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
-}
-
-uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- return cpu_ldl_le_mmuidx_ra(env, addr, mmu_index, ra);
-}
-
-uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- return cpu_ldq_le_mmuidx_ra(env, addr, mmu_index, ra);
-}
-
-void cpu_stb_data_ra(CPUArchState *env, abi_ptr addr,
- uint32_t val, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- cpu_stb_mmuidx_ra(env, addr, val, mmu_index, ra);
-}
-
-void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr,
- uint32_t val, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- cpu_stw_be_mmuidx_ra(env, addr, val, mmu_index, ra);
-}
-
-void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr,
- uint32_t val, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- cpu_stl_be_mmuidx_ra(env, addr, val, mmu_index, ra);
-}
-
-void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr,
- uint64_t val, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- cpu_stq_be_mmuidx_ra(env, addr, val, mmu_index, ra);
-}
-
-void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr,
- uint32_t val, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- cpu_stw_le_mmuidx_ra(env, addr, val, mmu_index, ra);
-}
-
-void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr,
- uint32_t val, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- cpu_stl_le_mmuidx_ra(env, addr, val, mmu_index, ra);
-}
-
-void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr,
- uint64_t val, uintptr_t ra)
-{
- int mmu_index = cpu_mmu_index(env_cpu(env), false);
- cpu_stq_le_mmuidx_ra(env, addr, val, mmu_index, ra);
-}
-
-/*--------------------------*/
-
uint32_t cpu_ldub_data(CPUArchState *env, abi_ptr addr)
{
return cpu_ldub_data_ra(env, addr, 0);
--
2.43.0
On 3/12/25 20:44, Richard Henderson wrote:
> These expand inline to the *_mmuidx_ra api with
> a lookup of the target's cpu_mmu_index().
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> include/exec/cpu_ldst.h | 144 +++++++++++++++++++++++++++++-------
> accel/tcg/ldst_common.c.inc | 108 ---------------------------
> 2 files changed, 118 insertions(+), 134 deletions(-)
>
> diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
> index b33755169e..963c538176 100644
> --- a/include/exec/cpu_ldst.h
> +++ b/include/exec/cpu_ldst.h
> @@ -84,17 +84,6 @@ int cpu_ldsw_le_data(CPUArchState *env, abi_ptr ptr);
> uint32_t cpu_ldl_le_data(CPUArchState *env, abi_ptr ptr);
> uint64_t cpu_ldq_le_data(CPUArchState *env, abi_ptr ptr);
>
> -uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -
> void cpu_stb_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stw_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stl_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> @@ -103,21 +92,6 @@ void cpu_stw_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stl_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stq_le_data(CPUArchState *env, abi_ptr ptr, uint64_t val);
>
> -void cpu_stb_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint64_t val, uintptr_t ra);
> -void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint64_t val, uintptr_t ra);
> -
> static inline uint32_t
> cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr, int mmu_idx, uintptr_t ra)
> {
> @@ -249,6 +223,124 @@ cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
> cpu_stq_mmu(env, addr, val, oi, ra);
> }
>
> +/*--------------------------*/
> +
> +static inline uint32_t
> +cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldub_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline int
> +cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + return (int8_t)cpu_ldub_data_ra(env, addr, ra);
> +}
> +
> +static inline uint32_t
> +cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_lduw_be_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline int
> +cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
> +}
> +
> +static inline uint32_t
> +cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldl_be_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline uint64_t
> +cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldq_be_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline uint32_t
> +cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_lduw_le_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline int
> +cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
> +}
> +
> +static inline uint32_t
> +cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldl_le_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline uint64_t
> +cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldq_le_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stb_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stb_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stw_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stl_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr, uint64_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stq_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stw_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stl_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr, uint64_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stq_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> #if TARGET_BIG_ENDIAN
> # define cpu_lduw_data cpu_lduw_be_data
> # define cpu_ldsw_data cpu_ldsw_be_data
> diff --git a/accel/tcg/ldst_common.c.inc b/accel/tcg/ldst_common.c.inc
> index 99a56df3fb..2f203290db 100644
> --- a/accel/tcg/ldst_common.c.inc
> +++ b/accel/tcg/ldst_common.c.inc
> @@ -248,114 +248,6 @@ void cpu_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
> * Wrappers of the above
> */
>
> -uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldub_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - return (int8_t)cpu_ldub_data_ra(env, addr, ra);
> -}
> -
> -uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_lduw_be_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
> -}
> -
> -uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldl_be_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldq_be_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_lduw_le_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
> -}
> -
> -uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldl_le_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldq_le_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -void cpu_stb_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stb_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stw_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stl_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr,
> - uint64_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stq_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stw_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stl_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr,
> - uint64_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stq_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -/*--------------------------*/
> -
> uint32_t cpu_ldub_data(CPUArchState *env, abi_ptr addr)
> {
> return cpu_ldub_data_ra(env, addr, 0);
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Richard Henderson <richard.henderson@linaro.org> writes:
> These expand inline to the *_mmuidx_ra api with
> a lookup of the target's cpu_mmu_index().
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This is where my re-based bisect broke. Fixed by moving cpu.h
modified target/ppc/tcg-excp_helper.c
@@ -19,6 +19,7 @@
#include "qemu/osdep.h"
#include "qemu/main-loop.h"
#include "qemu/log.h"
+#include "cpu.h"
#include "exec/cpu_ldst.h"
#include "exec/exec-all.h"
#include "exec/helper-proto.h"
@@ -27,7 +28,6 @@
#include "helper_regs.h"
#include "hw/ppc/ppc.h"
#include "internal.h"
-#include "cpu.h"
#include "trace.h"
> ---
> include/exec/cpu_ldst.h | 144 +++++++++++++++++++++++++++++-------
> accel/tcg/ldst_common.c.inc | 108 ---------------------------
> 2 files changed, 118 insertions(+), 134 deletions(-)
>
> diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
> index b33755169e..963c538176 100644
> --- a/include/exec/cpu_ldst.h
> +++ b/include/exec/cpu_ldst.h
> @@ -84,17 +84,6 @@ int cpu_ldsw_le_data(CPUArchState *env, abi_ptr ptr);
> uint32_t cpu_ldl_le_data(CPUArchState *env, abi_ptr ptr);
> uint64_t cpu_ldq_le_data(CPUArchState *env, abi_ptr ptr);
>
> -uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
> -
> void cpu_stb_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stw_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stl_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> @@ -103,21 +92,6 @@ void cpu_stw_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stl_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
> void cpu_stq_le_data(CPUArchState *env, abi_ptr ptr, uint64_t val);
>
> -void cpu_stb_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint64_t val, uintptr_t ra);
> -void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint32_t val, uintptr_t ra);
> -void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr,
> - uint64_t val, uintptr_t ra);
> -
> static inline uint32_t
> cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr, int mmu_idx, uintptr_t ra)
> {
> @@ -249,6 +223,124 @@ cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
> cpu_stq_mmu(env, addr, val, oi, ra);
> }
>
> +/*--------------------------*/
> +
> +static inline uint32_t
> +cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldub_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline int
> +cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + return (int8_t)cpu_ldub_data_ra(env, addr, ra);
> +}
> +
> +static inline uint32_t
> +cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_lduw_be_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline int
> +cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
> +}
> +
> +static inline uint32_t
> +cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldl_be_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline uint64_t
> +cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldq_be_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline uint32_t
> +cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_lduw_le_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline int
> +cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
> +}
> +
> +static inline uint32_t
> +cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldl_le_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline uint64_t
> +cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + return cpu_ldq_le_mmuidx_ra(env, addr, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stb_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stb_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stw_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stl_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr, uint64_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stq_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stw_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr, uint32_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stl_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> +static inline void
> +cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr, uint64_t val, uintptr_t ra)
> +{
> + int mmu_index = cpu_mmu_index(env_cpu(env), false);
> + cpu_stq_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> +}
> +
> #if TARGET_BIG_ENDIAN
> # define cpu_lduw_data cpu_lduw_be_data
> # define cpu_ldsw_data cpu_ldsw_be_data
> diff --git a/accel/tcg/ldst_common.c.inc b/accel/tcg/ldst_common.c.inc
> index 99a56df3fb..2f203290db 100644
> --- a/accel/tcg/ldst_common.c.inc
> +++ b/accel/tcg/ldst_common.c.inc
> @@ -248,114 +248,6 @@ void cpu_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
> * Wrappers of the above
> */
>
> -uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldub_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - return (int8_t)cpu_ldub_data_ra(env, addr, ra);
> -}
> -
> -uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_lduw_be_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
> -}
> -
> -uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldl_be_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldq_be_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_lduw_le_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
> -}
> -
> -uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldl_le_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - return cpu_ldq_le_mmuidx_ra(env, addr, mmu_index, ra);
> -}
> -
> -void cpu_stb_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stb_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stw_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stl_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr,
> - uint64_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stq_be_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stw_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr,
> - uint32_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stl_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr,
> - uint64_t val, uintptr_t ra)
> -{
> - int mmu_index = cpu_mmu_index(env_cpu(env), false);
> - cpu_stq_le_mmuidx_ra(env, addr, val, mmu_index, ra);
> -}
> -
> -/*--------------------------*/
> -
> uint32_t cpu_ldub_data(CPUArchState *env, abi_ptr addr)
> {
> return cpu_ldub_data_ra(env, addr, 0);
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
On 3/13/25 09:22, Alex Bennée wrote: > Richard Henderson <richard.henderson@linaro.org> writes: > >> These expand inline to the *_mmuidx_ra api with >> a lookup of the target's cpu_mmu_index(). >> >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > This is where my re-based bisect broke. Fixed by moving cpu.h > > modified target/ppc/tcg-excp_helper.c > @@ -19,6 +19,7 @@ > #include "qemu/osdep.h" > #include "qemu/main-loop.h" > #include "qemu/log.h" > +#include "cpu.h" > #include "exec/cpu_ldst.h" > #include "exec/exec-all.h" > #include "exec/helper-proto.h" > @@ -27,7 +28,6 @@ > #include "helper_regs.h" > #include "hw/ppc/ppc.h" > #include "internal.h" > -#include "cpu.h" > #include "trace.h" I shall move up the cpu-mmu-index.h split, so that I can include it in the proper place here in cpu_ldst.h. r~
© 2016 - 2025 Red Hat, Inc.