| 1 | /* $NetBSD: pic.h,v 1.8 2015/04/27 07:03:58 knakahara Exp $ */ |
| 2 | |
| 3 | #ifndef _X86_PIC_H |
| 4 | #define _X86_PIC_H |
| 5 | |
| 6 | struct cpu_info; |
| 7 | |
| 8 | /* |
| 9 | * Structure common to all PIC softcs |
| 10 | */ |
| 11 | struct pic { |
| 12 | const char *pic_name; |
| 13 | int pic_type; |
| 14 | int pic_vecbase; |
| 15 | int pic_apicid; |
| 16 | __cpu_simple_lock_t pic_lock; |
| 17 | void (*pic_hwmask)(struct pic *, int); |
| 18 | void (*pic_hwunmask)(struct pic *, int); |
| 19 | void (*pic_addroute)(struct pic *, struct cpu_info *, int, int, int); |
| 20 | void (*pic_delroute)(struct pic *, struct cpu_info *, int, int, int); |
| 21 | bool (*pic_trymask)(struct pic *, int); |
| 22 | struct intrstub *pic_level_stubs; |
| 23 | struct intrstub *pic_edge_stubs; |
| 24 | struct ioapic_softc *pic_ioapic; /* if pic_type == PIC_IOAPIC */ |
| 25 | struct msipic *pic_msipic; /* if (pic_type == PIC_MSI) || (pic_type == PIC_MSIX) */ |
| 26 | }; |
| 27 | |
| 28 | /* |
| 29 | * PIC types. |
| 30 | */ |
| 31 | #define PIC_I8259 0 |
| 32 | #define PIC_IOAPIC 1 |
| 33 | #define PIC_LAPIC 2 |
| 34 | #define PIC_MSI 3 |
| 35 | #define PIC_MSIX 4 |
| 36 | #define PIC_SOFT 5 |
| 37 | |
| 38 | extern struct pic i8259_pic; |
| 39 | extern struct pic local_pic; |
| 40 | extern struct pic softintr_pic; |
| 41 | #endif |
| 42 | |