mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-12 07:32:19 +00:00
target/s390x: exception on non-aligned LPSW(E)
Both LPSW and LPSWE should raise a specification exception when their operand is not doubleword aligned. Signed-off-by: Pavel Zbitskiy <pavel.zbitskiy@gmail.com> Message-Id: <20180902003322.3428-3-pavel.zbitskiy@gmail.com> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
28221f9c99
commit
ae4b5a5472
@ -2835,7 +2835,8 @@ static DisasJumpType op_lpsw(DisasContext *s, DisasOps *o)
|
||||
|
||||
t1 = tcg_temp_new_i64();
|
||||
t2 = tcg_temp_new_i64();
|
||||
tcg_gen_qemu_ld32u(t1, o->in2, get_mem_index(s));
|
||||
tcg_gen_qemu_ld_i64(t1, o->in2, get_mem_index(s),
|
||||
MO_TEUL | MO_ALIGN_8);
|
||||
tcg_gen_addi_i64(o->in2, o->in2, 4);
|
||||
tcg_gen_qemu_ld32u(t2, o->in2, get_mem_index(s));
|
||||
/* Convert the 32-bit PSW_MASK into the 64-bit PSW_MASK. */
|
||||
@ -2855,7 +2856,8 @@ static DisasJumpType op_lpswe(DisasContext *s, DisasOps *o)
|
||||
|
||||
t1 = tcg_temp_new_i64();
|
||||
t2 = tcg_temp_new_i64();
|
||||
tcg_gen_qemu_ld64(t1, o->in2, get_mem_index(s));
|
||||
tcg_gen_qemu_ld_i64(t1, o->in2, get_mem_index(s),
|
||||
MO_TEQ | MO_ALIGN_8);
|
||||
tcg_gen_addi_i64(o->in2, o->in2, 8);
|
||||
tcg_gen_qemu_ld64(t2, o->in2, get_mem_index(s));
|
||||
gen_helper_load_psw(cpu_env, t1, t2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user