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