sve: Fix signal frame z/v register restore
authorLuis Machado <luis.machado@arm.com>
Mon, 20 Feb 2023 09:56:19 +0000 (09:56 +0000)
committerLuis Machado <luis.machado@arm.com>
Wed, 4 Oct 2023 15:23:40 +0000 (16:23 +0100)
commit1bb099a2449347510e164e253aea14a186fef0b1
treecc6501250c4bff11f5a99808092d6d5b8ac44ae7
parentb816042e88583f280ad186ff124ab84d31fb592b
sve: Fix signal frame z/v register restore

While doing some SME work, I ran into the situation where the Z register
contents restored from a signal frame are incorrect if the signal frame
only contains fpsimd state and no sve state.

This happens because we only restore the v register values in that case,
and don't do anything for the z registers.

Fix this by initializing the z registers to 0 and then copying over the
overlapping part of the v registers to the z registers.

While at it, refactor the code a bit to simplify it and make it smaller.

Regression-tested on aarch64-linux Ubuntu 22.04/20.04.

Reviewed-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
gdb/aarch64-linux-tdep.c