struct vm_map_entry *new_entry;
vm_map_entry_t new_entry;
uvm_map_clip_start(map, entry, start)	struct vm_map *map;	struct vm_map_entry *entry;	vaddr_t start;{	struct vm_map_entry *new_entry;	vaddr_t new_adj;	/* uvm_map_simplify_entry(map, entry); */ /* XXX */	/*	 * Split off the front portion.  note that we must insert the new	 * entry BEFORE this one, so that this entry has the specified	 * starting address.	 */	new_entry = uvm_mapent_alloc(map);	uvm_mapent_copy(entry, new_entry); /* entry -> new_entry */	new_entry->end = start;	new_adj = start - new_entry->start;	if (entry->object.uvm_obj)		entry->offset += new_adj;	/* shift start over */	entry->start = start;	if (new_entry->aref.ar_amap) {		amap_splitref(&new_entry->aref, &entry->aref, new_adj);	}	uvm_map_entry_link(map, entry->prev, new_entry);	if (UVM_ET_ISSUBMAP(entry)) {		/* ... unlikely to happen, but play it safe */		 uvm_map_reference(new_entry->object.sub_map);	} else {		if (UVM_ET_ISOBJ(entry) &&		    entry->object.uvm_obj->pgops &&		    entry->object.uvm_obj->pgops->pgo_reference)			entry->object.uvm_obj->pgops->pgo_reference(			    entry->object.uvm_obj);	}}