summaryrefslogtreecommitdiff
path: root/sys-clipper.h
diff options
context:
space:
mode:
authorJason Thorpe <thorpej@me.com>2021-06-02 20:53:15 -0700
committerRichard Henderson <richard.henderson@linaro.org>2021-06-05 18:47:29 -0700
commitb5bee8227775b91e12c0b6635977d44f2d7fa376 (patch)
tree777bead041e0b8faa66d3794ef03fbaa943b0bfd /sys-clipper.h
parent4793b2841559003eab79ee77cf4b688a195c62e1 (diff)
downloadqemu-palcode-b5bee8227775b91e12c0b6635977d44f2d7fa376.zip
qemu-palcode-b5bee8227775b91e12c0b6635977d44f2d7fa376.tar.gz
qemu-palcode-b5bee8227775b91e12c0b6635977d44f2d7fa376.tar.bz2
Provide interrupt mapping information in PCI config registers.
Use system-specific information to program the interrupt line register with the interrupt mappings, which is what the SRM console does on real hardware; some operating systems (e.g. NetBSD) use this information rather than having interrupt mappings tables for every possible system variation. Signed-off-by: Jason Thorpe <thorpej@me.com> Message-Id: <20210603035317.6814-7-thorpej@me.com> [rth: Use inline not macro; fold -1 -> 0xff map into interface.] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'sys-clipper.h')
-rw-r--r--sys-clipper.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/sys-clipper.h b/sys-clipper.h
index 31094ff..7c1fa08 100644
--- a/sys-clipper.h
+++ b/sys-clipper.h
@@ -27,4 +27,21 @@
#define SYS_VARIATION (5 << 10)
#define SYS_REVISION 0
+#ifndef __ASSEMBLER__
+
+static inline uint8_t MAP_PCI_INTERRUPT(int slot, int pin, int class_id)
+{
+ uint8_t irq = 0xff; /* no interrupt mapping */
+
+ /* PCI-ISA bridge is hard-wired to IRQ 55 on real hardware, and comes in
+ at a different SCB vector; force the line register to 0xff.
+ Otherwise, see qemu hw/alpha/dp264.c:clipper_pci_map_irq() */
+ if (class_id != 0x0601 && pin >= 1 && pin <= 4)
+ irq = (slot + 1) * 4 + (pin - 1);
+
+ return irq;
+}
+
+#endif /* ! __ASSEMBLER__ */
+
#endif