]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/x86_64/pmap.c
xnu-2782.20.48.tar.gz
[apple/xnu.git] / osfmk / x86_64 / pmap.c
index 8e1b559025c4e5ef95448b0070906cd573ad0d51..51b1b3348485e964ae2c34acffa21e73e9a5787a 100644 (file)
@@ -320,6 +320,13 @@ pmap_cpu_init(void)
                        pmap_smep_enabled = TRUE;
                }
        }
+       if (cpuid_leaf7_features() & CPUID_LEAF7_FEATURE_SMAP) {
+               boolean_t nsmap;
+               if (!PE_parse_boot_argn("-pmap_smap_disable", &nsmap, sizeof(nsmap))) {
+                       set_cr4(get_cr4() | CR4_SMAP);
+                       pmap_smap_enabled = TRUE;
+               }
+       }
 
        if (cdp->cpu_fixed_pmcs_enabled) {
                boolean_t enable = TRUE;
@@ -448,6 +455,8 @@ pmap_bootstrap(
 
        if (pmap_smep_enabled)
                printf("PMAP: Supervisor Mode Execute Protection enabled\n");
+       if (pmap_smap_enabled)
+               printf("PMAP: Supervisor Mode Access Protection enabled\n");
 
 #if    DEBUG
        printf("Stack canary: 0x%lx\n", __stack_chk_guard[0]);