]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/lapic.h
xnu-4570.20.62.tar.gz
[apple/xnu.git] / osfmk / i386 / lapic.h
index 219332ae4d9d8815f7b7f5344937daf6ab580553..ca9db2dbfb8919d035908db29d04d8b9c5c8e284 100644 (file)
@@ -228,6 +228,7 @@ typedef uint32_t lapic_timer_count_t;
 #define LAPIC_CMCI_INTERRUPT           0x9
 #define LAPIC_PMC_SW_INTERRUPT         0x8
 #define LAPIC_PM_INTERRUPT             0x7
+#define LAPIC_KICK_INTERRUPT           0x6
 
 #define LAPIC_PMC_SWI_VECTOR           (LAPIC_DEFAULT_INTERRUPT_BASE + LAPIC_PMC_SW_INTERRUPT)
 #define LAPIC_TIMER_VECTOR             (LAPIC_DEFAULT_INTERRUPT_BASE + LAPIC_TIMER_INTERRUPT)
@@ -301,6 +302,12 @@ static inline void lapic_set_timer_func(i386_intr_func_t func)
 {
        lapic_set_intr_func(LAPIC_VECTOR(TIMER), func);
 }
+/* We don't support dynamic adjustment of the LAPIC timer base vector here
+ * it's effectively incompletely supported elsewhere as well.
+ */
+static inline void     lapic_timer_swi(void) {
+       __asm__ __volatile__("int %0" :: "i"(LAPIC_DEFAULT_INTERRUPT_BASE + LAPIC_TIMER_INTERRUPT):"memory");
+}
 
 static inline void     lapic_set_thermal_func(i386_intr_func_t func)
 {
@@ -320,6 +327,8 @@ extern boolean_t    lapic_is_interrupting(uint8_t vector);
 extern void            lapic_interrupt_counts(uint64_t intrs[256]);
 extern void            lapic_disable_timer(void);
 
+extern uint8_t         lapic_get_cmci_vector(void);
+
 #define        MAX_LAPICIDS    (LAPIC_ID_MAX+1)
 #ifdef MP_DEBUG
 #define LAPIC_CPU_MAP_DUMP()   lapic_cpu_map_dump()