XenevaOS
Loading...
Searching...
No Matches
apic.h
Go to the documentation of this file.
1
30#ifndef __APIC_H__
31#define __APIC_H__
32
33#include <stdint.h>
34#include <aurora.h>
35
36#define IA32_APIC_BASE_MSR 0x1B
37#define IA32_APIC_BASE_MSR_BSP 0x100
38#define IA32_APIC_BASE_MSR_X2APIC 0x400
39#define IA32_APIC_BASE_MSR_ENABLE 0x800
40
41#define IA32_X2APIC_REGISTER_BASE_MSR 0x800
42#define IA32_APIC_SVR_ENABLE 0x100
43
44#define IA32_APIC_LVT_MAST 0x10000
45
46#define LAPIC_SPURIOUS 0x00f0
47#define LAPIC_LVT_TIMER 0x0320
48#define LAPIC_LVT_LINT0 0x0350
49#define LAPIC_LVT_LINT1 0x0360
50
51#define LAPIC_TIMER_INIT 0x0380
52#define LAPIC_TIMER_CUR 0x0390
53#define LAPIC_TIMER_DIV 0x03e0
54
55#define LAPIC_REGISTER_ID 0x2
56#define LAPIC_REGISTER_EOI 0xB
57#define LAPIC_REGISTER_SVR 0xF
58#define LAPIC_REGISTER_ICR 0x30
59#define LAPIC_REGISTER_LVT_TIMER 0x32
60#define LAPIC_REGISTER_LVT_ERROR 0x37
61
62#define LAPIC_REGISTER_TMRINITCNT 0x38
63#define LAPIC_REGISTER_TMRCURRCNT 0x39
64#define LAPIC_REGISTER_TMRDIV 0x3E
65
66/*
67 * ReadAPICRegister -- reads a register of apic
68 * @param reg -- register to read
69 */
71
72/*
73 * WriteAPICRegister -- writes a value to a register
74 * of APIC
75 * @param reg -- register to select
76 * @param value -- value to write
77 */
78extern void WriteAPICRegister(uint16_t reg, uint64_t value);
79/*
80* AuAPICInitialise -- initialise the APIC
81* @param bsp -- is this is initialised from bsp
82* processor ?
83*/
84extern void AuAPICInitialise(bool bsp);
85
86/*
87* APICLocalEOI -- sends end_of_interrupt message
88* to APIC
89*/
90extern void APICLocalEOI();
91
93
94/*
95 * X2APICSupported -- is x2apic supported ?
96 */
97extern bool X2APICSupported();
98
99/*
100 *AuAPICGetInterruptPeriod -- returns the current interrupt
101 * period timing in microsecond (us)
102 */
104
105#endif
#define AU_EXTERN
Definition aurora.h:50
#define AU_EXPORT
Definition aurora.h:38
unsigned int uint32_t
Definition acefiex.h:163
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
uint64_t AuAPICGetInterruptPeriod()
Definition apic.cpp:222
void WriteAPICRegister(uint16_t reg, uint64_t value)
Definition apic.cpp:71
bool X2APICSupported()
Definition apic.cpp:99
uint64_t ReadAPICRegister(uint16_t reg)
Definition apic.cpp:49
void AuAPICInitialise(bool bsp)
Definition apic.cpp:149
AU_EXTERN AU_EXPORT void APICTimerSleep(uint32_t ms)
Definition apic.cpp:212
void APICLocalEOI()
Definition apic.cpp:95