COBJS  += reset.o
 COBJS  += timer.o
 COBJS  += clock.o
+COBJS  += cpu.o
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
--- /dev/null
+/*
+ * [origin: arch/arm/cpu/arm926ejs/at91/cpu.c]
+ *
+ * (C) Copyright 2011
+ * Andreas Bießmann, andreas.devel@googlemail.com
+ * (C) Copyright 2010
+ * Reinhard Meyer, reinhard.meyer@emk-elektronik.de
+ * (C) Copyright 2009
+ * Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/clk.h>
+
+#ifndef CONFIG_SYS_AT91_MAIN_CLOCK
+#define CONFIG_SYS_AT91_MAIN_CLOCK 0
+#endif
+
+int arch_cpu_init(void)
+{
+       return at91_clock_init(CONFIG_SYS_AT91_MAIN_CLOCK);
+}
+
 
 #define __AT91RM9200_H__
 
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 */
+#define CONFIG_ARCH_CPU_INIT   /* we need arch_cpu_init() for hw timers */
 #define CONFIG_ARM920T         /* This is an ARM920T Core      */
 
 /* Periperial Identifiers */
 
  * CONFIG_SYS_HZ is the tick rate for timer tc0
  */
 #define AT91C_XTAL_CLOCK               18432000
+#define CONFIG_SYS_AT91_SLOW_CLOCK     32768
 #define AT91C_MAIN_CLOCK               ((AT91C_XTAL_CLOCK / 4) * 39)
 #define AT91C_MASTER_CLOCK             (AT91C_MAIN_CLOCK / 3 )
 #define CONFIG_SYS_HZ_CLOCK            (AT91C_MASTER_CLOCK / 2)
 #define CONFIG_CPUAT91
 #define USE_920T_MMU
 
+#include <asm/hardware.h>      /* needed for port definitions */
+
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
 
 #endif
 
 #define AT91C_XTAL_CLOCK               18432000
+#define CONFIG_SYS_AT91_SLOW_CLOCK     32768
 #define AT91C_MAIN_CLOCK               ((AT91C_XTAL_CLOCK / 4) * 39)
 #define AT91C_MASTER_CLOCK             (AT91C_MAIN_CLOCK / 3)
 #define CONFIG_SYS_HZ_CLOCK            (AT91C_MASTER_CLOCK / 2)
 #define CONFIG_ARM920T
 #define CONFIG_AT91RM9200
 #define CONFIG_CPUAT91
-#define CONFIG_AT91FAMILY
-
 #undef CONFIG_USE_IRQ
 #define USE_920T_MMU
 
+#include <asm/hardware.h>      /* needed for port definitions */
+
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
 
 #define CONFIG_VERSION_VARIABLE
 #define CONFIG_IDENT_STRING    " on EB+CPUx9K2"
 
-#include <asm/arch/hardware.h> /* needed for port definitions */
+#include <asm/hardware.h>      /* needed for port definitions */
 
 #define CONFIG_MISC_INIT_R
 
 #define CONFIG_SYS_HZ          1000
 #define CONFIG_SYS_HZ_CLOCK    (AT91C_MASTER_CLOCK / 2)
 
-#define AT91_SLOW_CLOCK                        32768           /* slow clock */
+#define CONFIG_SYS_AT91_SLOW_CLOCK     32768           /* slow clock */
 
 #define CONFIG_CMDLINE_TAG             1
 #define CONFIG_SETUP_MEMORY_TAGS       1