}
pmap_pde_alloc(struct pmap *pm, vaddr_t va, struct vm_page **pdep){	struct vm_page *pg;	paddr_t pa;	DPRINTF(PDB_FOLLOW|PDB_VP,	    ("pmap_pde_alloc(%p, 0x%x, %p)\n", pm, va, pdep));	/* special hacking for pre-mapping the kernel */	if (!pmap_initialized) {		register u_int32_t sm;		if (physical_steal >= physical_end)			panic("pmap_pde_alloc: out of steallage");		pa = physical_steal;		physical_steal += PAGE_SIZE;		rsm(0, sm);		if (sm & PSW_D)			pmap_zero_page(pa);		else			bzero((void *)pa, PAGE_SIZE);		pmap_pde_set(pm, va, pa);		pm->pm_stats.resident_count++;	/* count PTP as resident */		DPRINTF(PDB_VP, ("pmap_pde_alloc: pde %x\n", pa));		return ((pt_entry_t *)pa);	}	va &= PDE_MASK;	pg = uvm_pagealloc(&pm->pm_obj, va, NULL,	    UVM_PGA_USERESERVE|UVM_PGA_ZERO);	if (pg == NULL) {		/* try to steal somewhere */		return (NULL);	}	pa = VM_PAGE_TO_PHYS(pg);	DPRINTF(PDB_FOLLOW|PDB_VP, ("pmap_pde_alloc: pde %x\n", pa));	pg->flags &= ~PG_BUSY;		/* never busy */	pg->wire_count = 1;		/* no mappings yet */	pmap_pde_set(pm, va, pa);	pm->pm_stats.resident_count++;	/* count PTP as resident */	pm->pm_ptphint = pg;	if (pdep)		*pdep = pg;	return ((pt_entry_t *)pa);}