Index: kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c
===================================================================
--- kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c	(revision a829a5bc21c1b7b1e6c404dd58c16500a85fa42c)
+++ kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c	(revision 0fb70e1194ab78eeace89470a253718f0e2c58e5)
@@ -35,8 +35,8 @@
 #include <arch/exception.h>
 #include <arch/mach/beagleboardxm/beagleboardxm.h>
-#include <genarch/drivers/amdm37x_irc/amdm37x_irc.h>
-#include <genarch/drivers/amdm37x_uart/amdm37x_uart.h>
-#include <genarch/drivers/amdm37x_gpt/amdm37x_gpt.h>
-#include <genarch/drivers/amdm37x_dispc/amdm37x_dispc.h>
+#include <genarch/drivers/amdm37x/uart.h>
+#include <genarch/drivers/amdm37x/irc.h>
+#include <genarch/drivers/amdm37x/gpt.h>
+#include <genarch/drivers/amdm37x/dispc.h>
 #include <genarch/fb/fb.h>
 #include <genarch/srln/srln.h>
Index: kernel/arch/arm32/src/mach/beaglebone/beaglebone.c
===================================================================
--- kernel/arch/arm32/src/mach/beaglebone/beaglebone.c	(revision a829a5bc21c1b7b1e6c404dd58c16500a85fa42c)
+++ kernel/arch/arm32/src/mach/beaglebone/beaglebone.c	(revision 0fb70e1194ab78eeace89470a253718f0e2c58e5)
@@ -35,5 +35,7 @@
 #include <arch/exception.h>
 #include <arch/mach/beaglebone/beaglebone.h>
-#include <genarch/drivers/am335x_irc/am335x_irc.h>
+#include <genarch/drivers/am335x/irc.h>
+#include <genarch/drivers/am335x/uart.h>
+#include <genarch/srln/srln.h>
 #include <interrupt.h>
 #include <ddi/ddi.h>
@@ -54,17 +56,18 @@
 static struct beaglebone {
 	am335x_irc_regs_t *irc_addr;
+	am335x_uart_t uart;
 } bbone;
 
 struct arm_machine_ops bbone_machine_ops = {
-	bbone_init,
-	bbone_timer_irq_start,
-	bbone_cpu_halt,
-	bbone_get_memory_extents,
-	bbone_irq_exception,
-	bbone_frame_init,
-	bbone_output_init,
-	bbone_input_init,
-	bbone_get_irq_count,
-	bbone_get_platform_name
+	.machine_init = bbone_init,
+	.machine_timer_irq_start = bbone_timer_irq_start,
+	.machine_cpu_halt = bbone_cpu_halt,
+	.machine_get_memory_extents = bbone_get_memory_extents,
+	.machine_irq_exception = bbone_irq_exception,
+	.machine_frame_init = bbone_frame_init,
+	.machine_output_init = bbone_output_init,
+	.machine_input_init = bbone_input_init,
+	.machine_get_irq_count = bbone_get_irq_count,
+	.machine_get_platform_name = bbone_get_platform_name,
 };
 
@@ -105,13 +108,26 @@
 static void bbone_output_init(void)
 {
+	const bool ok = am335x_uart_init(&bbone.uart,
+	    AM335x_UART0_IRQ, AM335x_UART0_BASE_ADDRESS,
+	    AM335x_UART0_SIZE);
+
+	if (ok)
+		stdout_wire(&bbone.uart.outdev);
 }
 
 static void bbone_input_init(void)
 {
+	srln_instance_t *srln_instance = srln_init();
+	if (srln_instance) {
+		indev_t *sink = stdin_wire();
+		indev_t *srln = srln_wire(srln_instance, sink);
+		am335x_uart_input_wire(&bbone.uart, srln);
+		am335x_irc_enable(bbone.irc_addr, AM335x_UART0_IRQ);
+	}
 }
 
 size_t bbone_get_irq_count(void)
 {
-	return 0;
+	return AM335x_IRC_IRQ_COUNT;
 }
 
