mirror of https://github.com/xemu-project/xemu.git
target/s390x: Handle EXECUTE of odd addresses
Generate a specification exception in the helper before trying to fetch the instruction. Reported-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230316164428.275147-3-iii@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
39344bbc13
commit
ce7ca26968
|
@ -2468,8 +2468,16 @@ void HELPER(stpq_parallel)(CPUS390XState *env, uint64_t addr,
|
||||||
*/
|
*/
|
||||||
void HELPER(ex)(CPUS390XState *env, uint32_t ilen, uint64_t r1, uint64_t addr)
|
void HELPER(ex)(CPUS390XState *env, uint32_t ilen, uint64_t r1, uint64_t addr)
|
||||||
{
|
{
|
||||||
uint64_t insn = cpu_lduw_code(env, addr);
|
uint64_t insn;
|
||||||
uint8_t opc = insn >> 8;
|
uint8_t opc;
|
||||||
|
|
||||||
|
/* EXECUTE targets must be at even addresses. */
|
||||||
|
if (addr & 1) {
|
||||||
|
tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC());
|
||||||
|
}
|
||||||
|
|
||||||
|
insn = cpu_lduw_code(env, addr);
|
||||||
|
opc = insn >> 8;
|
||||||
|
|
||||||
/* Or in the contents of R1[56:63]. */
|
/* Or in the contents of R1[56:63]. */
|
||||||
insn |= r1 & 0xff;
|
insn |= r1 & 0xff;
|
||||||
|
|
Loading…
Reference in New Issue