aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/pae/pgtbl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/pae/pgtbl.c')
-rw-r--r--src/cpu/x86/pae/pgtbl.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/cpu/x86/pae/pgtbl.c b/src/cpu/x86/pae/pgtbl.c
index 0c4bff5067..063c9aba38 100644
--- a/src/cpu/x86/pae/pgtbl.c
+++ b/src/cpu/x86/pae/pgtbl.c
@@ -17,6 +17,7 @@
#include <console/console.h>
#include <cpu/cpu.h>
#include <arch/cpu.h>
+#include <cpu/x86/msr.h>
#include <cpu/x86/pae.h>
#include <rules.h>
#include <string.h>
@@ -119,3 +120,23 @@ void *map_2M_page(unsigned long page)
return result;
}
#endif
+
+void paging_set_nxe(int enable)
+{
+ msr_t msr = rdmsr(IA32_EFER);
+
+ if (enable)
+ msr.lo |= EFER_NXE;
+ else
+ msr.lo &= ~EFER_NXE;
+
+ wrmsr(IA32_EFER, msr);
+}
+
+void paging_set_pat(uint64_t pat)
+{
+ msr_t msr;
+ msr.lo = pat;
+ msr.hi = pat >> 32;
+ wrmsr(MSR_IA32_PAT, msr);
+}