target/hppa: call plugin trap callbacks

We identified a number of exceptions as interrupts, and we assume every
other exception is a (syncroneous) exceptions. PA-RISC appears to not
have any form of host-call.

This change places the hook for PA-RISC targets.

Signed-off-by: Julian Ganz <neither@nut.email>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20251027110344.2289945-15-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
Julian Ganz 2025-10-27 11:03:21 +00:00 committed by Alex Bennée
parent 14e1f3186c
commit ed7b86888e

View file

@ -24,6 +24,7 @@
#include "exec/helper-proto.h"
#include "hw/core/cpu.h"
#include "hw/hppa/hppa_hardware.h"
#include "qemu/plugin.h"
static void eval_interrupt(HPPACPU *cpu)
{
@ -95,6 +96,7 @@ void hppa_cpu_do_interrupt(CPUState *cs)
CPUHPPAState *env = &cpu->env;
int i = cs->exception_index;
uint64_t old_psw, old_gva_offset_mask;
uint64_t last_pc = cs->cc->get_pc(cs);
/* As documented in pa2.0 -- interruption handling. */
/* step 1 */
@ -212,6 +214,21 @@ void hppa_cpu_do_interrupt(CPUState *cs)
env->iasq_f = 0;
env->iasq_b = 0;
switch (i) {
case EXCP_HPMC:
case EXCP_POWER_FAIL:
case EXCP_RC:
case EXCP_EXT_INTERRUPT:
case EXCP_LPMC:
case EXCP_PER_INTERRUPT:
case EXCP_TOC:
qemu_plugin_vcpu_interrupt_cb(cs, last_pc);
break;
default:
qemu_plugin_vcpu_exception_cb(cs, last_pc);
break;
}
if (qemu_loglevel_mask(CPU_LOG_INT)) {
static const char * const names[] = {
[EXCP_HPMC] = "high priority machine check",