Unifying the Lunaix's Physical Memory Model (#28)
[lunaix-os.git] / lunaix-os / arch / i386 / mm / tlb.c
diff --git a/lunaix-os/arch/i386/mm/tlb.c b/lunaix-os/arch/i386/mm/tlb.c
new file mode 100644 (file)
index 0000000..2ee5d48
--- /dev/null
@@ -0,0 +1,34 @@
+#include <sys/mm/tlb.h>
+#include <lunaix/process.h>
+
+void
+tlb_flush_mm(struct proc_mm* mm, ptr_t addr)
+{
+    __tlb_flush_asid(procvm_asid(mm), addr);
+}
+
+void
+tlb_flush_mm_range(struct proc_mm* mm, ptr_t addr, unsigned int npages)
+{
+    tlb_flush_asid_range(procvm_asid(mm), addr, npages);
+}
+
+
+void
+tlb_flush_vmr(struct mm_region* vmr, ptr_t va)
+{
+    __tlb_flush_asid(procvm_asid(vmr->proc_vms), va);
+}
+
+void
+tlb_flush_vmr_all(struct mm_region* vmr)
+{
+    tlb_flush_asid_range(procvm_asid(vmr->proc_vms), 
+                            vmr->start, leaf_count(vmr->end - vmr->start));
+}
+
+void
+tlb_flush_vmr_range(struct mm_region* vmr, ptr_t addr, unsigned int npages)
+{
+    tlb_flush_asid_range(procvm_asid(vmr->proc_vms), addr, npages);
+}
\ No newline at end of file