ReactOS 0.4.17-dev-966-gf06eace
x2apicp.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Private header file for x2APIC support in HAL
5 * COPYRIGHT: Copyright 2026 Alex Mendoza <05alex.mendozaa@gmail.com>
6 */
7
8#pragma once
9
10#define MSR_APIC_BASE 0x0000001B
11#define X2APIC_MSR_BASE 0x00000800
12#define X2APIC_MSR_ICR 0x00000830
13#define X2APIC_MSR_SELF_IPI 0x0000083F
14#define CPUID_X2APIC_FEATURE_BIT 21
15
16#include <pshpack1.h>
18{
20 struct
21 {
29 };
31#include <poppack.h>
32
33typedef enum _X2APIC_REGISTER
34{
35 X2APIC_ID_REG = 0x0020,
40
41#include <pshpack1.h>
43{
45 struct
46 {
58 };
60#include <poppack.h>
61
66{
67 return (X2APIC_REGISTER)(X2APIC_MSR_BASE + (Register / 0x10));
68}
69
74{
76}
77
79VOID
83{
85}
86
88VOID
91{
92 __writemsr(X2APIC_MSR_ICR, IcrValue.LongLong);
93}
94
98
99VOID
100NTAPI
unsigned char BOOLEAN
Definition: actypes.h:127
COMPILER_DEPENDENT_UINT64 UINT64
Definition: actypes.h:131
PPC_QUAL void __writemsr(const unsigned long Value)
Definition: intrin_ppc.h:748
PPC_QUAL unsigned long long __readmsr()
Definition: intrin_ppc.h:741
#define _In_
Definition: no_sal2.h:158
#define NTAPI
Definition: typedefs.h:36
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
#define FORCEINLINE
Definition: wdftypes.h:67
FORCEINLINE ULONG X2ApicRead(_In_ X2APIC_REGISTER Register)
Definition: x2apicp.h:72
union _X2APIC_BASE_ADDRESS_REGISTER X2APIC_BASE_ADDRESS_REGISTER
FORCEINLINE VOID X2ApicWrite(_In_ X2APIC_REGISTER Register, _In_ ULONG Value)
Definition: x2apicp.h:80
_X2APIC_REGISTER
Definition: x2apicp.h:34
@ X2APIC_SIVR_REG
Definition: x2apicp.h:37
@ X2APIC_EOI_REG
Definition: x2apicp.h:36
@ X2APIC_ID_REG
Definition: x2apicp.h:35
@ X2APIC_ICR0_REG
Definition: x2apicp.h:38
#define X2APIC_MSR_ICR
Definition: x2apicp.h:12
enum _X2APIC_REGISTER X2APIC_REGISTER
FORCEINLINE VOID X2ApicWriteIcr(_In_ X2APIC_INTERRUPT_COMMAND_REGISTER IcrValue)
Definition: x2apicp.h:89
VOID NTAPI X2ApicEnable(VOID)
BOOLEAN NTAPI X2ApicIsSupported(VOID)
union _X2APIC_INTERRUPT_COMMAND_REGISTER X2APIC_INTERRUPT_COMMAND_REGISTER
FORCEINLINE X2APIC_REGISTER X2ApicMsrFromRegister(_In_ X2APIC_REGISTER Register)
Definition: x2apicp.h:64
#define X2APIC_MSR_BASE
Definition: x2apicp.h:11