Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_kern.c
Show First 20 Lines • Show All 828 Lines • ▼ Show 20 Lines | #if defined(__i386__) || defined(__amd64__) | ||||
struct vm_domain *vmd; | struct vm_domain *vmd; | ||||
vm_offset_t end, va; | vm_offset_t end, va; | ||||
vm_paddr_t pa; | vm_paddr_t pa; | ||||
vm_page_t m; | vm_page_t m; | ||||
end = trunc_page(start + size); | end = trunc_page(start + size); | ||||
start = round_page(start); | start = round_page(start); | ||||
#ifdef __amd64__ | |||||
/* | |||||
* Preloaded files do not have execute permissions by default on amd64. | |||||
* Restore the default permissions to ensure that the direct map alias | |||||
* is updated. | |||||
*/ | |||||
pmap_change_prot(start, end - start, VM_PROT_RW); | |||||
#endif | |||||
for (va = start; va < end; va += PAGE_SIZE) { | for (va = start; va < end; va += PAGE_SIZE) { | ||||
pa = pmap_kextract(va); | pa = pmap_kextract(va); | ||||
m = PHYS_TO_VM_PAGE(pa); | m = PHYS_TO_VM_PAGE(pa); | ||||
vmd = vm_pagequeue_domain(m); | vmd = vm_pagequeue_domain(m); | ||||
vm_domain_free_lock(vmd); | vm_domain_free_lock(vmd); | ||||
vm_phys_free_pages(m, 0); | vm_phys_free_pages(m, 0); | ||||
vm_domain_free_unlock(vmd); | vm_domain_free_unlock(vmd); | ||||
Show All 31 Lines |