Hi,
This is a quick iteration from the previous series:
https://lists.nongnu.org/archive/html/qemu-devel/2017-07/msg02371.html
Which was born out of the fix:
https://lists.nongnu.org/archive/html/qemu-devel/2017-07/msg01831.html
Following feedback I reverted the attempt to use DISAS_UPDATE for
everything and just made it match the semantics of not-chaining. So
patches 1 & 3 are purely documentation.
Patch 2 should prevent any system change prompted by writing to a
system register not exiting the loop.
Patch 4 is a minor optimisation to ISB handling
Patch 5 fixes the eret regression from the DISAS_JUMP optimisation
I think now all users of DISAS_JUMP should be safe with respect to TB
chaining.
Please review.
Alex Bennée (5):
include/exec/exec-all: document common exit conditions
target/arm/translate: make DISAS_UPDATE match declared semantics
target/arm/translate.h: expand comment on DISAS_EXIT
target/arm: use DISAS_JUMP for ISB handling
target/arm: use DISAS_EXIT for eret handling
include/exec/exec-all.h | 29 ++++++++++++++++++++++++++---
target/arm/translate-a64.c | 20 +++++++++++---------
target/arm/translate.c | 24 +++++++++++++++++-------
target/arm/translate.h | 5 ++++-
4 files changed, 58 insertions(+), 20 deletions(-)
--
2.13.0