Index: kernel/arch/arm32/src/mach/beaglebone/beaglebone.c
===================================================================
--- kernel/arch/arm32/src/mach/beaglebone/beaglebone.c	(revision 4c754f62d3b72f6ad32d4e299d025db3a4c3f3f8)
+++ kernel/arch/arm32/src/mach/beaglebone/beaglebone.c	(revision 0f6688609ee43d825f0201d425dd581e9b0b80a0)
@@ -117,4 +117,6 @@
 static void bbone_timer_irq_start(void)
 {
+	unsigned sysclk_freq;
+
 	/* Initialize the IRQ */
 	static irq_t timer_irq;
@@ -132,6 +134,11 @@
 	   CLK_SRC_M_OSC);
 	/* Initialize the DMTIMER2 */
-	am335x_timer_init(&bbone.timer, DMTIMER2, HZ,
-	    am335x_ctrl_module_clock_freq_get(bbone.ctrl_module));
+	if (am335x_ctrl_module_clock_freq_get(bbone.ctrl_module,
+	    &sysclk_freq) != EOK) {
+		printf("Cannot get the system clock frequency!\n");
+		return;
+	}
+
+	am335x_timer_init(&bbone.timer, DMTIMER2, HZ, sysclk_freq);
 	/* Enable the interrupt */
 	am335x_irc_enable(bbone.irc_addr, AM335x_DMTIMER2_IRQ);
Index: kernel/genarch/include/drivers/am335x/ctrl_module.h
===================================================================
--- kernel/genarch/include/drivers/am335x/ctrl_module.h	(revision 4c754f62d3b72f6ad32d4e299d025db3a4c3f3f8)
+++ kernel/genarch/include/drivers/am335x/ctrl_module.h	(revision 0f6688609ee43d825f0201d425dd581e9b0b80a0)
@@ -37,4 +37,5 @@
 #define _KERN_AM335X_CTRL_MODULE_H_
 
+#include <errno.h>
 #include <typedefs.h>
 #include "ctrl_module_regs.h"
@@ -45,21 +46,25 @@
 typedef ioport32_t am335x_ctrl_module_t;
 
-static unsigned am335x_ctrl_module_clock_freq_get(am335x_ctrl_module_t *base)
+static int
+am335x_ctrl_module_clock_freq_get(am335x_ctrl_module_t *base, unsigned *freq)
 {
 	unsigned const control_status = *AM335x_CTRL_MODULE_REG_ADDR(base,
-	    CONTROL_SYSCONFIG);
+	    CONTROL_STATUS);
 	unsigned const sysboot1 = (control_status >> 22) & 0x03;
 
 	switch (sysboot1) {
 	default:
+		return EOK;
 	case 0:
-		return 19200000; /* 19.2 Mhz */
+		*freq = 19200000; /* 19.2 Mhz */
 	case 1:
-		return 24000000; /* 24 Mhz */
+		*freq = 24000000; /* 24 Mhz */
 	case 2:
-		return 25000000; /* 25 Mhz */
+		*freq = 25000000; /* 25 Mhz */
 	case 3:
-		return 26000000; /* 26 Mhz */
+		*freq = 26000000; /* 26 Mhz */
 	}
+
+	return EINVAL;
 }
 
