The integratorcp board has some onboard registers which can be used to raise IRQ and FIQ to the CPU; these outputs are supposed to be ORed together with the main ones from the PIC. We've never implemented this obscure bit of functionality, and instead call hw_error() if the guest does try to raise an interrupt this way.
Replace the hw_error() call with the more modern way to note unimplemented QEMU behaviour, a LOG_UNIMP log. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3406 Signed-off-by: Peter Maydell <[email protected]> --- hw/arm/integratorcp.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 164af03f7b..c25bbf3c82 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -23,7 +23,6 @@ #include "qemu/log.h" #include "qemu/error-report.h" #include "hw/char/pl011.h" -#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/sd/sd.h" #include "qom/object.h" @@ -178,10 +177,17 @@ static void integratorcm_set_ctrl(IntegratorCMState *s, uint32_t value) static void integratorcm_update(IntegratorCMState *s) { - /* ??? The CPU irq/fiq is raised when either the core module or base PIC - are active. */ - if (s->int_level & (s->irq_enabled | s->fiq_enabled)) - hw_error("Core module interrupt\n"); + /* + * ??? The CPU irq/fiq is raised when either the core module or base PIC + * are active. To implement this we would need to run these signals + * through an OR gate with the PIC outputs. In practice guests don't + * use this, which is intended for an external debugger. + */ + if (s->int_level & (s->irq_enabled | s->fiq_enabled)) { + qemu_log_mask(LOG_UNIMP, + "%s: raising IRQ/FIQ via core module registers is not implemented\n", + __func__); + } } static void integratorcm_write(void *opaque, hwaddr offset, -- 2.43.0
