feat: spec-compliant AHCI HBA initialization
[lunaix-os.git] / lunaix-os / kernel / mm / vmm.c
index 1453c89e65b10d505f9f380e19c284538aee5180..fe3d65cc46b7ca40ec4eacb232772754dbceba8d 100644 (file)
@@ -51,7 +51,9 @@ vmm_set_mapping(uintptr_t mnt,
         }
 
         // This must be writable
-        l1pt->entry[l1_inx] = NEW_L1_ENTRY(attr | PG_WRITE, new_l1pt_pa);
+        l1pt->entry[l1_inx] =
+          NEW_L1_ENTRY(attr | PG_WRITE | PG_PRESENT, new_l1pt_pa);
+
         memset((void*)l2pt, 0, PG_SIZE);
     } else {
         x86_pte_t pte = l2pt->entry[l2_inx];
@@ -64,6 +66,10 @@ vmm_set_mapping(uintptr_t mnt,
         cpu_invplg(va);
     }
 
+    if ((options & VMAP_NOMAP)) {
+        return 1;
+    }
+
     l2pt->entry[l2_inx] = NEW_L2_ENTRY(attr, pa);
     return 1;
 }