Index: abi/include/abi/cap.h
===================================================================
--- abi/include/abi/cap.h	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ abi/include/abi/cap.h	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -36,8 +36,8 @@
 #define _ABI_CAP_H_
 
+#include <stdbool.h>
+#include <stdint.h>
+
 #define CAP_NIL  0
-
-#define CAP_HANDLE_VALID(handle)  ((handle) != CAP_NIL)
-#define CAP_HANDLE_RAW(handle)    ((intptr_t) (handle))
 
 typedef void *cap_handle_t;
@@ -55,4 +55,14 @@
 } *cap_waitq_handle_t;
 
+static inline bool cap_handle_valid(cap_handle_t handle)
+{
+	return handle != CAP_NIL;
+}
+
+static inline intptr_t cap_handle_raw(cap_handle_t handle)
+{
+	return (intptr_t) handle;
+}
+
 #endif
 
Index: abi/include/abi/ipc/ipc.h
===================================================================
--- abi/include/abi/ipc/ipc.h	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ abi/include/abi/ipc/ipc.h	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -36,6 +36,8 @@
 #define _ABI_IPC_IPC_H_
 
+#include <stdint.h>
 #include <abi/proc/task.h>
 #include <abi/cap.h>
+#include <_bits/errno.h>
 
 /** Length of data being transferred with IPC call
@@ -71,22 +73,4 @@
  */
 #define DATA_XFER_LIMIT  (64 * 1024)
-
-/* Macros for manipulating calling data */
-#define IPC_SET_RETVAL(data, retval)  ((data).args[0] = (sysarg_t) (retval))
-#define IPC_SET_IMETHOD(data, val)    ((data).args[0] = (val))
-#define IPC_SET_ARG1(data, val)       ((data).args[1] = (val))
-#define IPC_SET_ARG2(data, val)       ((data).args[2] = (val))
-#define IPC_SET_ARG3(data, val)       ((data).args[3] = (val))
-#define IPC_SET_ARG4(data, val)       ((data).args[4] = (val))
-#define IPC_SET_ARG5(data, val)       ((data).args[5] = (val))
-
-#define IPC_GET_IMETHOD(data)  ((data).args[0])
-#define IPC_GET_RETVAL(data)   ((errno_t) (data).args[0])
-
-#define IPC_GET_ARG1(data)  ((data).args[1])
-#define IPC_GET_ARG2(data)  ((data).args[2])
-#define IPC_GET_ARG3(data)  ((data).args[3])
-#define IPC_GET_ARG4(data)  ((data).args[4])
-#define IPC_GET_ARG5(data)  ((data).args[5])
 
 /* Forwarding flags. */
@@ -128,4 +112,75 @@
 } ipc_data_t;
 
+/* Functions for manipulating calling data */
+
+static inline void ipc_set_retval(ipc_data_t *data, errno_t retval)
+{
+	data->args[0] = (sysarg_t) retval;
+}
+
+static inline void ipc_set_imethod(ipc_data_t *data, sysarg_t val)
+{
+	data->args[0] = val;
+}
+
+static inline void ipc_set_arg1(ipc_data_t *data, sysarg_t val)
+{
+	data->args[1] = val;
+}
+
+static inline void ipc_set_arg2(ipc_data_t *data, sysarg_t val)
+{
+	data->args[2] = val;
+}
+
+static inline void ipc_set_arg3(ipc_data_t *data, sysarg_t val)
+{
+	data->args[3] = val;
+}
+
+static inline void ipc_set_arg4(ipc_data_t *data, sysarg_t val)
+{
+	data->args[4] = val;
+}
+
+static inline void ipc_set_arg5(ipc_data_t *data, sysarg_t val)
+{
+	data->args[5] = val;
+}
+
+static inline sysarg_t ipc_get_imethod(ipc_data_t *data)
+{
+	return data->args[0];
+}
+static inline errno_t ipc_get_retval(ipc_data_t *data)
+{
+	return (errno_t) data->args[0];
+}
+
+static inline sysarg_t ipc_get_arg1(ipc_data_t *data)
+{
+	return data->args[1];
+}
+
+static inline sysarg_t ipc_get_arg2(ipc_data_t *data)
+{
+	return data->args[2];
+}
+
+static inline sysarg_t ipc_get_arg3(ipc_data_t *data)
+{
+	return data->args[3];
+}
+
+static inline sysarg_t ipc_get_arg4(ipc_data_t *data)
+{
+	return data->args[4];
+}
+
+static inline sysarg_t ipc_get_arg5(ipc_data_t *data)
+{
+	return data->args[5];
+}
+
 #endif
 
Index: kernel/generic/src/cap/cap.c
===================================================================
--- kernel/generic/src/cap/cap.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/cap/cap.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -98,5 +98,5 @@
 {
 	cap_t *cap = hash_table_get_inst(item, cap_t, caps_link);
-	return hash_mix(CAP_HANDLE_RAW(cap->handle));
+	return hash_mix(cap_handle_raw(cap->handle));
 }
 
@@ -104,5 +104,5 @@
 {
 	cap_handle_t *handle = (cap_handle_t *) key;
-	return hash_mix(CAP_HANDLE_RAW(*handle));
+	return hash_mix(cap_handle_raw(*handle));
 }
 
@@ -232,6 +232,6 @@
 	assert(mutex_locked(&task->cap_info->lock));
 
-	if ((CAP_HANDLE_RAW(handle) < CAPS_START) ||
-	    (CAP_HANDLE_RAW(handle) > CAPS_LAST))
+	if ((cap_handle_raw(handle) < CAPS_START) ||
+	    (cap_handle_raw(handle) > CAPS_LAST))
 		return NULL;
 	ht_link_t *link = hash_table_find(&task->cap_info->caps, &handle);
@@ -383,6 +383,6 @@
 void cap_free(task_t *task, cap_handle_t handle)
 {
-	assert(CAP_HANDLE_RAW(handle) >= CAPS_START);
-	assert(CAP_HANDLE_RAW(handle) <= CAPS_LAST);
+	assert(cap_handle_raw(handle) >= CAPS_START);
+	assert(cap_handle_raw(handle) <= CAPS_LAST);
 
 	mutex_lock(&task->cap_info->lock);
@@ -392,5 +392,5 @@
 
 	hash_table_remove_item(&task->cap_info->caps, &cap->caps_link);
-	ra_free(task->cap_info->handles, CAP_HANDLE_RAW(handle), 1);
+	ra_free(task->cap_info->handles, cap_handle_raw(handle), 1);
 	slab_free(cap_cache, cap);
 	mutex_unlock(&task->cap_info->lock);
Index: kernel/generic/src/ipc/event.c
===================================================================
--- kernel/generic/src/ipc/event.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/event.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -153,10 +153,10 @@
 				call->priv = ++event->counter;
 
-				IPC_SET_IMETHOD(call->data, event->imethod);
-				IPC_SET_ARG1(call->data, a1);
-				IPC_SET_ARG2(call->data, a2);
-				IPC_SET_ARG3(call->data, a3);
-				IPC_SET_ARG4(call->data, a4);
-				IPC_SET_ARG5(call->data, a5);
+				ipc_set_imethod(&call->data, event->imethod);
+				ipc_set_arg1(&call->data, a1);
+				ipc_set_arg2(&call->data, a2);
+				ipc_set_arg3(&call->data, a3);
+				ipc_set_arg4(&call->data, a4);
+				ipc_set_arg5(&call->data, a5);
 
 				call->data.task_id = TASK ? TASK->taskid : 0;
Index: kernel/generic/src/ipc/ipc.c
===================================================================
--- kernel/generic/src/ipc/ipc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ipc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -387,5 +387,5 @@
 {
 	_ipc_call_actions_internal(phone, call, false);
-	IPC_SET_RETVAL(call->data, err);
+	ipc_set_retval(&call->data, err);
 	_ipc_answer_free_call(call, false);
 }
@@ -485,5 +485,5 @@
 		assert(call);
 
-		IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP);
+		ipc_set_imethod(&call->data, IPC_M_PHONE_HUNGUP);
 		call->request_method = IPC_M_PHONE_HUNGUP;
 		call->flags |= IPC_CALL_DISCARD_ANSWER;
@@ -634,5 +634,5 @@
 
 		ipc_data_t old = call->data;
-		IPC_SET_RETVAL(call->data, EHANGUP);
+		ipc_set_retval(&call->data, EHANGUP);
 		answer_preprocess(call, &old);
 		_ipc_answer_free_call(call, true);
@@ -690,5 +690,5 @@
 			assert(call);
 
-			IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP);
+			ipc_set_imethod(&call->data, IPC_M_PHONE_HUNGUP);
 			call->request_method = IPC_M_PHONE_HUNGUP;
 			call->flags |= IPC_CALL_DISCARD_ANSWER;
@@ -909,7 +909,7 @@
 		printf("%-8" PRIun " %-6" PRIun " %-6" PRIun " %-6" PRIun
 		    " %-6" PRIun " %-6" PRIun " %-7x",
-		    IPC_GET_IMETHOD(call->data), IPC_GET_ARG1(call->data),
-		    IPC_GET_ARG2(call->data), IPC_GET_ARG3(call->data),
-		    IPC_GET_ARG4(call->data), IPC_GET_ARG5(call->data),
+		    ipc_get_imethod(&call->data), ipc_get_arg1(&call->data),
+		    ipc_get_arg2(&call->data), ipc_get_arg3(&call->data),
+		    ipc_get_arg4(&call->data), ipc_get_arg5(&call->data),
 		    call->flags);
 
