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 | |