summaryrefslogtreecommitdiffstats
path: root/sys/mips/rmi/interrupt.h
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2010-02-20 16:30:29 +0000
committerrrs <rrs@FreeBSD.org>2010-02-20 16:30:29 +0000
commitc3a2e02803a9c8498b9d463374d0a78a037c4a57 (patch)
treed1f56abf0589eb2bade888e5ee80ccc8890df5c7 /sys/mips/rmi/interrupt.h
parent238d0be5d06d3c6bd1f038e62fdbe89fec04081c (diff)
downloadFreeBSD-src-c3a2e02803a9c8498b9d463374d0a78a037c4a57.zip
FreeBSD-src-c3a2e02803a9c8498b9d463374d0a78a037c4a57.tar.gz
Some fixes to the current RMI interrupt handling, changes in this patch are:
- (cleanup) remove rmi specific 'struct mips_intrhand' - this is no longer needed since 'struct intr_event' have all the required hooks - add xlr_cpu_establish_hardintr, which has args for pre/post ithread and filter hooks, so that the PCI code can add the PCI controller interrupt ack code here - make 'cpu_establish_hardintr' use the above function. - (fix) change type of eirr/eimr from register_t to uint64_t. These have to be 64bit otherwise we cannot handle interrupts from 32. - (fix) use eimr to mask eirr before checking interrupts, so that we will not handle masked interrupts. Obtained from: C. Jayachandran - c.jayachandran@gmail.com
Diffstat (limited to 'sys/mips/rmi/interrupt.h')
-rw-r--r--sys/mips/rmi/interrupt.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/mips/rmi/interrupt.h b/sys/mips/rmi/interrupt.h
index 013a8e9..247dc9f 100644
--- a/sys/mips/rmi/interrupt.h
+++ b/sys/mips/rmi/interrupt.h
@@ -25,7 +25,7 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *__FBSDID("$FreeBSD$")
* RMI_BSD */
#ifndef _RMI_INTERRUPT_H_
#define _RMI_INTERRUPT_H_
@@ -39,4 +39,14 @@
#define IRQ_MSGRING 6
#define IRQ_TIMER 7
+/*
+ * XLR needs custom pre and post handlers for PCI/PCI-e interrupts
+ * XXX: maybe follow i386 intsrc model
+ */
+void xlr_cpu_establish_hardintr(const char *, driver_filter_t *,
+ driver_intr_t *, void *, int, int, void **, void (*)(void *),
+ void (*)(void *), void (*)(void *), int (*)(void *, u_char));
+void xlr_mask_hard_irq(void *);
+void xlr_unmask_hard_irq(void *);
+
#endif /* _RMI_INTERRUPT_H_ */
OpenPOWER on IntegriCloud