From patchwork Sun Nov 27 22:15:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Zapolskiy X-Patchwork-Id: 699783 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3tRkkf6dt2z9t2g for ; Mon, 28 Nov 2016 09:19:38 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id DB188B3901; Sun, 27 Nov 2016 23:17:40 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZrRNCtWw2ncj; Sun, 27 Nov 2016 23:17:40 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5D237B384A; Sun, 27 Nov 2016 23:17:26 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8F2E4A75F1 for ; Sun, 27 Nov 2016 23:15:57 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tuLrznAfYDgk for ; Sun, 27 Nov 2016 23:15:57 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail.mleia.com (mleia.com [178.79.152.223]) by theia.denx.de (Postfix) with ESMTPS id 17CF9A75D7 for ; Sun, 27 Nov 2016 23:15:54 +0100 (CET) Received: from mail.mleia.com (localhost [127.0.0.1]) by mail.mleia.com (Postfix) with ESMTP id B110B381464; Sun, 27 Nov 2016 22:15:54 +0000 (GMT) From: Vladimir Zapolskiy To: u-boot@lists.denx.de, Tom Rini Date: Mon, 28 Nov 2016 00:15:34 +0200 Message-Id: <20161127221536.9577-23-vz@mleia.com> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20161127221536.9577-1-vz@mleia.com> References: <20161127221536.9577-1-vz@mleia.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-49551924 X-CRM114-CacheID: sfid-20161127_221554_752465_8F4E79E9 X-CRM114-Status: GOOD ( 14.13 ) Subject: [U-Boot] [RESEND][PATCH 22/24] sh: share the correct version of start.S among all cpus X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" 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 Reviewed-by: Simon Glass --- 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 - * Copyright (C) 2008 Renesas Solutions Corp. - - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include -#include - - .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 - * - * (C) Copyright 2007 - * Nobuhiro Iwamatsu - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include -#include - - .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