On 4/12/22 01:54, Alex Bennée wrote:
> During the conversion to the gdb_get_reg128 helpers the high and low
> parts of the XMM register where inadvertently swapped. This causes
> reads of the register to report the incorrect value to gdb.
>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/971
> Fixes: b7b8756a9c (target/i386: use gdb_get_reg helpers)
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: qemu-stable@nongnu.org
> ---
> target/i386/gdbstub.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
>
> diff --git a/target/i386/gdbstub.c b/target/i386/gdbstub.c
> index 098a2ad15a..c3a2cf6f28 100644
> --- a/target/i386/gdbstub.c
> +++ b/target/i386/gdbstub.c
> @@ -129,8 +129,8 @@ int x86_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
> n -= IDX_XMM_REGS;
> if (n < CPU_NB_REGS32 || TARGET_LONG_BITS == 64) {
> return gdb_get_reg128(mem_buf,
> - env->xmm_regs[n].ZMM_Q(0),
> - env->xmm_regs[n].ZMM_Q(1));
> + env->xmm_regs[n].ZMM_Q(1),
> + env->xmm_regs[n].ZMM_Q(0));
> }
> } else {
> switch (n) {