From patchwork Fri Feb 20 07:57:19 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akshay Saraswat X-Patchwork-Id: 441869 X-Patchwork-Delegate: promsoft@gmail.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 D498D140146 for ; Fri, 20 Feb 2015 18:56:02 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8A0904B785; Fri, 20 Feb 2015 08:56:01 +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 bPpXpeTeOSAK; Fri, 20 Feb 2015 08:56:01 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 1FF284B779; Fri, 20 Feb 2015 08:56:01 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id AD6BD4B779 for ; Fri, 20 Feb 2015 08:55:59 +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 DASIgMWYCj62 for ; Fri, 20 Feb 2015 08:55:59 +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 mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by theia.denx.de (Postfix) with ESMTPS id 342B14B760 for ; Fri, 20 Feb 2015 08:55:59 +0100 (CET) Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NK200J2N8P91L80@mailout3.samsung.com> for u-boot@lists.denx.de; Fri, 20 Feb 2015 16:55:57 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.124]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id E8.94.18484.C88E6E45; Fri, 20 Feb 2015 16:55:56 +0900 (KST) X-AuditID: cbfee68f-f791c6d000004834-13-54e6e88ca5d6 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id EA.B3.09430.C88E6E45; Fri, 20 Feb 2015 16:55:56 +0900 (KST) Received: from chromebld-server.sisodomain.com ([107.108.73.106]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NK2005KO8JOSWD0@mmp1.samsung.com>; Fri, 20 Feb 2015 16:55:56 +0900 (KST) From: Akshay Saraswat To: u-boot@lists.denx.de Date: Fri, 20 Feb 2015 13:27:19 +0530 Message-id: <1424419040-28768-10-git-send-email-akshay.s@samsung.com> X-Mailer: git-send-email 2.2.0 In-reply-to: <1424419040-28768-1-git-send-email-akshay.s@samsung.com> References: <1424419040-28768-1-git-send-email-akshay.s@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOLMWRmVeSWpSXmKPExsWyRsSkRrfnxbMQg1dLbCxO/XnMaNFxpIXR YuqDc4wW37ZsY7RY/noju8XbvZ3sDmwesxsusnjsnHWX3WPBplKPs3d2MHr0bVnFGMAaxWWT kpqTWZZapG+XwJXR/qafrWAuT8WlaUvZGxj7uLoYOTkkBEwkDjybwghhi0lcuLeerYuRi0NI YCmjxMO2U8wwRTsebYZKLGKUmNnxgxHCmcAksWTjarB2NgEdie1LvrOD2CICEhK/+q+CFTEL NDFKvJw1EWyUsECUxKvFa1m6GDk4WARUJa6c4wEJ8wq4Sszt/M0CsU1OYsutR2BzOIHiR16u YAKxhQRcJO6uvs4EMlNCYDK7xJFpU1hBEiwCAhLfJh8CmykhICux6QDU1ZISB1fcYJnAKLyA kWEVo2hqQXJBcVJ6kbFecWJucWleul5yfu4mRmB4n/73rH8H490D1ocYBTgYlXh4L8x8FiLE mlhWXJl7iNEUaMNEZinR5HxgFOWVxBsamxlZmJqYGhuZW5opifMulPoZLCSQnliSmp2aWpBa FF9UmpNafIiRiYNTqoFR079Rf0UPm87XS4+3WMp8urb45eTgOtX1SVFngiaWspaWKgns269R wZF8tytqyt89pk3/u9ukJ798FK1qyNy6d+lW66wlRzuuNS1klTcMbEo/yHZdJXe6f4adidDB LI2zV/OMLE7+WJI0qdj61O+21g3X6id7xs3g/8c8ib3qbvCV+lfBCm+UWIozEg21mIuKEwG1 lJk3agIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRmVeSWpSXmKPExsVy+t9jAd2eF89CDHo/m1qc+vOY0aLjSAuj xdQH5xgtvm3Zxmix/PVGdou3ezvZHdg8ZjdcZPHYOesuu8eCTaUeZ+/sYPTo27KKMYA1qoHR JiM1MSW1SCE1Lzk/JTMv3VbJOzjeOd7UzMBQ19DSwlxJIS8xN9VWycUnQNctMwfoBCWFssSc UqBQQGJxsZK+HaYJoSFuuhYwjRG6viFBcD1GBmggYQ1jRvubfraCuTwVl6YtZW9g7OPqYuTk kBAwkdjxaDMbhC0mceHeeiCbi0NIYBGjxMyOH4wQzgQmiSUbVzOCVLEJ6EhsX/KdHcQWEZCQ +NV/FayIWaCJUeLlrInMIAlhgSiJV4vXsnQxcnCwCKhKXDnHAxLmFXCVmNv5mwVim5zElluP wOZwAsWPvFzBBGILCbhI3F19nWkCI+8CRoZVjKKpBckFxUnpuUZ6xYm5xaV56XrJ+bmbGMHR 80x6B+OqBotDjAIcjEo8vBdmPgsRYk0sK67MPcQowcGsJMJbdhEoxJuSWFmVWpQfX1Sak1p8 iNEU6KiJzFKiyfnAyM4riTc0NjE3NTa1NLEwMbNUEudVsm8LERJITyxJzU5NLUgtgulj4uCU amCskjzaHPL181vJ7VPfK8ofaV/2iD243FN21gIfJ26ef+/kHyroHj0ec+XRhaY9Uzgjvq+Y Pv+UcGZs4fKTtv2c/G+1DjkVPQ8NeuD9ve/rnu0xz4MsujT3nT+ckNLnueH1WZa0r64N7RK1 Kt52z22/ur3S/Ht4zYGyqtowlsdfWTiFgrNvbJihxFKckWioxVxUnAgAo4RAELQCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: u-boot-review@google.com, Akshay Saraswat Subject: [U-Boot] [PATCH v4 09/10] Exynos542x: Make A7s boot with thumb-mode U-Boot on warm reset 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" On warm reset, all cores jump to the low_power_start function because iRAM data is retained and because while executing iROM code all cores find the jump flag 0x02020028 set. In low_power_start, cores check the reset status and if true they clear the jump flag and jump back to 0x0. The A7 cores do jump to 0x0 but consider following instructions as a Thumb instructions which in turn makes them loop inside the iROM code instead of jumping to power_down_core. This issue is fixed by replacing the "mov pc" instruction with a "bx" instruction which switches state along with the jump to make the execution unit consider the branch target as an ARM instruction. Signed-off-by: Akshay Saraswat Reviewed-by: Simon Glass Tested-by: Simon Glass --- Changes since v3: - No change. Changes since v2: - No change. Changes since v1: - Added Reviewed-by & Tested-by. arch/arm/cpu/armv7/exynos/lowlevel_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/cpu/armv7/exynos/lowlevel_init.c b/arch/arm/cpu/armv7/exynos/lowlevel_init.c index 782ecd1..329ab0c 100644 --- a/arch/arm/cpu/armv7/exynos/lowlevel_init.c +++ b/arch/arm/cpu/armv7/exynos/lowlevel_init.c @@ -103,7 +103,7 @@ static void low_power_start(void) reg_val = readl(EXYNOS5420_SPARE_BASE); if (reg_val != CPU_RST_FLAG_VAL) { writel(0x0, CONFIG_LOWPOWER_FLAG); - set_pc(0x0); + branch_bx(0x0); } reg_val = readl(CONFIG_PHY_IRAM_BASE + 0x4);