]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/pmap_pcid.h
xnu-4570.41.2.tar.gz
[apple/xnu.git] / osfmk / i386 / pmap_pcid.h
index fc0854d7ee8ee75646721b47cbb993a75494baa2..372f0a4ed67b3d42c153739d886564fdbf47625a 100644 (file)
@@ -61,8 +61,12 @@ tlb_flush_global(void) {
         * count of kernel invalidations, but that scheme
         * has its disadvantages as well.
         */
-       set_cr4(cr4 & ~CR4_PGE);
-       set_cr4(cr4 | CR4_PGE); 
+       if (cr4 & CR4_PGE) {
+               set_cr4(cr4 & ~CR4_PGE);
+               set_cr4(cr4 | CR4_PGE);
+       } else {
+               set_cr3_raw(get_cr3_raw());
+       }
        return;
 }
 
@@ -85,7 +89,6 @@ static inline void pmap_pcid_validate_current(void) {
        if (cptr) {
                *cptr = 0;
        }
-
 }
 
 static inline void pmap_pcid_invalidate_cpu(pmap_t tpmap, int ccpu) {