mbox series

[v2,0/5] arm: fixes for eret, isb and DISAS_UPDATE handling

Message ID 20170710192128.9048-1-alex.bennee@linaro.org
Headers show
Series arm: fixes for eret, isb and DISAS_UPDATE handling | expand

Message

Alex Bennée July 10, 2017, 7:21 p.m. UTC
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