@samitouri / QOSamiQemu / commits / f00cd31f18

hw/arm/integratorcp: Use LOG_UNIMP rather than hw_error()

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 <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20260508162013.2751001-3-peter.maydell@linaro.org

Peter Maydell committed May 8, 2026 at 17:20 UTC f00cd31f18d6f3ca99710109723220b7040b7732
1 file changed +11 -5
hw/arm/integratorcp.c
+11 -5
@@ -23,7 +23,6 @@
23 #include "qemu/log.h"
24 #include "qemu/error-report.h"
25 #include "hw/char/pl011.h"
26 -#include "hw/core/hw-error.h"
26 #include "hw/core/irq.h"
27 #include "hw/sd/sd.h"
28 #include "qom/object.h"
@@ -178,10 +177,17 @@ static void integratorcm_set_ctrl(IntegratorCMState *s, uint32_t value)
177
178 static void integratorcm_update(IntegratorCMState *s)
179 {
181 - /* ??? The CPU irq/fiq is raised when either the core module or base PIC
182 - are active. */
183 - if (s->int_level & (s->irq_enabled | s->fiq_enabled))
184 - hw_error("Core module interrupt\n");
180 + /*
181 + * ??? The CPU irq/fiq is raised when either the core module or base PIC
182 + * are active. To implement this we would need to run these signals
183 + * through an OR gate with the PIC outputs. In practice guests don't
184 + * use this, which is intended for an external debugger.
185 + */
186 + if (s->int_level & (s->irq_enabled | s->fiq_enabled)) {
187 + qemu_log_mask(LOG_UNIMP,
188 + "%s: raising IRQ/FIQ via core module registers is not implemented\n",
189 + __func__);
190 + }
191 }
192
193 static void integratorcm_write(void *opaque, hwaddr offset,