git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of github.com:Minep/lunaix-os
[lunaix-os.git]
/
lunaix-os
/
kernel
/
mm
/
vmm.c
diff --git
a/lunaix-os/kernel/mm/vmm.c
b/lunaix-os/kernel/mm/vmm.c
index 1453c89e65b10d505f9f380e19c284538aee5180..fe3d65cc46b7ca40ec4eacb232772754dbceba8d 100644
(file)
--- a/
lunaix-os/kernel/mm/vmm.c
+++ b/
lunaix-os/kernel/mm/vmm.c
@@
-51,7
+51,9
@@
vmm_set_mapping(uintptr_t mnt,
}
// This must be writable
}
// 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];
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);
}
cpu_invplg(va);
}
+ if ((options & VMAP_NOMAP)) {
+ return 1;
+ }
+
l2pt->entry[l2_inx] = NEW_L2_ENTRY(attr, pa);
return 1;
}
l2pt->entry[l2_inx] = NEW_L2_ENTRY(attr, pa);
return 1;
}