nova: use branch supporting changing PDPTE by VMM

Fixes #1637
This commit is contained in:
Christian Prochaska 2015-07-24 14:35:00 +02:00 committed by Christian Helmuth
parent f87c573695
commit 2337dc03f4
3 changed files with 29 additions and 27 deletions

View File

@ -201,31 +201,32 @@ namespace Nova {
public:
enum {
ACDB = 1U << 0, /* eax, ecx, edx, ebx */
EBSD = 1U << 1, /* ebp, esi, edi */
ESP = 1U << 2,
EIP = 1U << 3,
EFL = 1U << 4, /* eflags */
ESDS = 1U << 5,
FSGS = 1U << 6,
CSSS = 1U << 7,
TR = 1U << 8,
LDTR = 1U << 9,
GDTR = 1U << 10,
IDTR = 1U << 11,
CR = 1U << 12,
DR = 1U << 13, /* DR7 */
SYS = 1U << 14, /* Sysenter MSRs CS, ESP, EIP */
QUAL = 1U << 15, /* exit qualification */
CTRL = 1U << 16, /* execution controls */
INJ = 1U << 17, /* injection info */
STA = 1U << 18, /* interruptibility state */
TSC = 1U << 19, /* time-stamp counter */
EFER = 1U << 20, /* EFER MSR */
FPU = 1U << 31, /* FPU state */
ACDB = 1U << 0, /* eax, ecx, edx, ebx */
EBSD = 1U << 1, /* ebp, esi, edi */
ESP = 1U << 2,
EIP = 1U << 3,
EFL = 1U << 4, /* eflags */
ESDS = 1U << 5,
FSGS = 1U << 6,
CSSS = 1U << 7,
TR = 1U << 8,
LDTR = 1U << 9,
GDTR = 1U << 10,
IDTR = 1U << 11,
CR = 1U << 12,
DR = 1U << 13, /* DR7 */
SYS = 1U << 14, /* Sysenter MSRs CS, ESP, EIP */
QUAL = 1U << 15, /* exit qualification */
CTRL = 1U << 16, /* execution controls */
INJ = 1U << 17, /* injection info */
STA = 1U << 18, /* interruptibility state */
TSC = 1U << 19, /* time-stamp counter */
EFER = 1U << 20, /* EFER MSR */
PDPTE = 1U << 21, /* PDPTE0 .. PDPTE3 */
FPU = 1U << 31, /* FPU state */
IRQ = EFL | STA | INJ | TSC,
ALL = 0x000fffff & ~CTRL,
IRQ = EFL | STA | INJ | TSC,
ALL = 0x000fffff & ~CTRL,
};
Mtd(mword_t value) : _value(value) { }
@ -464,6 +465,7 @@ namespace Nova {
unsigned ctrl[2];
unsigned long long reserved;
mword_t cr0, cr2, cr3, cr4;
mword_t pdpte[4];
#ifdef __x86_64__
mword_t cr8, efer;
#endif

View File

@ -1 +1 @@
abcaff7f0e4a24e8a8fc7b8b023a82a544094767
50a7e018fac5bd0bbb7c43ccb9681beae1c93db8

View File

@ -3,8 +3,8 @@ VERSION := git
DOWNLOADS := nova.git
URL(nova) := https://github.com/alex-ab/NOVA.git
# r9 branch
REV(nova) := e56cf80c88cac7d709dd2685e4966ddebb0feed5
# r9_pae branch
REV(nova) := 902ccd998fddbf140bb6f87b75d7c9df97e6380f
DIR(nova) := src/kernel/nova
PATCHES := $(wildcard $(REP_DIR)/patches/*.patch)