FreeBSD/sys/arm/arm/pmap-v6.c
/*
 *  Removes a 1MB page mapping from the kernel pmap.
 */
Removes a 1MB page mapping from the kernel pmap.
Removes a 1MB page mapping from the kernel pmap .
static void
pmap_remove_kernel_pte1(pmap_t pmap, pt1_entry_t *pte1p, vm_offset_t va)
{
	vm_page_t m;
	uint32_t pte1_idx;
	pt2_entry_t *fpte2p;
	vm_paddr_t pt2_pa;
	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
	m = pmap_pt2_page(pmap, va);
	if (m == NULL)
		panic("%s: missing pt2 page", __func__);
	pte1_idx = pte1_index(va);
	fpte2p = page_pt2(pt2map_pt2pg(va), pte1_idx);
	pmap_clear_pt2(fpte2p);
	pt2_pa = page_pt2pa(VM_PAGE_TO_PHYS(m), pte1_idx);
	pmap_kenter_pte1(va, PTE1_LINK(pt2_pa));
}
static void pmap_remove_kernel_pte1 ( pmap_t pmap , pt1_entry_t * pte1p , vm_offset_t va ) { vm_page_t m ; uint32_t pte1_idx ; pt2_entry_t * fpte2p ; vm_paddr_t pt2_pa ; PMAP_LOCK_ASSERT ( pmap , MA_OWNED ) ; m = pmap_pt2_page ( pmap , va ) ; if ( m == NULL ) panic ( " " , __func__ ) ; pte1_idx = pte1_index ( va ) ; fpte2p = page_pt2 ( pt2map_pt2pg ( va ) , pte1_idx ) ; pmap_clear_pt2 ( fpte2p ) ; pt2_pa = page_pt2pa ( VM_PAGE_TO_PHYS ( m ) , pte1_idx ) ; pmap_kenter_pte1 ( va , PTE1_LINK ( pt2_pa ) ) ; }
Removes a 1MB page mapping from the kernel pmap.
Removes a 1MB page mapping from the kernel pmap .
/*
		 * QQQ: Is this function called only on promoted pte1?
		 *      We certainly do section mappings directly
		 *      (without promotion) in kernel !!!
		 */ /*
	 * Initialize the L2 page table.
	 */ /*
	 * Remove the mapping.
	 */ /*
	 * QQQ: We do not need to invalidate PT2MAP mapping
	 * as we did not change it. I.e. the L2 page table page
	 * was and still is mapped the same way.
	 */