Index: uspace/drv/intctl/obio/obio.c
===================================================================
--- uspace/drv/intctl/obio/obio.c	(revision aa537a5a4e471cb463f4e25b55458fc8974897a7)
+++ uspace/drv/intctl/obio/obio.c	(revision 1dab093efe3deac07d22acd53614608d2ea17f59)
@@ -94,5 +94,6 @@
 		case IRC_ENABLE_INTERRUPT:
 			inr = IPC_GET_ARG1(call);
-			((volatile uint64_t *)(obio->regs))[OBIO_IMR(inr & INO_MASK)] |= (1UL << 31);
+			pio_set_64(&obio->regs[OBIO_IMR(inr & INO_MASK)],
+			    1UL << 31, 0);
 			async_answer_0(callid, EOK);
 			break;
@@ -103,5 +104,5 @@
 		case IRC_CLEAR_INTERRUPT:
 			inr = IPC_GET_ARG1(call);
-			((volatile uint64_t *)(obio->regs))[OBIO_CIR(inr & INO_MASK)] = 0;
+			pio_write_64(&obio->regs[OBIO_CIR(inr & INO_MASK)], 0);
 			async_answer_0(callid, EOK);
 			break;
@@ -122,5 +123,5 @@
 
 	flags = AS_AREA_READ | AS_AREA_WRITE;
-	obio->regs = (volatile uint64_t *)AS_AREA_ANY;
+	obio->regs = (ioport64_t *)AS_AREA_ANY;
 	retval = physmem_map(res->base,
 	    ALIGN_UP(OBIO_SIZE, PAGE_SIZE) >> PAGE_WIDTH, flags,
Index: uspace/drv/intctl/obio/obio.h
===================================================================
--- uspace/drv/intctl/obio/obio.h	(revision aa537a5a4e471cb463f4e25b55458fc8974897a7)
+++ uspace/drv/intctl/obio/obio.h	(revision 1dab093efe3deac07d22acd53614608d2ea17f59)
@@ -47,5 +47,5 @@
 /** OBIO */
 typedef struct {
-	volatile uint64_t *regs;
+	ioport64_t *regs;
 	uintptr_t phys_base;
 	ddf_dev_t *dev;
