Initialize Page Attribute Table
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
55cdae7c83
commit
5eaf7d63a3
@ -53,6 +53,14 @@
|
|||||||
/* Initial MXCSR control */
|
/* Initial MXCSR control */
|
||||||
#define INITIAL_MXCSR 0x1F80
|
#define INITIAL_MXCSR 0x1F80
|
||||||
|
|
||||||
|
/* Page Attributes Table types */
|
||||||
|
#define PAT_TYPE_STRONG_UC 0ULL
|
||||||
|
#define PAT_TYPE_USWC 1ULL
|
||||||
|
#define PAT_TYPE_WT 4ULL
|
||||||
|
#define PAT_TYPE_WP 5ULL
|
||||||
|
#define PAT_TYPE_WB 6ULL
|
||||||
|
#define PAT_TYPE_WEAK_UC 7ULL
|
||||||
|
|
||||||
/* Segment defintions */
|
/* Segment defintions */
|
||||||
#define SEGMENT_CS 0x2E
|
#define SEGMENT_CS 0x2E
|
||||||
#define SEGMENT_DS 0x3E
|
#define SEGMENT_DS 0x3E
|
||||||
@ -66,6 +74,7 @@
|
|||||||
#define X86_MSR_SYSENTER_ESP 0x00000175
|
#define X86_MSR_SYSENTER_ESP 0x00000175
|
||||||
#define X86_MSR_SYSENTER_EIP 0x00000176
|
#define X86_MSR_SYSENTER_EIP 0x00000176
|
||||||
#define X86_MSR_POWER_CONTROL 0x000001FC
|
#define X86_MSR_POWER_CONTROL 0x000001FC
|
||||||
|
#define X86_MSR_PAT 0x00000277
|
||||||
#define X86_MSR_EFER 0xC0000080
|
#define X86_MSR_EFER 0xC0000080
|
||||||
#define X86_MSR_STAR 0xC0000081
|
#define X86_MSR_STAR 0xC0000081
|
||||||
#define X86_MSR_LSTAR 0xC0000082
|
#define X86_MSR_LSTAR 0xC0000082
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
#include <xtdefs.h>
|
#include <xtdefs.h>
|
||||||
|
|
||||||
|
|
||||||
/* Architecture-related enumeration lists forward references */
|
/* Architecture-specific enumeration lists forward references */
|
||||||
typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES;
|
typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES;
|
||||||
typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
|
typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
|
||||||
|
|
||||||
/* Architecture-related structures forward references */
|
/* Architecture-specific structures forward references */
|
||||||
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
|
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
|
||||||
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
|
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
|
||||||
typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
|
typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
#include <xtdefs.h>
|
#include <xtdefs.h>
|
||||||
|
|
||||||
|
|
||||||
/* Architecture-related enumeration lists forward references */
|
/* Architecture-specific enumeration lists forward references */
|
||||||
typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES;
|
typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES;
|
||||||
typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
|
typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
|
||||||
|
|
||||||
/* Architecture-related structures forward references */
|
/* Architecture-specific structures forward references */
|
||||||
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
|
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
|
||||||
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
|
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
|
||||||
typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
|
typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
|
||||||
|
@ -209,6 +209,8 @@ XTAPI
|
|||||||
VOID
|
VOID
|
||||||
ArpInitializeProcessorRegisters(VOID)
|
ArpInitializeProcessorRegisters(VOID)
|
||||||
{
|
{
|
||||||
|
ULONGLONG PatAttributes;
|
||||||
|
|
||||||
/* Enable FXSAVE restore */
|
/* Enable FXSAVE restore */
|
||||||
ArWriteControlRegister(4, ArReadControlRegister(4) | CR4_FXSR);
|
ArWriteControlRegister(4, ArReadControlRegister(4) | CR4_FXSR);
|
||||||
|
|
||||||
@ -247,6 +249,11 @@ ArpInitializeProcessorRegisters(VOID)
|
|||||||
|
|
||||||
/* Enable No-Execute (NXE) in EFER MSR */
|
/* Enable No-Execute (NXE) in EFER MSR */
|
||||||
ArWriteModelSpecificRegister(X86_MSR_EFER, ArReadModelSpecificRegister(X86_MSR_EFER) | X86_MSR_EFER_NXE);
|
ArWriteModelSpecificRegister(X86_MSR_EFER, ArReadModelSpecificRegister(X86_MSR_EFER) | X86_MSR_EFER_NXE);
|
||||||
|
|
||||||
|
/* Initialize Page Attribute Table */
|
||||||
|
PatAttributes = (PAT_TYPE_WB << 0) | (PAT_TYPE_USWC << 8) | (PAT_TYPE_WEAK_UC << 16) | (PAT_TYPE_STRONG_UC << 24) |
|
||||||
|
(PAT_TYPE_WB << 32) | (PAT_TYPE_USWC << 40) | (PAT_TYPE_WEAK_UC << 48) | (PAT_TYPE_STRONG_UC << 56);
|
||||||
|
ArWriteModelSpecificRegister(X86_MSR_PAT, PatAttributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user