This patchset fixes some bugs in our SME-related signal frame
handling for linux-user:
* we need to make the equivalent change to a recent kernel
bugfix/ABI change: TPIDR2_EL0 should be cleared when delivering
a signal
* we forgot the TPIDR2_MAGIC signal frame record (which is necessary
for SME v1)
* we forgot the ZT_MAGIC signal frame record when implementing SME2
These bugs generally only surface when guest code attempts to
unwind an exception from inside a signal handler and SME is
involved. Discovered (and the fixes tested) by some new gcc
test cases which implement their part of the bugfix/ABI change
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=b5ffc8e75a8
v2: quick respin to address RTH's code review comments. I know
I only sent v1 earlier this evening but I wanted to get this
out of the door as I'm not going to be working the first half
of next week (back Thurs).
v1->v2:
* patch 1: drop unnecessary if(), update comment
* patch 2: do "has sme" check in better place, drop unneeded
argument, return type
* patch 3: do "has sme" check in better place, check the
incoming SVCR value, not the old one
thanks
-- PMM
Peter Maydell (3):
linux-user/aarch64: Clear TPIDR2_EL0 when delivering signals
linux-user/aarch64: Support TPIDR2_MAGIC signal frame record
linux-user/aarch64: Support ZT_MAGIC signal frame record
linux-user/aarch64/signal.c | 139 +++++++++++++++++++++++++++++++++++-
1 file changed, 136 insertions(+), 3 deletions(-)
--
2.43.0