[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 26/30] mac_via: always clear ADB interrupt when switching to A/UX
|
From: |
Mark Cave-Ayland |
|
Subject: |
[PATCH 26/30] mac_via: always clear ADB interrupt when switching to A/UX mode |
|
Date: |
Wed, 24 May 2023 22:11:00 +0100 |
When the NetBSD kernel initialises it can leave the ADB interrupt asserted
depending upon where in the ADB poll cycle the MacOS ADB interrupt handler
is when the NetBSD kernel disables interrupts.
The NetBSD ADB driver uses the ADB interrupt state to determine if the ADB
is busy and refuses to send ADB commands unless it is clear. To ensure that
this doesn't happen, always clear the ADB interrupt when switching to A/UX
mode to ensure that the bus enumeration always occurs.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
hw/misc/mac_via.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c
index c1d2866ec9..ee44cb4437 100644
--- a/hw/misc/mac_via.c
+++ b/hw/misc/mac_via.c
@@ -875,6 +875,15 @@ static void via1_auxmode_update(MOS6522Q800VIA1State *v1s)
if (irq != oldirq) {
trace_via1_auxmode(irq);
qemu_set_irq(v1s->auxmode_irq, irq);
+
+ /*
+ * Clear the ADB interrupt. MacOS can leave VIA1B_vADBInt asserted
+ * (low) if a poll sequence doesn't complete before NetBSD disables
+ * interrupts upon boot. Fortunately NetBSD switches to the so-called
+ * "A/UX" interrupt mode after it initialises, so we can use this as
+ * a convenient place to clear the ADB interrupt for now.
+ */
+ s->b |= VIA1B_vADBInt;
}
}
--
2.30.2
- Re: [PATCH 22/30] mac_via: fix rtc command decoding from PRAM addresses 0x0 to 0xf, (continued)
- [PATCH 21/30] mac_via: work around underflow in TimeDBRA timing loop in SETUPTIMEK, Mark Cave-Ayland, 2023/05/24
- [PATCH 23/30] mac_via: fix rtc command decoding for the PRAM seconds registers, Mark Cave-Ayland, 2023/05/24
- [PATCH 20/30] swim: update IWM/ISM register block decoding, Mark Cave-Ayland, 2023/05/24
- [PATCH 24/30] mac_via: workaround NetBSD ADB bus enumeration issue, Mark Cave-Ayland, 2023/05/24
- [PATCH 25/30] mac_via: implement ADB_STATE_IDLE state if shift register in input mode, Mark Cave-Ayland, 2023/05/24
- [PATCH 16/30] q800: add Apple Sound Chip (ASC) audio to machine, Mark Cave-Ayland, 2023/05/24
- [PATCH 27/30] q800: add ESCC alias at 0xc000, Mark Cave-Ayland, 2023/05/24
- [PATCH 28/30] q800: add alias for MacOS toolbox ROM at 0x40000000, Mark Cave-Ayland, 2023/05/24
- [PATCH 26/30] mac_via: always clear ADB interrupt when switching to A/UX mode,
Mark Cave-Ayland <=
- [PATCH 29/30] mac_via: extend timer calibration hack to work with A/UX, Mark Cave-Ayland, 2023/05/24
- [PATCH 30/30] mac_via: work around QEMU unaligned MMIO access bug, Mark Cave-Ayland, 2023/05/24