September 22, 2025 at 1:47 PM, "Philippe Mathieu-Daudé" wrote: > On 4/9/25 22:48, Julian Ganz wrote: > > We recently introduced API for registering callbacks for trap related > > events as well as the corresponding hook functions. Due to differences > > between architectures, the latter need to be called from target specific > > code. > > This change places hooks for xtensa targets. > > Reviewed-by: Max Filippov <[email protected]> > > Signed-off-by: Julian Ganz <[email protected]> > > --- > > target/xtensa/exc_helper.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > diff --git a/target/xtensa/exc_helper.c b/target/xtensa/exc_helper.c > > index b611c9bf97..fdc522698d 100644 > > --- a/target/xtensa/exc_helper.c > > +++ b/target/xtensa/exc_helper.c > > @@ -32,6 +32,7 @@ > > #include "exec/helper-proto.h" > > #include "qemu/host-utils.h" > > #include "qemu/atomic.h" > > +#include "qemu/plugin.h" > > > void HELPER(exception)(CPUXtensaState *env, uint32_t excp) > > { > > @@ -207,6 +208,8 @@ void xtensa_cpu_do_interrupt(CPUState *cs) > > CPUXtensaState *env = cpu_env(cs); > > > if (cs->exception_index == EXC_IRQ) { > > + uint64_t last_pc = env->pc; > > + > > qemu_log_mask(CPU_LOG_INT, > > "%s(EXC_IRQ) level = %d, cintlevel = %d, " > > "pc = %08x, a0 = %08x, ps = %08x, " > > @@ -218,6 +221,7 @@ void xtensa_cpu_do_interrupt(CPUState *cs) > > env->sregs[INTSET], env->sregs[INTENABLE], > > env->sregs[CCOUNT]); > > handle_interrupt(env); > > + qemu_plugin_vcpu_interrupt_cb(cs, last_pc); > > } > > > switch (cs->exception_index) { > > @@ -238,9 +242,11 @@ void xtensa_cpu_do_interrupt(CPUState *cs) > > env->sregs[CCOUNT]); > > if (env->config->exception_vector[cs->exception_index]) { > > uint32_t vector; > > + uint64_t last_pc = env->pc; > > > vector = env->config->exception_vector[cs->exception_index]; > > env->pc = relocated_vector(env, vector); > > + qemu_plugin_vcpu_exception_cb(cs, last_pc); > > } else { > > qemu_log_mask(CPU_LOG_INT, > > "%s(pc = %08x) bad exception_index: %d\n", > > > Should we call qemu_plugin_vcpu_hostcall_cb() in SIMCALL opcode?
Probably yes. Thanks for catching that! Regards, Julian
