Index: arch/ia64/src/asm.S
===================================================================
--- arch/ia64/src/asm.S	(revision 281224aeb3d8da7b9f59d258df830ad80784c70c)
+++ arch/ia64/src/asm.S	(revision de07bcf5893aee4d667e2094636cd1512e4be1d8)
@@ -31,7 +31,23 @@
 .text
 
+/** Copy memory from/to userspace.
+ *
+ * @param in0 Destination address.
+ * @param in1 Source address.
+ * @param in2 Number of byte to copy.
+ */
 .global memcpy
+.global memcpy_from_uspace
+.global memcpy_to_uspace
+.global memcpy_from_uspace_failover_address
+.global memcpy_to_uspace_failover_address
 memcpy:
+memcpy_from_uspace:
+memcpy_to_uspace:
 	br _memcpy
+	
+memcpy_from_uspace_failover_address:
+memcpy_to_uspace_failover_address:
+	br memcpy_from_uspace_failover_address
 
 .global memsetb
Index: arch/ia64/src/mm/tlb.c
===================================================================
--- arch/ia64/src/mm/tlb.c	(revision 281224aeb3d8da7b9f59d258df830ad80784c70c)
+++ arch/ia64/src/mm/tlb.c	(revision de07bcf5893aee4d667e2094636cd1512e4be1d8)
@@ -448,5 +448,5 @@
 		 */
 		page_table_unlock(AS, true);
-		if (!as_page_fault(va)) {
+		if (as_page_fault(va, istate) == AS_PF_FAULT) {
 			panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, istate->cr_ifa, rr.map.rid, istate->cr_iip);
 		}
@@ -494,5 +494,5 @@
 		 */
 		page_table_unlock(AS, true);
-		if (!as_page_fault(va)) {
+		if (as_page_fault(va, istate) == AS_PF_FAULT) {
 			panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);
 		}
@@ -609,5 +609,5 @@
 	} else {
 		page_table_unlock(AS, true);
-		if (!as_page_fault(va)) {
+		if (as_page_fault(va, istate) == AS_PF_FAULT) {
 			panic("%s: va=%p, rid=%d\n", __FUNCTION__, va, rr.map.rid);
 		}
