xref: /minix3/sys/arch/x86/include/pic.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc /*	$NetBSD: pic.h,v 1.8 2015/04/27 07:03:58 knakahara Exp $	*/
21cd76c75SBen Gras 
31cd76c75SBen Gras #ifndef _X86_PIC_H
41cd76c75SBen Gras #define _X86_PIC_H
51cd76c75SBen Gras 
61cd76c75SBen Gras struct cpu_info;
71cd76c75SBen Gras 
81cd76c75SBen Gras /*
91cd76c75SBen Gras  * Structure common to all PIC softcs
101cd76c75SBen Gras  */
111cd76c75SBen Gras struct pic {
121cd76c75SBen Gras 	const char *pic_name;
131cd76c75SBen Gras 	int pic_type;
141cd76c75SBen Gras 	int pic_vecbase;
151cd76c75SBen Gras 	int pic_apicid;
161cd76c75SBen Gras 	__cpu_simple_lock_t pic_lock;
171cd76c75SBen Gras 	void (*pic_hwmask)(struct pic *, int);
181cd76c75SBen Gras 	void (*pic_hwunmask)(struct pic *, int);
191cd76c75SBen Gras 	void (*pic_addroute)(struct pic *, struct cpu_info *, int, int, int);
201cd76c75SBen Gras 	void (*pic_delroute)(struct pic *, struct cpu_info *, int, int, int);
211cd76c75SBen Gras 	bool (*pic_trymask)(struct pic *, int);
221cd76c75SBen Gras 	struct intrstub *pic_level_stubs;
231cd76c75SBen Gras 	struct intrstub *pic_edge_stubs;
241cd76c75SBen Gras 	struct ioapic_softc *pic_ioapic; /* if pic_type == PIC_IOAPIC */
25*0a6a1f1dSLionel Sambuc 	struct msipic *pic_msipic; /* if (pic_type == PIC_MSI) || (pic_type == PIC_MSIX) */
261cd76c75SBen Gras };
271cd76c75SBen Gras 
281cd76c75SBen Gras /*
291cd76c75SBen Gras  * PIC types.
301cd76c75SBen Gras  */
311cd76c75SBen Gras #define PIC_I8259	0
321cd76c75SBen Gras #define PIC_IOAPIC	1
331cd76c75SBen Gras #define PIC_LAPIC	2
34*0a6a1f1dSLionel Sambuc #define PIC_MSI		3
35*0a6a1f1dSLionel Sambuc #define PIC_MSIX	4
36*0a6a1f1dSLionel Sambuc #define PIC_SOFT	5
371cd76c75SBen Gras 
381cd76c75SBen Gras extern struct pic i8259_pic;
391cd76c75SBen Gras extern struct pic local_pic;
401cd76c75SBen Gras extern struct pic softintr_pic;
411cd76c75SBen Gras #endif
42