Index: kernel/arch/mips32/src/mach/msim/msim.c
===================================================================
--- kernel/arch/mips32/src/mach/msim/msim.c	(revision f27e21ddaafbb7195a9fa323a76c7813b7d6b41b)
+++ kernel/arch/mips32/src/mach/msim/msim.c	(revision d6dc9a121d673c915860fb0070e7ac23defa2d45)
@@ -81,5 +81,6 @@
 {
 #ifdef CONFIG_MSIM_PRN
-	outdev_t *dsrlndev = dsrlnout_init((ioport8_t *) MSIM_KBD_ADDRESS);
+	outdev_t *dsrlndev = dsrlnout_init((ioport8_t *) MSIM_KBD_ADDRESS,
+	    KSEG12PA(MSIM_KBD_ADDRESS));
 	if (dsrlndev)
 		stdout_wire(dsrlndev);
Index: kernel/genarch/include/genarch/drivers/dsrln/dsrlnout.h
===================================================================
--- kernel/genarch/include/genarch/drivers/dsrln/dsrlnout.h	(revision f27e21ddaafbb7195a9fa323a76c7813b7d6b41b)
+++ kernel/genarch/include/genarch/drivers/dsrln/dsrlnout.h	(revision d6dc9a121d673c915860fb0070e7ac23defa2d45)
@@ -39,7 +39,8 @@
 
 #include <typedefs.h>
+#include <stdint.h>
 #include <console/chardev.h>
 
-extern outdev_t *dsrlnout_init(ioport8_t *);
+extern outdev_t *dsrlnout_init(ioport8_t *, uintptr_t);
 
 #endif
Index: kernel/genarch/src/drivers/dsrln/dsrlnout.c
===================================================================
--- kernel/genarch/src/drivers/dsrln/dsrlnout.c	(revision f27e21ddaafbb7195a9fa323a76c7813b7d6b41b)
+++ kernel/genarch/src/drivers/dsrln/dsrlnout.c	(revision d6dc9a121d673c915860fb0070e7ac23defa2d45)
@@ -68,5 +68,5 @@
 };
 
-outdev_t *dsrlnout_init(ioport8_t *base)
+outdev_t *dsrlnout_init(ioport8_t *base, uintptr_t base_phys)
 {
 	outdev_t *dsrlndev = malloc(sizeof(outdev_t));
@@ -85,5 +85,5 @@
 	instance->base = base;
 	ddi_parea_init(&instance->parea);
-	instance->parea.pbase = KA2PA(base);
+	instance->parea.pbase = base_phys;
 	instance->parea.frames = 1;
 	instance->parea.unpriv = false;
