Index: kernel/arch/sparc64/src/drivers/kbd.c
===================================================================
--- kernel/arch/sparc64/src/drivers/kbd.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/drivers/kbd.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -44,5 +44,5 @@
 #include <align.h>
 #include <str.h>
-#include <print.h>
+#include <log.h>
 #include <sysinfo/sysinfo.h>
 
@@ -71,5 +71,6 @@
 	ofw_tree_property_t *prop = ofw_tree_getprop(node, "interrupts");
 	if ((!prop) || (!prop->value)) {
-		printf("ns16550: Unable to find interrupts property\n");
+		log(LF_ARCH, LVL_ERROR,
+		    "ns16550: Unable to find interrupts property");
 		return false;
 	}
@@ -82,5 +83,6 @@
 	prop = ofw_tree_getprop(node, "reg");
 	if ((!prop) || (!prop->value)) {
-		printf("ns16550: Unable to find reg property\n");
+		log(LF_ARCH, LVL_ERROR,
+		    "ns16550: Unable to find reg property");
 		return false;
 	}
@@ -91,5 +93,6 @@
 	if (!ofw_ebus_apply_ranges(node->parent,
 	    ((ofw_ebus_reg_t *) prop->value), &pa)) {
-		printf("ns16550: Failed to determine address\n");
+		log(LF_ARCH, LVL_ERROR,
+		    "ns16550: Failed to determine address");
 		return false;
 	}
@@ -101,5 +104,6 @@
 	    ((ofw_ebus_reg_t *) prop->value), interrupts, &inr, &cir,
 	    &cir_arg)) {
-		printf("ns16550: Failed to determine interrupt\n");
+		log(LF_ARCH, LVL_ERROR,
+		    "ns16550: Failed to determine interrupt");
 		return false;
 	}
@@ -117,5 +121,6 @@
 	    PAGE_WRITE | PAGE_NOT_CACHEABLE) + offset);
 	
-	ns16550_instance_t *ns16550_instance = ns16550_init(ns16550, inr, cir, cir_arg);
+	ns16550_instance_t *ns16550_instance = ns16550_init(ns16550, inr, cir,
+	    cir_arg, NULL);
 	if (ns16550_instance) {
 		kbrd_instance_t *kbrd_instance = kbrd_init();
Index: kernel/arch/sparc64/src/drivers/pci.c
===================================================================
--- kernel/arch/sparc64/src/drivers/pci.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/drivers/pci.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -43,5 +43,5 @@
 #include <typedefs.h>
 #include <debug.h>
-#include <print.h>
+#include <log.h>
 #include <str.h>
 #include <arch/asm.h>
@@ -213,5 +213,5 @@
 		 * Unsupported model.
 		 */
-		printf("Unsupported PCI controller model (%s).\n",
+		log(LF_ARCH, LVL_WARN, "Unsupported PCI controller model (%s).",
 		    (char *) prop->value);
 	}
Index: kernel/arch/sparc64/src/drivers/scr.c
===================================================================
--- kernel/arch/sparc64/src/drivers/scr.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/drivers/scr.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -81,5 +81,5 @@
 	
 	if (scr_type == SCR_UNKNOWN) {
-		printf("Unknown screen device.\n");
+		log(LF_ARCH, LVL_ERROR, "Unknown screen device.");
 		return;
 	}
@@ -117,5 +117,5 @@
 	case SCR_ATYFB:
 		if (prop->size / sizeof(ofw_pci_reg_t) < 2) {
-			printf("Too few screen registers.\n");
+			log(LF_ARCH, LVL_ERROR, "Too few screen registers.");
 			return;
 		}
@@ -124,5 +124,6 @@
 		
 		if (!ofw_pci_reg_absolutize(node, pci_reg, &pci_abs_reg)) {
-			printf("Failed to absolutize fb register.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to absolutize fb register.");
 			return;
 		}
@@ -130,5 +131,6 @@
 		if (!ofw_pci_apply_ranges(node->parent, &pci_abs_reg,
 		    &fb_addr)) {
-			printf("Failed to determine screen address.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to determine screen address.");
 			return;
 		}
@@ -152,5 +154,6 @@
 			break;
 		default:
-			printf("Unsupported bits per pixel.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Unsupported bits per pixel.");
 			return;
 		}
@@ -159,5 +162,6 @@
 	case SCR_XVR:
 		if (prop->size / sizeof(ofw_pci_reg_t) < 2) {
-			printf("Too few screen registers.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Too few screen registers.");
 			return;
 		}
@@ -166,5 +170,6 @@
 		
 		if (!ofw_pci_reg_absolutize(node, pci_reg, &pci_abs_reg)) {
-			printf("Failed to absolutize fb register.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to absolutize fb register.");
 			return;
 		}
@@ -172,5 +177,6 @@
 		if (!ofw_pci_apply_ranges(node->parent, &pci_abs_reg,
 		    &fb_addr)) {
-			printf("Failed to determine screen address.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to determine screen address.");
 			return;
 		}
@@ -196,5 +202,6 @@
 			break;
 		default:
-			printf("Unsupported bits per pixel.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Unsupported bits per pixel.");
 			return;
 		}
@@ -207,5 +214,6 @@
 		upa_reg = &((ofw_upa_reg_t *) prop->value)[FFB_REG_24BPP];
 		if (!ofw_upa_apply_ranges(node->parent, upa_reg, &fb_addr)) {
-			printf("Failed to determine screen address.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to determine screen address.");
 			return;
 		}
@@ -219,5 +227,5 @@
 			break;
 		default:
