All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Zapolskiy <vz@mleia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RESEND][PATCH 22/24] sh: share the correct version of start.S among all cpus
Date: Mon, 28 Nov 2016 00:15:34 +0200	[thread overview]
Message-ID: <20161127221536.9577-23-vz@mleia.com> (raw)
In-Reply-To: <20161127221536.9577-1-vz@mleia.com>

It is easy to note that SH2/SH3/SH4 start.S code is practically
the same with a minor difference for SH2 where a short data header is
present. To avoid unwanted code duplication and to automatically
convert SH2 and SH3 platforms to generic board support move fixed SH4
start.S into arch/sh/lib/start.S and share it among all platforms.

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
 arch/sh/Makefile                 |  2 +-
 arch/sh/cpu/sh2/Makefile         |  1 -
 arch/sh/cpu/sh2/start.S          | 66 ----------------------------------------
 arch/sh/cpu/sh3/Makefile         |  1 -
 arch/sh/cpu/sh3/start.S          | 65 ---------------------------------------
 arch/sh/cpu/sh4/Makefile         |  1 -
 arch/sh/lib/Makefile             |  2 ++
 arch/sh/{cpu/sh4 => lib}/start.S |  6 ++++
 8 files changed, 9 insertions(+), 135 deletions(-)
 delete mode 100644 arch/sh/cpu/sh2/start.S
 delete mode 100644 arch/sh/cpu/sh3/start.S
 rename arch/sh/{cpu/sh4 => lib}/start.S (87%)

diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index ca55fac..14e0b66 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -2,7 +2,7 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
-head-y := arch/sh/cpu/$(CPU)/start.o
+head-y := arch/sh/lib/start.o
 
 libs-y += arch/sh/cpu/$(CPU)/
 libs-y += arch/sh/lib/
diff --git a/arch/sh/cpu/sh2/Makefile b/arch/sh/cpu/sh2/Makefile
index a19ed5e..80fff49 100644
--- a/arch/sh/cpu/sh2/Makefile
+++ b/arch/sh/cpu/sh2/Makefile
@@ -8,5 +8,4 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
-extra-y	= start.o
 obj-y	= cpu.o interrupts.o watchdog.o
diff --git a/arch/sh/cpu/sh2/start.S b/arch/sh/cpu/sh2/start.S
deleted file mode 100644
index 6171edc..0000000
--- a/arch/sh/cpu/sh2/start.S
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
- * Copyright (C) 2008 Renesas Solutions Corp.
-
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <config.h>
-
-	.text
-	.align	2
-
-	.global	_start
-_sh_start:
-	.long 0x00000010	/* Ppower ON reset PC*/
-	.long 0x00000000
-	.long 0x00000010	/* Manual reset PC */
-	.long 0x00000000
-_init:
-	mov.l	._lowlevel_init, r0
-100:	bsrf	r0
-	nop
-	bsr	1f
-	nop
-1:	sts	pr, r5
-	mov.l	._reloc_dst, r4
-	add	#(_sh_start-1b), r5
-	mov.l	._reloc_dst_end, r6
-
-2:	mov.l	@r5+, r1
-	mov.l	r1, @r4
-	add	#4, r4
-	cmp/hs	r6, r4
-	bf	2b
-
-	mov.l	._bss_start, r4
-	mov.l	._bss_end, r5
-	mov	#0, r1
-
-3:	mov.l	r1, @r4			/* bss clear */
-	add	#4, r4
-	cmp/hs	r5, r4
-	bf	3b
-
-	mov.l	._gd_init, r13		/* global data */
-	mov.l	._stack_init, r15	/* stack */
-
-	#TODO(sh maintainer): Fix this up to call the correct code
-	#mov.l	._sh_generic_init, r0
-	#jsr	@r0
-	nop
-
-loop:
-	bra	loop
-
-	.align	2
-
-._lowlevel_init:	.long	(lowlevel_init - (100b + 4))
-._reloc_dst:		.long	reloc_dst
-._reloc_dst_end:	.long	reloc_dst_end
-._bss_start:		.long	bss_start
-._bss_end:		.long	bss_end
-._gd_init:		.long	(_sh_start - GENERATED_GBL_DATA_SIZE)
-._stack_init:	.long	(_sh_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16)
-#._sh_generic_init:	.long	sh_generic_init
diff --git a/arch/sh/cpu/sh3/Makefile b/arch/sh/cpu/sh3/Makefile
index 85917b9..cddc15b 100644
--- a/arch/sh/cpu/sh3/Makefile
+++ b/arch/sh/cpu/sh3/Makefile
@@ -11,5 +11,4 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
-extra-y	= start.o
 obj-y	= cpu.o interrupts.o watchdog.o
