&IDTVEC(ioapic_intr191)
};
+#define IOAPIC_HWI_SYSCALL (IDT_OFFSET_SYSCALL - IDT_OFFSET)
+
static struct ioapic_irqmap {
int im_type; /* IOAPIC_IMT_ */
enum intr_trigger im_trig;
#define IOAPIC_IMT_UNUSED 0
#define IOAPIC_IMT_RESERVED 1
#define IOAPIC_IMT_LINE 2
+#define IOAPIC_IMT_SYSCALL 3
extern void IOAPIC_INTREN(int);
extern void IOAPIC_INTRDIS(int);
u_long ef;
if (intr < 0 || intr >= IOAPIC_HWI_VECTORS ||
- intr == IDT_OFFSET_SYSCALL - IDT_OFFSET)
+ intr == IOAPIC_HWI_SYSCALL)
return EINVAL;
ef = read_eflags();
int intr;
for (intr = 0; intr < IOAPIC_HWI_VECTORS; ++intr) {
- if (intr == IDT_OFFSET_SYSCALL - IDT_OFFSET)
+ if (intr == IOAPIC_HWI_SYSCALL)
continue;
setidt(IDT_OFFSET + intr, ioapic_intr[intr], SDT_SYS386IGT,
SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
map->im_trig = INTR_TRIGGER_EDGE;
map->im_gsi = i;
}
+ ioapic_irqmaps[IOAPIC_HWI_SYSCALL].im_type = IOAPIC_IMT_SYSCALL;
}
#endif /* SMP */
#define ICU_IMT_UNUSED 0 /* KEEP THIS */
#define ICU_IMT_RESERVED 1
#define ICU_IMT_LINE 2
+#define ICU_IMT_SYSCALL 3
extern void ICU_INTREN(int);
extern void ICU_INTRDIS(int);
}
}
}
+ icu_irqmaps[IDT_OFFSET_SYSCALL - IDT_OFFSET].im_type = ICU_IMT_SYSCALL;
}
&IDTVEC(ioapic_intr191)
};
+#define IOAPIC_HWI_SYSCALL (IDT_OFFSET_SYSCALL - IDT_OFFSET)
+
static struct ioapic_irqmap {
int im_type; /* IOAPIC_IMT_ */
enum intr_trigger im_trig;
#define IOAPIC_IMT_UNUSED 0
#define IOAPIC_IMT_RESERVED 1
#define IOAPIC_IMT_LINE 2
+#define IOAPIC_IMT_SYSCALL 3
extern void IOAPIC_INTREN(int);
extern void IOAPIC_INTRDIS(int);
register_t ef;
if (intr < 0 || intr >= IOAPIC_HWI_VECTORS ||
- intr == IDT_OFFSET_SYSCALL - IDT_OFFSET)
+ intr == IOAPIC_HWI_SYSCALL)
return EINVAL;
ef = read_rflags();
int intr;
for (intr = 0; intr < IOAPIC_HWI_VECTORS; ++intr) {
- if (intr == IDT_OFFSET_SYSCALL - IDT_OFFSET)
+ if (intr == IOAPIC_HWI_SYSCALL)
continue;
setidt(IDT_OFFSET + intr, ioapic_intr[intr], SDT_SYSIGT,
SEL_KPL, 0);
map->im_trig = INTR_TRIGGER_EDGE;
map->im_gsi = i;
}
+ ioapic_irqmaps[IOAPIC_HWI_SYSCALL].im_type = IOAPIC_IMT_SYSCALL;
}
#endif /* SMP */
#define ICU_IMT_UNUSED 0 /* KEEP THIS */
#define ICU_IMT_RESERVED 1
#define ICU_IMT_LINE 2
+#define ICU_IMT_SYSCALL 3
extern void ICU_INTREN(int);
extern void ICU_INTRDIS(int);
}
}
}
+ icu_irqmaps[i].im_type = ICU_IMT_SYSCALL;
}