s3c64xx: move the reset_cpu function
authorMinkyu Kang <mk7.kang@samsung.com>
Thu, 25 Jun 2009 10:21:33 +0000 (19:21 +0900)
committerJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Thu, 25 Jun 2009 22:02:35 +0000 (00:02 +0200)
Because of the reset_cpu is soc specific, should be move to soc
And read reset value from SYS_ID register instead of hard code
this patch also supports s3c6410

Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
cpu/arm1176/cpu.c
cpu/arm1176/s3c64xx/Makefile
cpu/arm1176/s3c64xx/reset.S [new file with mode: 0644]

index c59a77b9d823dda15bbcbdb1125b10b815be220a..d1a3327483f1af14ea8baec6beeb2587da7cb9b3 100644 (file)
@@ -58,22 +58,6 @@ int cleanup_before_linux (void)
        return 0;
 }
 
-
-/* * reset the cpu by setting up the watchdog timer and let him time out */
-void reset_cpu (ulong ignored)
-{
-       printf("reset... \n\n\n");
-       SW_RST_REG = 0x6400;
-       /* loop forever and wait for reset to happen */
-       while (1) {
-               if (serial_tstc()) {
-                       serial_getc();
-                       break;
-               }
-       }
-       /*NOTREACHED*/
-}
-
 /* flush I/D-cache */
 static void cache_flush (void)
 {
index 4656d9a87763df8665deb2f43fe03c8c6c0f232d..b52793913773187927ad4f668354a90348ff7d36 100644 (file)
@@ -28,6 +28,8 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(SOC).a
 
+SOBJS  = reset.o
+
 COBJS-$(CONFIG_S3C6400)        += cpu_init.o speed.o
 COBJS-y        += timer.o
 
diff --git a/cpu/arm1176/s3c64xx/reset.S b/cpu/arm1176/s3c64xx/reset.S
new file mode 100644 (file)
index 0000000..315b13f
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2009 Samsung Electronics.
+ * Minkyu Kang <mk7.kang@samsung.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 <s3c6400.h>
+
+.globl reset_cpu
+reset_cpu:
+       ldr     r1, =ELFIN_CLOCK_POWER_BASE
+       ldr     r2, [r1, #SYS_ID_OFFSET]
+       ldr     r3, =0xffff
+       and     r2, r3, r2, lsr #12
+       str     r2, [r1, #SW_RST_OFFSET]
+_loop_forever:
+       b       _loop_forever