On 12/12/25 17:57, Richard Henderson wrote:
> On 11/26/25 14:21, Philippe Mathieu-Daudé wrote:
>> In preparation of removing the cpu_ld*_data_ra()
>> and cpu_st*_data_ra() calls, inline them.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> target/ppc/tcg-excp_helper.c | 9 ++++++---
>> 1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c
>> index edecfb85725..244aeb23c16 100644
>> --- a/target/ppc/tcg-excp_helper.c
>> +++ b/target/ppc/tcg-excp_helper.c
>> @@ -160,14 +160,17 @@ static void do_hash(CPUPPCState *env,
>> target_ulong ea, target_ulong ra,
>> target_ulong rb, uint64_t key, bool store)
>> {
>> uint64_t calculated_hash = hash_digest(ra, rb, key), loaded_hash;
>> + unsigned mmu_idx = cpu_mmu_index(env_cpu(env), false);
>> + MemOpIdx oi = make_memop_idx(MO_TE | MO_UQ | MO_UNALN, mmu_idx);
>> + uintptr_t retaddr = GETPC();
>> if (store) {
>> - cpu_stq_data_ra(env, ea, calculated_hash, GETPC());
>> + cpu_stq_mmu(env, ea, calculated_hash, oi, retaddr);
>> } else {
>> - loaded_hash = cpu_ldq_data_ra(env, ea, GETPC());
>> + loaded_hash = cpu_ldq_mmu(env, ea, oi, retaddr);
>> if (loaded_hash != calculated_hash) {
>> raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM,
>> - POWERPC_EXCP_TRAP, GETPC());
>> + POWERPC_EXCP_TRAP, retaddr);
>> }
>> }
>> }
>
> This is the page translation hash. I suspect the actual address must be
> aligned, and probably forcibly so via computation. The MO_UNALN is
> either wrong or misleading.
This is a faithful expansion of inlined helpers, showing the current
logical state of the code. I'll remove MO_UNALN in a subsequent patch.