Hi Philippe, October 21, 2025 at 10:10 PM, "Philippe Mathieu-Daudé" wrote: > On 19/10/25 17:14, 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 Alpha targets. > > Reviewed-by: Richard Henderson <[email protected]> > > Signed-off-by: Julian Ganz <[email protected]> > > --- > > target/alpha/helper.c | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > diff --git a/target/alpha/helper.c b/target/alpha/helper.c > > index 096eac3445..a9af52a928 100644 > > --- a/target/alpha/helper.c > > +++ b/target/alpha/helper.c > > @@ -27,6 +27,7 @@ > > #include "exec/helper-proto.h" > > #include "qemu/qemu-print.h" > > #include "system/memory.h" > > +#include "qemu/plugin.h" > > > > #define CONVERT_BIT(X, SRC, DST) \ > > @@ -328,6 +329,7 @@ void alpha_cpu_do_interrupt(CPUState *cs) > > { > > CPUAlphaState *env = cpu_env(cs); > > int i = cs->exception_index; > > + uint64_t last_pc = env->pc; > > > if (qemu_loglevel_mask(CPU_LOG_INT)) { > > static int count; > > @@ -431,6 +433,17 @@ void alpha_cpu_do_interrupt(CPUState *cs) > > > /* Switch to PALmode. */ > > env->flags |= ENV_FLAG_PAL_MODE; > > + > > + switch (i) { > > + case EXCP_SMP_INTERRUPT: > > + case EXCP_CLK_INTERRUPT: > > + case EXCP_DEV_INTERRUPT: > > + qemu_plugin_vcpu_interrupt_cb(cs, last_pc); > > + break; > > + default: > > + qemu_plugin_vcpu_exception_cb(cs, last_pc); > > + break; > > > Shouldn't we handle EXCP_CALL_PAL with qemu_plugin_vcpu_hostcall_cb()?
Host calls are exclusively calls that are handled outside the emulation, on the host, regardless of whether they are hypervisor calls or not. In that respect EXCP_CALL_PAL looks to me like a regular exception that is handled by translated code within the emulation. Regards, Julian