-			printf("Not implemented.\n");
+			log(LF_ARCH, LVL_WARN, "Not implemented.");
 			return;
 		}
@@ -225,5 +233,6 @@
 		sbus_reg = &((ofw_sbus_reg_t *) prop->value)[0];
 		if (!ofw_sbus_apply_ranges(node->parent, sbus_reg, &fb_addr)) {
-			printf("Failed to determine screen address.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to determine screen address.");
 			return;
 		}
@@ -233,5 +242,5 @@
 	case SCR_QEMU_VGA:
 		if (prop->size / sizeof(ofw_pci_reg_t) < 2) {
-			printf("Too few screen registers.\n");
+			log(LF_ARCH, LVL_ERROR, "Too few screen registers.");
 			return;
 		}
@@ -240,5 +249,6 @@
 
 		if (!ofw_pci_reg_absolutize(node, pci_reg, &pci_abs_reg)) {
-			printf("Failed to absolutize fb register.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to absolutize fb register.");
 			return;
 		}
@@ -246,5 +256,6 @@
 		if (!ofw_pci_apply_ranges(node->parent, &pci_abs_reg,
 		    &fb_addr)) {
-			printf("Failed to determine screen address.\n");
+			log(LF_ARCH, LVL_ERROR,
+			    "Failed to determine screen address.");
 			return;
 		}
@@ -268,5 +279,5 @@
 			break;
 		default:
-			printf("Unsupported bits per pixel.\n");
+			log(LF_ARCH, LVL_ERROR, "Unsupported bits per pixel.");
 			return;
 		}
Index: kernel/arch/sparc64/src/mm/sun4v/tlb.c
===================================================================
--- kernel/arch/sparc64/src/mm/sun4v/tlb.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/mm/sun4v/tlb.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -46,4 +46,5 @@
 #include <arch.h>
 #include <print.h>
+#include <log.h>
 #include <typedefs.h>
 #include <config.h>
@@ -335,5 +336,5 @@
 void tlb_print(void)
 {
-	printf("Operation not possible on Niagara.\n");
+	log(LF_ARCH, LVL_WARN, "Operation not possible on Niagara.");
 }
 
Index: kernel/arch/sparc64/src/smp/sun4u/smp.c
===================================================================
--- kernel/arch/sparc64/src/smp/sun4u/smp.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/smp/sun4u/smp.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -43,5 +43,5 @@
 #include <typedefs.h>
 #include <synch/waitq.h>
-#include <print.h>
+#include <log.h>
 #include <arch/cpu_node.h>
 
@@ -108,6 +108,6 @@
 	if (waitq_sleep_timeout(&ap_completion_wq, 1000000, SYNCH_FLAGS_NONE) ==
 	    ESYNCH_TIMEOUT)
-		printf("%s: waiting for processor (mid = %" PRIu32
-		    ") timed out\n", __func__, mid);
+		log(LF_ARCH, LVL_NOTE, "%s: waiting for processor (mid = %" PRIu32
+		    ") timed out", __func__, mid);
 }
 
Index: kernel/arch/sparc64/src/sun4v/md.c
===================================================================
--- kernel/arch/sparc64/src/sun4v/md.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/sun4v/md.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -36,5 +36,5 @@
 #include <panic.h>
 #include <func.h>
-#include <print.h>
+#include <log.h>
 #include <str.h>
 #include <arch/sun4v/md.h>
@@ -310,6 +310,6 @@
 	retval = retval;
 	if (retval != HV_EOK) {
-		printf("Could not retrieve machine description, "
-		    "error=%" PRIu64 ".\n", retval);
+		log(LF_ARCH, LVL_ERROR, "Could not retrieve machine "
+		    "description, error=%" PRIu64 ".", retval);
 	}
 }
Index: kernel/arch/sparc64/src/trap/sun4u/interrupt.c
===================================================================
--- kernel/arch/sparc64/src/trap/sun4u/interrupt.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/trap/sun4u/interrupt.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -42,5 +42,5 @@
 #include <arch/asm.h>
 #include <arch/barrier.h>
-#include <print.h>
+#include <log.h>
 #include <arch.h>
 #include <mm/tlb.h>
@@ -96,6 +96,7 @@
 		 */
 #ifdef CONFIG_DEBUG
-		printf("cpu%u: spurious interrupt (intrcv=%#" PRIx64
-		    ", data0=%#" PRIx64 ")\n", CPU->id, intrcv, data0);
+		log(LF_ARCH, LVL_DEBUG,
+		    "cpu%u: spurious interrupt (intrcv=%#" PRIx64 ", data0=%#"
+		    PRIx64 ")", CPU->id, intrcv, data0);
 #else
 		(void) intrcv;
Index: kernel/arch/sparc64/src/trap/sun4v/interrupt.c
===================================================================
--- kernel/arch/sparc64/src/trap/sun4v/interrupt.c	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/sparc64/src/trap/sun4v/interrupt.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
@@ -42,5 +42,5 @@
 #include <arch/asm.h>
 #include <arch/barrier.h>
-#include <print.h>
+#include <log.h>
 #include <arch.h>
 #include <mm/tlb.h>
@@ -111,6 +111,6 @@
 			((void (*)(void)) data1)();
 		} else {
-			printf("Spurious interrupt on %" PRIu64 ", data = %" PRIx64 ".\n",
-			    CPU->arch.id, data1);
+			log(LF_ARCH, LVL_DEBUG, "Spurious interrupt on %" PRIu64
+			    ", data = %" PRIx64 ".", CPU->arch.id, data1);
 		}
 	}
