On 10/14/2026 12:18 PM, Pierrick Bouvier wrote:
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.

Oh - err, oops - but after looking closer, I did incorrectly apply some of these to instructions that don't trigger I/O.  I'll remove changes from those (start/stop/wait/resume) in v2.



Reply via email to