vivier / qemu-m68k

Other
40 stars 6 forks source link

SONIC interrupt mapping #45

Open fthain opened 4 years ago

fthain commented 4 years ago

Most Quadras support an alternative interrupt mapping that is used by A/UX and Linux. It moves the SONIC ethernet IRQ from level 2 (VIA2) to level 3. If you patch Linux to disable this mapping (see patch inhibit-via_alt_mapping.txt), Linux crashes with "unexpected interrupt from 108". This error refers to the level 3 interrupt, since (108 >> 2) - 24 = 3. QEMU raises the level 3 interrupt regardless of via2[vBufB]. In this case, QEMU should raise the NuBus slot 9 interrupt (IRQ 56) instead. I've confirmed this on a Centris 610 (but not a Quadra 800). This bug is no problem for mainline Linux but could be a problem for some other operating systems.