Index: kernel/generic/include/ipc/ipc.h
===================================================================
--- kernel/generic/include/ipc/ipc.h	(revision 7c0e1f596a64720b6f6a6ec66b3499a9d26511cb)
+++ kernel/generic/include/ipc/ipc.h	(revision 503ffceaab0f4c54907677d3399c3ed1363e507f)
@@ -106,4 +106,6 @@
 	/** Phone which made or last masqueraded this call. */
 	phone_t *phone;
+	/** Flags */
+	unsigned flags;
 	/** User-defined label */
 	sysarg_t label;
Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision 7c0e1f596a64720b6f6a6ec66b3499a9d26511cb)
+++ kernel/generic/src/ipc/sysipc.c	(revision 503ffceaab0f4c54907677d3399c3ed1363e507f)
@@ -728,8 +728,4 @@
  *
  * @return Hash of the call.
- *         If IPC_CALLID_NOTIFICATION bit is set in the hash, the
- *         call is a notification. IPC_CALLID_ANSWERED denotes an
- *         answer.
- *
  */
 sysarg_t sys_ipc_wait_for_call(ipc_data_t *calldata, uint32_t usec,
@@ -758,9 +754,10 @@
 		call->data.phone = (void *) call->priv;
 		
+		call->data.flags = IPC_CALLID_NOTIFICATION;
+
 		STRUCT_TO_USPACE(calldata, &call->data);
-		
 		kobject_put(call->kobject);
 		
-		return ((sysarg_t) call) | IPC_CALLID_NOTIFICATION;
+		return (sysarg_t) call;
 	}
 	
@@ -772,9 +769,11 @@
 			goto restart;
 		}
+
+		call->data.flags = IPC_CALLID_ANSWERED;
 		
 		STRUCT_TO_USPACE(calldata, &call->data);
 		kobject_put(call->kobject);
 		
-		return ((sysarg_t) call) | IPC_CALLID_ANSWERED;
+		return (sysarg_t) call;
 	}
 	
