18#define X2_MSR_BASE 0x800 
   19#define ICROffset   0x300 
   20#define TO_X2(x)    (x / 0x10) 
   22#define APIC_DEFAULT_PHYS_BASE 0xfee00000 
   23#define APIC_BSP               (1UL << 8) 
   24#define APIC_EXTD              (1UL << 10) 
   25#define APIC_EN                (1UL << 11) 
   28#define APIC_LVR_MASK       0xFF00FF 
   29#define GET_APIC_VERSION(x) ((x)&0xFFu) 
   30#define GET_APIC_MAXLVT(x)  (((x) >> 16) & 0xFFu) 
   32#define APIC_INTEGRATED(x) (1) 
   33#define APIC_XAPIC(x)      ((x) >= 0x14) 
   34#define APIC_TASKPRI       0x80 
   35#define APIC_TPRI_MASK     0xFFu 
   36#define APIC_ARBPRI        0x90 
   37#define APIC_ARBPRI_MASK   0xFFu 
   38#define APIC_PROCPRI       0xA0 
   40#define APIC_EIO_ACK                 0x0 
   43#define APIC_LDR_MASK                (0xFFu << 24) 
   44#define GET_APIC_LOGICAL_ID(x)       (((x) >> 24) & 0xFFu) 
   45#define SET_APIC_LOGICAL_ID(x)       (((x) << 24)) 
   46#define APIC_ALL_CPUS                0xFFu 
   48#define APIC_DFR_CLUSTER             0x0FFFFFFFul 
   49#define APIC_DFR_FLAT                0xFFFFFFFFul 
   51#define APIC_SPIV_FOCUS_DISABLED     (1 << 9) 
   52#define APIC_SPIV_APIC_ENABLED       (1 << 8) 
   54#define APIC_ISR_NR                  0x8  
   58#define APIC_ESR_SEND_CS             0x00001 
   59#define APIC_ESR_RECV_CS             0x00002 
   60#define APIC_ESR_SEND_ACC            0x00004 
   61#define APIC_ESR_RECV_ACC            0x00008 
   62#define APIC_ESR_SENDILL             0x00020 
   63#define APIC_ESR_RECVILL             0x00040 
   64#define APIC_ESR_ILLREGA             0x00080 
   65#define APIC_CMCI                    0x2F0 
   67#define APIC_DEST_SELF               0x40000 
   68#define APIC_DEST_ALLINC             0x80000 
   69#define APIC_DEST_ALLBUT             0xC0000 
   70#define APIC_ICR_RR_MASK             0x30000 
   71#define APIC_ICR_RR_INVALID          0x00000 
   72#define APIC_ICR_RR_INPROG           0x10000 
   73#define APIC_ICR_RR_VALID            0x20000 
   74#define APIC_INT_LEVELTRIG           0x08000 
   75#define APIC_INT_ASSERT              0x04000 
   76#define APIC_ICR_BUSY                0x01000 
   77#define APIC_DEST_LOGICAL            0x00800 
   78#define APIC_DEST_PHYSICAL           0x00000 
   79#define APIC_DM_FIXED                0x00000 
   80#define APIC_DM_LOWEST               0x00100 
   81#define APIC_DM_SMI                  0x00200 
   82#define APIC_DM_REMRD                0x00300 
   83#define APIC_DM_NMI                  0x00400 
   84#define APIC_DM_INIT                 0x00500 
   85#define APIC_DM_STARTUP              0x00600 
   86#define APIC_DM_EXTINT               0x00700 
   87#define APIC_VECTOR_MASK             0x000FF 
   88#define APIC_ICR2                    0x310 
   89#define GET_APIC_DEST_FIELD(x)       (((x) >> 24) & 0xFF) 
   90#define SET_APIC_DEST_FIELD(x)       ((x) << 24) 
   91#define APIC_LVTT                    0x320 
   92#define APIC_LVTTHMR                 0x330 
   93#define APIC_LVTPC                   0x340 
   94#define APIC_LVT0                    0x350 
   95#define APIC_LVT_TIMER_BASE_MASK     (0x3 << 18) 
   96#define GET_APIC_TIMER_BASE(x)       (((x) >> 18) & 0x3) 
   97#define SET_APIC_TIMER_BASE(x)       (((x) << 18)) 
   98#define APIC_TIMER_BASE_CLKIN        0x0 
   99#define APIC_TIMER_BASE_TMBASE       0x1 
  100#define APIC_TIMER_BASE_DIV          0x2 
  101#define APIC_LVT_TIMER_MASK          (3 << 17) 
  102#define APIC_LVT_TIMER_ONESHOT       (0 << 17) 
  103#define APIC_LVT_TIMER_PERIODIC      (1 << 17) 
  104#define APIC_LVT_TIMER_TSCDEADLINE   (2 << 17) 
  105#define APIC_LVT_MASKED              (1 << 16) 
  106#define APIC_LVT_LEVEL_TRIGGER       (1 << 15) 
  107#define APIC_LVT_REMOTE_IRR          (1 << 14) 
  108#define APIC_INPUT_POLARITY          (1 << 13) 
  109#define APIC_SEND_PENDING            (1 << 12) 
  110#define APIC_MODE_MASK               0x700 
  111#define GET_APIC_DELIVERY_MODE(x)    (((x) >> 8) & 0x7) 
  112#define SET_APIC_DELIVERY_MODE(x, y) (((x) & ~0x700) | ((y) << 8)) 
  113#define APIC_MODE_FIXED              0x0 
  114#define APIC_MODE_NMI                0x4 
  115#define APIC_MODE_EXTINT             0x7 
  116#define APIC_LVT1                    0x360 
  117#define APIC_LVTERR                  0x370 
  118#define APIC_TMICT                   0x380 
  119#define APIC_TMCCT                   0x390 
  120#define APIC_TDCR                    0x3E0 
  121#define APIC_SELF_IPI                0x3F0 
  122#define APIC_TDR_DIV_TMBASE          (1 << 2) 
  123#define APIC_TDR_DIV_1               0xB 
  124#define APIC_TDR_DIV_2               0x0 
  125#define APIC_TDR_DIV_4               0x1 
  126#define APIC_TDR_DIV_8               0x2 
  127#define APIC_TDR_DIV_16              0x3 
  128#define APIC_TDR_DIV_32              0x8 
  129#define APIC_TDR_DIV_64              0x9 
  130#define APIC_TDR_DIV_128             0xA 
  131#define APIC_EILVT0                  0x500 
  132#define APIC_EILVT_NR_AMD_K8         1  
  133#define APIC_EILVT_NR_AMD_10H        4 
  134#define APIC_EILVT_LVTOFF(x)         (((x) >> 4) & 0xF) 
  135#define APIC_EILVT_MSG_FIX           0x0 
  136#define APIC_EILVT_MSG_SMI           0x2 
  137#define APIC_EILVT_MSG_NMI           0x4 
  138#define APIC_EILVT_MSG_EXT           0x7 
  139#define APIC_EILVT_MASKED            (1 << 16) 
  140#define APIC_EILVT1                  0x510 
  141#define APIC_EILVT2                  0x520 
  142#define APIC_EILVT3                  0x530 
  144#define APIC_BASE_MSR 0x800 
VOID ApicTriggerGenericNmi()
Trigger NMI on X2APIC or APIC based on Current system.
Definition Apic.c:47
VOID ApicUninitialize()
Uninitialize APIC.
Definition Apic.c:98
BOOLEAN ApicInitialize()
Initialize APIC.
Definition Apic.c:65
VOID ApicSelfIpi(UINT32 Vector)
Self IPI the current core.
Definition Apic.c:114
UCHAR BOOLEAN
Definition BasicTypes.h:39
#define VOID
Definition BasicTypes.h:33
unsigned int UINT32
Definition BasicTypes.h:48