]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/idle_pt.c
xnu-1699.22.73.tar.gz
[apple/xnu.git] / osfmk / i386 / idle_pt.c
index ebbfc556d9b95dea08f98bcd660dba0380b40415..663375acf4eb0397a6634cfc07c39e22a295abc8 100644 (file)
  */
 #include <i386/pmap.h>
 
-pml4_entry_t           IdlePML4[PTE_PER_PAGE] __attribute__((section("__INITPT, __data"))) = {
+#define PML4_PROT (INTEL_PTE_VALID | INTEL_PTE_WRITE)
+pml4_entry_t   IdlePML4[PTE_PER_PAGE] __attribute__((section("__INITPT, __data"))) = {
 #ifdef __x86_64__
-               [  0] = ((uint64_t)(INITPT_SEG_BASE + PAGE_SIZE) | INTEL_PTE_VALID | INTEL_PTE_WRITE),
-               [KERNEL_PML4_INDEX] = ((uint64_t)(INITPT_SEG_BASE + PAGE_SIZE) | INTEL_PTE_VALID | INTEL_PTE_WRITE),
+               [  0]
+                       = ((uint64_t)(INITPT_SEG_BASE + PAGE_SIZE) | PML4_PROT),
+#if KERNEL_PML4_INDEX != 0
+               [KERNEL_PML4_INDEX]
+                       = ((uint64_t)(INITPT_SEG_BASE + PAGE_SIZE) | PML4_PROT),
+#endif
 #endif
        };
 
@@ -39,7 +44,7 @@ pml4_entry_t          IdlePML4[PTE_PER_PAGE] __attribute__((section("__INITPT, __data"))
 #elif defined(__i386__)
 #define PDPT_PROT (INTEL_PTE_VALID)
 #endif
-pdpt_entry_t           IdlePDPT[PTE_PER_PAGE] __attribute__((section("__INITPT, __data"))) = {
+pdpt_entry_t   IdlePDPT[PTE_PER_PAGE] __attribute__((section("__INITPT, __data"))) = {
                [0] = ((uint64_t)(INITPT_SEG_BASE + 2*PAGE_SIZE) | PDPT_PROT), 
                [1] = ((uint64_t)(INITPT_SEG_BASE + 3*PAGE_SIZE) | PDPT_PROT), 
                [2] = ((uint64_t)(INITPT_SEG_BASE + 4*PAGE_SIZE) | PDPT_PROT), 
@@ -50,6 +55,8 @@ pdpt_entry_t          IdlePDPT[PTE_PER_PAGE] __attribute__((section("__INITPT, __data"))
 #error Please update idle_pt.c to reflect the new value of NPGPTD
 #endif
 
+#if MACHINE_BOOTSTRAPPTD
+
 #define ID_MAP_2MEG(x) [(x)] = ((((uint64_t)(x)) << 21) | (INTEL_PTE_PS | INTEL_PTE_VALID | INTEL_PTE_WRITE)),
 
 #define L0(x,n) x(n)
@@ -70,3 +77,4 @@ pdpt_entry_t          IdlePDPT[PTE_PER_PAGE] __attribute__((section("__INITPT, __data"))
 pd_entry_t             BootstrapPTD[2048] __attribute__((section("__INITPT, __data"))) = {
        FOR_0_TO_2047(ID_MAP_2MEG)
 };
+#endif /* MACHINE_BOOTSTRAPPTD */