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>
This commit is contained in:
Helge Deller 2020-08-03 07:41:46 +02:00
parent a24d2cf30c
commit b899fe41ce
1 changed files with 6 additions and 2 deletions

View File

@ -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. */