simple_unlock(&pmap->pm_obj.vmobjlock);
pmap_kenter_pa(va, pa, prot)	vaddr_t va;	paddr_t pa;	vm_prot_t prot;{	volatile pt_entry_t *pde;	pt_entry_t pte;	DPRINTF(PDB_FOLLOW|PDB_ENTER,	    ("pmap_kenter_pa(%x, %x, %x)\n", va, pa, prot));	simple_lock(&pmap->pm_obj.vmobjlock);	if (!(pde = pmap_pde_get(pmap_kernel()->pm_pdir, va)) &&	    !(pde = pmap_pde_alloc(pmap_kernel(), va, NULL)))		panic("pmap_kenter_pa: cannot allocate pde for va=0x%lx", va);#ifdef DIAGNOSTIC	if ((pte = pmap_pte_get(pde, va)))		panic("pmap_kenter_pa: 0x%lx is already mapped %p:0x%x",		    va, pde, pte);#endif	pte = pa | PTE_PROT(TLB_WIRED | TLB_REFTRAP |	    pmap_prot(pmap_kernel(), prot));	if (pa >= HPPA_IOSPACE)		pte |= PTE_PROT(TLB_UNCACHABLE);	pmap_pte_set(pde, va, pte);	simple_unlock(&pmap->pm_obj.vmobjlock);#ifdef PMAPDEBUG	{		struct vm_page *pg;		if (pmap_initialized && (pg = PHYS_TO_VM_PAGE(PTE_PAGE(pte)))) {			simple_lock(&pg->mdpage.pvh_lock);			if (pmap_check_alias(pg->mdpage.pvh_list, va, pte))				Debugger();			simple_unlock(&pg->mdpage.pvh_lock);		}	}#endif	DPRINTF(PDB_FOLLOW|PDB_ENTER, ("pmap_kenter_pa: leaving\n"));}