rem: TRACE(("vm_page_fault: page fault at 0x%lx, ip 0x%lx\n", address, fault_address));
add: FTRACE(("vm_page_fault: page fault at 0x%lx, ip 0x%lx\n", address, fault_address));
context: vm_page_fault(addr_t address, addr_t fault_address, bool is_write, bool is_user, addr_t *newip){	int err;	TRACE(("vm_page_fault: page fault at 0x%lx, ip 0x%lx\n", address, fault_address));	*newip = 0;	err = vm_soft_fault(address, is_write, is_user);	if (err < 0) {		dprintf("vm_page_fault: vm_soft_fault returned error %d on fault at 0x%lx, ip 0x%lx, write %d, user %d, thread 0x%lx\n",			err, address, fault_address, is_write, is_user, thread_get_current_thread_id());		if (!is_user) {			struct thread *t = thread_get_current_thread();			if (t && t->fault_handler != 0) {				// this will cause the arch dependant page fault handler to				// modify the IP on the interrupt frame or whatever to return				// to this address				*newip = t->fault_handler;			} else {				// unhandled page fault in the kernel				panic("vm_page_fault: unhandled page fault in kernel space at 0x%lx, ip 0x%lx\n",					address, fault_address);			}		} else {			dprintf("vm_page_fault: killing team 0x%lx, ip 0x%lx\n", thread_get_current_thread()->team->id, fault_address);			kill_team(team_get_current_team_id());		}	}	return B_HANDLED_INTERRUPT;}