@@ -931,5 +931,5 @@
 	mutex_lock(&phone->lock);
 	if (phone->state != IPC_PHONE_FREE) {
-		printf("%-11d %7" PRIun " ", (int) CAP_HANDLE_RAW(cap->handle),
+		printf("%-11d %7" PRIun " ", (int) cap_handle_raw(cap->handle),
 		    atomic_load(&phone->active_calls));
 
Index: kernel/generic/src/ipc/irq.c
===================================================================
--- kernel/generic/src/ipc/irq.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/irq.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -539,10 +539,10 @@
 
 		/* Set up args */
-		IPC_SET_IMETHOD(call->data, irq->notif_cfg.imethod);
-		IPC_SET_ARG1(call->data, irq->notif_cfg.scratch[1]);
-		IPC_SET_ARG2(call->data, irq->notif_cfg.scratch[2]);
-		IPC_SET_ARG3(call->data, irq->notif_cfg.scratch[3]);
-		IPC_SET_ARG4(call->data, irq->notif_cfg.scratch[4]);
-		IPC_SET_ARG5(call->data, irq->notif_cfg.scratch[5]);
+		ipc_set_imethod(&call->data, irq->notif_cfg.imethod);
+		ipc_set_arg1(&call->data, irq->notif_cfg.scratch[1]);
+		ipc_set_arg2(&call->data, irq->notif_cfg.scratch[2]);
+		ipc_set_arg3(&call->data, irq->notif_cfg.scratch[3]);
+		ipc_set_arg4(&call->data, irq->notif_cfg.scratch[4]);
+		ipc_set_arg5(&call->data, irq->notif_cfg.scratch[5]);
 
 		send_call(irq, call);
@@ -576,10 +576,10 @@
 		call->priv = ++irq->notif_cfg.counter;
 
-		IPC_SET_IMETHOD(call->data, irq->notif_cfg.imethod);
-		IPC_SET_ARG1(call->data, a1);
-		IPC_SET_ARG2(call->data, a2);
-		IPC_SET_ARG3(call->data, a3);
-		IPC_SET_ARG4(call->data, a4);
-		IPC_SET_ARG5(call->data, a5);
+		ipc_set_imethod(&call->data, irq->notif_cfg.imethod);
+		ipc_set_arg1(&call->data, a1);
+		ipc_set_arg2(&call->data, a2);
+		ipc_set_arg3(&call->data, a3);
+		ipc_set_arg4(&call->data, a4);
+		ipc_set_arg5(&call->data, a5);
 
 		send_call(irq, call);
Index: kernel/generic/src/ipc/kbox.c
===================================================================
--- kernel/generic/src/ipc/kbox.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/kbox.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -121,5 +121,5 @@
 
 	LOG("Continue with hangup message.");
-	IPC_SET_RETVAL(call->data, 0);
+	ipc_set_retval(&call->data, 0);
 	ipc_answer(&TASK->kb.box, call);
 
@@ -174,5 +174,5 @@
 			continue;  /* Try again. */
 
-		switch (IPC_GET_IMETHOD(call->data)) {
+		switch (ipc_get_imethod(&call->data)) {
 
 		case IPC_M_DEBUG:
Index: kernel/generic/src/ipc/ops/conctmeto.c
===================================================================
--- kernel/generic/src/ipc/ops/conctmeto.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/conctmeto.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -59,5 +59,5 @@
 
 	/* Remember the handle */
-	IPC_SET_ARG5(call->data, (sysarg_t) phandle);
+	ipc_set_arg5(&call->data, (sysarg_t) phandle);
 
 	return EOK;
@@ -66,7 +66,7 @@
 static errno_t request_forget(call_t *call)
 {
-	cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(call->data);
+	cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(&call->data);
 
-	if (CAP_HANDLE_RAW(phandle) < 0)
+	if (cap_handle_raw(phandle) < 0)
 		return EOK;
 
@@ -88,11 +88,11 @@
 
 	/* Set the recipient-assigned label */
-	pobj->phone->label = IPC_GET_ARG5(answer->data);
+	pobj->phone->label = ipc_get_arg5(&answer->data);
 
 	/* Restore phone handle in answer's ARG5 */
-	IPC_SET_ARG5(answer->data, IPC_GET_ARG5(*olddata));
+	ipc_set_arg5(&answer->data, ipc_get_arg5(olddata));
 
 	/* If the user accepted the call, connect */
-	if (IPC_GET_RETVAL(answer->data) == EOK) {
+	if (ipc_get_retval(&answer->data) == EOK) {
 		/* Hand over reference from pobj to the answerbox */
 		(void) ipc_phone_connect(pobj->phone, &TASK->answerbox);
@@ -107,11 +107,11 @@
 static errno_t answer_process(call_t *answer)
 {
-	cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(answer->data);
+	cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(&answer->data);
 	/* Move the reference from answer->priv to pobj */
 	kobject_t *pobj = (kobject_t *) answer->priv;
 	answer->priv = 0;
 
-	if (IPC_GET_RETVAL(answer->data)) {
-		if (CAP_HANDLE_RAW(phandle) >= 0) {
+	if (ipc_get_retval(&answer->data)) {
+		if (cap_handle_raw(phandle) >= 0) {
 			/*
 			 * Cleanup the unpublished capability and drop
Index: kernel/generic/src/ipc/ops/concttome.c
===================================================================
--- kernel/generic/src/ipc/ops/concttome.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/concttome.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -49,8 +49,8 @@
 		 * Set the sender-assigned label to the new phone.
 		 */
-		pobj->phone->label = IPC_GET_ARG5(call->data);
+		pobj->phone->label = ipc_get_arg5(&call->data);
 	}
 	call->priv = (sysarg_t) pobj;
-	IPC_SET_ARG5(call->data, CAP_HANDLE_RAW(phandle));
+	ipc_set_arg5(&call->data, cap_handle_raw(phandle));
 	return 0;
 }
@@ -58,8 +58,8 @@
 static errno_t answer_cleanup(call_t *answer, ipc_data_t *olddata)
 {
-	cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(*olddata);
+	cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(olddata);
 	kobject_t *pobj = (kobject_t *) answer->priv;
 
-	if (CAP_HANDLE_VALID(phandle)) {
+	if (cap_handle_valid(phandle)) {
 		kobject_put(pobj);
 		cap_free(TASK, phandle);
@@ -71,11 +71,11 @@
 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata)
 {
-	cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(*olddata);
+	cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(olddata);
 	kobject_t *pobj = (kobject_t *) answer->priv;
 
-	if (IPC_GET_RETVAL(answer->data) != EOK) {
+	if (ipc_get_retval(&answer->data) != EOK) {
 		/* The connection was not accepted */
 		answer_cleanup(answer, olddata);
-	} else if (CAP_HANDLE_VALID(phandle)) {
+	} else if (cap_handle_valid(phandle)) {
 		/*
 		 * The connection was accepted
@@ -94,9 +94,9 @@
 		} else {
 			/* The answerbox is shutting down. */
-			IPC_SET_RETVAL(answer->data, ENOENT);
+			ipc_set_retval(&answer->data, ENOENT);
 			answer_cleanup(answer, olddata);
 		}
 	} else {
-		IPC_SET_RETVAL(answer->data, ELIMIT);
+		ipc_set_retval(&answer->data, ELIMIT);
 	}
 
Index: kernel/generic/src/ipc/ops/dataread.c
===================================================================
--- kernel/generic/src/ipc/ops/dataread.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/dataread.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -43,11 +43,11 @@
 static errno_t request_preprocess(call_t *call, phone_t *phone)
 {
-	size_t size = IPC_GET_ARG2(call->data);
+	size_t size = ipc_get_arg2(&call->data);
 
 	if (size > DATA_XFER_LIMIT) {
-		int flags = IPC_GET_ARG3(call->data);
+		int flags = ipc_get_arg3(&call->data);
 
 		if (flags & IPC_XF_RESTRICT)
-			IPC_SET_ARG2(call->data, DATA_XFER_LIMIT);
+			ipc_set_arg2(&call->data, DATA_XFER_LIMIT);
 		else
 			return ELIMIT;
@@ -61,10 +61,10 @@
 	assert(!answer->buffer);
 
-	if (!IPC_GET_RETVAL(answer->data)) {
+	if (!ipc_get_retval(&answer->data)) {
 		/* The recipient agreed to send data. */
-		uintptr_t src = IPC_GET_ARG1(answer->data);
-		uintptr_t dst = IPC_GET_ARG1(*olddata);
-		size_t max_size = IPC_GET_ARG2(*olddata);
-		size_t size = IPC_GET_ARG2(answer->data);
+		uintptr_t src = ipc_get_arg1(&answer->data);
+		uintptr_t dst = ipc_get_arg1(olddata);
+		size_t max_size = ipc_get_arg2(olddata);
+		size_t size = ipc_get_arg2(&answer->data);
 
 		if (size && size <= max_size) {
@@ -73,9 +73,9 @@
 			 * information is not lost.
 			 */
-			IPC_SET_ARG1(answer->data, dst);
+			ipc_set_arg1(&answer->data, dst);
 
 			answer->buffer = malloc(size);
 			if (!answer->buffer) {
-				IPC_SET_RETVAL(answer->data, ENOMEM);
+				ipc_set_retval(&answer->data, ENOMEM);
 				return EOK;
 			}
@@ -83,5 +83,5 @@
 			    (void *) src, size);
 			if (rc) {
-				IPC_SET_RETVAL(answer->data, rc);
+				ipc_set_retval(&answer->data, rc);
 				/*
 				 * answer->buffer will be cleaned up in
@@ -91,7 +91,7 @@
 			}
 		} else if (!size) {
-			IPC_SET_RETVAL(answer->data, EOK);
+			ipc_set_retval(&answer->data, EOK);
 		} else {
-			IPC_SET_RETVAL(answer->data, ELIMIT);
+			ipc_set_retval(&answer->data, ELIMIT);
 		}
 	}
@@ -103,11 +103,11 @@
 {
 	if (answer->buffer) {
-		uintptr_t dst = IPC_GET_ARG1(answer->data);
-		size_t size = IPC_GET_ARG2(answer->data);
+		uintptr_t dst = ipc_get_arg1(&answer->data);
+		size_t size = ipc_get_arg2(&answer->data);
 		errno_t rc;
 
 		rc = copy_to_uspace((void *) dst, answer->buffer, size);
 		if (rc)
-			IPC_SET_RETVAL(answer->data, rc);
+			ipc_set_retval(&answer->data, rc);
 	}
 
Index: kernel/generic/src/ipc/ops/datawrite.c
===================================================================
--- kernel/generic/src/ipc/ops/datawrite.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/datawrite.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -43,13 +43,13 @@
 static errno_t request_preprocess(call_t *call, phone_t *phone)
 {
-	uintptr_t src = IPC_GET_ARG1(call->data);
-	size_t size = IPC_GET_ARG2(call->data);
+	uintptr_t src = ipc_get_arg1(&call->data);
+	size_t size = ipc_get_arg2(&call->data);
 
 	if (size > DATA_XFER_LIMIT) {
-		int flags = IPC_GET_ARG3(call->data);
+		int flags = ipc_get_arg3(&call->data);
 
 		if (flags & IPC_XF_RESTRICT) {
 			size = DATA_XFER_LIMIT;
-			IPC_SET_ARG2(call->data, size);
+			ipc_set_arg2(&call->data, size);
 		} else
 			return ELIMIT;
@@ -75,9 +75,9 @@
 	assert(answer->buffer);
 
-	if (!IPC_GET_RETVAL(answer->data)) {
+	if (!ipc_get_retval(&answer->data)) {
 		/* The recipient agreed to receive data. */
-		uintptr_t dst = (uintptr_t)IPC_GET_ARG1(answer->data);
-		size_t size = (size_t)IPC_GET_ARG2(answer->data);
-		size_t max_size = (size_t)IPC_GET_ARG2(*olddata);
+		uintptr_t dst = (uintptr_t)ipc_get_arg1(&answer->data);
+		size_t size = (size_t)ipc_get_arg2(&answer->data);
+		size_t max_size = (size_t)ipc_get_arg2(olddata);
 
 		if (size <= max_size) {
@@ -85,7 +85,7 @@
 			    answer->buffer, size);
 			if (rc)
-				IPC_SET_RETVAL(answer->data, rc);
+				ipc_set_retval(&answer->data, rc);
 		} else {
-			IPC_SET_RETVAL(answer->data, ELIMIT);
+			ipc_set_retval(&answer->data, ELIMIT);
 		}
 	}
Index: kernel/generic/src/ipc/ops/debug.c
===================================================================
--- kernel/generic/src/ipc/ops/debug.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/debug.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -47,11 +47,11 @@
 {
 	if (answer->buffer) {
-		uintptr_t dst = IPC_GET_ARG1(answer->data);
-		size_t size = IPC_GET_ARG2(answer->data);
+		uintptr_t dst = ipc_get_arg1(&answer->data);
+		size_t size = ipc_get_arg2(&answer->data);
 		errno_t rc;
 
 		rc = copy_to_uspace((void *) dst, answer->buffer, size);
 		if (rc)
-			IPC_SET_RETVAL(answer->data, rc);
+			ipc_set_retval(&answer->data, rc);
 	}
 
Index: kernel/generic/src/ipc/ops/pagein.c
===================================================================
--- kernel/generic/src/ipc/ops/pagein.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/pagein.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -68,5 +68,5 @@
 		return EOK;
 
-	if (!IPC_GET_RETVAL(answer->data)) {
+	if (!ipc_get_retval(&answer->data)) {
 
 		pte_t pte;
@@ -74,5 +74,5 @@
 
 		page_table_lock(AS, true);
-		bool found = page_mapping_find(AS, IPC_GET_ARG1(answer->data),
+		bool found = page_mapping_find(AS, ipc_get_arg1(&answer->data),
 		    false, &pte);
 		if (found & PTE_PRESENT(&pte)) {
@@ -86,7 +86,7 @@
 				frame_reference_add(ADDR2PFN(frame));
 			}
-			IPC_SET_ARG1(answer->data, frame);
+			ipc_set_arg1(&answer->data, frame);
 		} else {
-			IPC_SET_RETVAL(answer->data, ENOENT);
+			ipc_set_retval(&answer->data, ENOENT);
 		}
 		page_table_unlock(AS, true);
Index: kernel/generic/src/ipc/ops/sharein.c
===================================================================
--- kernel/generic/src/ipc/ops/sharein.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/sharein.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -43,5 +43,5 @@
 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata)
 {
-	if (!IPC_GET_RETVAL(answer->data)) {
+	if (!ipc_get_retval(&answer->data)) {
 		irq_spinlock_lock(&answer->sender->lock, true);
 		as_t *as = answer->sender->as;
@@ -49,9 +49,9 @@
 
 		uintptr_t dst_base = (uintptr_t) -1;
-		errno_t rc = as_area_share(AS, IPC_GET_ARG1(answer->data),
-		    IPC_GET_ARG1(*olddata), as, IPC_GET_ARG2(answer->data),
-		    &dst_base, IPC_GET_ARG2(*olddata));
-		IPC_SET_ARG5(answer->data, dst_base);
-		IPC_SET_RETVAL(answer->data, rc);
+		errno_t rc = as_area_share(AS, ipc_get_arg1(&answer->data),
+		    ipc_get_arg1(olddata), as, ipc_get_arg2(&answer->data),
+		    &dst_base, ipc_get_arg2(olddata));
+		ipc_set_arg5(&answer->data, dst_base);
+		ipc_set_retval(&answer->data, rc);
 	}
 
Index: kernel/generic/src/ipc/ops/shareout.c
===================================================================
--- kernel/generic/src/ipc/ops/shareout.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/shareout.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -44,9 +44,9 @@
 static errno_t request_preprocess(call_t *call, phone_t *phone)
 {
-	size_t size = as_area_get_size(IPC_GET_ARG1(call->data));
+	size_t size = as_area_get_size(ipc_get_arg1(&call->data));
 
 	if (!size)
 		return EPERM;
-	IPC_SET_ARG2(call->data, size);
+	ipc_set_arg2(&call->data, size);
 
 	return EOK;
@@ -57,5 +57,5 @@
 	errno_t rc = EOK;
 
-	if (!IPC_GET_RETVAL(answer->data)) {
+	if (!ipc_get_retval(&answer->data)) {
 		/* Accepted, handle as_area receipt */
 
@@ -65,14 +65,14 @@
 
 		uintptr_t dst_base = (uintptr_t) -1;
-		rc = as_area_share(as, IPC_GET_ARG1(*olddata),
-		    IPC_GET_ARG2(*olddata), AS, IPC_GET_ARG3(*olddata),
-		    &dst_base, IPC_GET_ARG1(answer->data));
+		rc = as_area_share(as, ipc_get_arg1(olddata),
+		    ipc_get_arg2(olddata), AS, ipc_get_arg3(olddata),
+		    &dst_base, ipc_get_arg1(&answer->data));
 
 		if (rc == EOK) {
-			rc = copy_to_uspace((void *) IPC_GET_ARG2(answer->data),
+			rc = copy_to_uspace((void *) ipc_get_arg2(&answer->data),
 			    &dst_base, sizeof(dst_base));
 		}
 
-		IPC_SET_RETVAL(answer->data, rc);
+		ipc_set_retval(&answer->data, rc);
 	}
 
Index: kernel/generic/src/ipc/ops/stchngath.c
===================================================================
--- kernel/generic/src/ipc/ops/stchngath.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/ops/stchngath.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -46,5 +46,5 @@
 
 	kobject_t *sender_obj = kobject_get(TASK,
-	    (cap_handle_t) IPC_GET_ARG5(call->data), KOBJECT_TYPE_PHONE);
+	    (cap_handle_t) ipc_get_arg5(&call->data), KOBJECT_TYPE_PHONE);
 	if (!sender_obj)
 		return ENOENT;
@@ -62,5 +62,5 @@
 
 	/* Remember the third party task hash. */
-	IPC_SET_ARG5(call->data, (sysarg_t) other_task_s);
+	ipc_set_arg5(&call->data, (sysarg_t) other_task_s);
 
 	kobject_put(sender_obj);
@@ -72,5 +72,5 @@
 	errno_t rc = EOK;
 
-	if (!IPC_GET_RETVAL(answer->data)) {
+	if (!ipc_get_retval(&answer->data)) {
 		/* The recipient authorized the change of state. */
 		task_t *other_task_s;
@@ -78,8 +78,8 @@
 
 		kobject_t *recipient_obj = kobject_get(TASK,
-		    (cap_handle_t) IPC_GET_ARG1(answer->data),
+		    (cap_handle_t) ipc_get_arg1(&answer->data),
 		    KOBJECT_TYPE_PHONE);
 		if (!recipient_obj) {
-			IPC_SET_RETVAL(answer->data, ENOENT);
+			ipc_set_retval(&answer->data, ENOENT);
 			return ENOENT;
 		}
@@ -88,5 +88,5 @@
 		if (recipient_obj->phone->state != IPC_PHONE_CONNECTED) {
 			mutex_unlock(&recipient_obj->phone->lock);
-			IPC_SET_RETVAL(answer->data, EINVAL);
+			ipc_set_retval(&answer->data, EINVAL);
 			kobject_put(recipient_obj);
 			return EINVAL;
@@ -94,5 +94,5 @@
 
 		other_task_r = recipient_obj->phone->callee->task;
-		other_task_s = (task_t *) IPC_GET_ARG5(*olddata);
+		other_task_s = (task_t *) ipc_get_arg5(olddata);
 
 		/*
@@ -101,15 +101,15 @@
 		 */
 		if (other_task_r != other_task_s) {
-			IPC_SET_RETVAL(answer->data, EINVAL);
+			ipc_set_retval(&answer->data, EINVAL);
 			rc = EINVAL;
 		} else {
 			rc = event_task_notify_5(other_task_r,
 			    EVENT_TASK_STATE_CHANGE, false,
-			    IPC_GET_ARG1(*olddata),
-			    IPC_GET_ARG2(*olddata),
-			    IPC_GET_ARG3(*olddata),
+			    ipc_get_arg1(olddata),
+			    ipc_get_arg2(olddata),
+			    ipc_get_arg3(olddata),
 			    LOWER32(olddata->task_id),
 			    UPPER32(olddata->task_id));
-			IPC_SET_RETVAL(answer->data, rc);
+			ipc_set_retval(&answer->data, rc);
 		}
 
Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/ipc/sysipc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -131,5 +131,5 @@
 static inline bool answer_need_old(call_t *call)
 {
-	switch (IPC_GET_IMETHOD(call->data)) {
+	switch (ipc_get_imethod(&call->data)) {
 	case IPC_M_CONNECT_TO_ME:
 	case IPC_M_CONNECT_ME_TO:
@@ -192,5 +192,5 @@
 	spinlock_unlock(&answer->forget_lock);
 
-	if ((errno_t) IPC_GET_RETVAL(answer->data) == EHANGUP) {
+	if ((errno_t) ipc_get_retval(&answer->data) == EHANGUP) {
 		phone_t *phone = answer->caller_phone;
 		mutex_lock(&phone->lock);
@@ -223,5 +223,5 @@
 static errno_t request_preprocess(call_t *call, phone_t *phone)
 {
-	call->request_method = IPC_GET_IMETHOD(call->data);
+	call->request_method = ipc_get_imethod(&call->data);
 	return SYSIPC_OP(request_preprocess, call, phone);
 }
@@ -238,7 +238,7 @@
 static void process_answer(call_t *call)
 {
-	if (((errno_t) IPC_GET_RETVAL(call->data) == EHANGUP) &&
+	if (((errno_t) ipc_get_retval(&call->data) == EHANGUP) &&
 	    (call->flags & IPC_CALL_FORWARDED))
-		IPC_SET_RETVAL(call->data, EFORWARD);
+		ipc_set_retval(&call->data, EFORWARD);
 
 	SYSIPC_OP(answer_process, call);
@@ -326,5 +326,5 @@
 		process_answer(call);
 	} else
-		IPC_SET_RETVAL(call->data, rc);
+		ipc_set_retval(&call->data, rc);
 
 	memcpy(data->args, call->data.args, sizeof(data->args));
@@ -385,8 +385,8 @@
 	}
 
-	IPC_SET_IMETHOD(call->data, imethod);
-	IPC_SET_ARG1(call->data, arg1);
-	IPC_SET_ARG2(call->data, arg2);
-	IPC_SET_ARG3(call->data, arg3);
+	ipc_set_imethod(&call->data, imethod);
+	ipc_set_arg1(&call->data, arg1);
+	ipc_set_arg2(&call->data, arg2);
+	ipc_set_arg3(&call->data, arg3);
 
 	/*
@@ -394,5 +394,5 @@
 	 * the limits of the fast version.
 	 */
-	IPC_SET_ARG5(call->data, 0);
+	ipc_set_arg5(&call->data, 0);
 
 	/* Set the user-defined label */
@@ -505,5 +505,5 @@
 	}
 
-	if (!method_is_forwardable(IPC_GET_IMETHOD(call->data))) {
+	if (!method_is_forwardable(ipc_get_imethod(&call->data))) {
 		rc = EPERM;
 		goto error;
@@ -518,20 +518,20 @@
 	 * If the interface and method is immutable, don't change anything.
 	 */
-	if (!method_is_immutable(IPC_GET_IMETHOD(call->data))) {
-		if (method_is_system(IPC_GET_IMETHOD(call->data))) {
-			if (IPC_GET_IMETHOD(call->data) ==
+	if (!method_is_immutable(ipc_get_imethod(&call->data))) {
+		if (method_is_system(ipc_get_imethod(&call->data))) {
+			if (ipc_get_imethod(&call->data) ==
 			    IPC_M_CONNECT_TO_ME) {
 				kobject_put((kobject_t *) call->priv);
 				call->priv = 0;
 				cap_free(TASK,
-				    (cap_handle_t) IPC_GET_ARG5(call->data));
+				    (cap_handle_t) ipc_get_arg5(&call->data));
 			}
 
-			IPC_SET_ARG1(call->data, imethod);
-			IPC_SET_ARG2(call->data, arg1);
-			IPC_SET_ARG3(call->data, arg2);
+			ipc_set_arg1(&call->data, imethod);
+			ipc_set_arg2(&call->data, arg1);
+			ipc_set_arg3(&call->data, arg2);
 
 			if (slow)
-				IPC_SET_ARG4(call->data, arg3);
+				ipc_set_arg4(&call->data, arg3);
 
 			/*
@@ -540,11 +540,11 @@
 			 */
 		} else {
-			IPC_SET_IMETHOD(call->data, imethod);
-			IPC_SET_ARG1(call->data, arg1);
-			IPC_SET_ARG2(call->data, arg2);
+			ipc_set_imethod(&call->data, imethod);
+			ipc_set_arg1(&call->data, arg1);
+			ipc_set_arg2(&call->data, arg2);
 			if (slow) {
-				IPC_SET_ARG3(call->data, arg3);
-				IPC_SET_ARG4(call->data, arg4);
-				IPC_SET_ARG5(call->data, arg5);
+				ipc_set_arg3(&call->data, arg3);
+				ipc_set_arg4(&call->data, arg4);
+				ipc_set_arg5(&call->data, arg5);
 			}
 		}
@@ -563,5 +563,5 @@
 
 error:
-	IPC_SET_RETVAL(call->data, EFORWARD);
+	ipc_set_retval(&call->data, EFORWARD);
 	(void) answer_preprocess(call, need_old ? &old : NULL);
 	if (after_forward)
@@ -632,7 +632,7 @@
 
 	return sys_ipc_forward_common(chandle, phandle,
-	    IPC_GET_IMETHOD(newdata), IPC_GET_ARG1(newdata),
-	    IPC_GET_ARG2(newdata), IPC_GET_ARG3(newdata),
-	    IPC_GET_ARG4(newdata), IPC_GET_ARG5(newdata), mode, true);
+	    ipc_get_imethod(&newdata), ipc_get_arg1(&newdata),
+	    ipc_get_arg2(&newdata), ipc_get_arg3(&newdata),
+	    ipc_get_arg4(&newdata), ipc_get_arg5(&newdata), mode, true);
 }
 
@@ -671,9 +671,9 @@
 		saved = false;
 
-	IPC_SET_RETVAL(call->data, retval);
-	IPC_SET_ARG1(call->data, arg1);
-	IPC_SET_ARG2(call->data, arg2);
-	IPC_SET_ARG3(call->data, arg3);
-	IPC_SET_ARG4(call->data, arg4);
+	ipc_set_retval(&call->data, retval);
+	ipc_set_arg1(&call->data, arg1);
+	ipc_set_arg2(&call->data, arg2);
+	ipc_set_arg3(&call->data, arg3);
+	ipc_set_arg4(&call->data, arg4);
 
 	/*
@@ -681,5 +681,5 @@
 	 * the limits of the fast version.
 	 */
-	IPC_SET_ARG5(call->data, 0);
+	ipc_set_arg5(&call->data, 0);
 	errno_t rc = answer_preprocess(call, saved ? &saved_data : NULL);
 
@@ -841,5 +841,5 @@
 
 error:
-	if (CAP_HANDLE_VALID(handle))
+	if (cap_handle_valid(handle))
 		cap_free(TASK, handle);
 
@@ -858,5 +858,5 @@
 		saved = false;
 
-	IPC_SET_RETVAL(call->data, EPARTY);
+	ipc_set_retval(&call->data, EPARTY);
 	(void) answer_preprocess(call, saved ? &saved_data : NULL);
 	call->flags |= IPC_CALL_AUTO_REPLY;
Index: kernel/generic/src/mm/backend_user.c
===================================================================
--- kernel/generic/src/mm/backend_user.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/mm/backend_user.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -119,10 +119,10 @@
 
 	ipc_data_t data = { };
-	IPC_SET_IMETHOD(data, IPC_M_PAGE_IN);
-	IPC_SET_ARG1(data, upage - area->base);
-	IPC_SET_ARG2(data, PAGE_SIZE);
-	IPC_SET_ARG3(data, pager_info->id1);
-	IPC_SET_ARG4(data, pager_info->id2);
-	IPC_SET_ARG5(data, pager_info->id3);
+	ipc_set_imethod(&data, IPC_M_PAGE_IN);
+	ipc_set_arg1(&data, upage - area->base);
+	ipc_set_arg2(&data, PAGE_SIZE);
+	ipc_set_arg3(&data, pager_info->id1);
+	ipc_set_arg4(&data, pager_info->id2);
+	ipc_set_arg5(&data, pager_info->id3);
 
 	errno_t rc = ipc_req_internal(pager_info->pager, &data, (sysarg_t) true);
@@ -136,5 +136,5 @@
 	}
 
-	if (IPC_GET_RETVAL(data) != EOK)
+	if (ipc_get_retval(&data) != EOK)
 		return AS_PF_FAULT;
 
@@ -145,5 +145,5 @@
 	 */
 
-	uintptr_t frame = IPC_GET_ARG1(data);
+	uintptr_t frame = ipc_get_arg1(&data);
 	page_mapping_insert(AS, upage, frame, as_area_get_flags(area));
 	if (!used_space_insert(&area->used_space, upage, 1))
Index: kernel/generic/src/udebug/udebug.c
===================================================================
--- kernel/generic/src/udebug/udebug.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/udebug/udebug.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -141,5 +141,5 @@
 		TASK->udebug.begin_call = NULL;
 
-		IPC_SET_RETVAL(db_call->data, 0);
+		ipc_set_retval(&db_call->data, 0);
 		ipc_answer(&TASK->answerbox, db_call);
 	} else if (TASK->udebug.dt_state == UDEBUG_TS_ACTIVE) {
@@ -160,6 +160,6 @@
 			assert(go_call);
 
-			IPC_SET_RETVAL(go_call->data, 0);
-			IPC_SET_ARG1(go_call->data, UDEBUG_EVENT_STOP);
+			ipc_set_retval(&go_call->data, 0);
+			ipc_set_arg1(&go_call->data, UDEBUG_EVENT_STOP);
 
 			THREAD->udebug.cur_event = UDEBUG_EVENT_STOP;
@@ -243,8 +243,8 @@
 	THREAD->udebug.go_call = NULL;
 
-	IPC_SET_RETVAL(call->data, 0);
-	IPC_SET_ARG1(call->data, etype);
-	IPC_SET_ARG2(call->data, id);
-	IPC_SET_ARG3(call->data, rc);
+	ipc_set_retval(&call->data, 0);
+	ipc_set_arg1(&call->data, etype);
+	ipc_set_arg2(&call->data, id);
+	ipc_set_arg3(&call->data, rc);
 
 	THREAD->udebug.syscall_args[0] = a1;
@@ -314,7 +314,7 @@
 
 	THREAD->udebug.go_call = NULL;
-	IPC_SET_RETVAL(call->data, 0);
-	IPC_SET_ARG1(call->data, UDEBUG_EVENT_THREAD_B);
-	IPC_SET_ARG2(call->data, (sysarg_t) thread);
+	ipc_set_retval(&call->data, 0);
+	ipc_set_arg1(&call->data, UDEBUG_EVENT_THREAD_B);
+	ipc_set_arg2(&call->data, (sysarg_t) thread);
 
 	/*
@@ -365,6 +365,6 @@
 
 	THREAD->udebug.go_call = NULL;
-	IPC_SET_RETVAL(call->data, 0);
-	IPC_SET_ARG1(call->data, UDEBUG_EVENT_THREAD_E);
+	ipc_set_retval(&call->data, 0);
+	ipc_set_arg1(&call->data, UDEBUG_EVENT_THREAD_E);
 
 	/* Prevent any further debug activity in thread. */
@@ -428,6 +428,6 @@
 				LOG("Answer GO call with EVENT_FINISHED.");
 
-				IPC_SET_RETVAL(thread->udebug.go_call->data, 0);
-				IPC_SET_ARG1(thread->udebug.go_call->data,
+				ipc_set_retval(&thread->udebug.go_call->data, 0);
+				ipc_set_arg1(&thread->udebug.go_call->data,
 				    UDEBUG_EVENT_FINISHED);
 
Index: kernel/generic/src/udebug/udebug_ipc.c
===================================================================
--- kernel/generic/src/udebug/udebug_ipc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/udebug/udebug_ipc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -53,5 +53,5 @@
 errno_t udebug_request_preprocess(call_t *call, phone_t *phone)
 {
-	switch (IPC_GET_ARG1(call->data)) {
+	switch (ipc_get_arg1(&call->data)) {
 		/* future UDEBUG_M_REGS_WRITE, UDEBUG_M_MEM_WRITE: */
 	default:
@@ -76,5 +76,5 @@
 	rc = udebug_begin(call, &active);
 	if (rc != EOK) {
-		IPC_SET_RETVAL(call->data, rc);
+		ipc_set_retval(&call->data, rc);
 		ipc_answer(&TASK->kb.box, call);
 		return;
@@ -86,5 +86,5 @@
 	 */
 	if (active) {
-		IPC_SET_RETVAL(call->data, EOK);
+		ipc_set_retval(&call->data, EOK);
 		ipc_answer(&TASK->kb.box, call);
 	}
@@ -102,5 +102,5 @@
 	rc = udebug_end();
 
-	IPC_SET_RETVAL(call->data, rc);
+	ipc_set_retval(&call->data, rc);
 	ipc_answer(&TASK->kb.box, call);
 }
@@ -116,8 +116,8 @@
 	udebug_evmask_t mask;
 
-	mask = IPC_GET_ARG2(call->data);
+	mask = ipc_get_arg2(&call->data);
 	rc = udebug_set_evmask(mask);
 
-	IPC_SET_RETVAL(call->data, rc);
+	ipc_set_retval(&call->data, rc);
 	ipc_answer(&TASK->kb.box, call);
 }
@@ -133,9 +133,9 @@
 	errno_t rc;
 
-	t = (thread_t *)IPC_GET_ARG2(call->data);
+	t = (thread_t *)ipc_get_arg2(&call->data);
 
 	rc = udebug_go(t, call);
 	if (rc != EOK) {
-		IPC_SET_RETVAL(call->data, rc);
+		ipc_set_retval(&call->data, rc);
 		ipc_answer(&TASK->kb.box, call);
 		return;
@@ -153,8 +153,8 @@
 	errno_t rc;
 
-	t = (thread_t *)IPC_GET_ARG2(call->data);
+	t = (thread_t *)ipc_get_arg2(&call->data);
 
 	rc = udebug_stop(t, call);
-	IPC_SET_RETVAL(call->data, rc);
+	ipc_set_retval(&call->data, rc);
 	ipc_answer(&TASK->kb.box, call);
 }
@@ -173,6 +173,6 @@
 	errno_t rc;
 
-	uspace_addr = IPC_GET_ARG2(call->data);	/* Destination address */
-	buf_size = IPC_GET_ARG3(call->data);	/* Dest. buffer size */
+	uspace_addr = ipc_get_arg2(&call->data);	/* Destination address */
+	buf_size = ipc_get_arg3(&call->data);	/* Dest. buffer size */
 
 	/*
@@ -182,5 +182,5 @@
 	rc = udebug_thread_read(&buffer, buf_size, &copied, &needed);
 	if (rc != EOK) {
-		IPC_SET_RETVAL(call->data, rc);
+		ipc_set_retval(&call->data, rc);
 		ipc_answer(&TASK->kb.box, call);
 		return;
@@ -191,13 +191,13 @@
 	 */
 
-	IPC_SET_RETVAL(call->data, 0);
-	/*
-	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
-	 * same code in process_answer() can be used
-	 * (no way to distinguish method in answer)
-	 */
-	IPC_SET_ARG1(call->data, uspace_addr);
-	IPC_SET_ARG2(call->data, copied);
-	IPC_SET_ARG3(call->data, needed);
+	ipc_set_retval(&call->data, 0);
+	/*
+	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
+	 * same code in process_answer() can be used
+	 * (no way to distinguish method in answer)
+	 */
+	ipc_set_arg1(&call->data, uspace_addr);
+	ipc_set_arg2(&call->data, copied);
+	ipc_set_arg3(&call->data, needed);
 	call->buffer = buffer;
 
@@ -219,6 +219,6 @@
 	void *data;
 
-	uspace_addr = IPC_GET_ARG2(call->data);	/* Destination address */
-	buf_size = IPC_GET_ARG3(call->data);	/* Dest. buffer size */
+	uspace_addr = ipc_get_arg2(&call->data);	/* Destination address */
+	buf_size = ipc_get_arg3(&call->data);	/* Dest. buffer size */
 
 	/*
@@ -238,14 +238,14 @@
 	 */
 
-	IPC_SET_RETVAL(call->data, 0);
-	/*
-	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
-	 * same code in process_answer() can be used
-	 * (no way to distinguish method in answer)
-	 */
-	IPC_SET_ARG1(call->data, uspace_addr);
-	IPC_SET_ARG2(call->data, to_copy);
-
-	IPC_SET_ARG3(call->data, data_size);
+	ipc_set_retval(&call->data, 0);
+	/*
+	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
+	 * same code in process_answer() can be used
+	 * (no way to distinguish method in answer)
+	 */
+	ipc_set_arg1(&call->data, uspace_addr);
+	ipc_set_arg2(&call->data, to_copy);
+
+	ipc_set_arg3(&call->data, data_size);
 	call->buffer = data;
 
@@ -268,6 +268,6 @@
 	as_area_info_t *data;
 
-	uspace_addr = IPC_GET_ARG2(call->data);	/* Destination address */
-	buf_size = IPC_GET_ARG3(call->data);	/* Dest. buffer size */
+	uspace_addr = ipc_get_arg2(&call->data);	/* Destination address */
+	buf_size = ipc_get_arg3(&call->data);	/* Dest. buffer size */
 
 	/*
@@ -276,5 +276,5 @@
 	data = as_get_area_info(AS, &data_size);
 	if (!data) {
-		IPC_SET_RETVAL(call->data, ENOMEM);
+		ipc_set_retval(&call->data, ENOMEM);
 		ipc_answer(&TASK->kb.box, call);
 		return;
@@ -292,14 +292,14 @@
 	 */
 
-	IPC_SET_RETVAL(call->data, 0);
-	/*
-	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
-	 * same code in process_answer() can be used
-	 * (no way to distinguish method in answer)
-	 */
-	IPC_SET_ARG1(call->data, uspace_addr);
-	IPC_SET_ARG2(call->data, to_copy);
-
-	IPC_SET_ARG3(call->data, data_size);
+	ipc_set_retval(&call->data, 0);
+	/*
+	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
+	 * same code in process_answer() can be used
+	 * (no way to distinguish method in answer)
+	 */
+	ipc_set_arg1(&call->data, uspace_addr);
+	ipc_set_arg2(&call->data, to_copy);
+
+	ipc_set_arg3(&call->data, data_size);
 	call->buffer = (uint8_t *) data;
 
@@ -319,9 +319,9 @@
 	void *buffer;
 
-	t = (thread_t *)IPC_GET_ARG2(call->data);
+	t = (thread_t *)ipc_get_arg2(&call->data);
 
 	rc = udebug_args_read(t, &buffer);
 	if (rc != EOK) {
-		IPC_SET_RETVAL(call->data, rc);
+		ipc_set_retval(&call->data, rc);
 		ipc_answer(&TASK->kb.box, call);
 		return;
@@ -332,14 +332,14 @@
 	 */
 
-	uspace_addr = IPC_GET_ARG3(call->data);
-
-	IPC_SET_RETVAL(call->data, 0);
-	/*
-	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
-	 * same code in process_answer() can be used
-	 * (no way to distinguish method in answer)
-	 */
-	IPC_SET_ARG1(call->data, uspace_addr);
-	IPC_SET_ARG2(call->data, 6 * sizeof(sysarg_t));
+	uspace_addr = ipc_get_arg3(&call->data);
+
+	ipc_set_retval(&call->data, 0);
+	/*
+	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
+	 * same code in process_answer() can be used
+	 * (no way to distinguish method in answer)
+	 */
+	ipc_set_arg1(&call->data, uspace_addr);
+	ipc_set_arg2(&call->data, 6 * sizeof(sysarg_t));
 	call->buffer = buffer;
 
@@ -359,9 +359,9 @@
 	errno_t rc;
 
-	t = (thread_t *) IPC_GET_ARG2(call->data);
+	t = (thread_t *) ipc_get_arg2(&call->data);
 
 	rc = udebug_regs_read(t, &buffer);
 	if (rc != EOK) {
-		IPC_SET_RETVAL(call->data, rc);
+		ipc_set_retval(&call->data, rc);
 		ipc_answer(&TASK->kb.box, call);
 		return;
@@ -374,15 +374,15 @@
 	 */
 
-	uspace_addr = IPC_GET_ARG3(call->data);
+	uspace_addr = ipc_get_arg3(&call->data);
 	to_copy = sizeof(istate_t);
 
-	IPC_SET_RETVAL(call->data, 0);
-	/*
-	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
-	 * same code in process_answer() can be used
-	 * (no way to distinguish method in answer)
-	 */
-	IPC_SET_ARG1(call->data, uspace_addr);
-	IPC_SET_ARG2(call->data, to_copy);
+	ipc_set_retval(&call->data, 0);
+	/*
+	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
+	 * same code in process_answer() can be used
+	 * (no way to distinguish method in answer)
+	 */
+	ipc_set_arg1(&call->data, uspace_addr);
+	ipc_set_arg2(&call->data, to_copy);
 
 	call->buffer = buffer;
@@ -404,11 +404,11 @@
 	errno_t rc;
 
-	uspace_dst = IPC_GET_ARG2(call->data);
-	uspace_src = IPC_GET_ARG3(call->data);
-	size = IPC_GET_ARG4(call->data);
+	uspace_dst = ipc_get_arg2(&call->data);
+	uspace_src = ipc_get_arg3(&call->data);
+	size = ipc_get_arg4(&call->data);
 
 	rc = udebug_mem_read(uspace_src, size, &buffer);
 	if (rc != EOK) {
-		IPC_SET_RETVAL(call->data, rc);
+		ipc_set_retval(&call->data, rc);
 		ipc_answer(&TASK->kb.box, call);
 		return;
@@ -417,12 +417,12 @@
 	assert(buffer != NULL);
 
-	IPC_SET_RETVAL(call->data, 0);
-	/*
-	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
-	 * same code in process_answer() can be used
-	 * (no way to distinguish method in answer)
-	 */
-	IPC_SET_ARG1(call->data, uspace_dst);
-	IPC_SET_ARG2(call->data, size);
+	ipc_set_retval(&call->data, 0);
+	/*
+	 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that
+	 * same code in process_answer() can be used
+	 * (no way to distinguish method in answer)
+	 */
+	ipc_set_arg1(&call->data, uspace_dst);
+	ipc_set_arg2(&call->data, size);
 	call->buffer = buffer;
 
@@ -439,5 +439,5 @@
 	int debug_method;
 
-	debug_method = IPC_GET_ARG1(call->data);
+	debug_method = ipc_get_arg1(&call->data);
 
 	if (debug_method != UDEBUG_M_BEGIN) {
@@ -450,5 +450,5 @@
 		 */
 		if (TASK->udebug.debugger != call->sender) {
-			IPC_SET_RETVAL(call->data, EINVAL);
+			ipc_set_retval(&call->data, EINVAL);
 			ipc_answer(&TASK->kb.box, call);
 			return;
Index: kernel/generic/src/udebug/udebug_ops.c
===================================================================
--- kernel/generic/src/udebug/udebug_ops.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ kernel/generic/src/udebug/udebug_ops.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -328,6 +328,6 @@
 	thread->udebug.go_call = NULL;
 
-	IPC_SET_RETVAL(call->data, 0);
-	IPC_SET_ARG1(call->data, UDEBUG_EVENT_STOP);
+	ipc_set_retval(&call->data, 0);
+	ipc_set_arg1(&call->data, UDEBUG_EVENT_STOP);
 
 	THREAD->udebug.cur_event = UDEBUG_EVENT_STOP;
Index: uspace/app/kio/kio.c
===================================================================
--- uspace/app/kio/kio.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/app/kio/kio.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -164,7 +164,7 @@
 	fibril_mutex_lock(&mtx);
 
-	size_t kio_start = (size_t) IPC_GET_ARG1(*call);
-	size_t kio_len = (size_t) IPC_GET_ARG2(*call);
-	size_t kio_stored = (size_t) IPC_GET_ARG3(*call);
+	size_t kio_start = (size_t) ipc_get_arg1(call);
+	size_t kio_len = (size_t) ipc_get_arg2(call);
+	size_t kio_stored = (size_t) ipc_get_arg3(call);
 
 	size_t offset = (kio_start + kio_len - kio_stored) % kio_length;
Index: uspace/app/trace/ipcp.c
===================================================================
--- uspace/app/trace/ipcp.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/app/trace/ipcp.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -75,5 +75,5 @@
 {
 	cap_call_handle_t *chandle = (cap_call_handle_t *) key;
-	return CAP_HANDLE_RAW(*chandle);
+	return cap_handle_raw(*chandle);
 }
 
@@ -81,5 +81,5 @@
 {
 	pending_call_t *hs = hash_table_get_inst(item, pending_call_t, link);
-	return CAP_HANDLE_RAW(hs->call_handle);
+	return cap_handle_raw(hs->call_handle);
 }
 
@@ -104,16 +104,16 @@
 	// XXX: there is no longer a limit on the number of phones as phones are
 	// now handled using capabilities
-	if (CAP_HANDLE_RAW(phone) < 0 || CAP_HANDLE_RAW(phone) >= MAX_PHONE)
+	if (cap_handle_raw(phone) < 0 || cap_handle_raw(phone) >= MAX_PHONE)
 		return;
-	connections[CAP_HANDLE_RAW(phone)].server = server;
-	connections[CAP_HANDLE_RAW(phone)].proto = proto;
-	have_conn[CAP_HANDLE_RAW(phone)] = 1;
+	connections[cap_handle_raw(phone)].server = server;
+	connections[cap_handle_raw(phone)].proto = proto;
+	have_conn[cap_handle_raw(phone)] = 1;
 }
 
 void ipcp_connection_clear(cap_phone_handle_t phone)
 {
-	have_conn[CAP_HANDLE_RAW(phone)] = 0;
-	connections[CAP_HANDLE_RAW(phone)].server = 0;
-	connections[CAP_HANDLE_RAW(phone)].proto = NULL;
+	have_conn[cap_handle_raw(phone)] = 0;
+	connections[cap_handle_raw(phone)].server = 0;
+	connections[cap_handle_raw(phone)].proto = NULL;
 }
 
@@ -184,6 +184,6 @@
 	int i;
 
-	if (have_conn[CAP_HANDLE_RAW(phandle)])
-		proto = connections[CAP_HANDLE_RAW(phandle)].proto;
+	if (have_conn[cap_handle_raw(phandle)])
+		proto = connections[cap_handle_raw(phandle)].proto;
 	else
 		proto = NULL;
@@ -194,5 +194,5 @@
 		printf("Call handle: %p, phone: %p, proto: %s, method: ",
 		    chandle, phandle, (proto ? proto->name : "n/a"));
-		ipc_m_print(proto, IPC_GET_IMETHOD(*call));
+		ipc_m_print(proto, ipc_get_imethod(call));
 		printf(" args: (%" PRIun ", %" PRIun ", %" PRIun ", "
 		    "%" PRIun ", %" PRIun ")\n",
@@ -203,5 +203,5 @@
 
 		if (proto != NULL) {
-			oper = proto_get_oper(proto, IPC_GET_IMETHOD(*call));
+			oper = proto_get_oper(proto, ipc_get_imethod(call));
 		} else {
 			oper = NULL;
@@ -262,6 +262,6 @@
 
 	phone = pcall->phone_handle;
-	method = IPC_GET_IMETHOD(pcall->question);
-	retval = IPC_GET_RETVAL(*answer);
+	method = ipc_get_imethod(&pcall->question);
+	retval = ipc_get_retval(answer);
 
 	resp = answer->args;
@@ -270,7 +270,7 @@
 		printf("Response to %p: retval=%s, args = (%" PRIun ", "
 		    "%" PRIun ", %" PRIun ", %" PRIun ", %" PRIun ")\n",
-		    call_handle, str_error_name(retval), IPC_GET_ARG1(*answer),
-		    IPC_GET_ARG2(*answer), IPC_GET_ARG3(*answer),
-		    IPC_GET_ARG4(*answer), IPC_GET_ARG5(*answer));
+		    call_handle, str_error_name(retval), ipc_get_arg1(answer),
+		    ipc_get_arg2(answer), ipc_get_arg3(answer),
+		    ipc_get_arg4(answer), ipc_get_arg5(answer));
 	}
 
@@ -305,10 +305,10 @@
 	    (retval == 0)) {
 		/* Connected to a service (through NS) */
-		service = IPC_GET_ARG2(pcall->question);
+		service = ipc_get_arg2(&pcall->question);
 		proto = proto_get_by_srv(service);
 		if (proto == NULL)
 			proto = proto_unknown;
 
-		cphone = (cap_phone_handle_t) IPC_GET_ARG5(*answer);
+		cphone = (cap_phone_handle_t) ipc_get_arg5(answer);
 		if ((display_mask & DM_SYSTEM) != 0) {
 			printf("Registering connection (phone %p, protocol: %s)\n", cphone,
Index: uspace/app/trace/trace.c
===================================================================
--- uspace/app/trace/trace.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/app/trace/trace.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -302,10 +302,10 @@
 	phandle = (cap_phone_handle_t) sc_args[0];
 
-	IPC_SET_IMETHOD(call, sc_args[1]);
-	IPC_SET_ARG1(call, sc_args[2]);
-	IPC_SET_ARG2(call, sc_args[3]);
-	IPC_SET_ARG3(call, sc_args[4]);
-	IPC_SET_ARG4(call, sc_args[5]);
-	IPC_SET_ARG5(call, 0);
+	ipc_set_imethod(&call, sc_args[1]);
+	ipc_set_arg1(&call, sc_args[2]);
+	ipc_set_arg2(&call, sc_args[3]);
+	ipc_set_arg3(&call, sc_args[4]);
+	ipc_set_arg4(&call, sc_args[5]);
+	ipc_set_arg5(&call, 0);
 
 	ipcp_call_out(phandle, &call, 0);
Index: uspace/app/wavplay/dplay.c
===================================================================
--- uspace/app/wavplay/dplay.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/app/wavplay/dplay.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -103,8 +103,8 @@
 		async_get_call(&call);
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case PCM_EVENT_PLAYBACK_STARTED:
 		case PCM_EVENT_FRAMES_PLAYED:
-			printf("%" PRIun " frames: ", IPC_GET_ARG1(call));
+			printf("%" PRIun " frames: ", ipc_get_arg1(&call));
 			async_answer_0(&call, EOK);
 			break;
@@ -118,5 +118,5 @@
 			return;
 		default:
-			printf("Unknown event %" PRIun ".\n", IPC_GET_IMETHOD(call));
+			printf("Unknown event %" PRIun ".\n", ipc_get_imethod(&call));
 			async_answer_0(&call, ENOTSUP);
 			continue;
Index: uspace/app/wavplay/drec.c
===================================================================
--- uspace/app/wavplay/drec.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/app/wavplay/drec.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -103,5 +103,5 @@
 		async_get_call(&call);
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case PCM_EVENT_CAPTURE_TERMINATED:
 			printf("Recording terminated\n");
@@ -109,8 +109,8 @@
 			break;
 		case PCM_EVENT_FRAMES_CAPTURED:
-			printf("%" PRIun " frames\n", IPC_GET_ARG1(call));
+			printf("%" PRIun " frames\n", ipc_get_arg1(&call));
 			break;
 		default:
-			printf("Unknown event %" PRIun ".\n", IPC_GET_IMETHOD(call));
+			printf("Unknown event %" PRIun ".\n", ipc_get_imethod(&call));
 			async_answer_0(&call, ENOTSUP);
 			continue;
Index: uspace/drv/audio/hdaudio/hdaudio.c
===================================================================
--- uspace/drv/audio/hdaudio/hdaudio.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/audio/hdaudio/hdaudio.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -385,5 +385,5 @@
 	hda_ctl_interrupt(hda->ctl);
 
-	if (IPC_GET_ARG3(*icall) != 0) {
+	if (ipc_get_arg3(icall) != 0) {
 		/* Buffer completed */
 		hda_lock(hda);
Index: uspace/drv/block/ahci/ahci.c
===================================================================
--- uspace/drv/block/ahci/ahci.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/block/ahci/ahci.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -897,6 +897,6 @@
 {
 	ahci_dev_t *ahci = dev_ahci_dev(dev);
-	unsigned int port = IPC_GET_ARG1(*icall);
-	ahci_port_is_t pxis = IPC_GET_ARG2(*icall);
+	unsigned int port = ipc_get_arg1(icall);
+	ahci_port_is_t pxis = ipc_get_arg2(icall);
 
 	if (port >= AHCI_MAX_PORTS)
Index: uspace/drv/block/ddisk/ddisk.c
===================================================================
--- uspace/drv/block/ddisk/ddisk.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/block/ddisk/ddisk.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -179,5 +179,5 @@
 {
 	ddf_msg(LVL_DEBUG, "ddisk_irq_handler(), status=%" PRIx32,
-	    (uint32_t) IPC_GET_ARG1(*icall));
+	    (uint32_t) ipc_get_arg1(icall));
 
 	ddisk_t *ddisk = (ddisk_t *) ddf_dev_data_get(dev);
Index: uspace/drv/bus/adb/cuda_adb/cuda_adb.c
===================================================================
--- uspace/drv/bus/adb/cuda_adb/cuda_adb.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/bus/adb/cuda_adb/cuda_adb.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -208,5 +208,5 @@
 	while (true) {
 		async_get_call(&call);
-		method = IPC_GET_IMETHOD(call);
+		method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/drv/bus/pci/pciintel/ctl.c
===================================================================
--- uspace/drv/bus/pci/pciintel/ctl.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/bus/pci/pciintel/ctl.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -65,8 +65,8 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call))
-			break;
-
-		switch (IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call))
+			break;
+
+		switch (ipc_get_imethod(&call)) {
 		case PCI_GET_DEVICES:
 			pci_ctl_get_devices_srv(bus, &call);
@@ -140,5 +140,5 @@
 	errno_t rc;
 
-	dev_handle = IPC_GET_ARG1(*icall);
+	dev_handle = ipc_get_arg1(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "pci_dev_get_info_srv(%zu)",
 	    dev_handle);
Index: uspace/drv/bus/usb/ohci/hc.c
===================================================================
--- uspace/drv/bus/usb/ohci/hc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/bus/usb/ohci/hc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -514,5 +514,5 @@
 
 	/* Enable interrupts */
-	if (CAP_HANDLE_VALID(instance->base.irq_handle)) {
+	if (cap_handle_valid(instance->base.irq_handle)) {
 		OHCI_WR(instance->registers->interrupt_enable,
 		    OHCI_USED_INTERRUPTS);
Index: uspace/drv/bus/usb/uhci/hc.c
===================================================================
--- uspace/drv/bus/usb/uhci/hc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/bus/usb/uhci/hc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -295,5 +295,5 @@
 	pio_write_32(&registers->flbaseadd, pa);
 
-	if (CAP_HANDLE_VALID(instance->base.irq_handle)) {
+	if (cap_handle_valid(instance->base.irq_handle)) {
 		/* Enable all interrupts, but resume interrupt */
 		pio_write_16(&instance->registers->usbintr,
Index: uspace/drv/bus/usb/vhc/conndev.c
===================================================================
--- uspace/drv/bus/usb/vhc/conndev.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/bus/usb/vhc/conndev.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -83,5 +83,5 @@
 		return;
 
-	size_t len = IPC_GET_ARG2(data_request_call);
+	size_t len = ipc_get_arg2(&data_request_call);
 	plugged_device_name[len] = 0;
 }
Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -494,5 +494,5 @@
 	XHCI_REG_WR(intr0, XHCI_INTR_ERSTBA, erstba_phys);
 
-	if (CAP_HANDLE_VALID(hc->base.irq_handle)) {
+	if (cap_handle_valid(hc->base.irq_handle)) {
 		XHCI_REG_SET(intr0, XHCI_INTR_IE, 1);
 		XHCI_REG_SET(hc->op_regs, XHCI_OP_INTE, 1);
Index: uspace/drv/char/i8042/i8042.c
===================================================================
--- uspace/drv/char/i8042/i8042.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/char/i8042/i8042.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -132,6 +132,6 @@
 	errno_t rc;
 
-	const uint8_t status = IPC_GET_ARG1(*call);
-	const uint8_t data = IPC_GET_ARG2(*call);
+	const uint8_t status = ipc_get_arg1(call);
+	const uint8_t data = ipc_get_arg2(call);
 
 	i8042_port_t *port = (status & i8042_AUX_DATA) ?
Index: uspace/drv/char/msim-con/msim-con.c
===================================================================
--- uspace/drv/char/msim-con/msim-con.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/char/msim-con/msim-con.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -71,5 +71,5 @@
 	fibril_mutex_lock(&con->buf_lock);
 
-	c = IPC_GET_ARG2(*call);
+	c = ipc_get_arg2(call);
 	rc = circ_buf_push(&con->cbuf, &c);
 	if (rc != EOK)
@@ -156,5 +156,5 @@
 	return EOK;
 error:
-	if (CAP_HANDLE_VALID(con->irq_handle))
+	if (cap_handle_valid(con->irq_handle))
 		async_irq_unsubscribe(con->irq_handle);
 	if (bound)
Index: uspace/drv/char/ns8250/ns8250.c
===================================================================
--- uspace/drv/char/ns8250/ns8250.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/char/ns8250/ns8250.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -1080,5 +1080,5 @@
 {
 	ns8250_t *ns8250 = srv_ns8250(srv);
-	sysarg_t method = IPC_GET_IMETHOD(*call);
+	sysarg_t method = ipc_get_imethod(call);
 	errno_t ret;
 	unsigned int baud_rate, parity, word_length, stop_bits;
@@ -1093,8 +1093,8 @@
 
 	case SERIAL_SET_COM_PROPS:
-		baud_rate = IPC_GET_ARG1(*call);
-		parity = IPC_GET_ARG2(*call);
-		word_length = IPC_GET_ARG3(*call);
-		stop_bits = IPC_GET_ARG4(*call);
+		baud_rate = ipc_get_arg1(call);
+		parity = ipc_get_arg2(call);
+		word_length = ipc_get_arg3(call);
+		stop_bits = ipc_get_arg4(call);
 		ret = ns8250_set_props(ns8250->dev, baud_rate, parity, word_length,
 		    stop_bits);
Index: uspace/drv/char/pc-lpt/pc-lpt.c
===================================================================
--- uspace/drv/char/pc-lpt/pc-lpt.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/char/pc-lpt/pc-lpt.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -173,5 +173,5 @@
 	return EOK;
 error:
-	if (CAP_HANDLE_VALID(lpt->irq_handle))
+	if (cap_handle_valid(lpt->irq_handle))
 		async_irq_unsubscribe(lpt->irq_handle);
 	if (bound)
Index: uspace/drv/char/pl050/pl050.c
===================================================================
--- uspace/drv/char/pl050/pl050.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/char/pl050/pl050.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -157,5 +157,5 @@
 	}
 
-	pl050->buffer[pl050->buf_wp] = IPC_GET_ARG2(*call);
+	pl050->buffer[pl050->buf_wp] = ipc_get_arg2(call);
 	pl050->buf_wp = nidx;
 	fibril_condvar_broadcast(&pl050->buf_cv);
Index: uspace/drv/hid/adb-kbd/adb-kbd.c
===================================================================
--- uspace/drv/hid/adb-kbd/adb-kbd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/hid/adb-kbd/adb-kbd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -141,12 +141,12 @@
 		errno_t retval = EOK;
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case ADB_REG_NOTIF:
-			adb_kbd_reg0_data(kbd, IPC_GET_ARG1(call));
+			adb_kbd_reg0_data(kbd, ipc_get_arg1(&call));
 			break;
 		default:
@@ -205,5 +205,5 @@
 	while (true) {
 		async_get_call(&call);
-		method = IPC_GET_IMETHOD(call);
+		method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/drv/hid/adb-mouse/adb-mouse.c
===================================================================
--- uspace/drv/hid/adb-mouse/adb-mouse.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/hid/adb-mouse/adb-mouse.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -99,12 +99,12 @@
 		errno_t retval = EOK;
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			/* TODO: Handle hangup */
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case ADB_REG_NOTIF:
-			adb_mouse_data(mouse, IPC_GET_ARG1(call));
+			adb_mouse_data(mouse, ipc_get_arg1(&call));
 			break;
 		default:
@@ -215,5 +215,5 @@
 	while (true) {
 		async_get_call(&call);
-		method = IPC_GET_IMETHOD(call);
+		method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/drv/hid/atkbd/atkbd.c
===================================================================
--- uspace/drv/hid/atkbd/atkbd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/hid/atkbd/atkbd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -310,5 +310,5 @@
 static void default_connection_handler(ddf_fun_t *fun, ipc_call_t *icall)
 {
-	const sysarg_t method = IPC_GET_IMETHOD(*icall);
+	const sysarg_t method = ipc_get_imethod(icall);
 	at_kbd_t *kbd = ddf_dev_data_get(ddf_fun_get_dev(fun));
 	async_sess_t *sess;
Index: uspace/drv/hid/ps2mouse/ps2mouse.c
===================================================================
--- uspace/drv/hid/ps2mouse/ps2mouse.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/hid/ps2mouse/ps2mouse.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -429,5 +429,5 @@
 void default_connection_handler(ddf_fun_t *fun, ipc_call_t *icall)
 {
-	const sysarg_t method = IPC_GET_IMETHOD(*icall);
+	const sysarg_t method = ipc_get_imethod(icall);
 	ps2_mouse_t *mouse = ddf_dev_data_get(ddf_fun_get_dev(fun));
 	async_sess_t *sess;
Index: uspace/drv/hid/usbhid/kbd/kbddev.c
===================================================================
--- uspace/drv/hid/usbhid/kbd/kbddev.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/hid/usbhid/kbd/kbddev.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -159,5 +159,5 @@
 static void default_connection_handler(ddf_fun_t *fun, ipc_call_t *icall)
 {
-	const sysarg_t method = IPC_GET_IMETHOD(*icall);
+	const sysarg_t method = ipc_get_imethod(icall);
 	usb_kbd_t *kbd_dev = ddf_fun_data_get(fun);
 	async_sess_t *sess;
@@ -165,5 +165,5 @@
 	switch (method) {
 	case KBDEV_SET_IND:
-		kbd_dev->mods = IPC_GET_ARG1(*icall);
+		kbd_dev->mods = ipc_get_arg1(icall);
 		usb_kbd_set_led(kbd_dev->hid_dev, kbd_dev);
 		async_answer_0(icall, EOK);
Index: uspace/drv/hid/xtkbd/xtkbd.c
===================================================================
--- uspace/drv/hid/xtkbd/xtkbd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/hid/xtkbd/xtkbd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -344,5 +344,5 @@
 static void default_connection_handler(ddf_fun_t *fun, ipc_call_t *icall)
 {
-	const sysarg_t method = IPC_GET_IMETHOD(*icall);
+	const sysarg_t method = ipc_get_imethod(icall);
 	xt_kbd_t *kbd = ddf_dev_data_get(ddf_fun_get_dev(fun));
 	unsigned mods;
@@ -355,5 +355,5 @@
 		 * assume AT keyboard with Scan Code Set 1.
 		 */
-		mods = IPC_GET_ARG1(*icall);
+		mods = ipc_get_arg1(icall);
 		const uint8_t status = 0 |
 		    ((mods & KM_CAPS_LOCK) ? LI_CAPS : 0) |
Index: uspace/drv/intctl/apic/apic.c
===================================================================
--- uspace/drv/intctl/apic/apic.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/intctl/apic/apic.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -179,5 +179,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			/* The other side has hung up. */
 			async_answer_0(&call, EOK);
@@ -185,8 +185,8 @@
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IRC_ENABLE_INTERRUPT:
 			async_answer_0(&call, apic_enable_irq(apic,
-			    IPC_GET_ARG1(call)));
+			    ipc_get_arg1(&call)));
 			break;
 		case IRC_DISABLE_INTERRUPT:
Index: uspace/drv/intctl/i8259/i8259.c
===================================================================
--- uspace/drv/intctl/i8259/i8259.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/intctl/i8259/i8259.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -108,5 +108,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			/* The other side has hung up. */
 			async_answer_0(&call, EOK);
@@ -114,8 +114,8 @@
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IRC_ENABLE_INTERRUPT:
 			async_answer_0(&call, pic_enable_irq(i8259,
-			    IPC_GET_ARG1(call)));
+			    ipc_get_arg1(&call)));
 			break;
 		case IRC_DISABLE_INTERRUPT:
Index: uspace/drv/intctl/icp-ic/icp-ic.c
===================================================================
--- uspace/drv/intctl/icp-ic/icp-ic.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/intctl/icp-ic/icp-ic.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -84,5 +84,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			/* The other side has hung up. */
 			async_answer_0(&call, EOK);
@@ -90,8 +90,8 @@
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IRC_ENABLE_INTERRUPT:
 			async_answer_0(&call,
-			    icpic_enable_irq(icpic, IPC_GET_ARG1(call)));
+			    icpic_enable_irq(icpic, ipc_get_arg1(&call)));
 			break;
 		case IRC_DISABLE_INTERRUPT:
Index: uspace/drv/intctl/obio/obio.c
===================================================================
--- uspace/drv/intctl/obio/obio.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/intctl/obio/obio.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -90,7 +90,7 @@
 		async_get_call(&call);
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IRC_ENABLE_INTERRUPT:
-			inr = IPC_GET_ARG1(call);
+			inr = ipc_get_arg1(&call);
 			pio_set_64(&obio->regs[OBIO_IMR(inr & INO_MASK)],
 			    1UL << 31, 0);
@@ -102,5 +102,5 @@
 			break;
 		case IRC_CLEAR_INTERRUPT:
-			inr = IPC_GET_ARG1(call);
+			inr = ipc_get_arg1(&call);
 			pio_write_64(&obio->regs[OBIO_CIR(inr & INO_MASK)], 0);
 			async_answer_0(&call, EOK);
Index: uspace/drv/nic/e1k/e1k.c
===================================================================
--- uspace/drv/nic/e1k/e1k.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/nic/e1k/e1k.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -1244,5 +1244,5 @@
     ddf_dev_t *dev)
 {
-	uint32_t icr = (uint32_t) IPC_GET_ARG2(*icall);
+	uint32_t icr = (uint32_t) ipc_get_arg2(icall);
 	nic_t *nic = NIC_DATA_DEV(dev);
 	e1000_t *e1000 = DRIVER_DATA_NIC(nic);
Index: uspace/drv/nic/ne2k/ne2k.c
===================================================================
--- uspace/drv/nic/ne2k/ne2k.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/nic/ne2k/ne2k.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -52,5 +52,5 @@
  *
  */
-#define IRQ_GET_ISR(call)  ((int) IPC_GET_ARG2(call))
+#define IRQ_GET_ISR(call)  ((int) ipc_get_arg2(&call))
 
 /** Return the TSR from the interrupt call.
@@ -59,5 +59,5 @@
  *
  */
-#define IRQ_GET_TSR(call)  ((int) IPC_GET_ARG3(call))
+#define IRQ_GET_TSR(call)  ((int) ipc_get_arg3(&call))
 
 #define DRIVER_DATA(dev) ((nic_t *) ddf_dev_data_get(dev))
Index: uspace/drv/nic/rtl8139/driver.c
===================================================================
--- uspace/drv/nic/rtl8139/driver.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/nic/rtl8139/driver.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -827,5 +827,5 @@
 	assert(icall);
 
-	uint16_t isr = (uint16_t) IPC_GET_ARG2(*icall);
+	uint16_t isr = (uint16_t) ipc_get_arg2(icall);
 	nic_t *nic_data = nic_get_from_ddf_dev(dev);
 	rtl8139_t *rtl8139 = nic_get_specific(nic_data);
Index: uspace/drv/nic/rtl8169/driver.c
===================================================================
--- uspace/drv/nic/rtl8169/driver.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/drv/nic/rtl8169/driver.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -1038,5 +1038,5 @@
 	assert(icall);
 
-	uint16_t isr = (uint16_t) IPC_GET_ARG2(*icall) & INT_KNOWN;
+	uint16_t isr = (uint16_t) ipc_get_arg2(icall) & INT_KNOWN;
 	nic_t *nic_data = nic_get_from_ddf_dev(dev);
 	rtl8169_t *rtl8169 = nic_get_specific(nic_data);
Index: uspace/lib/c/generic/async/client.c
===================================================================
--- uspace/lib/c/generic/async/client.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/async/client.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -216,5 +216,5 @@
 	fibril_rmutex_lock(&message_mutex);
 
-	msg->retval = IPC_GET_RETVAL(*data);
+	msg->retval = ipc_get_retval(data);
 
 	/* Copy data inside lock, just in case the call was detached */
@@ -486,17 +486,17 @@
 
 	if (r1)
-		*r1 = IPC_GET_ARG1(result);
+		*r1 = ipc_get_arg1(&result);
 
 	if (r2)
-		*r2 = IPC_GET_ARG2(result);
+		*r2 = ipc_get_arg2(&result);
 
 	if (r3)
-		*r3 = IPC_GET_ARG3(result);
+		*r3 = ipc_get_arg3(&result);
 
 	if (r4)
-		*r4 = IPC_GET_ARG4(result);
+		*r4 = ipc_get_arg4(&result);
 
 	if (r5)
-		*r5 = IPC_GET_ARG5(result);
+		*r5 = ipc_get_arg5(&result);
 
 	return rc;
@@ -538,17 +538,17 @@
 
 	if (r1)
-		*r1 = IPC_GET_ARG1(result);
+		*r1 = ipc_get_arg1(&result);
 
 	if (r2)
-		*r2 = IPC_GET_ARG2(result);
+		*r2 = ipc_get_arg2(&result);
 
 	if (r3)
-		*r3 = IPC_GET_ARG3(result);
+		*r3 = ipc_get_arg3(&result);
 
 	if (r4)
-		*r4 = IPC_GET_ARG4(result);
+		*r4 = ipc_get_arg4(&result);
 
 	if (r5)
-		*r5 = IPC_GET_ARG5(result);
+		*r5 = ipc_get_arg5(&result);
 
 	return rc;
@@ -805,5 +805,5 @@
 		return rc;
 
-	*out_phone = (cap_phone_handle_t) IPC_GET_ARG5(result);
+	*out_phone = (cap_phone_handle_t) ipc_get_arg5(&result);
 	return EOK;
 }
@@ -1260,5 +1260,5 @@
 {
 	return async_req_5_0(exch, IPC_M_STATE_CHANGE_AUTHORIZE,
-	    arg1, arg2, arg3, 0, CAP_HANDLE_RAW(other_exch->phone));
+	    arg1, arg2, arg3, 0, cap_handle_raw(other_exch->phone));
 }
 
Index: uspace/lib/c/generic/async/server.c
===================================================================
--- uspace/lib/c/generic/async/server.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/async/server.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -546,5 +546,5 @@
 	errno_t rc = mpsc_send(conn->msg_channel, call);
 
-	if (IPC_GET_IMETHOD(*call) == IPC_M_PHONE_HUNGUP) {
+	if (ipc_get_imethod(call) == IPC_M_PHONE_HUNGUP) {
 		/* Close the channel, but let the connection fibril answer. */
 		mpsc_close(conn->msg_channel);
@@ -656,6 +656,6 @@
 	}
 
-	ht_link_t *link = hash_table_find(&notification_hash_table,
-	    &IPC_GET_IMETHOD(*call));
+	sysarg_t imethod = ipc_get_imethod(call);
+	ht_link_t *link = hash_table_find(&notification_hash_table, &imethod);
 	if (!link) {
 		/* Invalid notification. */
@@ -871,5 +871,5 @@
 
 		memset(call, 0, sizeof(ipc_call_t));
-		IPC_SET_IMETHOD(*call, IPC_M_PHONE_HUNGUP);
+		ipc_set_imethod(call, IPC_M_PHONE_HUNGUP);
 		call->cap_handle = CAP_NIL;
 	}
@@ -944,5 +944,5 @@
 
 	/* New connection */
-	if (IPC_GET_IMETHOD(*call) == IPC_M_CONNECT_ME_TO) {
+	if (ipc_get_imethod(call) == IPC_M_CONNECT_ME_TO) {
 		connection_t *conn = calloc(1, sizeof(*conn));
 		if (!conn) {
@@ -951,5 +951,5 @@
 		}
 
-		iface_t iface = (iface_t) IPC_GET_ARG1(*call);
+		iface_t iface = (iface_t) ipc_get_arg1(call);
 
 		// TODO: Currently ignores all ports but the first one.
@@ -1221,8 +1221,8 @@
 	async_get_call(call);
 
-	if (IPC_GET_IMETHOD(*call) != IPC_M_SHARE_IN)
+	if (ipc_get_imethod(call) != IPC_M_SHARE_IN)
 		return false;
 
-	*size = (size_t) IPC_GET_ARG1(*call);
+	*size = (size_t) ipc_get_arg1(call);
 	return true;
 }
@@ -1276,9 +1276,9 @@
 	async_get_call(call);
 
-	if (IPC_GET_IMETHOD(*call) != IPC_M_SHARE_OUT)
+	if (ipc_get_imethod(call) != IPC_M_SHARE_OUT)
 		return false;
 
-	*size = (size_t) IPC_GET_ARG2(*call);
-	*flags = (unsigned int) IPC_GET_ARG3(*call);
+	*size = (size_t) ipc_get_arg2(call);
+	*flags = (unsigned int) ipc_get_arg3(call);
 	return true;
 }
@@ -1329,9 +1329,9 @@
 	async_get_call(call);
 
-	if (IPC_GET_IMETHOD(*call) != IPC_M_DATA_READ)
+	if (ipc_get_imethod(call) != IPC_M_DATA_READ)
 		return false;
 
 	if (size)
-		*size = (size_t) IPC_GET_ARG2(*call);
+		*size = (size_t) ipc_get_arg2(call);
 
 	return true;
@@ -1488,9 +1488,9 @@
 	async_get_call(call);
 
-	if (IPC_GET_IMETHOD(*call) != IPC_M_DATA_WRITE)
+	if (ipc_get_imethod(call) != IPC_M_DATA_WRITE)
 		return false;
 
 	if (size)
-		*size = (size_t) IPC_GET_ARG2(*call);
+		*size = (size_t) ipc_get_arg2(call);
 
 	return true;
@@ -1732,8 +1732,8 @@
 	async_get_call(&call);
 
-	cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(call);
-
-	if ((IPC_GET_IMETHOD(call) != IPC_M_CONNECT_TO_ME) ||
-	    !CAP_HANDLE_VALID((phandle))) {
+	cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(&call);
+
+	if ((ipc_get_imethod(&call) != IPC_M_CONNECT_TO_ME) ||
+	    !cap_handle_valid((phandle))) {
 		async_answer_0(&call, EINVAL);
 		return NULL;
@@ -1776,8 +1776,8 @@
 async_sess_t *async_callback_receive_start(exch_mgmt_t mgmt, ipc_call_t *call)
 {
-	cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(*call);
-
-	if ((IPC_GET_IMETHOD(*call) != IPC_M_CONNECT_TO_ME) ||
-	    !CAP_HANDLE_VALID((phandle)))
+	cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(call);
+
+	if ((ipc_get_imethod(call) != IPC_M_CONNECT_TO_ME) ||
+	    !cap_handle_valid((phandle)))
 		return NULL;
 
@@ -1803,5 +1803,5 @@
 	async_get_call(call);
 
-	if (IPC_GET_IMETHOD(*call) != IPC_M_STATE_CHANGE_AUTHORIZE)
+	if (ipc_get_imethod(call) != IPC_M_STATE_CHANGE_AUTHORIZE)
 		return false;
 
@@ -1813,5 +1813,5 @@
 	assert(call);
 
-	return async_answer_1(call, EOK, CAP_HANDLE_RAW(other_exch->phone));
+	return async_answer_1(call, EOK, cap_handle_raw(other_exch->phone));
 }
 
Index: uspace/lib/c/generic/bd.c
===================================================================
--- uspace/lib/c/generic/bd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/bd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -206,10 +206,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		default:
 			async_answer_0(&call, ENOTSUP);
Index: uspace/lib/c/generic/bd_srv.c
===================================================================
--- uspace/lib/c/generic/bd_srv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/bd_srv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -51,6 +51,6 @@
 	errno_t rc;
 
-	ba = MERGE_LOUP32(IPC_GET_ARG1(*call), IPC_GET_ARG2(*call));
-	cnt = IPC_GET_ARG3(*call);
+	ba = MERGE_LOUP32(ipc_get_arg1(call), ipc_get_arg2(call));
+	cnt = ipc_get_arg3(call);
 
 	ipc_call_t rcall;
@@ -95,5 +95,5 @@
 	errno_t rc;
 
-	session = IPC_GET_ARG1(*call);
+	session = ipc_get_arg1(call);
 
 	ipc_call_t rcall;
@@ -137,6 +137,6 @@
 	errno_t rc;
 
-	ba = MERGE_LOUP32(IPC_GET_ARG1(*call), IPC_GET_ARG2(*call));
-	cnt = IPC_GET_ARG3(*call);
+	ba = MERGE_LOUP32(ipc_get_arg1(call), ipc_get_arg2(call));
+	cnt = ipc_get_arg3(call);
 
 	if (srv->srvs->ops->sync_cache == NULL) {
@@ -157,6 +157,6 @@
 	errno_t rc;
 
-	ba = MERGE_LOUP32(IPC_GET_ARG1(*call), IPC_GET_ARG2(*call));
-	cnt = IPC_GET_ARG3(*call);
+	ba = MERGE_LOUP32(ipc_get_arg1(call), ipc_get_arg2(call));
+	cnt = ipc_get_arg3(call);
 
 	rc = async_data_write_accept(&data, false, 0, 0, 0, &size);
@@ -247,5 +247,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/lib/c/generic/devman.c
===================================================================
--- uspace/lib/c/generic/devman.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/devman.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -255,5 +255,5 @@
 	if (retval == EOK) {
 		if (funh != NULL)
-			*funh = (int) IPC_GET_ARG1(answer);
+			*funh = (int) ipc_get_arg1(&answer);
 	} else {
 		if (funh != NULL)
@@ -394,5 +394,5 @@
 
 	if (handle != NULL)
-		*handle = (devman_handle_t) IPC_GET_ARG1(answer);
+		*handle = (devman_handle_t) ipc_get_arg1(&answer);
 
 	return retval;
@@ -429,6 +429,6 @@
 
 	if (r1 != NULL)
-		*r1 = IPC_GET_ARG1(answer);
-	act_size = IPC_GET_ARG2(dreply);
+		*r1 = ipc_get_arg1(&answer);
+	act_size = ipc_get_arg2(&dreply);
 	assert(act_size <= buf_size - 1);
 	buf[act_size] = '\0';
@@ -517,5 +517,5 @@
 	}
 
-	*act_size = IPC_GET_ARG1(answer);
+	*act_size = ipc_get_arg1(&answer);
 	return EOK;
 }
@@ -663,5 +663,5 @@
 
 	if (handle != NULL)
-		*handle = (devman_handle_t) IPC_GET_ARG1(answer);
+		*handle = (devman_handle_t) ipc_get_arg1(&answer);
 
 	return retval;
Index: uspace/lib/c/generic/dnsr.c
===================================================================
--- uspace/lib/c/generic/dnsr.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/dnsr.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -125,5 +125,5 @@
 	}
 
-	size_t act_size = IPC_GET_ARG2(answer_cname);
+	size_t act_size = ipc_get_arg2(&answer_cname);
 	assert(act_size <= DNSR_NAME_MAX_SIZE);
 
Index: uspace/lib/c/generic/inet.c
===================================================================
--- uspace/lib/c/generic/inet.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/inet.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -180,6 +180,6 @@
 	inet_dgram_t dgram;
 
-	dgram.tos = IPC_GET_ARG1(*icall);
-	dgram.iplink = IPC_GET_ARG2(*icall);
+	dgram.tos = ipc_get_arg1(icall);
+	dgram.iplink = ipc_get_arg2(icall);
 
 	ipc_call_t call;
@@ -240,10 +240,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case INET_EV_RECV:
 			inet_ev_recv(&call);
Index: uspace/lib/c/generic/inet/tcp.c
===================================================================
--- uspace/lib/c/generic/inet/tcp.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/inet/tcp.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -232,5 +232,5 @@
 		goto error;
 
-	conn_id = IPC_GET_ARG1(answer);
+	conn_id = ipc_get_arg1(&answer);
 
 	rc = tcp_conn_new(tcp, conn_id, cb, arg, rconn);
@@ -348,5 +348,5 @@
 
 	lst->tcp = tcp;
-	lst->id = IPC_GET_ARG1(answer);
+	lst->id = ipc_get_arg1(&answer);
 	lst->lcb = lcb;
 	lst->lcb_arg = larg;
@@ -569,5 +569,5 @@
 	}
 
-	*nrecv = IPC_GET_ARG1(answer);
+	*nrecv = ipc_get_arg1(&answer);
 	fibril_mutex_unlock(&conn->lock);
 	return EOK;
@@ -626,5 +626,5 @@
 	}
 
-	*nrecv = IPC_GET_ARG1(answer);
+	*nrecv = ipc_get_arg1(&answer);
 	fibril_mutex_unlock(&conn->lock);
 	return EOK;
@@ -643,5 +643,5 @@
 	errno_t rc;
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 
 	rc = tcp_conn_get(tcp, conn_id, &conn);
@@ -671,5 +671,5 @@
 	errno_t rc;
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 
 	rc = tcp_conn_get(tcp, conn_id, &conn);
@@ -699,5 +699,5 @@
 	errno_t rc;
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 
 	rc = tcp_conn_get(tcp, conn_id, &conn);
@@ -727,5 +727,5 @@
 	errno_t rc;
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 
 	rc = tcp_conn_get(tcp, conn_id, &conn);
@@ -771,6 +771,6 @@
 	errno_t rc;
 
-	lst_id = IPC_GET_ARG1(*icall);
-	conn_id = IPC_GET_ARG2(*icall);
+	lst_id = ipc_get_arg1(icall);
+	conn_id = ipc_get_arg2(icall);
 
 	rc = tcp_listener_get(tcp, lst_id, &lst);
@@ -821,5 +821,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			/* Hangup*/
 			async_answer_0(&call, EOK);
@@ -827,5 +827,5 @@
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case TCP_EV_CONNECTED:
 			tcp_ev_connected(tcp, &call);
Index: uspace/lib/c/generic/inet/udp.c
===================================================================
--- uspace/lib/c/generic/inet/udp.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/inet/udp.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -190,5 +190,5 @@
 
 	assoc->udp = udp;
-	assoc->id = IPC_GET_ARG1(answer);
+	assoc->id = ipc_get_arg1(&answer);
 	assoc->cb = cb;
 	assoc->cb_arg = arg;
@@ -404,6 +404,6 @@
 
 	rmsg->udp = udp;
-	rmsg->assoc_id = IPC_GET_ARG1(answer);
-	rmsg->size = IPC_GET_ARG2(answer);
+	rmsg->assoc_id = ipc_get_arg1(&answer);
+	rmsg->size = ipc_get_arg2(&answer);
 	rmsg->remote_ep = ep;
 	return EOK;
@@ -498,5 +498,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			/* Hangup */
 			async_answer_0(&call, EOK);
@@ -504,5 +504,5 @@
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case UDP_EV_DATA:
 			udp_ev_data(udp, &call);
Index: uspace/lib/c/generic/inetcfg.c
===================================================================
--- uspace/lib/c/generic/inetcfg.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/inetcfg.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -62,5 +62,5 @@
 	}
 
-	*act_size = IPC_GET_ARG1(answer);
+	*act_size = ipc_get_arg1(&answer);
 	return EOK;
 }
@@ -161,5 +161,5 @@
 	async_wait_for(req, &retval);
 
-	*addr_id = IPC_GET_ARG1(answer);
+	*addr_id = ipc_get_arg1(&answer);
 
 	return retval;
@@ -217,10 +217,10 @@
 		return retval;
 
-	size_t act_size = IPC_GET_ARG2(answer_name);
+	size_t act_size = ipc_get_arg2(&answer_name);
 	assert(act_size <= LOC_NAME_MAXLEN);
 
 	name_buf[act_size] = '\0';
 
-	ainfo->ilink = IPC_GET_ARG1(answer);
+	ainfo->ilink = ipc_get_arg1(&answer);
 	ainfo->name = str_dup(name_buf);
 
@@ -244,5 +244,5 @@
 
 	async_wait_for(req, &retval);
-	*addr_id = IPC_GET_ARG1(answer);
+	*addr_id = ipc_get_arg1(&answer);
 
 	return retval;
@@ -305,10 +305,10 @@
 		return retval;
 
-	act_size = IPC_GET_ARG2(dreply);
+	act_size = ipc_get_arg2(&dreply);
 	assert(act_size <= LOC_NAME_MAXLEN);
 	name_buf[act_size] = '\0';
 
 	linfo->name = str_dup(name_buf);
-	linfo->def_mtu = IPC_GET_ARG1(answer);
+	linfo->def_mtu = ipc_get_arg1(&answer);
 
 	return EOK;
@@ -359,5 +359,5 @@
 	async_wait_for(req, &retval);
 
-	*sroute_id = IPC_GET_ARG1(answer);
+	*sroute_id = ipc_get_arg1(&answer);
 
 	return retval;
@@ -428,5 +428,5 @@
 		return retval;
 
-	size_t act_size = IPC_GET_ARG2(answer_name);
+	size_t act_size = ipc_get_arg2(&answer_name);
 	assert(act_size <= LOC_NAME_MAXLEN);
 
@@ -454,5 +454,5 @@
 
 	async_wait_for(req, &retval);
-	*sroute_id = IPC_GET_ARG1(answer);
+	*sroute_id = ipc_get_arg1(&answer);
 
 	return retval;
Index: uspace/lib/c/generic/inetping.c
===================================================================
--- uspace/lib/c/generic/inetping.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/inetping.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -154,5 +154,5 @@
 	inetping_sdu_t sdu;
 
-	sdu.seq_no = IPC_GET_ARG1(*icall);
+	sdu.seq_no = ipc_get_arg1(icall);
 
 	ipc_call_t call;
@@ -213,10 +213,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case INETPING_EV_RECV:
 			inetping_ev_recv(&call);
Index: uspace/lib/c/generic/io/chardev.c
===================================================================
--- uspace/lib/c/generic/io/chardev.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/io/chardev.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -125,7 +125,7 @@
 	}
 
-	*nread = IPC_GET_ARG2(answer);
+	*nread = ipc_get_arg2(&answer);
 	/* In case of partial success, ARG1 contains the error code */
-	return (errno_t) IPC_GET_ARG1(answer);
+	return (errno_t) ipc_get_arg1(&answer);
 
 }
@@ -176,7 +176,7 @@
 	}
 
-	*nwritten = IPC_GET_ARG2(answer);
+	*nwritten = ipc_get_arg2(&answer);
 	/* In case of partial success, ARG1 contains the error code */
-	return (errno_t) IPC_GET_ARG1(answer);
+	return (errno_t) ipc_get_arg1(&answer);
 }
 
Index: uspace/lib/c/generic/io/chardev_srv.c
===================================================================
--- uspace/lib/c/generic/io/chardev_srv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/io/chardev_srv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -51,5 +51,5 @@
 	errno_t rc;
 
-	flags = IPC_GET_ARG1(*icall);
+	flags = ipc_get_arg1(icall);
 
 	ipc_call_t call;
@@ -154,5 +154,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/lib/c/generic/io/con_srv.c
===================================================================
--- uspace/lib/c/generic/io/con_srv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/io/con_srv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -44,18 +44,18 @@
 static errno_t console_ev_encode(cons_event_t *event, ipc_call_t *icall)
 {
-	IPC_SET_ARG1(*icall, event->type);
+	ipc_set_arg1(icall, event->type);
 
 	switch (event->type) {
 	case CEV_KEY:
-		IPC_SET_ARG2(*icall, event->ev.key.type);
-		IPC_SET_ARG3(*icall, event->ev.key.key);
-		IPC_SET_ARG4(*icall, event->ev.key.mods);
-		IPC_SET_ARG5(*icall, event->ev.key.c);
+		ipc_set_arg2(icall, event->ev.key.type);
+		ipc_set_arg3(icall, event->ev.key.key);
+		ipc_set_arg4(icall, event->ev.key.mods);
+		ipc_set_arg5(icall, event->ev.key.c);
 		break;
 	case CEV_POS:
-		IPC_SET_ARG2(*icall, (event->ev.pos.pos_id << 16) | (event->ev.pos.type & 0xffff));
-		IPC_SET_ARG3(*icall, event->ev.pos.btn_num);
-		IPC_SET_ARG4(*icall, event->ev.pos.hpos);
-		IPC_SET_ARG5(*icall, event->ev.pos.vpos);
+		ipc_set_arg2(icall, (event->ev.pos.pos_id << 16) | (event->ev.pos.type & 0xffff));
+		ipc_set_arg3(icall, event->ev.pos.btn_num);
+		ipc_set_arg4(icall, event->ev.pos.hpos);
+		ipc_set_arg5(icall, event->ev.pos.vpos);
 		break;
 	default:
@@ -158,6 +158,6 @@
 	sysarg_t row;
 
-	col = IPC_GET_ARG1(*icall);
-	row = IPC_GET_ARG2(*icall);
+	col = ipc_get_arg1(icall);
+	row = ipc_get_arg2(icall);
 
 	if (srv->srvs->ops->set_pos == NULL) {
@@ -218,5 +218,5 @@
 	console_style_t style;
 
-	style = IPC_GET_ARG1(*icall);
+	style = ipc_get_arg1(icall);
 
 	if (srv->srvs->ops->set_style == NULL) {
@@ -235,7 +235,7 @@
 	console_color_attr_t flags;
 
-	bgcolor = IPC_GET_ARG1(*icall);
-	fgcolor = IPC_GET_ARG2(*icall);
-	flags = IPC_GET_ARG3(*icall);
+	bgcolor = ipc_get_arg1(icall);
+	fgcolor = ipc_get_arg2(icall);
+	flags = ipc_get_arg3(icall);
 
 	if (srv->srvs->ops->set_color == NULL) {
@@ -253,6 +253,6 @@
 	pixel_t fgcolor;
 
-	bgcolor = IPC_GET_ARG1(*icall);
-	fgcolor = IPC_GET_ARG2(*icall);
+	bgcolor = ipc_get_arg1(icall);
+	fgcolor = ipc_get_arg2(icall);
 
 	if (srv->srvs->ops->set_rgb_color == NULL) {
@@ -269,5 +269,5 @@
 	bool show;
 
-	show = IPC_GET_ARG1(*icall);
+	show = ipc_get_arg1(icall);
 
 	if (srv->srvs->ops->set_cursor_visibility == NULL) {
@@ -303,6 +303,6 @@
 	}
 
-	async_answer_5(icall, rc, IPC_GET_ARG1(result), IPC_GET_ARG2(result),
-	    IPC_GET_ARG3(result), IPC_GET_ARG4(result), IPC_GET_ARG5(result));
+	async_answer_5(icall, rc, ipc_get_arg1(&result), ipc_get_arg2(&result),
+	    ipc_get_arg3(&result), ipc_get_arg4(&result), ipc_get_arg5(&result));
 }
 
@@ -364,5 +364,5 @@
 			break;
 
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/lib/c/generic/io/console.c
===================================================================
--- uspace/lib/c/generic/io/console.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/io/console.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -156,19 +156,19 @@
 static errno_t console_ev_decode(ipc_call_t *call, cons_event_t *event)
 {
-	event->type = IPC_GET_ARG1(*call);
+	event->type = ipc_get_arg1(call);
 
 	switch (event->type) {
 	case CEV_KEY:
-		event->ev.key.type = IPC_GET_ARG2(*call);
-		event->ev.key.key = IPC_GET_ARG3(*call);
-		event->ev.key.mods = IPC_GET_ARG4(*call);
-		event->ev.key.c = IPC_GET_ARG5(*call);
+		event->ev.key.type = ipc_get_arg2(call);
+		event->ev.key.key = ipc_get_arg3(call);
+		event->ev.key.mods = ipc_get_arg4(call);
+		event->ev.key.c = ipc_get_arg5(call);
 		break;
 	case CEV_POS:
-		event->ev.pos.pos_id = IPC_GET_ARG2(*call) >> 16;
-		event->ev.pos.type = IPC_GET_ARG2(*call) & 0xffff;
-		event->ev.pos.btn_num = IPC_GET_ARG3(*call);
-		event->ev.pos.hpos = IPC_GET_ARG4(*call);
-		event->ev.pos.vpos = IPC_GET_ARG5(*call);
+		event->ev.pos.pos_id = ipc_get_arg2(call) >> 16;
+		event->ev.pos.type = ipc_get_arg2(call) & 0xffff;
+		event->ev.pos.btn_num = ipc_get_arg3(call);
+		event->ev.pos.hpos = ipc_get_arg4(call);
+		event->ev.pos.vpos = ipc_get_arg5(call);
 		break;
 	default:
Index: uspace/lib/c/generic/io/input.c
===================================================================
--- uspace/lib/c/generic/io/input.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/io/input.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -112,8 +112,8 @@
 	errno_t rc;
 
-	type = IPC_GET_ARG1(*call);
-	key = IPC_GET_ARG2(*call);
-	mods = IPC_GET_ARG3(*call);
-	c = IPC_GET_ARG4(*call);
+	type = ipc_get_arg1(call);
+	key = ipc_get_arg2(call);
+	mods = ipc_get_arg3(call);
+	c = ipc_get_arg4(call);
 
 	rc = input->ev_ops->key(input, type, key, mods, c);
@@ -127,6 +127,6 @@
 	errno_t rc;
 
-	dx = IPC_GET_ARG1(*call);
-	dy = IPC_GET_ARG2(*call);
+	dx = ipc_get_arg1(call);
+	dy = ipc_get_arg2(call);
 
 	rc = input->ev_ops->move(input, dx, dy);
@@ -142,8 +142,8 @@
 	errno_t rc;
 
-	x = IPC_GET_ARG1(*call);
-	y = IPC_GET_ARG2(*call);
-	max_x = IPC_GET_ARG3(*call);
-	max_y = IPC_GET_ARG4(*call);
+	x = ipc_get_arg1(call);
+	y = ipc_get_arg2(call);
+	max_x = ipc_get_arg3(call);
+	max_y = ipc_get_arg4(call);
 
 	rc = input->ev_ops->abs_move(input, x, y, max_x, max_y);
@@ -157,6 +157,6 @@
 	errno_t rc;
 
-	bnum = IPC_GET_ARG1(*call);
-	press = IPC_GET_ARG2(*call);
+	bnum = ipc_get_arg1(call);
+	press = ipc_get_arg2(call);
 
 	rc = input->ev_ops->button(input, bnum, press);
@@ -172,10 +172,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case INPUT_EVENT_ACTIVE:
 			input_ev_active(input, &call);
Index: uspace/lib/c/generic/io/log.c
===================================================================
--- uspace/lib/c/generic/io/log.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/io/log.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -208,5 +208,5 @@
 		return parent;
 
-	return IPC_GET_ARG1(answer);
+	return ipc_get_arg1(&answer);
 }
 
Index: uspace/lib/c/generic/io/output.c
===================================================================
--- uspace/lib/c/generic/io/output.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/io/output.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -100,5 +100,5 @@
 		return 0;
 
-	return (frontbuf_handle_t) IPC_GET_ARG1(answer);
+	return (frontbuf_handle_t) ipc_get_arg1(&answer);
 }
 
Index: uspace/lib/c/generic/ipc.c
===================================================================
--- uspace/lib/c/generic/ipc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/ipc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -71,5 +71,5 @@
 {
 	return __SYSCALL6(SYS_IPC_CALL_ASYNC_FAST,
-	    CAP_HANDLE_RAW(phandle), imethod, arg1, arg2, arg3,
+	    cap_handle_raw(phandle), imethod, arg1, arg2, arg3,
 	    (sysarg_t) label);
 }
@@ -98,13 +98,13 @@
 	ipc_call_t data;
 
-	IPC_SET_IMETHOD(data, imethod);
-	IPC_SET_ARG1(data, arg1);
-	IPC_SET_ARG2(data, arg2);
-	IPC_SET_ARG3(data, arg3);
-	IPC_SET_ARG4(data, arg4);
-	IPC_SET_ARG5(data, arg5);
+	ipc_set_imethod(&data, imethod);
+	ipc_set_arg1(&data, arg1);
+	ipc_set_arg2(&data, arg2);
+	ipc_set_arg3(&data, arg3);
+	ipc_set_arg4(&data, arg4);
+	ipc_set_arg5(&data, arg5);
 
 	return __SYSCALL3(SYS_IPC_CALL_ASYNC_SLOW,
-	    CAP_HANDLE_RAW(phandle), (sysarg_t) &data,
+	    cap_handle_raw(phandle), (sysarg_t) &data,
 	    (sysarg_t) label);
 }
@@ -130,5 +130,5 @@
 {
 	return (errno_t) __SYSCALL6(SYS_IPC_ANSWER_FAST,
-	    CAP_HANDLE_RAW(chandle), (sysarg_t) retval, arg1, arg2, arg3, arg4);
+	    cap_handle_raw(chandle), (sysarg_t) retval, arg1, arg2, arg3, arg4);
 }
 
@@ -152,13 +152,13 @@
 	ipc_call_t data;
 
-	IPC_SET_RETVAL(data, retval);
-	IPC_SET_ARG1(data, arg1);
-	IPC_SET_ARG2(data, arg2);
-	IPC_SET_ARG3(data, arg3);
-	IPC_SET_ARG4(data, arg4);
-	IPC_SET_ARG5(data, arg5);
+	ipc_set_retval(&data, retval);
+	ipc_set_arg1(&data, arg1);
+	ipc_set_arg2(&data, arg2);
+	ipc_set_arg3(&data, arg3);
+	ipc_set_arg4(&data, arg4);
+	ipc_set_arg5(&data, arg5);
 
 	return (errno_t) __SYSCALL2(SYS_IPC_ANSWER_SLOW,
-	    CAP_HANDLE_RAW(chandle), (sysarg_t) &data);
+	    cap_handle_raw(chandle), (sysarg_t) &data);
 }
 
@@ -186,5 +186,5 @@
 errno_t ipc_hangup(cap_phone_handle_t phandle)
 {
-	return (errno_t) __SYSCALL1(SYS_IPC_HANGUP, CAP_HANDLE_RAW(phandle));
+	return (errno_t) __SYSCALL1(SYS_IPC_HANGUP, cap_handle_raw(phandle));
 }
 
@@ -210,5 +210,5 @@
 {
 	return (errno_t) __SYSCALL6(SYS_IPC_FORWARD_FAST,
-	    CAP_HANDLE_RAW(chandle), CAP_HANDLE_RAW(phandle), imethod, arg1,
+	    cap_handle_raw(chandle), cap_handle_raw(phandle), imethod, arg1,
 	    arg2, mode);
 }
@@ -220,13 +220,13 @@
 	ipc_call_t data;
 
-	IPC_SET_IMETHOD(data, imethod);
-	IPC_SET_ARG1(data, arg1);
-	IPC_SET_ARG2(data, arg2);
-	IPC_SET_ARG3(data, arg3);
-	IPC_SET_ARG4(data, arg4);
-	IPC_SET_ARG5(data, arg5);
+	ipc_set_imethod(&data, imethod);
+	ipc_set_arg1(&data, arg1);
+	ipc_set_arg2(&data, arg2);
+	ipc_set_arg3(&data, arg3);
+	ipc_set_arg4(&data, arg4);
+	ipc_set_arg5(&data, arg5);
 
 	return (errno_t) __SYSCALL4(SYS_IPC_FORWARD_SLOW,
-	    CAP_HANDLE_RAW(chandle), CAP_HANDLE_RAW(phandle), (sysarg_t) &data,
+	    cap_handle_raw(chandle), cap_handle_raw(phandle), (sysarg_t) &data,
 	    mode);
 }
Index: uspace/lib/c/generic/iplink.c
===================================================================
--- uspace/lib/c/generic/iplink.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/iplink.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -248,5 +248,5 @@
 	iplink_recv_sdu_t sdu;
 
-	ip_ver_t ver = IPC_GET_ARG1(*icall);
+	ip_ver_t ver = ipc_get_arg1(icall);
 
 	errno_t rc = async_data_write_accept(&sdu.data, false, 0, 0, 0,
@@ -287,10 +287,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IPLINK_EV_RECV:
 			iplink_ev_recv(iplink, &call);
Index: uspace/lib/c/generic/iplink_srv.c
===================================================================
--- uspace/lib/c/generic/iplink_srv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/iplink_srv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -162,6 +162,6 @@
 	iplink_sdu_t sdu;
 
-	sdu.src = IPC_GET_ARG1(*icall);
-	sdu.dest = IPC_GET_ARG2(*icall);
+	sdu.src = ipc_get_arg1(icall);
+	sdu.dest = ipc_get_arg2(icall);
 
 	errno_t rc = async_data_write_accept(&sdu.data, false, 0, 0, 0,
@@ -253,5 +253,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/lib/c/generic/irq.c
===================================================================
--- uspace/lib/c/generic/irq.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/irq.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -83,5 +83,5 @@
 {
 	return (errno_t) __SYSCALL1(SYS_IPC_IRQ_UNSUBSCRIBE,
-	    CAP_HANDLE_RAW(cap));
+	    cap_handle_raw(cap));
 }
 
Index: uspace/lib/c/generic/loc.c
===================================================================
--- uspace/lib/c/generic/loc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/loc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -62,10 +62,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case LOC_EVENT_CAT_CHANGE:
 			fibril_mutex_lock(&loc_callback_mutex);
@@ -303,5 +303,5 @@
 
 	if (sid != NULL)
-		*sid = (service_id_t) IPC_GET_ARG1(answer);
+		*sid = (service_id_t) ipc_get_arg1(&answer);
 
 	return retval;
@@ -359,5 +359,5 @@
 
 	if (handle != NULL)
-		*handle = (service_id_t) IPC_GET_ARG1(answer);
+		*handle = (service_id_t) ipc_get_arg1(&answer);
 
 	return retval;
@@ -404,5 +404,5 @@
 		return retval;
 
-	act_size = IPC_GET_ARG2(dreply);
+	act_size = ipc_get_arg2(&dreply);
 	assert(act_size <= LOC_NAME_MAXLEN);
 	name_buf[act_size] = '\0';
@@ -492,5 +492,5 @@
 
 	if (handle != NULL)
-		*handle = (service_id_t) IPC_GET_ARG1(answer);
+		*handle = (service_id_t) ipc_get_arg1(&answer);
 
 	return retval;
@@ -541,5 +541,5 @@
 
 	if (cat_id != NULL)
-		*cat_id = (category_id_t) IPC_GET_ARG1(answer);
+		*cat_id = (category_id_t) ipc_get_arg1(&answer);
 
 	return retval;
@@ -778,5 +778,5 @@
 	}
 
-	*act_size = IPC_GET_ARG1(answer);
+	*act_size = ipc_get_arg1(&answer);
 	return EOK;
 }
Index: uspace/lib/c/generic/pci.c
===================================================================
--- uspace/lib/c/generic/pci.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/pci.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -122,5 +122,5 @@
 	}
 
-	*act_size = IPC_GET_ARG1(answer);
+	*act_size = ipc_get_arg1(&answer);
 	return EOK;
 }
Index: uspace/lib/c/generic/task.c
===================================================================
--- uspace/lib/c/generic/task.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/task.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -374,6 +374,6 @@
 
 	if (rc == EOK) {
-		*texit = IPC_GET_ARG1(wait->result);
-		*retval = IPC_GET_ARG2(wait->result);
+		*texit = ipc_get_arg1(&wait->result);
+		*retval = ipc_get_arg2(&wait->result);
 	}
 
Index: uspace/lib/c/generic/vbd.c
===================================================================
--- uspace/lib/c/generic/vbd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/vbd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -190,5 +190,5 @@
 	}
 
-	*act_size = IPC_GET_ARG1(answer);
+	*act_size = ipc_get_arg1(&answer);
 	return EOK;
 }
@@ -300,5 +300,5 @@
 		return EIO;
 
-	*rpart = (vbd_part_id_t)IPC_GET_ARG1(answer);
+	*rpart = (vbd_part_id_t)ipc_get_arg1(&answer);
 	return EOK;
 
Index: uspace/lib/c/generic/vfs/vfs.c
===================================================================
--- uspace/lib/c/generic/vfs/vfs.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/vfs/vfs.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -641,5 +641,5 @@
 
 	if (mountedfd)
-		*mountedfd = (int) IPC_GET_ARG1(answer);
+		*mountedfd = (int) ipc_get_arg1(&answer);
 
 	if (rc != EOK)
@@ -903,5 +903,5 @@
 		return rc;
 
-	*nread = (ssize_t) IPC_GET_ARG1(answer);
+	*nread = (ssize_t) ipc_get_arg1(&answer);
 	return EOK;
 }
@@ -1283,5 +1283,5 @@
 		return (errno_t) rc;
 
-	*handle = (int) IPC_GET_ARG1(answer);
+	*handle = (int) ipc_get_arg1(&answer);
 	return EOK;
 }
@@ -1367,5 +1367,5 @@
 		return rc;
 
-	*nwritten = (ssize_t) IPC_GET_ARG1(answer);
+	*nwritten = (ssize_t) ipc_get_arg1(&answer);
 	return EOK;
 }
Index: uspace/lib/c/generic/vol.c
===================================================================
--- uspace/lib/c/generic/vol.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/generic/vol.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -127,5 +127,5 @@
 	}
 
-	*act_size = IPC_GET_ARG1(answer);
+	*act_size = ipc_get_arg1(&answer);
 	return EOK;
 }
Index: uspace/lib/c/include/ipc/dev_iface.h
===================================================================
--- uspace/lib/c/include/ipc/dev_iface.h	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/c/include/ipc/dev_iface.h	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -91,8 +91,8 @@
  */
 
-#define DEV_IPC_GET_ARG1(call) IPC_GET_ARG2((call))
-#define DEV_IPC_GET_ARG2(call) IPC_GET_ARG3((call))
-#define DEV_IPC_GET_ARG3(call) IPC_GET_ARG4((call))
-#define DEV_IPC_GET_ARG4(call) IPC_GET_ARG5((call))
+#define DEV_IPC_GET_ARG1(call) ipc_get_arg2(&(call))
+#define DEV_IPC_GET_ARG2(call) ipc_get_arg3(&(call))
+#define DEV_IPC_GET_ARG3(call) ipc_get_arg4(&(call))
+#define DEV_IPC_GET_ARG4(call) ipc_get_arg5(&(call))
 
 #endif
Index: uspace/lib/drv/generic/driver.c
===================================================================
--- uspace/lib/drv/generic/driver.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/drv/generic/driver.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -119,6 +119,6 @@
 static void driver_dev_add(ipc_call_t *icall)
 {
-	devman_handle_t dev_handle = IPC_GET_ARG1(*icall);
-	devman_handle_t parent_fun_handle = IPC_GET_ARG2(*icall);
+	devman_handle_t dev_handle = ipc_get_arg1(icall);
+	devman_handle_t parent_fun_handle = ipc_get_arg2(icall);
 
 	char *dev_name = NULL;
@@ -173,5 +173,5 @@
 static void driver_dev_remove(ipc_call_t *icall)
 {
-	devman_handle_t devh = IPC_GET_ARG1(*icall);
+	devman_handle_t devh = ipc_get_arg1(icall);
 
 	fibril_mutex_lock(&devices_mutex);
@@ -206,5 +206,5 @@
 static void driver_dev_gone(ipc_call_t *icall)
 {
-	devman_handle_t devh = IPC_GET_ARG1(*icall);
+	devman_handle_t devh = ipc_get_arg1(icall);
 
 	fibril_mutex_lock(&devices_mutex);
@@ -239,5 +239,5 @@
 static void driver_fun_online(ipc_call_t *icall)
 {
-	devman_handle_t funh = IPC_GET_ARG1(*icall);
+	devman_handle_t funh = ipc_get_arg1(icall);
 
 	/*
@@ -274,5 +274,5 @@
 static void driver_fun_offline(ipc_call_t *icall)
 {
-	devman_handle_t funh = IPC_GET_ARG1(*icall);
+	devman_handle_t funh = ipc_get_arg1(icall);
 
 	/*
@@ -343,10 +343,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case DRIVER_DEV_ADD:
 			driver_dev_add(&call);
@@ -385,5 +385,5 @@
 	 * the device to which the client connected.
 	 */
-	devman_handle_t handle = IPC_GET_ARG2(*icall);
+	devman_handle_t handle = ipc_get_arg2(icall);
 
 	fibril_mutex_lock(&functions_mutex);
@@ -429,5 +429,5 @@
 		async_get_call(&call);
 
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
@@ -483,5 +483,5 @@
 
 		/* get the method of the remote interface */
-		sysarg_t iface_method_idx = IPC_GET_ARG1(call);
+		sysarg_t iface_method_idx = ipc_get_arg1(&call);
 		remote_iface_func_ptr_t iface_method_ptr =
 		    get_remote_method(rem_iface, iface_method_idx);
Index: uspace/lib/drv/generic/remote_ieee80211.c
===================================================================
--- uspace/lib/drv/generic/remote_ieee80211.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/drv/generic/remote_ieee80211.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -276,5 +276,5 @@
 	memset(&scan_results, 0, sizeof(ieee80211_scan_results_t));
 
-	bool now = IPC_GET_ARG2(*call);
+	bool now = ipc_get_arg2(call);
 
 	errno_t rc = ieee80211_iface->get_scan_results(fun, &scan_results, now);
Index: uspace/lib/drv/generic/remote_nic.c
===================================================================
--- uspace/lib/drv/generic/remote_nic.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/drv/generic/remote_nic.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -1010,5 +1010,5 @@
 	async_wait_for(message_id, &res);
 
-	*id = IPC_GET_ARG1(result);
+	*id = ipc_get_arg1(&result);
 	return res;
 }
@@ -1385,5 +1385,5 @@
 	assert(nic_iface->set_state);
 
-	nic_device_state_t state = (nic_device_state_t) IPC_GET_ARG2(*call);
+	nic_device_state_t state = (nic_device_state_t) ipc_get_arg2(call);
 
 	errno_t rc = nic_iface->set_state(dev, state);
@@ -1569,7 +1569,7 @@
 	}
 
-	int speed = (int) IPC_GET_ARG2(*call);
-	nic_channel_mode_t duplex = (nic_channel_mode_t) IPC_GET_ARG3(*call);
-	nic_role_t role = (nic_role_t) IPC_GET_ARG4(*call);
+	int speed = (int) ipc_get_arg2(call);
+	nic_channel_mode_t duplex = (nic_channel_mode_t) ipc_get_arg3(call);
+	nic_role_t role = (nic_role_t) ipc_get_arg4(call);
 
 	errno_t rc = nic_iface->set_operation_mode(dev, speed, duplex, role);
@@ -1586,5 +1586,5 @@
 	}
 
-	uint32_t advertisement = (uint32_t) IPC_GET_ARG2(*call);
+	uint32_t advertisement = (uint32_t) ipc_get_arg2(call);
 
 	errno_t rc = nic_iface->autoneg_enable(dev, advertisement);
@@ -1664,7 +1664,7 @@
 	}
 
-	int allow_send = (int) IPC_GET_ARG2(*call);
-	int allow_receive = (int) IPC_GET_ARG3(*call);
-	uint16_t pause = (uint16_t) IPC_GET_ARG4(*call);
+	int allow_send = (int) ipc_get_arg2(call);
+	int allow_receive = (int) ipc_get_arg3(call);
+	uint16_t pause = (uint16_t) ipc_get_arg4(call);
 
 	errno_t rc = nic_iface->set_pause(dev, allow_send, allow_receive,
@@ -1682,5 +1682,5 @@
 	}
 
-	size_t max_count = IPC_GET_ARG2(*call);
+	size_t max_count = ipc_get_arg2(call);
 	nic_address_t *address_list = NULL;
 
@@ -1733,6 +1733,6 @@
 
 	size_t length;
-	nic_unicast_mode_t mode = IPC_GET_ARG2(*call);
-	size_t address_count = IPC_GET_ARG3(*call);
+	nic_unicast_mode_t mode = ipc_get_arg2(call);
+	size_t address_count = ipc_get_arg3(call);
 	nic_address_t *address_list = NULL;
 
@@ -1785,5 +1785,5 @@
 	}
 
-	size_t max_count = IPC_GET_ARG2(*call);
+	size_t max_count = ipc_get_arg2(call);
 	nic_address_t *address_list = NULL;
 
@@ -1835,6 +1835,6 @@
 	nic_iface_t *nic_iface = (nic_iface_t *) iface;
 
-	nic_multicast_mode_t mode = IPC_GET_ARG2(*call);
-	size_t address_count = IPC_GET_ARG3(*call);
+	nic_multicast_mode_t mode = ipc_get_arg2(call);
+	size_t address_count = ipc_get_arg3(call);
 	nic_address_t *address_list = NULL;
 
@@ -1903,5 +1903,5 @@
 	}
 
-	nic_broadcast_mode_t mode = IPC_GET_ARG2(*call);
+	nic_broadcast_mode_t mode = ipc_get_arg2(call);
 
 	errno_t rc = nic_iface->broadcast_set_mode(dev, mode);
@@ -1933,5 +1933,5 @@
 	}
 
-	uint32_t mode = IPC_GET_ARG2(*call);
+	uint32_t mode = ipc_get_arg2(call);
 
 	errno_t rc = nic_iface->defective_set_mode(dev, mode);
@@ -1948,5 +1948,5 @@
 	}
 
-	size_t max_count = IPC_GET_ARG2(*call);
+	size_t max_count = ipc_get_arg2(call);
 	nic_address_t *address_list = NULL;
 
@@ -1998,5 +1998,5 @@
 
 	size_t length;
-	size_t address_count = IPC_GET_ARG2(*call);
+	size_t address_count = ipc_get_arg2(call);
 	nic_address_t *address_list = NULL;
 
@@ -2081,5 +2081,5 @@
 	nic_vlan_mask_t vlan_mask;
 	nic_vlan_mask_t *vlan_mask_pointer = NULL;
-	bool vlan_mask_set = (bool) IPC_GET_ARG2(*call);
+	bool vlan_mask_set = (bool) ipc_get_arg2(call);
 
 	if (vlan_mask_set) {
@@ -2124,7 +2124,7 @@
 	}
 
-	uint16_t tag = (uint16_t) IPC_GET_ARG2(*call);
-	bool add = (int) IPC_GET_ARG3(*call);
-	bool strip = (int) IPC_GET_ARG4(*call);
+	uint16_t tag = (uint16_t) ipc_get_arg2(call);
+	bool add = (int) ipc_get_arg3(call);
+	bool strip = (int) ipc_get_arg4(call);
 
 	errno_t rc = nic_iface->vlan_set_tag(dev, tag, add, strip);
@@ -2137,5 +2137,5 @@
 	nic_iface_t *nic_iface = (nic_iface_t *) iface;
 
-	int send_data = (int) IPC_GET_ARG3(*call);
+	int send_data = (int) ipc_get_arg3(call);
 	ipc_call_t data;
 
@@ -2175,5 +2175,5 @@
 
 	nic_wv_id_t id = 0;
-	nic_wv_type_t type = (nic_wv_type_t) IPC_GET_ARG2(*call);
+	nic_wv_type_t type = (nic_wv_type_t) ipc_get_arg2(call);
 
 	errno_t rc = nic_iface->wol_virtue_add(dev, type, virtue, length, &id);
@@ -2192,5 +2192,5 @@
 	}
 
-	nic_wv_id_t id = (nic_wv_id_t) IPC_GET_ARG2(*call);
+	nic_wv_id_t id = (nic_wv_id_t) ipc_get_arg2(call);
 
 	errno_t rc = nic_iface->wol_virtue_remove(dev, id);
@@ -2208,6 +2208,6 @@
 	}
 
-	nic_wv_id_t id = (nic_wv_id_t) IPC_GET_ARG2(*call);
-	size_t max_length = IPC_GET_ARG3(*call);
+	nic_wv_id_t id = (nic_wv_id_t) ipc_get_arg2(call);
+	size_t max_length = ipc_get_arg3(call);
 	nic_wv_type_t type = NIC_WV_NONE;
 	size_t length = 0;
@@ -2259,6 +2259,6 @@
 	}
 
-	nic_wv_type_t type = (nic_wv_type_t) IPC_GET_ARG2(*call);
-	size_t max_count = IPC_GET_ARG3(*call);
+	nic_wv_type_t type = (nic_wv_type_t) ipc_get_arg2(call);
+	size_t max_count = ipc_get_arg3(call);
 	size_t count = 0;
 	nic_wv_id_t *id_list = NULL;
@@ -2310,5 +2310,5 @@
 
 	int count = -1;
-	nic_wv_type_t type = (nic_wv_type_t) IPC_GET_ARG2(*call);
+	nic_wv_type_t type = (nic_wv_type_t) ipc_get_arg2(call);
 
 	errno_t rc = nic_iface->wol_virtue_get_caps(dev, type, &count);
@@ -2325,5 +2325,5 @@
 	}
 
-	size_t max_length = (size_t) IPC_GET_ARG2(*call);
+	size_t max_length = (size_t) ipc_get_arg2(call);
 	size_t frame_length = 0;
 	nic_wv_type_t type = NIC_WV_NONE;
@@ -2386,6 +2386,6 @@
 	}
 
-	uint32_t mask = (uint32_t) IPC_GET_ARG2(*call);
-	uint32_t active = (uint32_t) IPC_GET_ARG3(*call);
+	uint32_t mask = (uint32_t) ipc_get_arg2(call);
+	uint32_t active = (uint32_t) ipc_get_arg3(call);
 
 	errno_t rc = nic_iface->offload_set(dev, mask, active);
@@ -2403,5 +2403,5 @@
 
 	nic_poll_mode_t mode = NIC_POLL_IMMEDIATE;
-	int request_data = IPC_GET_ARG2(*call);
+	int request_data = ipc_get_arg2(call);
 	struct timespec period = {
 		.tv_sec = 0,
@@ -2438,6 +2438,6 @@
 	nic_iface_t *nic_iface = (nic_iface_t *) iface;
 
-	nic_poll_mode_t mode = IPC_GET_ARG2(*call);
-	int has_period = IPC_GET_ARG3(*call);
+	nic_poll_mode_t mode = ipc_get_arg2(call);
+	int has_period = ipc_get_arg3(call);
 	struct timespec period_buf;
 	struct timespec *period = NULL;
Index: uspace/lib/drv/generic/remote_usbhc.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/drv/generic/remote_usbhc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -221,5 +221,5 @@
 
 	if (transferred)
-		*transferred = IPC_GET_ARG1(call);
+		*transferred = ipc_get_arg1(&call);
 
 	return (errno_t) opening_request_rc;
@@ -265,5 +265,5 @@
 	}
 
-	const bool reserve = IPC_GET_ARG2(*call);
+	const bool reserve = ipc_get_arg2(call);
 	const errno_t ret = usbhc_iface->default_address_reservation(fun, reserve);
 	async_answer_0(call, ret);
Index: uspace/lib/drv/generic/remote_usbhid.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhid.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/drv/generic/remote_usbhid.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -190,5 +190,5 @@
 		return (errno_t) opening_request_rc;
 
-	size_t act_size = IPC_GET_ARG2(data_request_call);
+	size_t act_size = ipc_get_arg2(&data_request_call);
 
 	/* Copy the individual items. */
@@ -199,5 +199,5 @@
 
 	if (event_nr != NULL)
-		*event_nr = IPC_GET_ARG1(opening_request_call);
+		*event_nr = ipc_get_arg1(&opening_request_call);
 
 	return EOK;
@@ -275,5 +275,5 @@
 		return (errno_t) opening_request_rc;
 
-	size_t act_size = IPC_GET_ARG2(data_request_call);
+	size_t act_size = ipc_get_arg2(&data_request_call);
 
 	if (actual_size != NULL)
Index: uspace/lib/fs/libfs.c
===================================================================
--- uspace/lib/fs/libfs.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/fs/libfs.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -79,5 +79,5 @@
 static void vfs_out_fsprobe(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
 	errno_t rc;
 	vfs_fs_probe_info_t info;
@@ -106,5 +106,5 @@
 static void vfs_out_mounted(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
 	char *opts;
 	errno_t rc;
@@ -132,5 +132,5 @@
 static void vfs_out_unmounted(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
 	errno_t rc;
 
@@ -152,8 +152,8 @@
 static void vfs_out_read(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
-	aoff64_t pos = (aoff64_t) MERGE_LOUP32(IPC_GET_ARG3(*req),
-	    IPC_GET_ARG4(*req));
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
+	aoff64_t pos = (aoff64_t) MERGE_LOUP32(ipc_get_arg3(req),
+	    ipc_get_arg4(req));
 	size_t rbytes;
 	errno_t rc;
@@ -169,8 +169,8 @@
 static void vfs_out_write(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
-	aoff64_t pos = (aoff64_t) MERGE_LOUP32(IPC_GET_ARG3(*req),
-	    IPC_GET_ARG4(*req));
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
+	aoff64_t pos = (aoff64_t) MERGE_LOUP32(ipc_get_arg3(req),
+	    ipc_get_arg4(req));
 	size_t wbytes;
 	aoff64_t nsize;
@@ -188,8 +188,8 @@
 static void vfs_out_truncate(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
-	aoff64_t size = (aoff64_t) MERGE_LOUP32(IPC_GET_ARG3(*req),
-	    IPC_GET_ARG4(*req));
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
+	aoff64_t size = (aoff64_t) MERGE_LOUP32(ipc_get_arg3(req),
+	    ipc_get_arg4(req));
 	errno_t rc;
 
@@ -201,6 +201,6 @@
 static void vfs_out_close(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
 	errno_t rc;
 
@@ -212,6 +212,6 @@
 static void vfs_out_destroy(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
 
 	errno_t rc;
@@ -239,6 +239,6 @@
 static void vfs_out_sync(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
 	errno_t rc;
 
@@ -255,6 +255,6 @@
 static void vfs_out_is_empty(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
 	errno_t rc;
 
@@ -290,10 +290,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case VFS_OUT_FSPROBE:
 			vfs_out_fsprobe(&call);
@@ -424,7 +424,7 @@
 	 */
 	async_wait_for(req, NULL);
-	reg.fs_handle = (int) IPC_GET_ARG1(answer);
-
-	return IPC_GET_RETVAL(answer);
+	reg.fs_handle = (int) ipc_get_arg1(&answer);
+
+	return ipc_get_retval(&answer);
 }
 
@@ -490,7 +490,7 @@
 void libfs_link(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req)
 {
-	service_id_t parent_sid = IPC_GET_ARG1(*req);
-	fs_index_t parent_index = IPC_GET_ARG2(*req);
-	fs_index_t child_index = IPC_GET_ARG3(*req);
+	service_id_t parent_sid = ipc_get_arg1(req);
+	fs_index_t parent_index = ipc_get_arg2(req);
+	fs_index_t child_index = ipc_get_arg3(req);
 
 	char component[NAME_MAX + 1];
@@ -536,9 +536,9 @@
 void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req)
 {
-	unsigned first = IPC_GET_ARG1(*req);
-	unsigned len = IPC_GET_ARG2(*req);
-	service_id_t service_id = IPC_GET_ARG3(*req);
-	fs_index_t index = IPC_GET_ARG4(*req);
-	int lflag = IPC_GET_ARG5(*req);
+	unsigned first = ipc_get_arg1(req);
+	unsigned len = ipc_get_arg2(req);
+	service_id_t service_id = ipc_get_arg3(req);
+	fs_index_t index = ipc_get_arg4(req);
+	int lflag = ipc_get_arg5(req);
 
 	// TODO: Validate flags.
@@ -716,6 +716,6 @@
 void libfs_stat(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
 
 	fs_node_t *fn;
@@ -753,6 +753,6 @@
 void libfs_statfs(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
-	fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
+	fs_index_t index = (fs_index_t) ipc_get_arg2(req);
 
 	fs_node_t *fn;
@@ -810,6 +810,6 @@
 void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req)
 {
-	service_id_t service_id = IPC_GET_ARG1(*req);
-	fs_index_t index = IPC_GET_ARG2(*req);
+	service_id_t service_id = ipc_get_arg1(req);
+	fs_index_t index = ipc_get_arg2(req);
 
 	fs_node_t *fn;
Index: uspace/lib/graph/graph.c
===================================================================
--- uspace/lib/graph/graph.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/graph/graph.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -243,5 +243,5 @@
 static void vs_claim(visualizer_t *vs, ipc_call_t *icall)
 {
-	vs->client_side_handle = IPC_GET_ARG1(*icall);
+	vs->client_side_handle = ipc_get_arg1(icall);
 	errno_t rc = vs->ops.claim(vs);
 	async_answer_0(icall, rc);
@@ -283,5 +283,5 @@
 
 	fibril_mutex_lock(&vs->mode_mtx);
-	link_t *link = list_nth(&vs->modes, IPC_GET_ARG1(*icall));
+	link_t *link = list_nth(&vs->modes, ipc_get_arg1(icall));
 
 	if (link != NULL) {
@@ -360,5 +360,5 @@
 	}
 
-	sysarg_t mode_idx = IPC_GET_ARG1(*icall);
+	sysarg_t mode_idx = ipc_get_arg1(icall);
 
 	fibril_mutex_lock(&vs->mode_mtx);
@@ -397,6 +397,6 @@
 
 	/* Retrieve mode index and version. */
-	sysarg_t mode_idx = IPC_GET_ARG1(*icall);
-	sysarg_t mode_version = IPC_GET_ARG2(*icall);
+	sysarg_t mode_idx = ipc_get_arg1(icall);
+	sysarg_t mode_version = ipc_get_arg2(icall);
 
 	/* Find mode in the list. */
@@ -470,10 +470,10 @@
 static void vs_update_damaged_region(visualizer_t *vs, ipc_call_t *icall)
 {
-	sysarg_t x_offset = (IPC_GET_ARG5(*icall) >> 16);
-	sysarg_t y_offset = (IPC_GET_ARG5(*icall) & 0x0000ffff);
+	sysarg_t x_offset = (ipc_get_arg5(icall) >> 16);
+	sysarg_t y_offset = (ipc_get_arg5(icall) & 0x0000ffff);
 
 	errno_t rc = vs->ops.handle_damage(vs,
-	    IPC_GET_ARG1(*icall), IPC_GET_ARG2(*icall),
-	    IPC_GET_ARG3(*icall), IPC_GET_ARG4(*icall),
+	    ipc_get_arg1(icall), ipc_get_arg2(icall),
+	    ipc_get_arg3(icall), ipc_get_arg4(icall),
 	    x_offset, y_offset);
 	async_answer_0(icall, rc);
@@ -516,10 +516,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case VISUALIZER_CLAIM:
 			vs_claim(vs, &call);
@@ -576,10 +576,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		default:
 			async_answer_0(&call, EINVAL);
@@ -595,6 +595,6 @@
 {
 	/* Find the visualizer or renderer with the given service ID. */
-	visualizer_t *vs = graph_get_visualizer(IPC_GET_ARG2(*icall));
-	renderer_t *rnd = graph_get_renderer(IPC_GET_ARG2(*icall));
+	visualizer_t *vs = graph_get_visualizer(ipc_get_arg2(icall));
+	renderer_t *rnd = graph_get_renderer(ipc_get_arg2(icall));
 
 	if (vs != NULL)
Index: uspace/lib/gui/terminal.c
===================================================================
--- uspace/lib/gui/terminal.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/gui/terminal.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -682,5 +682,5 @@
 
 	list_foreach(terms, link, terminal_t, cur) {
-		if (cur->dsid == (service_id_t) IPC_GET_ARG2(*icall)) {
+		if (cur->dsid == (service_id_t) ipc_get_arg2(icall)) {
 			term = cur;
 			break;
Index: uspace/lib/hound/src/protocol.c
===================================================================
--- uspace/lib/hound/src/protocol.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/hound/src/protocol.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -140,5 +140,5 @@
 	async_exchange_end(exch);
 	if (ret == EOK) {
-		*id = (hound_context_id_t) IPC_GET_ARG1(call);
+		*id = (hound_context_id_t) ipc_get_arg1(&call);
 	}
 
@@ -158,5 +158,5 @@
 	async_exch_t *exch = async_exchange_begin(sess);
 	const errno_t ret = async_req_1_0(exch, IPC_M_HOUND_CONTEXT_UNREGISTER,
-	    CAP_HANDLE_RAW(id));
+	    cap_handle_raw(id));
 	async_exchange_end(exch);
 	return ret;
@@ -203,5 +203,5 @@
 		return ret;
 	}
-	unsigned name_count = IPC_GET_ARG1(res_call);
+	unsigned name_count = ipc_get_arg1(&res_call);
 
 	/* Start receiving names */
@@ -315,5 +315,5 @@
 	};
 
-	return async_req_4_0(exch, IPC_M_HOUND_STREAM_ENTER, CAP_HANDLE_RAW(id),
+	return async_req_4_0(exch, IPC_M_HOUND_STREAM_ENTER, cap_handle_raw(id),
 	    flags, c.arg, bsize);
 }
@@ -406,5 +406,5 @@
 		async_get_call(&call);
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IPC_M_HOUND_CONTEXT_REGISTER:
 			/* check interface functions */
@@ -413,5 +413,5 @@
 				break;
 			}
-			bool record = IPC_GET_ARG1(call);
+			bool record = ipc_get_arg1(&call);
 			void *name;
 
@@ -431,5 +431,5 @@
 				async_answer_0(&call, ret);
 			} else {
-				async_answer_1(&call, EOK, CAP_HANDLE_RAW(context));
+				async_answer_1(&call, EOK, cap_handle_raw(context));
 			}
 			break;
@@ -442,5 +442,5 @@
 
 			/* get id, 1st param */
-			context = (hound_context_id_t) IPC_GET_ARG1(call);
+			context = (hound_context_id_t) ipc_get_arg1(&call);
 			ret = server_iface->rem_context(server_iface->server,
 			    context);
@@ -455,7 +455,7 @@
 
 			char **list = NULL;
-			flags = IPC_GET_ARG1(call);
-			size_t count = IPC_GET_ARG2(call);
-			const bool conn = IPC_GET_ARG3(call);
+			flags = ipc_get_arg1(&call);
+			size_t count = ipc_get_arg2(&call);
+			const bool conn = ipc_get_arg3(&call);
 			char *conn_name = NULL;
 			ret = EOK;
@@ -568,7 +568,7 @@
 
 			/* get parameters */
-			context = (hound_context_id_t) IPC_GET_ARG1(call);
-			flags = IPC_GET_ARG2(call);
-			const format_convert_t c = { .arg = IPC_GET_ARG3(call) };
+			context = (hound_context_id_t) ipc_get_arg1(&call);
+			flags = ipc_get_arg2(&call);
+			const format_convert_t c = { .arg = ipc_get_arg3(&call) };
 			const pcm_format_t f = {
 				.sampling_rate = c.f.rate * 100,
@@ -576,5 +576,5 @@
 				.sample_format = c.f.format,
 			};
-			size_t bsize = IPC_GET_ARG4(call);
+			size_t bsize = ipc_get_arg4(&call);
 
 			void *stream;
@@ -640,7 +640,7 @@
 	/* accept data write or drain */
 	while (async_data_write_receive(&call, &size) ||
-	    (IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_DRAIN)) {
+	    (ipc_get_imethod(&call) == IPC_M_HOUND_STREAM_DRAIN)) {
 		/* check drain first */
-		if (IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_DRAIN) {
+		if (ipc_get_imethod(&call) == IPC_M_HOUND_STREAM_DRAIN) {
 			errno_t ret = ENOTSUP;
 			if (server_iface->drain_stream)
@@ -668,5 +668,5 @@
 		}
 	}
-	const errno_t ret = IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_EXIT ?
+	const errno_t ret = ipc_get_imethod(&call) == IPC_M_HOUND_STREAM_EXIT ?
 	    EOK : EINVAL;
 
@@ -687,7 +687,7 @@
 	/* accept data read and drain */
 	while (async_data_read_receive(&call, &size) ||
-	    (IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_DRAIN)) {
+	    (ipc_get_imethod(&call) == IPC_M_HOUND_STREAM_DRAIN)) {
 		/* drain does not make much sense but it is allowed */
-		if (IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_DRAIN) {
+		if (ipc_get_imethod(&call) == IPC_M_HOUND_STREAM_DRAIN) {
 			errno_t ret = ENOTSUP;
 			if (server_iface->drain_stream)
@@ -712,5 +712,5 @@
 		}
 	}
-	const errno_t ret = IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_EXIT ?
+	const errno_t ret = ipc_get_imethod(&call) == IPC_M_HOUND_STREAM_EXIT ?
 	    EOK : EINVAL;
 
Index: uspace/lib/usbhost/src/hcd.c
===================================================================
--- uspace/lib/usbhost/src/hcd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/usbhost/src/hcd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -101,5 +101,5 @@
 	hc_device_t *hcd = dev_to_hcd(dev);
 
-	const uint32_t status = IPC_GET_ARG1(*call);
+	const uint32_t status = ipc_get_arg1(call);
 	hcd->bus->ops->interrupt(hcd->bus, status);
 }
Index: uspace/lib/usbvirt/src/device.c
===================================================================
--- uspace/lib/usbvirt/src/device.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/usbvirt/src/device.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -66,5 +66,5 @@
 		bool processed = usbvirt_ipc_handle_call(DEV, &call);
 		if (!processed) {
-			if (!IPC_GET_IMETHOD(call)) {
+			if (!ipc_get_imethod(&call)) {
 				async_answer_0(&call, EOK);
 				return;
Index: uspace/lib/usbvirt/src/ipc_dev.c
===================================================================
--- uspace/lib/usbvirt/src/ipc_dev.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/usbvirt/src/ipc_dev.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -133,5 +133,5 @@
 static void ipc_control_write(usbvirt_device_t *dev, ipc_call_t *icall)
 {
-	size_t data_buffer_len = IPC_GET_ARG1(*icall);
+	size_t data_buffer_len = ipc_get_arg1(icall);
 	errno_t rc;
 
@@ -177,5 +177,5 @@
     usb_transfer_type_t transfer_type, ipc_call_t *icall)
 {
-	usb_endpoint_t endpoint = IPC_GET_ARG1(*icall);
+	usb_endpoint_t endpoint = ipc_get_arg1(icall);
 
 	errno_t rc;
@@ -220,5 +220,5 @@
     usb_transfer_type_t transfer_type, ipc_call_t *icall)
 {
-	usb_endpoint_t endpoint = IPC_GET_ARG1(*icall);
+	usb_endpoint_t endpoint = ipc_get_arg1(icall);
 
 	void *data_buffer = NULL;
@@ -250,5 +250,5 @@
 bool usbvirt_ipc_handle_call(usbvirt_device_t *dev, ipc_call_t *call)
 {
-	switch (IPC_GET_IMETHOD(*call)) {
+	switch (ipc_get_imethod(call)) {
 	case IPC_M_USBVIRT_GET_NAME:
 		ipc_get_name(dev, call);
Index: uspace/lib/usbvirt/src/ipc_hc.c
===================================================================
--- uspace/lib/usbvirt/src/ipc_hc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/lib/usbvirt/src/ipc_hc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -113,5 +113,5 @@
 
 	if (data_transferred_size != NULL)
-		*data_transferred_size = IPC_GET_ARG2(data_request_call);
+		*data_transferred_size = ipc_get_arg2(&data_request_call);
 
 	return EOK;
@@ -250,5 +250,5 @@
 
 	if (act_size != NULL)
-		*act_size = IPC_GET_ARG2(data_request_call);
+		*act_size = ipc_get_arg2(&data_request_call);
 
 	return EOK;
Index: uspace/srv/audio/hound/audio_device.c
===================================================================
--- uspace/srv/audio/hound/audio_device.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/audio/hound/audio_device.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -275,5 +275,5 @@
 		async_answer_0(&call, EOK);
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case PCM_EVENT_FRAMES_PLAYED:
 			getuptime(&time1);
Index: uspace/srv/bd/sata_bd/sata_bd.c
===================================================================
--- uspace/srv/bd/sata_bd/sata_bd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/bd/sata_bd/sata_bd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -173,5 +173,5 @@
 
 	/* Get the device service ID. */
-	dsid = IPC_GET_ARG2(*icall);
+	dsid = ipc_get_arg2(icall);
 
 	/* Determine which disk device is the client connecting to. */
Index: uspace/srv/bd/vbd/disk.c
===================================================================
--- uspace/srv/bd/vbd/disk.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/bd/vbd/disk.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -1077,5 +1077,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_bd_conn()");
 
-	svcid = IPC_GET_ARG2(*icall);
+	svcid = ipc_get_arg2(icall);
 
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_bd_conn() - svcid=%zu", svcid);
Index: uspace/srv/bd/vbd/vbd.c
===================================================================
--- uspace/srv/bd/vbd/vbd.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/bd/vbd/vbd.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -129,5 +129,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_info_srv()");
 
-	disk_sid = IPC_GET_ARG1(*icall);
+	disk_sid = ipc_get_arg1(icall);
 	rc = vbds_disk_info(disk_sid, &dinfo);
 	if (rc != EOK) {
@@ -169,6 +169,6 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_label_create_srv()");
 
-	disk_sid = IPC_GET_ARG1(*icall);
-	ltype = IPC_GET_ARG2(*icall);
+	disk_sid = ipc_get_arg1(icall);
+	ltype = ipc_get_arg2(icall);
 	rc = vbds_label_create(disk_sid, ltype);
 	async_answer_0(icall, rc);
@@ -182,5 +182,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_label_delete_srv()");
 
-	disk_sid = IPC_GET_ARG1(*icall);
+	disk_sid = ipc_get_arg1(icall);
 	rc = vbds_label_delete(disk_sid);
 	async_answer_0(icall, rc);
@@ -203,5 +203,5 @@
 	}
 
-	sid = IPC_GET_ARG1(*icall);
+	sid = ipc_get_arg1(icall);
 
 	category_id_t *id_buf = (category_id_t *) malloc(size);
@@ -233,5 +233,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_get_info_srv()");
 
-	part = IPC_GET_ARG1(*icall);
+	part = ipc_get_arg1(icall);
 	rc = vbds_part_get_info(part, &pinfo);
 	if (rc != EOK) {
@@ -274,5 +274,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_create_srv()");
 
-	disk_sid = IPC_GET_ARG1(*icall);
+	disk_sid = ipc_get_arg1(icall);
 
 	ipc_call_t call;
@@ -313,5 +313,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_delete_srv()");
 
-	part = IPC_GET_ARG1(*icall);
+	part = ipc_get_arg1(icall);
 	rc = vbds_part_delete(part);
 	async_answer_0(icall, rc);
@@ -327,6 +327,6 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_suggest_ptype_srv()");
 
-	disk_sid = IPC_GET_ARG1(*icall);
-	pcnt = IPC_GET_ARG2(*icall);
+	disk_sid = ipc_get_arg1(icall);
+	pcnt = ipc_get_arg2(icall);
 
 	rc = vbds_suggest_ptype(disk_sid, pcnt, &ptype);
@@ -370,5 +370,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
@@ -418,5 +418,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_client_conn()");
 
-	sid = (service_id_t) IPC_GET_ARG2(*icall);
+	sid = (service_id_t) ipc_get_arg2(icall);
 
 	if (sid == ctl_sid)
Index: uspace/srv/clipboard/clipboard.c
===================================================================
--- uspace/srv/clipboard/clipboard.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/clipboard/clipboard.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -53,5 +53,5 @@
 	size_t size;
 
-	switch (IPC_GET_ARG1(*req)) {
+	switch (ipc_get_arg1(req)) {
 	case CLIPBOARD_TAG_NONE:
 		fibril_mutex_lock(&clip_mtx);
@@ -99,5 +99,5 @@
 
 	/* Check for clipboard data tag compatibility */
-	switch (IPC_GET_ARG1(*req)) {
+	switch (ipc_get_arg1(req)) {
 	case CLIPBOARD_TAG_DATA:
 		if (!async_data_read_receive(&call, &size)) {
@@ -161,10 +161,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case CLIPBOARD_PUT_DATA:
 			clip_put_data(&call);
Index: uspace/srv/devman/client_conn.c
===================================================================
--- uspace/srv/devman/client_conn.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/devman/client_conn.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -102,6 +102,6 @@
 static void devman_fun_get_match_id(ipc_call_t *icall)
 {
-	devman_handle_t handle = IPC_GET_ARG1(*icall);
-	size_t index = IPC_GET_ARG2(*icall);
+	devman_handle_t handle = ipc_get_arg1(icall);
+	size_t index = ipc_get_arg2(icall);
 	void *buffer = NULL;
 
@@ -165,5 +165,5 @@
 static void devman_fun_get_name(ipc_call_t *icall)
 {
-	devman_handle_t handle = IPC_GET_ARG1(*icall);
+	devman_handle_t handle = ipc_get_arg1(icall);
 
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
@@ -218,5 +218,5 @@
 static void devman_fun_get_driver_name(ipc_call_t *icall)
 {
-	devman_handle_t handle = IPC_GET_ARG1(*icall);
+	devman_handle_t handle = ipc_get_arg1(icall);
 
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
@@ -283,5 +283,5 @@
 static void devman_fun_get_path(ipc_call_t *icall)
 {
-	devman_handle_t handle = IPC_GET_ARG1(*icall);
+	devman_handle_t handle = ipc_get_arg1(icall);
 
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
@@ -340,5 +340,5 @@
 	fibril_rwlock_read_lock(&device_tree.rwlock);
 
-	dev = find_dev_node_no_lock(&device_tree, IPC_GET_ARG1(*icall));
+	dev = find_dev_node_no_lock(&device_tree, ipc_get_arg1(icall));
 	if (dev == NULL || dev->state == DEVICE_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -374,5 +374,5 @@
 
 	dev_node_t *dev = find_dev_node_no_lock(&device_tree,
-	    IPC_GET_ARG1(*icall));
+	    ipc_get_arg1(icall));
 	if (dev == NULL || dev->state == DEVICE_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -413,5 +413,5 @@
 	fibril_rwlock_read_lock(&device_tree.rwlock);
 
-	fun = find_fun_node_no_lock(&device_tree, IPC_GET_ARG1(*icall));
+	fun = find_fun_node_no_lock(&device_tree, ipc_get_arg1(icall));
 	if (fun == NULL || fun->state == FUN_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -442,5 +442,5 @@
 	errno_t rc;
 
-	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
+	fun = find_fun_node(&device_tree, ipc_get_arg1(icall));
 	if (fun == NULL) {
 		async_answer_0(icall, ENOENT);
@@ -467,5 +467,5 @@
 	errno_t rc;
 
-	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
+	fun = find_fun_node(&device_tree, ipc_get_arg1(icall));
 	if (fun == NULL) {
 		async_answer_0(icall, ENOENT);
@@ -484,5 +484,5 @@
 	fun_node_t *fun;
 
-	fun = find_loc_tree_function(&device_tree, IPC_GET_ARG1(*icall));
+	fun = find_loc_tree_function(&device_tree, ipc_get_arg1(icall));
 
 	if (fun == NULL) {
@@ -550,5 +550,5 @@
 	}
 
-	driver_t *drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
+	driver_t *drv = driver_find(&drivers_list, ipc_get_arg1(icall));
 	if (drv == NULL) {
 		async_answer_0(&call, ENOENT);
@@ -604,6 +604,6 @@
 static void devman_driver_get_match_id(ipc_call_t *icall)
 {
-	devman_handle_t handle = IPC_GET_ARG1(*icall);
-	size_t index = IPC_GET_ARG2(*icall);
+	devman_handle_t handle = ipc_get_arg1(icall);
+	size_t index = ipc_get_arg2(icall);
 
 	driver_t *drv = driver_find(&drivers_list, handle);
@@ -655,5 +655,5 @@
 static void devman_driver_get_name(ipc_call_t *icall)
 {
-	devman_handle_t handle = IPC_GET_ARG1(*icall);
+	devman_handle_t handle = ipc_get_arg1(icall);
 
 	driver_t *drv = driver_find(&drivers_list, handle);
@@ -697,5 +697,5 @@
 	driver_t *drv;
 
-	drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
+	drv = driver_find(&drivers_list, ipc_get_arg1(icall));
 	if (drv == NULL) {
 		async_answer_0(icall, ENOENT);
@@ -712,5 +712,5 @@
 	errno_t rc;
 
-	drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
+	drv = driver_find(&drivers_list, ipc_get_arg1(icall));
 	if (drv == NULL) {
 		async_answer_0(icall, ENOENT);
@@ -731,5 +731,5 @@
 	errno_t rc;
 
-	drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
+	drv = driver_find(&drivers_list, ipc_get_arg1(icall));
 	if (drv == NULL) {
 		async_answer_0(icall, ENOENT);
@@ -754,10 +754,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case DEVMAN_DEVICE_GET_HANDLE:
 			devman_function_get_handle(&call);
Index: uspace/srv/devman/drv_conn.c
===================================================================
--- uspace/srv/devman/drv_conn.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/devman/drv_conn.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -169,5 +169,5 @@
 
 	async_get_call(&call);
-	if (DEVMAN_ADD_MATCH_ID != IPC_GET_IMETHOD(call)) {
+	if (DEVMAN_ADD_MATCH_ID != ipc_get_imethod(&call)) {
 		log_msg(LOG_DEFAULT, LVL_ERROR,
 		    "Invalid protocol when trying to receive match id.");
@@ -185,5 +185,5 @@
 	async_answer_0(&call, EOK);
 
-	match_id->score = IPC_GET_ARG1(call);
+	match_id->score = ipc_get_arg1(&call);
 
 	char *match_id_str;
@@ -230,7 +230,7 @@
 static void devman_add_function(ipc_call_t *call)
 {
-	fun_type_t ftype = (fun_type_t) IPC_GET_ARG1(*call);
-	devman_handle_t dev_handle = IPC_GET_ARG2(*call);
-	sysarg_t match_count = IPC_GET_ARG3(*call);
+	fun_type_t ftype = (fun_type_t) ipc_get_arg1(call);
+	devman_handle_t dev_handle = ipc_get_arg2(call);
+	sysarg_t match_count = ipc_get_arg3(call);
 	dev_tree_t *tree = &device_tree;
 
@@ -330,5 +330,5 @@
 static void devman_add_function_to_cat(ipc_call_t *call)
 {
-	devman_handle_t handle = IPC_GET_ARG1(*call);
+	devman_handle_t handle = ipc_get_arg1(call);
 	category_id_t cat_id;
 	errno_t rc;
@@ -385,5 +385,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "devman_drv_fun_online()");
 
-	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
+	fun = find_fun_node(&device_tree, ipc_get_arg1(icall));
 	if (fun == NULL) {
 		async_answer_0(icall, ENOENT);
@@ -425,5 +425,5 @@
 	errno_t rc;
 
-	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
+	fun = find_fun_node(&device_tree, ipc_get_arg1(icall));
 	if (fun == NULL) {
 		async_answer_0(icall, ENOENT);
@@ -458,5 +458,5 @@
 static void devman_remove_function(ipc_call_t *call)
 {
-	devman_handle_t fun_handle = IPC_GET_ARG1(*call);
+	devman_handle_t fun_handle = ipc_get_arg1(call);
 	dev_tree_t *tree = &device_tree;
 	errno_t rc;
@@ -602,10 +602,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		if (IPC_GET_IMETHOD(call) != DEVMAN_DRIVER_REGISTER) {
+		if (ipc_get_imethod(&call) != DEVMAN_DRIVER_REGISTER) {
 			fibril_mutex_lock(&client->mutex);
 			driver = client->driver;
@@ -618,5 +618,5 @@
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case DEVMAN_DRIVER_REGISTER:
 			fibril_mutex_lock(&client->mutex);
Index: uspace/srv/devman/main.c
===================================================================
--- uspace/srv/devman/main.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/devman/main.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -67,5 +67,5 @@
 static void devman_connection_device(ipc_call_t *icall, void *arg)
 {
-	devman_handle_t handle = IPC_GET_ARG2(*icall);
+	devman_handle_t handle = ipc_get_arg2(icall);
 	dev_node_t *dev = NULL;
 
@@ -149,5 +149,5 @@
 static void devman_connection_parent(ipc_call_t *icall, void *arg)
 {
-	devman_handle_t handle = IPC_GET_ARG2(*icall);
+	devman_handle_t handle = ipc_get_arg2(icall);
 	dev_node_t *dev = NULL;
 
@@ -228,6 +228,6 @@
 static void devman_forward(ipc_call_t *icall, void *arg)
 {
-	iface_t iface = IPC_GET_ARG1(*icall);
-	service_id_t service_id = IPC_GET_ARG2(*icall);
+	iface_t iface = ipc_get_arg1(icall);
+	service_id_t service_id = ipc_get_arg2(icall);
 
 	fun_node_t *fun = find_loc_tree_function(&device_tree, service_id);
Index: uspace/srv/fs/locfs/locfs_ops.c
===================================================================
--- uspace/srv/fs/locfs/locfs_ops.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/fs/locfs/locfs_ops.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -597,5 +597,5 @@
 			rc = ENOTSUP;
 
-		*rbytes = IPC_GET_ARG1(answer);
+		*rbytes = ipc_get_arg1(&answer);
 		return rc;
 	}
@@ -661,5 +661,5 @@
 			rc = ENOTSUP;
 
-		*wbytes = IPC_GET_ARG1(answer);
+		*wbytes = ipc_get_arg1(&answer);
 		*nsize = 0;
 		return rc;
Index: uspace/srv/hid/compositor/compositor.c
===================================================================
--- uspace/srv/hid/compositor/compositor.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/compositor/compositor.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -634,8 +634,8 @@
 static void comp_window_damage(window_t *win, ipc_call_t *icall)
 {
-	double x = IPC_GET_ARG1(*icall);
-	double y = IPC_GET_ARG2(*icall);
-	double width = IPC_GET_ARG3(*icall);
-	double height = IPC_GET_ARG4(*icall);
+	double x = ipc_get_arg1(icall);
+	double y = ipc_get_arg2(icall);
+	double width = ipc_get_arg3(icall);
+	double height = ipc_get_arg4(icall);
 
 	if ((width == 0) || (height == 0)) {
@@ -655,6 +655,6 @@
 static void comp_window_grab(window_t *win, ipc_call_t *icall)
 {
-	sysarg_t pos_id = IPC_GET_ARG1(*icall);
-	sysarg_t grab_flags = IPC_GET_ARG2(*icall);
+	sysarg_t pos_id = ipc_get_arg1(icall);
+	sysarg_t grab_flags = ipc_get_arg2(icall);
 
 	/*
@@ -732,6 +732,6 @@
 
 	/* Create new surface for the resized window. */
-	surface_t *new_surface = surface_create(IPC_GET_ARG3(*icall),
-	    IPC_GET_ARG4(*icall), new_cell_storage, SURFACE_FLAG_SHARED);
+	surface_t *new_surface = surface_create(ipc_get_arg3(icall),
+	    ipc_get_arg4(icall), new_cell_storage, SURFACE_FLAG_SHARED);
 	if (!new_surface) {
 		as_area_destroy(new_cell_storage);
@@ -740,8 +740,8 @@
 	}
 
-	sysarg_t offset_x = IPC_GET_ARG1(*icall);
-	sysarg_t offset_y = IPC_GET_ARG2(*icall);
+	sysarg_t offset_x = ipc_get_arg1(icall);
+	sysarg_t offset_y = ipc_get_arg2(icall);
 	window_placement_flags_t placement_flags =
-	    (window_placement_flags_t) IPC_GET_ARG5(*icall);
+	    (window_placement_flags_t) ipc_get_arg5(icall);
 
 	comp_update_viewport_bound_rect();
@@ -921,5 +921,5 @@
 {
 	ipc_call_t call;
-	service_id_t service_id = (service_id_t) IPC_GET_ARG2(*icall);
+	service_id_t service_id = (service_id_t) ipc_get_arg2(icall);
 
 	/* Allocate resources for new window and register it to the location service. */
@@ -928,5 +928,5 @@
 
 		async_get_call(&call);
-		if (IPC_GET_IMETHOD(call) == WINDOW_REGISTER) {
+		if (ipc_get_imethod(&call) == WINDOW_REGISTER) {
 			fibril_mutex_lock(&window_list_mtx);
 
@@ -938,5 +938,5 @@
 			}
 
-			win->flags = IPC_GET_ARG1(call);
+			win->flags = ipc_get_arg1(&call);
 
 			char name_in[LOC_NAME_MAXLEN + 1];
@@ -1014,5 +1014,5 @@
 			async_get_call(&call);
 
-			if (!IPC_GET_IMETHOD(call)) {
+			if (!ipc_get_imethod(&call)) {
 				async_answer_0(&call, EOK);
 				window_destroy(win);
@@ -1020,5 +1020,5 @@
 			}
 
-			switch (IPC_GET_IMETHOD(call)) {
+			switch (ipc_get_imethod(&call)) {
 			case WINDOW_GET_EVENT:
 				comp_window_get_event(win, &call);
@@ -1032,5 +1032,5 @@
 			async_get_call(&call);
 
-			if (!IPC_GET_IMETHOD(call)) {
+			if (!ipc_get_imethod(&call)) {
 				comp_window_close(win, &call);
 				window_destroy(win);
@@ -1038,5 +1038,5 @@
 			}
 
-			switch (IPC_GET_IMETHOD(call)) {
+			switch (ipc_get_imethod(&call)) {
 			case WINDOW_DAMAGE:
 				comp_window_damage(win, &call);
@@ -1067,5 +1067,5 @@
 static void comp_mode_change(viewport_t *vp, ipc_call_t *icall)
 {
-	sysarg_t mode_idx = IPC_GET_ARG2(*icall);
+	sysarg_t mode_idx = ipc_get_arg2(icall);
 	fibril_mutex_lock(&viewport_list_mtx);
 
@@ -1165,5 +1165,5 @@
 	fibril_mutex_lock(&viewport_list_mtx);
 	list_foreach(viewport_list, link, viewport_t, cur) {
-		if (cur->dsid == (service_id_t) IPC_GET_ARG1(*icall)) {
+		if (cur->dsid == (service_id_t) ipc_get_arg1(icall)) {
 			vp = cur;
 			break;
@@ -1180,10 +1180,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_hangup(vp->sess);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case VISUALIZER_MODE_CHANGE:
 			comp_mode_change(vp, &call);
Index: uspace/srv/hid/console/console.c
===================================================================
--- uspace/srv/hid/console/console.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/console/console.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -513,5 +513,5 @@
 
 	for (size_t i = 0; i < CONSOLE_COUNT; i++) {
-		if (consoles[i].dsid == (service_id_t) IPC_GET_ARG2(*icall)) {
+		if (consoles[i].dsid == (service_id_t) ipc_get_arg2(icall)) {
 			cons = &consoles[i];
 			break;
Index: uspace/srv/hid/input/ctl/kbdev.c
===================================================================
--- uspace/srv/hid/input/ctl/kbdev.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/input/ctl/kbdev.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -160,5 +160,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			kbdev_destroy(kbdev);
@@ -166,10 +166,10 @@
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case KBDEV_EVENT:
 			/* Got event from keyboard device */
 			retval = 0;
-			type = IPC_GET_ARG1(call);
-			key = IPC_GET_ARG2(call);
+			type = ipc_get_arg1(&call);
+			key = ipc_get_arg2(&call);
 			kbd_push_event(kbdev->kbd_dev, type, key);
 			break;
Index: uspace/srv/hid/input/input.c
===================================================================
--- uspace/srv/hid/input/input.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/input/input.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -334,5 +334,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			if (client->sess != NULL) {
 				async_hangup(client->sess);
@@ -353,5 +353,5 @@
 				async_answer_0(&call, ELIMIT);
 		} else {
-			switch (IPC_GET_IMETHOD(call)) {
+			switch (ipc_get_imethod(&call)) {
 			case INPUT_ACTIVATE:
 				active_client = client;
@@ -368,5 +368,5 @@
 static void kconsole_event_handler(ipc_call_t *call, void *arg)
 {
-	if (IPC_GET_ARG1(*call)) {
+	if (ipc_get_arg1(call)) {
 		/* Kernel console activated */
 		active = false;
Index: uspace/srv/hid/input/proto/mousedev.c
===================================================================
--- uspace/srv/hid/input/proto/mousedev.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/input/proto/mousedev.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -79,5 +79,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			mousedev_destroy(mousedev);
@@ -87,20 +87,20 @@
 		errno_t retval;
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case MOUSEEV_MOVE_EVENT:
 			mouse_push_event_move(mousedev->mouse_dev,
-			    IPC_GET_ARG1(call), IPC_GET_ARG2(call),
-			    IPC_GET_ARG3(call));
+			    ipc_get_arg1(&call), ipc_get_arg2(&call),
+			    ipc_get_arg3(&call));
 			retval = EOK;
 			break;
 		case MOUSEEV_ABS_MOVE_EVENT:
 			mouse_push_event_abs_move(mousedev->mouse_dev,
-			    IPC_GET_ARG1(call), IPC_GET_ARG2(call),
-			    IPC_GET_ARG3(call), IPC_GET_ARG4(call));
+			    ipc_get_arg1(&call), ipc_get_arg2(&call),
+			    ipc_get_arg3(&call), ipc_get_arg4(&call));
 			retval = EOK;
 			break;
 		case MOUSEEV_BUTTON_EVENT:
 			mouse_push_event_button(mousedev->mouse_dev,
-			    IPC_GET_ARG1(call), IPC_GET_ARG2(call));
+			    ipc_get_arg1(&call), ipc_get_arg2(&call));
 			retval = EOK;
 			break;
Index: uspace/srv/hid/isdv4_tablet/main.c
===================================================================
--- uspace/srv/hid/isdv4_tablet/main.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/isdv4_tablet/main.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -81,5 +81,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
Index: uspace/srv/hid/output/output.c
===================================================================
--- uspace/srv/hid/output/output.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/output/output.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -187,5 +187,5 @@
 static void srv_frontbuf_destroy(ipc_call_t *icall)
 {
-	frontbuf_t *frontbuf = resolve_frontbuf(IPC_GET_ARG1(*icall), icall);
+	frontbuf_t *frontbuf = resolve_frontbuf(ipc_get_arg1(icall), icall);
 	if (frontbuf == NULL)
 		return;
@@ -200,5 +200,5 @@
 static void srv_cursor_update(ipc_call_t *icall)
 {
-	frontbuf_t *frontbuf = resolve_frontbuf(IPC_GET_ARG1(*icall), icall);
+	frontbuf_t *frontbuf = resolve_frontbuf(ipc_get_arg1(icall), icall);
 	if (frontbuf == NULL)
 		return;
@@ -235,5 +235,5 @@
 		dev->attrs.type = CHAR_ATTR_STYLE;
 		dev->attrs.val.style =
-		    (console_style_t) IPC_GET_ARG1(*icall);
+		    (console_style_t) ipc_get_arg1(icall);
 	}
 
@@ -246,9 +246,9 @@
 		dev->attrs.type = CHAR_ATTR_INDEX;
 		dev->attrs.val.index.bgcolor =
-		    (console_color_t) IPC_GET_ARG1(*icall);
+		    (console_color_t) ipc_get_arg1(icall);
 		dev->attrs.val.index.fgcolor =
-		    (console_color_t) IPC_GET_ARG2(*icall);
+		    (console_color_t) ipc_get_arg2(icall);
 		dev->attrs.val.index.attr =
-		    (console_color_attr_t) IPC_GET_ARG3(*icall);
+		    (console_color_attr_t) ipc_get_arg3(icall);
 	}
 
@@ -260,6 +260,6 @@
 	list_foreach(outdevs, link, outdev_t, dev) {
 		dev->attrs.type = CHAR_ATTR_RGB;
-		dev->attrs.val.rgb.bgcolor = IPC_GET_ARG1(*icall);
-		dev->attrs.val.rgb.fgcolor = IPC_GET_ARG2(*icall);
+		dev->attrs.val.rgb.bgcolor = ipc_get_arg1(icall);
+		dev->attrs.val.rgb.fgcolor = ipc_get_arg2(icall);
 	}
 
@@ -308,5 +308,5 @@
 static void srv_update(ipc_call_t *icall)
 {
-	frontbuf_t *frontbuf = resolve_frontbuf(IPC_GET_ARG1(*icall), icall);
+	frontbuf_t *frontbuf = resolve_frontbuf(ipc_get_arg1(icall), icall);
 	if (frontbuf == NULL)
 		return;
@@ -357,5 +357,5 @@
 static void srv_damage(ipc_call_t *icall)
 {
-	frontbuf_t *frontbuf = resolve_frontbuf(IPC_GET_ARG1(*icall), icall);
+	frontbuf_t *frontbuf = resolve_frontbuf(ipc_get_arg1(icall), icall);
 	if (frontbuf == NULL)
 		return;
@@ -369,9 +369,9 @@
 			continue;
 
-		sysarg_t col = IPC_GET_ARG2(*icall);
-		sysarg_t row = IPC_GET_ARG3(*icall);
-
-		sysarg_t cols = IPC_GET_ARG4(*icall);
-		sysarg_t rows = IPC_GET_ARG5(*icall);
+		sysarg_t col = ipc_get_arg2(icall);
+		sysarg_t row = ipc_get_arg3(icall);
+
+		sysarg_t cols = ipc_get_arg4(icall);
+		sysarg_t rows = ipc_get_arg5(icall);
 
 		for (sysarg_t y = 0; y < rows; y++) {
@@ -404,10 +404,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case OUTPUT_YIELD:
 			srv_yield(&call);
Index: uspace/srv/hid/remcons/remcons.c
===================================================================
--- uspace/srv/hid/remcons/remcons.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/remcons/remcons.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -219,5 +219,5 @@
 {
 	/* Find the user. */
-	telnet_user_t *user = telnet_user_get_for_client_connection(IPC_GET_ARG2(*icall));
+	telnet_user_t *user = telnet_user_get_for_client_connection(ipc_get_arg2(icall));
 	if (user == NULL) {
 		async_answer_0(icall, ENOENT);
Index: uspace/srv/hid/s3c24xx_ts/s3c24xx_ts.c
===================================================================
--- uspace/srv/hid/s3c24xx_ts/s3c24xx_ts.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/hid/s3c24xx_ts/s3c24xx_ts.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -378,5 +378,5 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			if (ts->client_sess != NULL) {
 				async_hangup(ts->client_sess);
Index: uspace/srv/loader/main.c
===================================================================
--- uspace/srv/loader/main.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/loader/main.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -353,5 +353,5 @@
 	 */
 	async_get_call(req);
-	assert(!IPC_GET_IMETHOD(*req));
+	assert(!ipc_get_imethod(req));
 	async_answer_0(req, EOK);
 
@@ -392,10 +392,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			exit(0);
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case LOADER_GET_TASKID:
 			ldr_get_taskid(&call);
Index: uspace/srv/locsrv/locsrv.c
===================================================================
--- uspace/srv/locsrv/locsrv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/locsrv/locsrv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -342,5 +342,5 @@
 	async_get_call(&icall);
 
-	if (IPC_GET_IMETHOD(icall) != LOC_SERVER_REGISTER) {
+	if (ipc_get_imethod(&icall) != LOC_SERVER_REGISTER) {
 		async_answer_0(&icall, EREFUSED);
 		return NULL;
@@ -547,5 +547,5 @@
 
 	fibril_mutex_lock(&services_list_mutex);
-	svc = loc_service_find_id(IPC_GET_ARG1(*icall));
+	svc = loc_service_find_id(ipc_get_arg1(icall));
 	if (svc == NULL) {
 		fibril_mutex_unlock(&services_list_mutex);
@@ -583,5 +583,5 @@
 	fibril_mutex_lock(&cdir.mutex);
 
-	cat = category_get(&cdir, IPC_GET_ARG1(*icall));
+	cat = category_get(&cdir, ipc_get_arg1(icall));
 	if (cat == NULL) {
 		fibril_mutex_unlock(&cdir.mutex);
@@ -623,5 +623,5 @@
 	fibril_mutex_lock(&services_list_mutex);
 
-	svc = loc_service_find_id(IPC_GET_ARG1(*icall));
+	svc = loc_service_find_id(ipc_get_arg1(icall));
 	if (svc == NULL) {
 		fibril_mutex_unlock(&services_list_mutex);
@@ -671,5 +671,5 @@
 	fibril_mutex_lock(&services_list_mutex);
 
-	svc = loc_service_find_id(IPC_GET_ARG1(*icall));
+	svc = loc_service_find_id(ipc_get_arg1(icall));
 	if (svc == NULL) {
 		fibril_mutex_unlock(&services_list_mutex);
@@ -715,6 +715,6 @@
 	 * Get ID from request
 	 */
-	iface_t iface = IPC_GET_ARG1(*call);
-	service_id_t id = IPC_GET_ARG2(*call);
+	iface_t iface = ipc_get_arg1(call);
+	service_id_t id = ipc_get_arg2(call);
 	loc_service_t *svc = loc_service_find_id(id);
 
@@ -774,5 +774,5 @@
 	 */
 	if (svc == NULL) {
-		if (IPC_GET_ARG1(*icall) & IPC_FLAG_BLOCKING) {
+		if (ipc_get_arg1(icall) & IPC_FLAG_BLOCKING) {
 			/* Blocking lookup */
 			fibril_condvar_wait(&services_list_cv,
@@ -827,5 +827,5 @@
 	 */
 	if (namespace == NULL) {
-		if (IPC_GET_ARG1(*icall) & IPC_FLAG_BLOCKING) {
+		if (ipc_get_arg1(icall) & IPC_FLAG_BLOCKING) {
 			/* Blocking lookup */
 			fibril_condvar_wait(&services_list_cv,
@@ -932,8 +932,8 @@
 
 	loc_namespace_t *namespace =
-	    loc_namespace_find_id(IPC_GET_ARG1(*icall));
+	    loc_namespace_find_id(ipc_get_arg1(icall));
 	if (namespace == NULL) {
 		loc_service_t *svc =
-		    loc_service_find_id(IPC_GET_ARG1(*icall));
+		    loc_service_find_id(ipc_get_arg1(icall));
 		if (svc == NULL)
 			async_answer_1(icall, EOK, LOC_OBJECT_NONE);
@@ -958,5 +958,5 @@
 
 	loc_namespace_t *namespace =
-	    loc_namespace_find_id(IPC_GET_ARG1(*icall));
+	    loc_namespace_find_id(ipc_get_arg1(icall));
 	if (namespace == NULL)
 		async_answer_0(icall, EEXIST);
@@ -1079,5 +1079,5 @@
 
 	loc_namespace_t *namespace =
-	    loc_namespace_find_id(IPC_GET_ARG1(*icall));
+	    loc_namespace_find_id(ipc_get_arg1(icall));
 	if (namespace == NULL) {
 		fibril_mutex_unlock(&services_list_mutex);
@@ -1135,5 +1135,5 @@
 	fibril_mutex_lock(&cdir.mutex);
 
-	category_t *cat = category_get(&cdir, IPC_GET_ARG1(*icall));
+	category_t *cat = category_get(&cdir, ipc_get_arg1(icall));
 	if (cat == NULL) {
 		fibril_mutex_unlock(&cdir.mutex);
@@ -1247,5 +1247,5 @@
 static void loc_null_destroy(ipc_call_t *icall)
 {
-	sysarg_t i = IPC_GET_ARG1(*icall);
+	sysarg_t i = ipc_get_arg1(icall);
 	if (i >= NULL_SERVICES) {
 		async_answer_0(icall, ELIMIT);
@@ -1281,6 +1281,6 @@
 	errno_t retval;
 
-	svc_id = IPC_GET_ARG1(*icall);
-	cat_id = IPC_GET_ARG2(*icall);
+	svc_id = ipc_get_arg1(icall);
+	cat_id = ipc_get_arg2(icall);
 
 	fibril_mutex_lock(&services_list_mutex);
@@ -1419,10 +1419,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case LOC_SERVER_UNREGISTER:
 			if (server == NULL)
@@ -1475,10 +1475,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case LOC_SERVICE_GET_ID:
 			loc_service_get_id(&call);
Index: uspace/srv/logger/ctl.c
===================================================================
--- uspace/srv/logger/ctl.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/logger/ctl.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -75,16 +75,16 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case LOGGER_CONTROL_SET_DEFAULT_LEVEL:
-			rc = set_default_logging_level(IPC_GET_ARG1(call));
+			rc = set_default_logging_level(ipc_get_arg1(&call));
 			async_answer_0(&call, rc);
 			break;
 		case LOGGER_CONTROL_SET_LOG_LEVEL:
-			rc = handle_log_level_change(IPC_GET_ARG1(call));
+			rc = handle_log_level_change(ipc_get_arg1(&call));
 			async_answer_0(&call, rc);
 			break;
Index: uspace/srv/logger/writer.c
===================================================================
--- uspace/srv/logger/writer.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/logger/writer.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -109,12 +109,12 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case LOGGER_WRITER_CREATE_LOG:
-			log = handle_create_log(IPC_GET_ARG1(call));
+			log = handle_create_log(ipc_get_arg1(&call));
 			if (log == NULL) {
 				async_answer_0(&call, ENOMEM);
@@ -130,6 +130,6 @@
 			break;
 		case LOGGER_WRITER_MESSAGE:
-			rc = handle_receive_message(IPC_GET_ARG1(call),
-			    IPC_GET_ARG2(call));
+			rc = handle_receive_message(ipc_get_arg1(&call),
+			    ipc_get_arg2(&call));
 			async_answer_0(&call, rc);
 			break;
Index: uspace/srv/net/dhcp/main.c
===================================================================
--- uspace/srv/net/dhcp/main.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/dhcp/main.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -91,5 +91,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcp_link_add_srv()");
 
-	link_id = IPC_GET_ARG1(*call);
+	link_id = ipc_get_arg1(call);
 
 	rc = dhcpsrv_link_add(link_id);
@@ -104,5 +104,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcp_link_remove_srv()");
 
-	link_id = IPC_GET_ARG1(*call);
+	link_id = ipc_get_arg1(call);
 
 	rc = dhcpsrv_link_remove(link_id);
@@ -117,5 +117,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcp_discover_srv()");
 
-	link_id = IPC_GET_ARG1(*call);
+	link_id = ipc_get_arg1(call);
 
 	rc = dhcpsrv_discover(link_id);
@@ -133,5 +133,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/srv/net/dnsrsrv/dnsrsrv.c
===================================================================
--- uspace/srv/net/dnsrsrv/dnsrsrv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/dnsrsrv/dnsrsrv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -90,5 +90,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srvaddr_srv()");
 
-	ip_ver_t ver = IPC_GET_ARG1(*icall);
+	ip_ver_t ver = ipc_get_arg1(icall);
 
 	char *name;
@@ -219,5 +219,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/srv/net/ethip/ethip.c
===================================================================
--- uspace/srv/net/ethip/ethip.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/ethip/ethip.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -147,5 +147,5 @@
 	service_id_t sid;
 
-	sid = (service_id_t) IPC_GET_ARG2(*icall);
+	sid = (service_id_t) ipc_get_arg2(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_client_conn(%u)", (unsigned)sid);
 	nic = ethip_nic_find_by_iplink_sid(sid);
Index: uspace/srv/net/ethip/ethip_nic.c
===================================================================
--- uspace/srv/net/ethip/ethip_nic.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/ethip/ethip_nic.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -299,10 +299,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			return;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case NIC_EV_ADDR_CHANGED:
 			ethip_nic_addr_changed(nic, &call);
@@ -315,5 +315,5 @@
 			break;
 		default:
-			log_msg(LOG_DEFAULT, LVL_DEBUG, "unknown IPC method: %" PRIun, IPC_GET_IMETHOD(call));
+			log_msg(LOG_DEFAULT, LVL_DEBUG, "unknown IPC method: %" PRIun, ipc_get_imethod(&call));
 			async_answer_0(&call, ENOTSUP);
 		}
Index: uspace/srv/net/inetsrv/inetcfg.c
===================================================================
--- uspace/srv/net/inetsrv/inetcfg.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/inetsrv/inetcfg.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -257,5 +257,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_addr_create_static_srv()");
 
-	sysarg_t link_id = IPC_GET_ARG1(*icall);
+	sysarg_t link_id = ipc_get_arg1(icall);
 
 	ipc_call_t call;
@@ -302,5 +302,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_addr_delete_srv()");
 
-	addr_id = IPC_GET_ARG1(*call);
+	addr_id = ipc_get_arg1(call);
 
 	rc = inetcfg_addr_delete(addr_id);
@@ -312,5 +312,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_addr_get_srv()");
 
-	sysarg_t addr_id = IPC_GET_ARG1(*icall);
+	sysarg_t addr_id = ipc_get_arg1(icall);
 
 	inet_addr_info_t ainfo;
@@ -375,5 +375,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_addr_get_id_srv()");
 
-	link_id = IPC_GET_ARG1(*call);
+	link_id = ipc_get_arg1(call);
 
 	rc = async_data_write_accept((void **) &name, true, 0, LOC_NAME_MAXLEN,
@@ -499,5 +499,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_link_add_srv()");
 
-	link_id = IPC_GET_ARG1(*call);
+	link_id = ipc_get_arg1(call);
 
 	rc = inetcfg_link_add(link_id);
@@ -516,5 +516,5 @@
 	errno_t rc;
 
-	link_id = IPC_GET_ARG1(*call);
+	link_id = ipc_get_arg1(call);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_link_get_srv()");
 
@@ -566,5 +566,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_link_remove_srv()");
 
-	link_id = IPC_GET_ARG1(*call);
+	link_id = ipc_get_arg1(call);
 
 	rc = inetcfg_link_remove(link_id);
@@ -639,5 +639,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_sroute_delete_srv()");
 
-	sroute_id = IPC_GET_ARG1(*call);
+	sroute_id = ipc_get_arg1(call);
 
 	rc = inetcfg_sroute_delete(sroute_id);
@@ -649,5 +649,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_sroute_get_srv()");
 
-	sysarg_t sroute_id = IPC_GET_ARG1(*icall);
+	sysarg_t sroute_id = ipc_get_arg1(icall);
 
 	inet_sroute_info_t srinfo;
@@ -747,5 +747,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		log_msg(LOG_DEFAULT, LVL_DEBUG, "method %d", (int)method);
Index: uspace/srv/net/inetsrv/inetping.c
===================================================================
--- uspace/srv/net/inetsrv/inetping.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/inetsrv/inetping.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -143,5 +143,5 @@
 	errno_t rc;
 
-	sdu.seq_no = IPC_GET_ARG1(*icall);
+	sdu.seq_no = ipc_get_arg1(icall);
 
 	ipc_call_t call;
@@ -294,5 +294,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/srv/net/inetsrv/inetsrv.c
===================================================================
--- uspace/srv/net/inetsrv/inetsrv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/inetsrv/inetsrv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -233,5 +233,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()");
 
-	uint8_t tos = IPC_GET_ARG1(*icall);
+	uint8_t tos = ipc_get_arg1(icall);
 
 	ipc_call_t call;
@@ -291,9 +291,9 @@
 	inet_dgram_t dgram;
 
-	dgram.iplink = IPC_GET_ARG1(*icall);
-	dgram.tos = IPC_GET_ARG2(*icall);
-
-	uint8_t ttl = IPC_GET_ARG3(*icall);
-	int df = IPC_GET_ARG4(*icall);
+	dgram.iplink = ipc_get_arg1(icall);
+	dgram.tos = ipc_get_arg2(icall);
+
+	uint8_t ttl = ipc_get_arg3(icall);
+	int df = ipc_get_arg4(icall);
 
 	ipc_call_t call;
@@ -352,5 +352,5 @@
 	sysarg_t proto;
 
-	proto = IPC_GET_ARG1(*call);
+	proto = ipc_get_arg1(call);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_set_proto_srv(%lu)", (unsigned long) proto);
 
@@ -397,5 +397,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/srv/net/tcp/service.c
===================================================================
--- uspace/srv/net/tcp/service.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/tcp/service.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -806,5 +806,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_destroy_srv()");
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 	rc = tcp_conn_destroy_impl(client, conn_id);
 	async_answer_0(icall, rc);
@@ -872,5 +872,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_listener_destroy_srv()");
 
-	lst_id = IPC_GET_ARG1(*icall);
+	lst_id = ipc_get_arg1(icall);
 	rc = tcp_listener_destroy_impl(client, lst_id);
 	async_answer_0(icall, rc);
@@ -892,5 +892,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_send_fin_srv()");
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 	rc = tcp_conn_send_fin_impl(client, conn_id);
 	async_answer_0(icall, rc);
@@ -912,5 +912,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_push_srv()");
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 	rc = tcp_conn_push_impl(client, conn_id);
 	async_answer_0(icall, rc);
@@ -932,5 +932,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_reset_srv()");
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 	rc = tcp_conn_reset_impl(client, conn_id);
 	async_answer_0(icall, rc);
@@ -984,5 +984,5 @@
 	}
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 
 	rc = tcp_conn_send_impl(client, conn_id, data, size);
@@ -1015,5 +1015,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_srv()");
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 
 	if (!async_data_read_receive(&call, &size)) {
@@ -1070,5 +1070,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv()");
 
-	conn_id = IPC_GET_ARG1(*icall);
+	conn_id = ipc_get_arg1(icall);
 
 	if (!async_data_read_receive(&call, &size)) {
@@ -1180,5 +1180,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_client_conn: method=%d",
Index: uspace/srv/net/udp/service.c
===================================================================
--- uspace/srv/net/udp/service.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/net/udp/service.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -405,5 +405,5 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_destroy_srv()");
 
-	assoc_id = IPC_GET_ARG1(*icall);
+	assoc_id = ipc_get_arg1(icall);
 	rc = udp_assoc_destroy_impl(client, assoc_id);
 	async_answer_0(icall, rc);
@@ -425,5 +425,5 @@
 	log_msg(LOG_DEFAULT, LVL_NOTE, "udp_assoc_set_nolocal_srv()");
 
-	assoc_id = IPC_GET_ARG1(*icall);
+	assoc_id = ipc_get_arg1(icall);
 	rc = udp_assoc_set_nolocal_impl(client, assoc_id);
 	async_answer_0(icall, rc);
@@ -498,5 +498,5 @@
 	}
 
-	assoc_id = IPC_GET_ARG1(*icall);
+	assoc_id = ipc_get_arg1(icall);
 
 	rc = udp_assoc_send_msg_impl(client, assoc_id, &dest, data, size);
@@ -592,5 +592,5 @@
 
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_rmsg_read_srv()");
-	off = IPC_GET_ARG1(*icall);
+	off = ipc_get_arg1(icall);
 
 	enext = udp_rmsg_get_next(client);
@@ -679,5 +679,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_client_conn: method=%d",
Index: uspace/srv/ns/clonable.c
===================================================================
--- uspace/srv/ns/clonable.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/ns/clonable.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -95,5 +95,5 @@
 	async_exch_t *exch = async_exchange_begin(sess);
 	async_forward_1(&csr->call, exch, csr->iface,
-	    IPC_GET_ARG3(csr->call), IPC_FF_NONE);
+	    ipc_get_arg3(&csr->call), IPC_FF_NONE);
 	async_exchange_end(exch);
 
Index: uspace/srv/ns/ns.c
===================================================================
--- uspace/srv/ns/ns.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/ns/ns.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -55,6 +55,6 @@
 	service_t service;
 
-	iface = IPC_GET_ARG1(*icall);
-	service = IPC_GET_ARG2(*icall);
+	iface = ipc_get_arg1(icall);
+	service = ipc_get_arg2(icall);
 	if (service != 0) {
 		/*
@@ -76,5 +76,5 @@
 
 		async_get_call(&call);
-		if (!IPC_GET_IMETHOD(call))
+		if (!ipc_get_imethod(&call))
 			break;
 
@@ -84,8 +84,8 @@
 		service_t service;
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case NS_REGISTER:
-			service = IPC_GET_ARG1(call);
-			iface = IPC_GET_ARG2(call);
+			service = ipc_get_arg1(&call);
+			iface = ipc_get_arg2(&call);
 
 			/*
@@ -101,5 +101,5 @@
 			break;
 		case NS_REGISTER_BROKER:
-			service = IPC_GET_ARG1(call);
+			service = ipc_get_arg1(&call);
 			retval = ns_service_register_broker(service);
 			break;
@@ -109,5 +109,5 @@
 		case NS_TASK_WAIT:
 			id = (task_id_t)
-			    MERGE_LOUP32(IPC_GET_ARG1(call), IPC_GET_ARG2(call));
+			    MERGE_LOUP32(ipc_get_arg1(&call), ipc_get_arg2(&call));
 			wait_for_task(id, &call);
 			continue;
@@ -120,5 +120,5 @@
 		default:
 			printf("%s: Method not supported (%" PRIun ")\n",
-			    NAME, IPC_GET_IMETHOD(call));
+			    NAME, ipc_get_imethod(&call));
 			retval = ENOTSUP;
 			break;
Index: uspace/srv/ns/service.c
===================================================================
--- uspace/srv/ns/service.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/ns/service.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -154,5 +154,5 @@
 {
 	async_exch_t *exch = async_exchange_begin(sess);
-	async_forward_1(call, exch, iface, IPC_GET_ARG3(*call), IPC_FF_NONE);
+	async_forward_1(call, exch, iface, ipc_get_arg3(call), IPC_FF_NONE);
 	async_exchange_end(exch);
 }
@@ -366,5 +366,5 @@
 void ns_service_forward(service_t service, iface_t iface, ipc_call_t *call)
 {
-	sysarg_t flags = IPC_GET_ARG4(*call);
+	sysarg_t flags = ipc_get_arg4(call);
 	errno_t retval;
 
Index: uspace/srv/ns/task.c
===================================================================
--- uspace/srv/ns/task.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/ns/task.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -225,5 +225,5 @@
 errno_t ns_task_id_intro(ipc_call_t *call)
 {
-	task_id_t id = MERGE_LOUP32(IPC_GET_ARG1(*call), IPC_GET_ARG2(*call));
+	task_id_t id = MERGE_LOUP32(ipc_get_arg1(call), ipc_get_arg2(call));
 
 	ht_link_t *link = hash_table_find(&phone_to_id, &call->request_label);
@@ -289,5 +289,5 @@
 	ht->finished = true;
 	ht->have_rval = true;
-	ht->retval = IPC_GET_ARG1(*call);
+	ht->retval = ipc_get_arg1(call);
 
 	process_pending_wait();
Index: uspace/srv/taskmon/taskmon.c
===================================================================
--- uspace/srv/taskmon/taskmon.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/taskmon/taskmon.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -61,6 +61,6 @@
 	uintptr_t thread;
 
-	taskid = MERGE_LOUP32(IPC_GET_ARG1(*call), IPC_GET_ARG2(*call));
-	thread = IPC_GET_ARG3(*call);
+	taskid = MERGE_LOUP32(ipc_get_arg1(call), ipc_get_arg2(call));
+	thread = ipc_get_arg3(call);
 
 	if (asprintf(&s_taskid, "%" PRIu64, taskid) < 0) {
@@ -101,5 +101,5 @@
 static void corecfg_set_enable_srv(ipc_call_t *icall)
 {
-	write_core_files = IPC_GET_ARG1(*icall);
+	write_core_files = ipc_get_arg1(icall);
 	async_answer_0(icall, EOK);
 }
@@ -113,5 +113,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
Index: uspace/srv/test/chardev-test/main.c
===================================================================
--- uspace/srv/test/chardev-test/main.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/test/chardev-test/main.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -100,5 +100,5 @@
 	sysarg_t svcid;
 
-	svcid = IPC_GET_ARG2(*icall);
+	svcid = ipc_get_arg2(icall);
 	if (svcid == smallx_svc_id) {
 		svc = &smallx_srvs;
Index: uspace/srv/test/ipc-test/main.c
===================================================================
--- uspace/srv/test/ipc-test/main.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/test/ipc-test/main.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -191,10 +191,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IPC_TEST_PING:
 			async_answer_0(&call, EOK);
Index: uspace/srv/vfs/vfs.c
===================================================================
--- uspace/srv/vfs/vfs.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/vfs/vfs.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -62,10 +62,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case IPC_M_PAGE_IN:
 			vfs_page_in(&call);
@@ -80,9 +80,9 @@
 static void notification_handler(ipc_call_t *call, void *arg)
 {
-	if (IPC_GET_ARG1(*call) == VFS_PASS_HANDLE)
+	if (ipc_get_arg1(call) == VFS_PASS_HANDLE)
 		vfs_op_pass_handle(
-		    (task_id_t) MERGE_LOUP32(IPC_GET_ARG4(*call),
-		    IPC_GET_ARG5(*call)), call->task_id,
-		    (int) IPC_GET_ARG2(*call));
+		    (task_id_t) MERGE_LOUP32(ipc_get_arg4(call),
+		    ipc_get_arg5(call)), call->task_id,
+		    (int) ipc_get_arg2(call));
 }
 
Index: uspace/srv/vfs/vfs_file.c
===================================================================
--- uspace/srv/vfs/vfs_file.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/vfs/vfs_file.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -148,5 +148,5 @@
 	async_wait_for(msg, &rc);
 
-	return IPC_GET_RETVAL(answer);
+	return ipc_get_retval(&answer);
 }
 
Index: uspace/srv/vfs/vfs_ipc.c
===================================================================
--- uspace/srv/vfs/vfs_ipc.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/vfs/vfs_ipc.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -37,7 +37,7 @@
 static void vfs_in_clone(ipc_call_t *req)
 {
-	int oldfd = IPC_GET_ARG1(*req);
-	int newfd = IPC_GET_ARG2(*req);
-	bool desc = IPC_GET_ARG3(*req);
+	int oldfd = ipc_get_arg1(req);
+	int newfd = ipc_get_arg2(req);
+	bool desc = ipc_get_arg3(req);
 
 	int outfd = -1;
@@ -48,5 +48,5 @@
 static void vfs_in_fsprobe(ipc_call_t *req)
 {
-	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg1(req);
 	char *fs_name = NULL;
 	vfs_fs_probe_info_t info;
@@ -113,5 +113,5 @@
 static void vfs_in_mount(ipc_call_t *req)
 {
-	int mpfd = IPC_GET_ARG1(*req);
+	int mpfd = ipc_get_arg1(req);
 
 	/*
@@ -120,8 +120,8 @@
 	 * in the request.
 	 */
-	service_id_t service_id = (service_id_t) IPC_GET_ARG2(*req);
-
-	unsigned int flags = (unsigned int) IPC_GET_ARG3(*req);
-	unsigned int instance = IPC_GET_ARG4(*req);
+	service_id_t service_id = (service_id_t) ipc_get_arg2(req);
+
+	unsigned int flags = (unsigned int) ipc_get_arg3(req);
+	unsigned int instance = ipc_get_arg4(req);
 
 	char *opts = NULL;
@@ -159,6 +159,6 @@
 static void vfs_in_open(ipc_call_t *req)
 {
-	int fd = IPC_GET_ARG1(*req);
-	int mode = IPC_GET_ARG2(*req);
+	int fd = ipc_get_arg1(req);
+	int mode = ipc_get_arg2(req);
 
 	errno_t rc = vfs_op_open(fd, mode);
@@ -168,5 +168,5 @@
 static void vfs_in_put(ipc_call_t *req)
 {
-	int fd = IPC_GET_ARG1(*req);
+	int fd = ipc_get_arg1(req);
 	errno_t rc = vfs_op_put(fd);
 	async_answer_0(req, rc);
@@ -175,7 +175,7 @@
 static void vfs_in_read(ipc_call_t *req)
 {
-	int fd = IPC_GET_ARG1(*req);
-	aoff64_t pos = MERGE_LOUP32(IPC_GET_ARG2(*req),
-	    IPC_GET_ARG3(*req));
+	int fd = ipc_get_arg1(req);
+	aoff64_t pos = MERGE_LOUP32(ipc_get_arg2(req),
+	    ipc_get_arg3(req));
 
 	size_t bytes = 0;
@@ -192,5 +192,5 @@
 	errno_t rc;
 
-	basefd = IPC_GET_ARG1(*req);
+	basefd = ipc_get_arg1(req);
 
 	/* Retrieve the old path. */
@@ -230,6 +230,6 @@
 static void vfs_in_resize(ipc_call_t *req)
 {
-	int fd = IPC_GET_ARG1(*req);
-	int64_t size = MERGE_LOUP32(IPC_GET_ARG2(*req), IPC_GET_ARG3(*req));
+	int fd = ipc_get_arg1(req);
+	int64_t size = MERGE_LOUP32(ipc_get_arg2(req), ipc_get_arg3(req));
 	errno_t rc = vfs_op_resize(fd, size);
 	async_answer_0(req, rc);
@@ -238,5 +238,5 @@
 static void vfs_in_stat(ipc_call_t *req)
 {
-	int fd = IPC_GET_ARG1(*req);
+	int fd = ipc_get_arg1(req);
 	errno_t rc = vfs_op_stat(fd);
 	async_answer_0(req, rc);
@@ -245,5 +245,5 @@
 static void vfs_in_statfs(ipc_call_t *req)
 {
-	int fd = (int) IPC_GET_ARG1(*req);
+	int fd = (int) ipc_get_arg1(req);
 
 	errno_t rc = vfs_op_statfs(fd);
@@ -253,5 +253,5 @@
 static void vfs_in_sync(ipc_call_t *req)
 {
-	int fd = IPC_GET_ARG1(*req);
+	int fd = ipc_get_arg1(req);
 	errno_t rc = vfs_op_sync(fd);
 	async_answer_0(req, rc);
@@ -260,6 +260,6 @@
 static void vfs_in_unlink(ipc_call_t *req)
 {
-	int parentfd = IPC_GET_ARG1(*req);
-	int expectfd = IPC_GET_ARG2(*req);
+	int parentfd = ipc_get_arg1(req);
+	int expectfd = ipc_get_arg2(req);
 
 	char *path;
@@ -273,5 +273,5 @@
 static void vfs_in_unmount(ipc_call_t *req)
 {
-	int mpfd = IPC_GET_ARG1(*req);
+	int mpfd = ipc_get_arg1(req);
 	errno_t rc = vfs_op_unmount(mpfd);
 	async_answer_0(req, rc);
@@ -280,5 +280,5 @@
 static void vfs_in_wait_handle(ipc_call_t *req)
 {
-	bool high_fd = IPC_GET_ARG1(*req);
+	bool high_fd = ipc_get_arg1(req);
 	int fd = -1;
 	errno_t rc = vfs_op_wait_handle(high_fd, &fd);
@@ -292,6 +292,6 @@
 	 * For defined flags, see <ipc/vfs.h>.
 	 */
-	int parentfd = IPC_GET_ARG1(*req);
-	int flags = IPC_GET_ARG2(*req);
+	int parentfd = ipc_get_arg1(req);
+	int flags = ipc_get_arg2(req);
 
 	int fd = 0;
@@ -307,7 +307,7 @@
 static void vfs_in_write(ipc_call_t *req)
 {
-	int fd = IPC_GET_ARG1(*req);
-	aoff64_t pos = MERGE_LOUP32(IPC_GET_ARG2(*req),
-	    IPC_GET_ARG3(*req));
+	int fd = ipc_get_arg1(req);
+	aoff64_t pos = MERGE_LOUP32(ipc_get_arg2(req),
+	    ipc_get_arg3(req));
 
 	size_t bytes = 0;
@@ -330,10 +330,10 @@
 		async_get_call(&call);
 
-		if (!IPC_GET_IMETHOD(call)) {
+		if (!ipc_get_imethod(&call)) {
 			async_answer_0(&call, EOK);
 			break;
 		}
 
-		switch (IPC_GET_IMETHOD(call)) {
+		switch (ipc_get_imethod(&call)) {
 		case VFS_IN_CLONE:
 			vfs_in_clone(&call);
Index: uspace/srv/vfs/vfs_lookup.c
===================================================================
--- uspace/srv/vfs/vfs_lookup.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/vfs/vfs_lookup.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -226,12 +226,12 @@
 
 	unsigned last = *pfirst + *plen;
-	*pfirst = IPC_GET_ARG3(answer) & 0xffff;
+	*pfirst = ipc_get_arg3(&answer) & 0xffff;
 	*plen = last - *pfirst;
 
-	result->triplet.fs_handle = (fs_handle_t) IPC_GET_ARG1(answer);
+	result->triplet.fs_handle = (fs_handle_t) ipc_get_arg1(&answer);
 	result->triplet.service_id = base->service_id;
-	result->triplet.index = (fs_index_t) IPC_GET_ARG2(answer);
-	result->size = MERGE_LOUP32(IPC_GET_ARG4(answer), IPC_GET_ARG5(answer));
-	result->type = (IPC_GET_ARG3(answer) >> 16) ?
+	result->triplet.index = (fs_index_t) ipc_get_arg2(&answer);
+	result->size = MERGE_LOUP32(ipc_get_arg4(&answer), ipc_get_arg5(&answer));
+	result->type = (ipc_get_arg3(&answer) >> 16) ?
 	    VFS_NODE_DIRECTORY : VFS_NODE_FILE;
 	return EOK;
Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/vfs/vfs_ops.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -168,7 +168,7 @@
 	res.triplet.fs_handle = fs_handle;
 	res.triplet.service_id = service_id;
-	res.triplet.index = (fs_index_t) IPC_GET_ARG1(answer);
-	res.size = (int64_t) MERGE_LOUP32(IPC_GET_ARG2(answer),
-	    IPC_GET_ARG3(answer));
+	res.triplet.index = (fs_index_t) ipc_get_arg1(&answer);
+	res.size = (int64_t) MERGE_LOUP32(ipc_get_arg2(&answer),
+	    ipc_get_arg3(&answer));
 	res.type = VFS_NODE_DIRECTORY;
 
@@ -374,5 +374,5 @@
 	}
 
-	*bytes = IPC_GET_ARG1(*answer);
+	*bytes = ipc_get_arg1(answer);
 	return rc;
 }
@@ -401,5 +401,5 @@
 	async_wait_for(msg, &rc);
 
-	chunk->size = IPC_GET_ARG1(*answer);
+	chunk->size = ipc_get_arg1(answer);
 
 	return (errno_t) rc;
@@ -488,6 +488,6 @@
 		/* Update the cached version of node's size. */
 		if (rc == EOK) {
-			file->node->size = MERGE_LOUP32(IPC_GET_ARG2(answer),
-			    IPC_GET_ARG3(answer));
+			file->node->size = MERGE_LOUP32(ipc_get_arg2(&answer),
+			    ipc_get_arg3(&answer));
 		}
 		fibril_rwlock_write_unlock(&file->node->contents_rwlock);
Index: uspace/srv/vfs/vfs_pager.c
===================================================================
--- uspace/srv/vfs/vfs_pager.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/vfs/vfs_pager.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -44,7 +44,7 @@
 void vfs_page_in(ipc_call_t *req)
 {
-	aoff64_t offset = IPC_GET_ARG1(*req);
-	size_t page_size = IPC_GET_ARG2(*req);
-	int fd = IPC_GET_ARG3(*req);
+	aoff64_t offset = ipc_get_arg1(req);
+	size_t page_size = ipc_get_arg2(req);
+	int fd = ipc_get_arg3(req);
 	void *page;
 	errno_t rc;
Index: uspace/srv/volsrv/volsrv.c
===================================================================
--- uspace/srv/volsrv/volsrv.c	(revision bc417660cbc159aeca9329f4da387c9038dc80bc)
+++ uspace/srv/volsrv/volsrv.c	(revision ab87db55cb5f202637cfdb407053e0d954a16e7d)
@@ -138,5 +138,5 @@
 	errno_t rc;
 
-	sid = IPC_GET_ARG1(*icall);
+	sid = ipc_get_arg1(icall);
 
 	rc = vol_part_add_part(parts, sid);
@@ -156,5 +156,5 @@
 	errno_t rc;
 
-	sid = IPC_GET_ARG1(*icall);
+	sid = ipc_get_arg1(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_info_srv(%zu)",
 	    sid);
@@ -204,5 +204,5 @@
 	errno_t rc;
 
-	sid = IPC_GET_ARG1(*icall);
+	sid = ipc_get_arg1(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_eject_srv(%zu)", sid);
 
@@ -230,5 +230,5 @@
 	errno_t rc;
 
-	sid = IPC_GET_ARG1(*icall);
+	sid = ipc_get_arg1(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_insert_srv(%zu)", sid);
 
@@ -294,5 +294,5 @@
 	errno_t rc;
 
-	sid = IPC_GET_ARG1(*icall);
+	sid = ipc_get_arg1(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_empty_srv(%zu)", sid);
 
@@ -320,5 +320,5 @@
 	errno_t rc;
 
-	fstype = IPC_GET_ARG1(*icall);
+	fstype = ipc_get_arg1(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_get_lsupp_srv(%u)",
 	    fstype);
@@ -362,6 +362,6 @@
 	log_msg(LOG_DEFAULT, LVL_NOTE, "vol_part_mkfs_srv()");
 
-	sid = IPC_GET_ARG1(*icall);
-	fstype = IPC_GET_ARG2(*icall);
+	sid = ipc_get_arg1(icall);
+	fstype = ipc_get_arg2(icall);
 
 	rc = async_data_write_accept((void **)&label, true, 0, VOL_LABEL_MAXLEN,
@@ -424,5 +424,5 @@
 	log_msg(LOG_DEFAULT, LVL_NOTE, "vol_part_set_mountp_srv()");
 
-	sid = IPC_GET_ARG1(*icall);
+	sid = ipc_get_arg1(icall);
 
 	rc = async_data_write_accept((void **)&mountp, true, 0,
@@ -499,5 +499,5 @@
 	errno_t rc;
 
-	vid.id = IPC_GET_ARG1(*icall);
+	vid.id = ipc_get_arg1(icall);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_info_srv(%zu)", vid.id);
 
@@ -556,5 +556,5 @@
 		ipc_call_t call;
 		async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
+		sysarg_t method = ipc_get_imethod(&call);
 
 		if (!method) {
