mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 13:30:52 +00:00
target/s390x: Remove ilen parameter from tcg_s390_program_interrupt
Since we begin the operation with an unwind, we have the proper value of ilen immediately available. Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20191001171614.8405-3-richard.henderson@linaro.org> Signed-off-by: David Hildenbrand <david@redhat.com>
This commit is contained in:
parent
c87ff4d108
commit
3e20185892
@ -34,15 +34,15 @@
|
|||||||
#include "hw/boards.h"
|
#include "hw/boards.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code,
|
void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env,
|
||||||
int ilen, uintptr_t ra)
|
uint32_t code, uintptr_t ra)
|
||||||
{
|
{
|
||||||
CPUState *cs = env_cpu(env);
|
CPUState *cs = env_cpu(env);
|
||||||
|
|
||||||
cpu_restore_state(cs, ra, true);
|
cpu_restore_state(cs, ra, true);
|
||||||
qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n",
|
qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n",
|
||||||
env->psw.addr);
|
env->psw.addr);
|
||||||
trigger_pgm_exception(env, code, ilen);
|
trigger_pgm_exception(env, code, ILEN_UNWIND);
|
||||||
cpu_loop_exit(cs);
|
cpu_loop_exit(cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ void QEMU_NORETURN tcg_s390_data_exception(CPUS390XState *env, uint32_t dxc,
|
|||||||
if (env->cregs[0] & CR0_AFP) {
|
if (env->cregs[0] & CR0_AFP) {
|
||||||
env->fpc = deposit32(env->fpc, 8, 8, dxc);
|
env->fpc = deposit32(env->fpc, 8, 8, dxc);
|
||||||
}
|
}
|
||||||
tcg_s390_program_interrupt(env, PGM_DATA, ILEN_AUTO, ra);
|
tcg_s390_program_interrupt(env, PGM_DATA, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t vxc,
|
void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t vxc,
|
||||||
@ -75,7 +75,7 @@ void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t vxc,
|
|||||||
|
|
||||||
/* Always store the VXC into the FPC, without AFP it is undefined */
|
/* Always store the VXC into the FPC, without AFP it is undefined */
|
||||||
env->fpc = deposit32(env->fpc, 8, 8, vxc);
|
env->fpc = deposit32(env->fpc, 8, 8, vxc);
|
||||||
tcg_s390_program_interrupt(env, PGM_VECTOR_PROCESSING, ILEN_AUTO, ra);
|
tcg_s390_program_interrupt(env, PGM_VECTOR_PROCESSING, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HELPER(data_exception)(CPUS390XState *env, uint32_t dxc)
|
void HELPER(data_exception)(CPUS390XState *env, uint32_t dxc)
|
||||||
|
@ -40,7 +40,7 @@ void s390_program_interrupt(CPUS390XState *env, uint32_t code, int ilen,
|
|||||||
if (kvm_enabled()) {
|
if (kvm_enabled()) {
|
||||||
kvm_s390_program_interrupt(env_archcpu(env), code);
|
kvm_s390_program_interrupt(env_archcpu(env), code);
|
||||||
} else if (tcg_enabled()) {
|
} else if (tcg_enabled()) {
|
||||||
tcg_s390_program_interrupt(env, code, ilen, ra);
|
tcg_s390_program_interrupt(env, code, ra);
|
||||||
} else {
|
} else {
|
||||||
g_assert_not_reached();
|
g_assert_not_reached();
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque)
|
void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code,
|
void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env,
|
||||||
int ilen, uintptr_t ra)
|
uint32_t code, uintptr_t ra)
|
||||||
{
|
{
|
||||||
g_assert_not_reached();
|
g_assert_not_reached();
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
#define TCG_S390X_H
|
#define TCG_S390X_H
|
||||||
|
|
||||||
void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque);
|
void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque);
|
||||||
void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code,
|
void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env,
|
||||||
int ilen, uintptr_t ra);
|
uint32_t code, uintptr_t ra);
|
||||||
void QEMU_NORETURN tcg_s390_data_exception(CPUS390XState *env, uint32_t dxc,
|
void QEMU_NORETURN tcg_s390_data_exception(CPUS390XState *env, uint32_t dxc,
|
||||||
uintptr_t ra);
|
uintptr_t ra);
|
||||||
void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t vxc,
|
void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t vxc,
|
||||||
|
Loading…
Reference in New Issue
Block a user