Re: [PATCH v3 33/51] target/ppc: Simplify ppc_cpu_debug_check_watchpoint

Richard Henderson <[email protected]>
Newsgroups org.nongnu.qemu-riscv,org.nongnu.qemu-arm,org.nongnu.qemu-devel
Message-ID <[email protected]>
On 7/11/26 03:54, Harsh Prateek Bora wrote:
> + Cedric, Shiva
> 
> On 11/07/26 2:23 am, Richard Henderson wrote:
>> We don't need to check either ISA bit, because that's already
>> done starting with SPR registration.  Replace target_ulong with
>> uint64_t, as we're under TARGET_PPC64.
>>
>> Signed-off-by: Richard Henderson <[email protected]>
>> ---
>>   target/ppc/tcg-excp_helper.c | 30 +++++++++---------------------
>>   1 file changed, 9 insertions(+), 21 deletions(-)
>>
>> diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c
>> index 99ffe4a820..4065440949 100644
>> --- a/target/ppc/tcg-excp_helper.c
>> +++ b/target/ppc/tcg-excp_helper.c
>> @@ -353,35 +353,23 @@ bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUBreakpoint *wp)
>>   {
>>   #if defined(TARGET_PPC64)
>>       CPUPPCState *env = cpu_env(cs);
>> -    bool wt, wti, hv, sv, pr;
>> -    uint32_t dawrx;
>> +    uint32_t dawrx = env->spr[wp->id ? SPR_DAWRX1 : SPR_DAWRX0];
>> +    bool wt = extract32(dawrx, PPC_BIT_NR(59), 1);
>> +    bool wti = extract32(dawrx, PPC_BIT_NR(60), 1);
>> +    bool hv = extract32(dawrx, PPC_BIT_NR(61), 1);
>> +    bool sv = extract32(dawrx, PPC_BIT_NR(62), 1);
>> +    bool pr = extract32(dawrx, PPC_BIT_NR(62), 1);
>> -    if ((env->insns_flags2 & PPC2_ISA207S) &&
>> -        (wp == env->dawr_watchpoint[0])) {
>> -        dawrx = env->spr[SPR_DAWRX0];
>> -    } else if ((env->insns_flags2 & PPC2_ISA310) &&
>> -               (wp == env->dawr_watchpoint[1])) {
>> -        dawrx = env->spr[SPR_DAWRX1];
>> -    } else {
> 
> Previously, there were different ISA version checks resulting in different behaviour, now 
> with this change we are allowing for both ISA versions. Not sure if this would be an 
> expected behaviour?

Per the commit comment, the ISA version checks are done when registering the system 
register.  One cannot write to DAWRX1 unless ISA310, and therefore dawr_watchpoint[1] will 
not be set nor wp->id be 1.


r~
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.