aboutsummaryrefslogtreecommitdiff
path: root/target-i386/translate.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-01-07 17:36:27 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2015-01-14 10:38:57 +0100
commit07958082fdf39284935d38a5b8aec1fe7d020637 (patch)
treeaa72ae2804206c590224d74182b149c07e5edfb6 /target-i386/translate.c
parent3b9985e9a104dd90427570dd4e06e4d1f152c48b (diff)
target-i386: fix movntsd on big-endian hosts
This was accessing an XMM register's low half without going through XMM_Q. Cc: qemu-stable@nongnu.org Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'target-i386/translate.c')
-rw-r--r--target-i386/translate.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/target-i386/translate.c b/target-i386/translate.c
index ebdc3500e5..5af43003b0 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -3074,7 +3074,8 @@ static void gen_sse(CPUX86State *env, DisasContext *s, int b,
goto illegal_op;
gen_lea_modrm(env, s, modrm);
if (b1 & 1) {
- gen_stq_env_A0(s, offsetof(CPUX86State, xmm_regs[reg]));
+ gen_stq_env_A0(s, offsetof(CPUX86State,
+ xmm_regs[reg].XMM_Q(0)));
} else {
tcg_gen_ld32u_tl(cpu_T[0], cpu_env, offsetof(CPUX86State,
xmm_regs[reg].XMM_L(0)));