Message ID | 20190926162615.31168-4-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target/s390: Use tcg unwinding for ilen | expand |
On 26.09.19 18:26, Richard Henderson wrote: > Since we begin the operation with an unwind, we have the proper > value of ilen immediately available. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/s390x/tcg_s390x.h | 4 ++-- > target/s390x/excp_helper.c | 8 ++++---- > target/s390x/interrupt.c | 2 +- > target/s390x/tcg-stub.c | 4 ++-- > 4 files changed, 9 insertions(+), 9 deletions(-) > > diff --git a/target/s390x/tcg_s390x.h b/target/s390x/tcg_s390x.h > index 2813f9d48e..2f54ccb027 100644 > --- a/target/s390x/tcg_s390x.h > +++ b/target/s390x/tcg_s390x.h > @@ -14,8 +14,8 @@ > #define TCG_S390X_H > > void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque); > -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code, > - int ilen, uintptr_t ra); > +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, > + uint32_t code, uintptr_t ra); > void QEMU_NORETURN tcg_s390_data_exception(CPUS390XState *env, uint32_t dxc, > uintptr_t ra); > void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t vxc, > diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c > index 892f659d5a..681a9c59e1 100644 > --- a/target/s390x/excp_helper.c > +++ b/target/s390x/excp_helper.c > @@ -34,15 +34,15 @@ > #include "hw/boards.h" > #endif > > -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code, > - int ilen, uintptr_t ra) > +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, > + uint32_t code, uintptr_t ra) > { > CPUState *cs = env_cpu(env); > > cpu_restore_state(cs, ra, true); > qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n", > env->psw.addr); > - trigger_pgm_exception(env, code, ilen); > + trigger_pgm_exception(env, code, ILEN_UNWIND); > 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) { > 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, > diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c > index 30a9fb8852..b798e2ecbe 100644 > --- a/target/s390x/interrupt.c > +++ b/target/s390x/interrupt.c > @@ -40,7 +40,7 @@ void s390_program_interrupt(CPUS390XState *env, uint32_t code, int ilen, > if (kvm_enabled()) { > kvm_s390_program_interrupt(env_archcpu(env), code); > } else if (tcg_enabled()) { > - tcg_s390_program_interrupt(env, code, ilen, ra); > + tcg_s390_program_interrupt(env, code, ra); > } else { > g_assert_not_reached(); > } > diff --git a/target/s390x/tcg-stub.c b/target/s390x/tcg-stub.c > index 32adb7276a..d22c898802 100644 > --- a/target/s390x/tcg-stub.c > +++ b/target/s390x/tcg-stub.c > @@ -18,8 +18,8 @@ > void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque) > { > } > -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code, > - int ilen, uintptr_t ra) > +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, > + uint32_t code, uintptr_t ra) > { > g_assert_not_reached(); > } > Reviewed-by: David Hildenbrand <david@redhat.com> -- Thanks, David / dhildenb
diff --git a/target/s390x/tcg_s390x.h b/target/s390x/tcg_s390x.h index 2813f9d48e..2f54ccb027 100644 --- a/target/s390x/tcg_s390x.h +++ b/target/s390x/tcg_s390x.h @@ -14,8 +14,8 @@ #define TCG_S390X_H void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque); -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code, - int ilen, uintptr_t ra); +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, + uint32_t code, uintptr_t ra); void QEMU_NORETURN tcg_s390_data_exception(CPUS390XState *env, uint32_t dxc, uintptr_t ra); void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t vxc, diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 892f659d5a..681a9c59e1 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -34,15 +34,15 @@ #include "hw/boards.h" #endif -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code, - int ilen, uintptr_t ra) +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, + uint32_t code, uintptr_t ra) { CPUState *cs = env_cpu(env); cpu_restore_state(cs, ra, true); qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n", env->psw.addr); - trigger_pgm_exception(env, code, ilen); + trigger_pgm_exception(env, code, ILEN_UNWIND); 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) { 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, diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c index 30a9fb8852..b798e2ecbe 100644 --- a/target/s390x/interrupt.c +++ b/target/s390x/interrupt.c @@ -40,7 +40,7 @@ void s390_program_interrupt(CPUS390XState *env, uint32_t code, int ilen, if (kvm_enabled()) { kvm_s390_program_interrupt(env_archcpu(env), code); } else if (tcg_enabled()) { - tcg_s390_program_interrupt(env, code, ilen, ra); + tcg_s390_program_interrupt(env, code, ra); } else { g_assert_not_reached(); } diff --git a/target/s390x/tcg-stub.c b/target/s390x/tcg-stub.c index 32adb7276a..d22c898802 100644 --- a/target/s390x/tcg-stub.c +++ b/target/s390x/tcg-stub.c @@ -18,8 +18,8 @@ void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque) { } -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t code, - int ilen, uintptr_t ra) +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, + uint32_t code, uintptr_t ra) { g_assert_not_reached(); }
Since we begin the operation with an unwind, we have the proper value of ilen immediately available. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/s390x/tcg_s390x.h | 4 ++-- target/s390x/excp_helper.c | 8 ++++---- target/s390x/interrupt.c | 2 +- target/s390x/tcg-stub.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) -- 2.17.1