X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/de355530ae67247cbd0da700edb3a2a1dae884c2..6601e61aa18bf4f09af135ff61fc7f4771d23b06:/osfmk/i386/apic.h diff --git a/osfmk/i386/apic.h b/osfmk/i386/apic.h index 2b62c0d06..40e558ca9 100644 --- a/osfmk/i386/apic.h +++ b/osfmk/i386/apic.h @@ -23,6 +23,8 @@ * @OSF_COPYRIGHT@ * */ +#ifndef _I386_APIC_H_ +#define _I386_APIC_H_ #define LAPIC_START 0xFEE00000 #define LAPIC_SIZE 0x00000400 @@ -80,10 +82,12 @@ #define LAPIC_ICRD 0x00000310 #define LAPIC_ICRD_DEST_SHIFT 24 #define LAPIC_LVT_TIMER 0x00000320 +#define LAPIC_LVT_THERMAL 0x00000330 +#define LAPIC_LVT_PERFCNT 0x00000340 #define LAPIC_LVT_LINT0 0x00000350 #define LAPIC_LVT_LINT1 0x00000360 #define LAPIC_LVT_ERROR 0x00000370 -#define LAPIC_LVT_VECTOR_MASK 0x0000F +#define LAPIC_LVT_VECTOR_MASK 0x000FF #define LAPIC_LVT_DM_SHIFT 8 #define LAPIC_LVT_DM_MASK 0x00007 #define LAPIC_LVT_DM_FIXED 0x00000 @@ -95,9 +99,38 @@ #define LAPIC_LVT_TM_LEVEL 0x08000 #define LAPIC_LVT_MASKED 0x10000 #define LAPIC_LVT_PERIODIC 0x20000 -#define LAPIC_INITIAL_COUNT_TIMER 0x00000380 -#define LAPIC_CURRENT_COUNT_TIMER 0x00000390 +#define LAPIC_TIMER_INITIAL_COUNT 0x00000380 +#define LAPIC_TIMER_CURRENT_COUNT 0x00000390 #define LAPIC_TIMER_DIVIDE_CONFIG 0x000003E0 +/* divisor encoded by bits 0,1,3 with bit 2 always 0: */ +#define LAPIC_TIMER_DIVIDE_MASK 0x0000000F +#define LAPIC_TIMER_DIVIDE_2 0x00000000 +#define LAPIC_TIMER_DIVIDE_4 0x00000001 +#define LAPIC_TIMER_DIVIDE_8 0x00000002 +#define LAPIC_TIMER_DIVIDE_16 0x00000003 +#define LAPIC_TIMER_DIVIDE_32 0x00000008 +#define LAPIC_TIMER_DIVIDE_64 0x00000009 +#define LAPIC_TIMER_DIVIDE_128 0x0000000A +#define LAPIC_TIMER_DIVIDE_1 0x0000000B + +#ifndef ASSEMBLER +#include +typedef enum { + periodic, + one_shot +} lapic_timer_mode_t; +typedef enum { + divide_by_1 = LAPIC_TIMER_DIVIDE_1, + divide_by_2 = LAPIC_TIMER_DIVIDE_2, + divide_by_4 = LAPIC_TIMER_DIVIDE_4, + divide_by_8 = LAPIC_TIMER_DIVIDE_8, + divide_by_16 = LAPIC_TIMER_DIVIDE_16, + divide_by_32 = LAPIC_TIMER_DIVIDE_32, + divide_by_64 = LAPIC_TIMER_DIVIDE_64, + divide_by_128 = LAPIC_TIMER_DIVIDE_128 +} lapic_timer_divide_t; +typedef uint32_t lapic_timer_count_t; +#endif /* ASSEMBLER */ #define IOAPIC_START 0xFEC00000 #define IOAPIC_SIZE 0x00000020 @@ -123,3 +156,6 @@ #define IOA_R_R_IP_PLRITY_LOW 0x02000 #define IOA_R_R_TM_LEVEL 0x08000 #define IOA_R_R_MASKED 0x10000 + +#endif /* _I386_APIC_H_ */ +