aboutsummaryrefslogtreecommitdiff
path: root/hw/hppa
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2020-08-03 07:41:46 +0200
committerHelge Deller <deller@gmx.de>2020-08-26 23:04:00 +0200
commitb899fe41ceb9c684fa135a081f4c9749400a61d3 (patch)
tree2f18e825b337fe201577f8ddf44ebf1baa12af93 /hw/hppa
parenta24d2cf30c06e85dd06c68ad2f162ca53f3b9bc8 (diff)
hw/hppa/lasi: Don't abort on invalid IMR value
NetBSD initializes the LASI IMR value with 0xffffffff to disable all LASI interrupts. This triggered an assert() and stopped the emulation. By replacing the check with a warning in the guest log we now allow NetBSD to boot again. Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'hw/hppa')
-rw-r--r--hw/hppa/lasi.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/hw/hppa/lasi.c b/hw/hppa/lasi.c
index ffcbb988b8..194aa3e619 100644
--- a/hw/hppa/lasi.c
+++ b/hw/hppa/lasi.c
@@ -11,6 +11,7 @@
#include "qemu/osdep.h"
#include "qemu/units.h"
+#include "qemu/log.h"
#include "qapi/error.h"
#include "cpu.h"
#include "trace.h"
@@ -170,8 +171,11 @@ static MemTxResult lasi_chip_write_with_attrs(void *opaque, hwaddr addr,
/* read-only. */
break;
case LASI_IMR:
- s->imr = val; /* 0x20 ?? */
- assert((val & LASI_IRQ_BITS) == val);
+ s->imr = val;
+ if (((val & LASI_IRQ_BITS) != val) && (val != 0xffffffff))
+ qemu_log_mask(LOG_GUEST_ERROR,
+ "LASI: tried to set invalid %lx IMR value.\n",
+ (unsigned long) val);
break;
case LASI_IPR:
/* Any write to IPR clears the register. */