Index: kernel/generic/include/ddi/irq.h
===================================================================
--- kernel/generic/include/ddi/irq.h	(revision 1ad52de859511fc81369b256f69da214fd4386c5)
+++ kernel/generic/include/ddi/irq.h	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -54,4 +54,5 @@
 	/** Read 4 bytes from the I/O space. */
 	CMD_PIO_READ_32,
+	
 	/** Write 1 byte to the I/O space. */
 	CMD_PIO_WRITE_8,
@@ -62,12 +63,29 @@
 	
 	/**
-	 * Perform a bit test on the source argument and store the result into
-	 * the destination argument.
+	 * Write 1 byte from the source argument
+	 * to the I/O space.
+	 */
+	CMD_PIO_WRITE_A_8,
+	/**
+	 * Write 2 bytes from the source argument
+	 * to the I/O space.
+	 */
+	CMD_PIO_WRITE_A_16,
+	/**
+	 * Write 4 bytes from the source argument
+	 * to the I/O space.
+	 */
+	CMD_PIO_WRITE_A_32,
+	
+	/**
+	 * Perform a bit masking on the source argument
+	 * and store the result into the destination argument.
 	 */
 	CMD_BTEST,
 	
 	/**
-	 * Predicate the execution of the following N commands by the boolean
-	 * value of the source argument.
+	 * Predicate the execution of the following
+	 * N commands by the boolean value of the source
+	 * argument.
 	 */
 	CMD_PREDICATE,
@@ -75,4 +93,5 @@
 	/** Accept the interrupt. */
 	CMD_ACCEPT,
+	
 	/** Decline the interrupt. */
 	CMD_DECLINE,
Index: kernel/generic/src/ipc/irq.c
===================================================================
--- kernel/generic/src/ipc/irq.c	(revision 1ad52de859511fc81369b256f69da214fd4386c5)
+++ kernel/generic/src/ipc/irq.c	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -404,4 +404,22 @@
 			    (uint32_t) code->cmds[i].value);
 			break;
+		case CMD_PIO_WRITE_A_8:
+			if (srcarg) {
+				pio_write_8((ioport8_t *) code->cmds[i].addr,
+				    (uint8_t) scratch[srcarg]);
+			}
+			break;
+		case CMD_PIO_WRITE_A_16:
+			if (srcarg) {
+				pio_write_16((ioport16_t *) code->cmds[i].addr,
+				    (uint16_t) scratch[srcarg]);
+			}
+			break;
+		case CMD_PIO_WRITE_A_32:
+			if (srcarg) {
+				pio_write_32((ioport32_t *) code->cmds[i].addr,
+				    (uint32_t) scratch[srcarg]);
+			}
+			break;
 		case CMD_BTEST:
 			if ((srcarg) && (dstarg)) {
