mirror of https://github.com/xemu-project/xemu.git
target/s390x: Move cpu_get_tb_cpu_state out of line
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Message-ID: <20240502054417.234340-3-richard.henderson@linaro.org> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
a6a33760a3
commit
36db37af34
|
@ -324,6 +324,28 @@ static void s390_cpu_reset_full(DeviceState *dev)
|
||||||
#ifdef CONFIG_TCG
|
#ifdef CONFIG_TCG
|
||||||
#include "hw/core/tcg-cpu-ops.h"
|
#include "hw/core/tcg-cpu-ops.h"
|
||||||
|
|
||||||
|
void cpu_get_tb_cpu_state(CPUS390XState *env, vaddr *pc,
|
||||||
|
uint64_t *cs_base, uint32_t *flags)
|
||||||
|
{
|
||||||
|
if (env->psw.addr & 1) {
|
||||||
|
/*
|
||||||
|
* Instructions must be at even addresses.
|
||||||
|
* This needs to be checked before address translation.
|
||||||
|
*/
|
||||||
|
env->int_pgm_ilen = 2; /* see s390_cpu_tlb_fill() */
|
||||||
|
tcg_s390_program_interrupt(env, PGM_SPECIFICATION, 0);
|
||||||
|
}
|
||||||
|
*pc = env->psw.addr;
|
||||||
|
*cs_base = env->ex_value;
|
||||||
|
*flags = (env->psw.mask >> FLAG_MASK_PSW_SHIFT) & FLAG_MASK_PSW;
|
||||||
|
if (env->cregs[0] & CR0_AFP) {
|
||||||
|
*flags |= FLAG_MASK_AFP;
|
||||||
|
}
|
||||||
|
if (env->cregs[0] & CR0_VECTOR) {
|
||||||
|
*flags |= FLAG_MASK_VECTOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const TCGCPUOps s390_tcg_ops = {
|
static const TCGCPUOps s390_tcg_ops = {
|
||||||
.initialize = s390x_translate_init,
|
.initialize = s390x_translate_init,
|
||||||
.restore_state_to_opc = s390x_restore_state_to_opc,
|
.restore_state_to_opc = s390x_restore_state_to_opc,
|
||||||
|
|
|
@ -413,27 +413,8 @@ static inline int s390x_env_mmu_index(CPUS390XState *env, bool ifetch)
|
||||||
|
|
||||||
#include "tcg/tcg_s390x.h"
|
#include "tcg/tcg_s390x.h"
|
||||||
|
|
||||||
static inline void cpu_get_tb_cpu_state(CPUS390XState *env, vaddr *pc,
|
void cpu_get_tb_cpu_state(CPUS390XState *env, vaddr *pc,
|
||||||
uint64_t *cs_base, uint32_t *flags)
|
uint64_t *cs_base, uint32_t *flags);
|
||||||
{
|
|
||||||
if (env->psw.addr & 1) {
|
|
||||||
/*
|
|
||||||
* Instructions must be at even addresses.
|
|
||||||
* This needs to be checked before address translation.
|
|
||||||
*/
|
|
||||||
env->int_pgm_ilen = 2; /* see s390_cpu_tlb_fill() */
|
|
||||||
tcg_s390_program_interrupt(env, PGM_SPECIFICATION, 0);
|
|
||||||
}
|
|
||||||
*pc = env->psw.addr;
|
|
||||||
*cs_base = env->ex_value;
|
|
||||||
*flags = (env->psw.mask >> FLAG_MASK_PSW_SHIFT) & FLAG_MASK_PSW;
|
|
||||||
if (env->cregs[0] & CR0_AFP) {
|
|
||||||
*flags |= FLAG_MASK_AFP;
|
|
||||||
}
|
|
||||||
if (env->cregs[0] & CR0_VECTOR) {
|
|
||||||
*flags |= FLAG_MASK_VECTOR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* CONFIG_TCG */
|
#endif /* CONFIG_TCG */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue