vm: allow pages to be mapped as no-cache
This commit is contained in:
@@ -71,6 +71,10 @@ static pte_t make_pte(pfn_t pfn, enum vm_prot prot, enum page_size size)
|
|||||||
v |= PTE_RW;
|
v |= PTE_RW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (prot & VM_PROT_NOCACHE) {
|
||||||
|
v |= PTE_NOCACHE;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(prot & VM_PROT_EXEC)) {
|
if (!(prot & VM_PROT_EXEC)) {
|
||||||
v |= PTE_NX;
|
v |= PTE_NX;
|
||||||
}
|
}
|
||||||
@@ -267,7 +271,7 @@ void pmap_bootstrap(void)
|
|||||||
do_pmap_add(kernel_pmap,
|
do_pmap_add(kernel_pmap,
|
||||||
(void *)(vbase + i),
|
(void *)(vbase + i),
|
||||||
PFN(i),
|
PFN(i),
|
||||||
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_SVR, hugepage);
|
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_SVR | VM_PROT_NOCACHE, hugepage);
|
||||||
}
|
}
|
||||||
|
|
||||||
pmap_switch(kernel_pmap);
|
pmap_switch(kernel_pmap);
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ enum vm_prot {
|
|||||||
VM_PROT_EXEC = 0x04u,
|
VM_PROT_EXEC = 0x04u,
|
||||||
VM_PROT_USER = 0x08u,
|
VM_PROT_USER = 0x08u,
|
||||||
VM_PROT_SVR = 0x10u,
|
VM_PROT_SVR = 0x10u,
|
||||||
|
VM_PROT_NOCACHE = 0x20u,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum vm_flags {
|
enum vm_flags {
|
||||||
|
|||||||
Reference in New Issue
Block a user