diff --git a/arch/sh/cpu/sh3/start.S b/arch/sh/cpu/sh3/start.S
deleted file mode 100644
index 9ed7198..0000000
--- a/arch/sh/cpu/sh3/start.S
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * (C) Copyright 2007
- * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
- *
- * (C) Copyright 2007
- * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <config.h>
-
-	.text
-	.align	2
-
-	.global	_start
-_sh_start:
-	mov.l	._lowlevel_init, r0
-100:	bsrf	r0
-	nop
-
-	bsr	1f
-	nop
-1:	sts	pr, r5
-	mov.l	._reloc_dst, r4
-	add	#(_sh_start-1b), r5
-	mov.l	._reloc_dst_end, r6
-
-2:	mov.l	@r5+, r1
-	mov.l	r1, @r4
-	add	#4, r4
-	cmp/hs	r6, r4
-	bf	2b
-
-	mov.l	._bss_start, r4
-	mov.l	._bss_end, r5
-	mov	#0, r1
-
-3:	mov.l	r1, @r4			/* bss clear */
-	add	#4, r4
-	cmp/hs	r5, r4
-	bf	3b
-
-	mov.l	._gd_init, r13		/* global data */
-	mov.l	._stack_init, r15	/* stack */
-
-	#TODO(sh maintainer): Fix this up to call the correct code
-	#mov.l	._sh_generic_init, r0
-	#jsr	@r0
-	nop
-
-loop:
-	bra	loop
-
-	.align	2
-
-._lowlevel_init:	.long	(lowlevel_init - (100b + 4))
-._reloc_dst:		.long	reloc_dst
-._reloc_dst_end:	.long	reloc_dst_end
-._bss_start:		.long	bss_start
-._bss_end:		.long	bss_end
-._gd_init:		.long	(_sh_start - GENERATED_GBL_DATA_SIZE)
-._stack_init:	.long	(_sh_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16)
-#._sh_generic_init:	.long	sh_generic_init
diff --git a/arch/sh/cpu/sh4/Makefile b/arch/sh/cpu/sh4/Makefile
index 38c6188..976994b 100644
--- a/arch/sh/cpu/sh4/Makefile
+++ b/arch/sh/cpu/sh4/Makefile
@@ -8,5 +8,4 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
-extra-y	= start.o
 obj-y	= cpu.o interrupts.o watchdog.o cache.o
diff --git a/arch/sh/lib/Makefile b/arch/sh/lib/Makefile
index 7be20b1..473cf0d 100644
--- a/arch/sh/lib/Makefile
+++ b/arch/sh/lib/Makefile
@@ -5,6 +5,8 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
+extra-y	+= start.o
+
 obj-y	+= board.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 ifeq ($(CONFIG_CPU_SH2),y)
diff --git a/arch/sh/cpu/sh4/start.S b/arch/sh/lib/start.S
similarity index 87%
rename from arch/sh/cpu/sh4/start.S
rename to arch/sh/lib/start.S
index 416adcf..37d38d5 100644
--- a/arch/sh/cpu/sh4/start.S
+++ b/arch/sh/lib/start.S
@@ -13,6 +13,12 @@
 
 	.global	_start
 _start:
