ARM: 6515/1: Add zboot support for SuperH Mobile ARM
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 1 Dec 2010 06:45:00 +0000 (07:45 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 5 Dec 2010 08:40:17 +0000 (08:40 +0000)
When CONFIG_ZBOOT_ROM is selected, the resulting zImage file will be small
boot loader and may be burned to rom or flash.

This is the non-board-specific framework portion of this patch-set.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/boot/compressed/Makefile
arch/arm/boot/compressed/head-shmobile.S [new file with mode: 0644]
arch/arm/mach-shmobile/include/mach/zboot.h [new file with mode: 0644]

index 65a7c1c588a94ab4623be0ddfe02a691fb2954c6..0a8f748e506adfc415b857bc94dec36e25498999 100644 (file)
@@ -45,6 +45,10 @@ else
 endif
 endif
 
+ifeq ($(CONFIG_ARCH_SHMOBILE),y)
+OBJS           += head-shmobile.o
+endif
+
 #
 # We now have a PIC decompressor implementation.  Decompressors running
 # from RAM should not define ZTEXTADDR.  Decompressors running directly
diff --git a/arch/arm/boot/compressed/head-shmobile.S b/arch/arm/boot/compressed/head-shmobile.S
new file mode 100644 (file)
index 0000000..30973b7
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * The head-file for SH-Mobile ARM platforms
+ *
+ * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+ * Simon Horman <horms@verge.net.au>
+ *
+ * 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; version 2 of the License.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifdef CONFIG_ZBOOT_ROM
+
+       .section        ".start", "ax"
+
+       /* load board-specific initialization code */
+#include <mach/zboot.h>
+
+       b       1f
+__atags:@ tag #1
+       .long   12                      @ tag->hdr.size = tag_size(tag_core);
+       .long   0x54410001              @ tag->hdr.tag = ATAG_CORE;
+       .long   0                       @ tag->u.core.flags = 0;
+       .long   0                       @ tag->u.core.pagesize = 0;
+       .long   0                       @ tag->u.core.rootdev = 0;
+       @ tag #2
+       .long   8                       @ tag->hdr.size = tag_size(tag_mem32);
+       .long   0x54410002              @ tag->hdr.tag = ATAG_MEM;
+       .long   CONFIG_MEMORY_SIZE      @ tag->u.mem.size = CONFIG_MEMORY_SIZE;
+       .long   CONFIG_MEMORY_START     @ @ tag->u.mem.start = CONFIG_MEMORY_START;
+       @ tag #3
+       .long   0                       @ tag->hdr.size = 0
+       .long   0                       @ tag->hdr.tag = ATAG_NONE;
+1:
+
+       /* Set board ID necessary for boot */
+       ldr     r7, 1f                          @ Set machine type register
+       adr     r8, __atags                     @ Set atag register
+       b       2f
+
+1 :    .long MACH_TYPE
+2 :
+
+#endif /* CONFIG_ZBOOT_ROM */
diff --git a/arch/arm/mach-shmobile/include/mach/zboot.h b/arch/arm/mach-shmobile/include/mach/zboot.h
new file mode 100644 (file)
index 0000000..e0c218f
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef ZBOOT_H
+#define ZBOOT_H
+
+/**************************************************
+ *
+ *             board specific settings
+ *
+ **************************************************/
+
+#error "unsupported board."
+
+#endif /* ZBOOT_H */