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

Reply via email to