Handling the PC update behavior for wait, locking instructions, COF
etc. was managed with extra state. But if we pass the current-packet PC
to {k0,tlb}lock, they can update PC when pending. And preloading the PC
with the next packet address before executing instructions that could end
a TB lets wait() use the PC directly.
This series makes no functional change. The `bestwait` test case, which
exercises the wait instruction and the hardware scheduler feature has been
added, but this test passes on the baseline.
Worth a second opinion: this series modifies the CPU VMStateDescription
but does not update the version_id. I plan to continue making changes along
these lines, leading up to the 11.2 release. I hope that it's appropriate/valid
to only update the version_id to capture changes between releases, not merely
changes between pull requests.
Brian Cain (4):
target/hexagon: pass the packet PC to the k0lock/tlblock helpers
target/hexagon: stage the PC in the PC register, drop next_PC
target/hexagon: drop wait_next_pc
tests/functional/hexagon: add bestwait systest
target/hexagon/cpu.h | 2 --
target/hexagon/gen_tcg_sys.h | 2 +-
target/hexagon/helper.h | 2 +-
target/hexagon/hex_mmu.h | 9 +++----
target/hexagon/sys_macros.h | 4 ++--
target/hexagon/translate.h | 2 --
target/hexagon/cpu.c | 2 --
target/hexagon/cpu_helper.c | 8 -------
target/hexagon/genptr.c | 14 +++--------
target/hexagon/hex_interrupts.c | 4 +---
target/hexagon/hex_mmu.c | 15 ++++++------
target/hexagon/hexswi.c | 2 +-
target/hexagon/machine.c | 2 --
target/hexagon/op_helper.c | 24 +++++++++----------
target/hexagon/translate.c | 29 ++++++++++++-----------
target/hexagon/hex_common.py | 6 ++++-
tests/functional/hexagon/test_systests.py | 3 +++
17 files changed, 57 insertions(+), 73 deletions(-)
--
2.34.1