summaryrefslogtreecommitdiffstats
path: root/sys/alpha/pci
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2000-12-04 17:21:46 +0000
committermjacob <mjacob@FreeBSD.org>2000-12-04 17:21:46 +0000
commit97cf6bcc60c2786fa1949119b0bb7e9e2fdce887 (patch)
tree1c216b3a0ab9d15e895047ed72894256b8842b27 /sys/alpha/pci
parent77dd285b0401334ee7129e0271e74019309c7609 (diff)
downloadFreeBSD-src-97cf6bcc60c2786fa1949119b0bb7e9e2fdce887.zip
FreeBSD-src-97cf6bcc60c2786fa1949119b0bb7e9e2fdce887.tar.gz
Fix for vanilla PC164 systems to use a slightly different PALcode magic
tweak to enable/disable interrupt sources. Seems to work. It is unclear how many of the PC164 models actually might needs this, and whether or not there are other hidden issues. Obtained from:Bernd Walter <ticso@cicely8.cicely.de>
Diffstat (limited to 'sys/alpha/pci')
-rw-r--r--sys/alpha/pci/pci_eb164_intr.s30
1 files changed, 30 insertions, 0 deletions
diff --git a/sys/alpha/pci/pci_eb164_intr.s b/sys/alpha/pci/pci_eb164_intr.s
index 7121e44..089f79d 100644
--- a/sys/alpha/pci/pci_eb164_intr.s
+++ b/sys/alpha/pci/pci_eb164_intr.s
@@ -63,3 +63,33 @@ LEAF(eb164_intr_disable,1)
call_pal PAL_cserve
RET
END(eb164_intr_disable)
+
+ .text
+LEAF(eb164_intr_enable_icsr,1)
+ mov a0, a1
+ ldiq a0, 0x34
+ call_pal PAL_cserve
+ ldiq a0, 0x08 /* Allow PALRES */
+ call_pal PAL_cserve
+ .long 0x66100118 /* hw_mfpr a0, icsr */
+ ldah a1, 0x0020 /* IMSK1 */
+ or a0, a1, a0
+ xor a0, a1, a0
+ .long 0x76100118 /* hw_mtpr a0, icsr */
+ ldiq a0, 0x09 /* Disable PALRES */
+ call_pal PAL_cserve
+ RET
+ END(eb164_intr_enable_icsr)
+
+ .text
+LEAF(eb164_intr_disable_icsr,1)
+ ldiq a0, 0x08 /* Allow PALRES */
+ call_pal PAL_cserve
+ .long 0x66100118 /* hw_mfpr a0, icsr */
+ ldah a1, 0x0020 /* IMSK1 */
+ or a0, a1, a0
+ .long 0x76100118 /* hw_mtpr a0, icsr */
+ ldiq a0, 0x09 /* Disable PALRES */
+ call_pal PAL_cserve
+ RET
+ END(eb164_intr_disable_icsr)
OpenPOWER on IntegriCloud