On 10/13/2026 9:16 PM, Brian Cain wrote:
>
> On 10/13/2026 5:10 PM, Pierrick Bouvier wrote:
>> On 10/8/2026 5:35 PM, Brian Cain wrote:
>>> Mark scalar and pair reads of *PCYCLE* regs as I/O so icount
>>> synchronizes
>>> before reading.
>>>
>>> Cover the read paths of {U,G}{PCYCLE,TIMER}{LO,HI,} registers.
>>>
>>> Signed-off-by: Brian Cain <[email protected]>
>>> ---
>>> target/hexagon/gen_tcg_sys.h | 12 ++++++++++--
>>> target/hexagon/genptr.c | 30 ++++++++++++++++++++++++++----
>>> target/hexagon/hex_common.py | 8 ++++----
>>> 3 files changed, 40 insertions(+), 10 deletions(-)
>>>
>> The comment on translator_io_start seems to be out of date.
>> cpu->can_do_io will always be set transitively, and not only for icount.
>> If I understand correctly, calling translator_io_start will simply for
>> effect to end current TB, and start a new one.
>>
>> All that to say that I'm not sure it's needed.
>> Did you find an issue without this?
>
> IIRC without this change we get a "Bad icount read" when performing the
> I/O side effects of instructions like reading from the cycle/timer
> registers.
>
Fair enough.
Indeed, other arch use the same mechanism for such kind of registers.
I'm not sure about all the details, but makes sense to do the same.
Regards,
Pierrick