Changeset View
Changeset View
Standalone View
Standalone View
sys/x86/isa/atpic.c
Show First 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | |||||
#define INTSRC(irq) \ | #define INTSRC(irq) \ | ||||
{ { &atpics[(irq) / 8].at_pic }, IDTVEC(atpic_intr ## irq ), \ | { { &atpics[(irq) / 8].at_pic }, IDTVEC(atpic_intr ## irq ), \ | ||||
IDTVEC(atpic_intr ## irq ## _pti), (irq) % 8 } | IDTVEC(atpic_intr ## irq ## _pti), (irq) % 8 } | ||||
struct atpic { | struct atpic { | ||||
struct pic at_pic; | struct pic at_pic; | ||||
int at_ioaddr; | int at_ioaddr; | ||||
int at_irqbase; | u_int at_irqbase; | ||||
uint8_t at_intbase; | uint8_t at_intbase; | ||||
uint8_t at_imen; | uint8_t at_imen; | ||||
}; | }; | ||||
struct atpic_intsrc { | struct atpic_intsrc { | ||||
struct intsrc at_intsrc; | struct intsrc at_intsrc; | ||||
inthand_t *at_intr, *at_intr_pti; | inthand_t *at_intr, *at_intr_pti; | ||||
int at_irq; /* Relative to PIC base. */ | u_int at_irq; /* Relative to PIC base. */ | ||||
enum intr_trigger at_trigger; | enum intr_trigger at_trigger; | ||||
u_long at_count; | u_long at_count; | ||||
u_long at_straycount; | u_long at_straycount; | ||||
}; | }; | ||||
static void atpic_register_sources(struct pic *pic); | static void atpic_register_sources(struct pic *pic); | ||||
static void atpic_enable_source(struct intsrc *isrc); | static void atpic_enable_source(struct intsrc *isrc); | ||||
static void atpic_disable_source(struct intsrc *isrc, int eoi); | static void atpic_disable_source(struct intsrc *isrc, int eoi); | ||||
static void atpic_eoi_master(struct intsrc *isrc); | static void atpic_eoi_master(struct intsrc *isrc); | ||||
static void atpic_eoi_slave(struct intsrc *isrc); | static void atpic_eoi_slave(struct intsrc *isrc); | ||||
static void atpic_enable_intr(struct intsrc *isrc); | static void atpic_enable_intr(struct intsrc *isrc); | ||||
static void atpic_disable_intr(struct intsrc *isrc); | static void atpic_disable_intr(struct intsrc *isrc); | ||||
static int atpic_vector(struct intsrc *isrc); | static u_int atpic_vector(struct intsrc *isrc); | ||||
static void atpic_resume(struct pic *pic, bool suspend_cancelled); | static void atpic_resume(struct pic *pic, bool suspend_cancelled); | ||||
static int atpic_source_pending(struct intsrc *isrc); | static int atpic_source_pending(struct intsrc *isrc); | ||||
static int atpic_config_intr(struct intsrc *isrc, enum intr_trigger trig, | static int atpic_config_intr(struct intsrc *isrc, enum intr_trigger trig, | ||||
enum intr_polarity pol); | enum intr_polarity pol); | ||||
static int atpic_assign_cpu(struct intsrc *isrc, u_int apic_id); | static int atpic_assign_cpu(struct intsrc *isrc, u_int apic_id); | ||||
static void i8259_init(struct atpic *pic, int slave); | static void i8259_init(struct atpic *pic, int slave); | ||||
static struct atpic atpics[] = { | static struct atpic atpics[] = { | ||||
▲ Show 20 Lines • Show All 153 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
} | } | ||||
static void | static void | ||||
atpic_disable_intr(struct intsrc *isrc) | atpic_disable_intr(struct intsrc *isrc) | ||||
{ | { | ||||
} | } | ||||
static int | static u_int | ||||
atpic_vector(struct intsrc *isrc) | atpic_vector(struct intsrc *isrc) | ||||
{ | { | ||||
struct atpic_intsrc *ai = (struct atpic_intsrc *)isrc; | struct atpic_intsrc *ai = (struct atpic_intsrc *)isrc; | ||||
struct atpic *ap = (struct atpic *)isrc->is_pic; | struct atpic *ap = (struct atpic *)isrc->is_pic; | ||||
return (IRQ(ap, ai)); | return (IRQ(ap, ai)); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 298 Lines • Show Last 20 Lines |