+#ifdef CONFIG_CPU_SH2
+	.long 0x00000010        /* Ppower ON reset PC*/
+	.long 0x00000000
+	.long 0x00000010        /* Manual reset PC */
+	.long 0x00000000
+#endif
 	mov.l	._lowlevel_init, r0
 100:	bsrf	r0
 	nop
-- 
2.10.2

  parent reply	other threads:[~2016-11-27 22:15 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-27 22:15 [U-Boot] [RESEND][PATCH 00/24] sh: add generic board support and fixes Vladimir Zapolskiy
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 01/24] sh4: cache: correct dcache flush to invalidate with write-back Vladimir Zapolskiy
2016-12-03 23:48   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 02/24] sh4: cache: correct flush_cache() to writeback and invalidate Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-03 23:48   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 03/24] sh3: remove unused cache.c file from being built Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-03 23:49   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 04/24] sh: cache use jump_to_P2() and back_to_P1() from asm/system.h Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-03 23:52   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 05/24] sh: cache: don't modify CCR from P1 area Vladimir Zapolskiy
2016-12-03 23:52   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 06/24] sh4: cache: move exported cache manipulation functions into cache.c Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-03 23:53   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 07/24] pci: sh7751: fix up PCI I/O space address Vladimir Zapolskiy
2016-12-03 23:53   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 08/24] pci: sh7751: map PCI memory space into SDRAM Vladimir Zapolskiy
2016-12-03 23:56   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 09/24] sh4: remove __io config options from r2dplus and r7780mp boards Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:35   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 10/24] r2dplus: use P1 area space for text base and PCI system memory Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:36   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 11/24] r2dplus: select rtl8139 driver in defconfig Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:36   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 12/24] common: sh: add necessary define bits to board_f Vladimir Zapolskiy
2016-12-04  0:37   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 13/24] sh4: use single u-boot linker script for all boards Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:37   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 14/24] sh: place board lowlevel_init code in the beginning of .text Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:38   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 15/24] sh: define entry point and reloc_dst inside a linker script Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:39   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 16/24] sh: add MEMORY command to a shared " Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:39   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 17/24] sh: remove undefined DEBUG preprocessor token from board config files Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:40   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 18/24] sh: define CONFIG_DISPLAY_BOARDINFO to print board information Vladimir Zapolskiy
2016-11-30  0:33   ` Simon Glass
2016-12-04  0:41   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 19/24] sh: add common dram_init() function for all boards Vladimir Zapolskiy
2016-11-30  0:34   ` Simon Glass
2016-12-04  0:41   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 20/24] sh: add shared relocate_code() function and call board_init_r() Vladimir Zapolskiy
2016-11-30  0:34   ` Simon Glass
2016-12-04  0:42   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 21/24] sh4: fix start.S by calling board_init_f() after first code relocation Vladimir Zapolskiy
2016-11-30  0:34   ` Simon Glass
2016-12-04  0:42   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` Vladimir Zapolskiy [this message]
2016-11-30  0:34   ` [U-Boot] [RESEND][PATCH 22/24] sh: share the correct version of start.S among all cpus Simon Glass
2016-12-04  0:43   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 23/24] sh: generate position independent code for all platforms Vladimir Zapolskiy
2016-12-04  0:43   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2016-11-27 22:15 ` [U-Boot] [RESEND][PATCH 24/24] r2dplus: fixup CONFIG_SYS_TEXT_BASE to account arch/sh changes Vladimir Zapolskiy
2016-12-04  0:44   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
     [not found] ` <20161128154357.GD2546@bill-the-cat>
2016-11-29  0:58   ` [U-Boot] [RESEND][PATCH 00/24] sh: add generic board support and fixes Vladimir Zapolskiy
2016-11-29  1:22     ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161127221536.9577-23-vz@mleia.com \
    --to=vz@mleia.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.