From patchwork Tue Feb 3 08:18:59 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akshay Saraswat X-Patchwork-Id: 435731 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 D64C8140182 for ; Tue, 3 Feb 2015 19:16:25 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 503AB4B676; Tue, 3 Feb 2015 09:16:24 +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 GF1vlbOnBtpe; Tue, 3 Feb 2015 09:16:24 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7F6F24B661; Tue, 3 Feb 2015 09:16:23 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3183B4B661 for ; Tue, 3 Feb 2015 09:16:19 +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 t3amnBnr6hN6 for ; Tue, 3 Feb 2015 09:16:19 +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 mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by theia.denx.de (Postfix) with ESMTPS id ADBFB4B617 for ; Tue, 3 Feb 2015 09:16:18 +0100 (CET) Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NJ6000BJSB4UP50@mailout1.samsung.com> for u-boot@lists.denx.de; Tue, 03 Feb 2015 17:16:16 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.123]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id F8.4B.17016.0D380D45; Tue, 03 Feb 2015 17:16:16 +0900 (KST) X-AuditID: cbfee68d-f79296d000004278-44-54d083d0484d Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 57.6D.09430.0D380D45; Tue, 03 Feb 2015 17:16:16 +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 <0NJ6009POS7132F0@mmp1.samsung.com>; Tue, 03 Feb 2015 17:16:15 +0900 (KST) From: Akshay Saraswat To: u-boot@lists.denx.de Date: Tue, 03 Feb 2015 13:48:59 +0530 Message-id: <1422951540-11962-11-git-send-email-akshay.s@samsung.com> X-Mailer: git-send-email 2.2.0 In-reply-to: <1422951540-11962-1-git-send-email-akshay.s@samsung.com> References: <1422951540-11962-1-git-send-email-akshay.s@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrGLMWRmVeSWpSXmKPExsWyRsSkWvdC84UQg4/f+SxO/XnMaNFxpIXR YuqDc4wW37ZsY7RY/noju8XbvZ3sDmwesxsusnjsnHWX3WPBplKPs3d2MHr0bVnFGMAaxWWT kpqTWZZapG+XwJWx+8cHpoKr3BX/r+5lbWC8w9nFyMkhIWAi8Wz+clYIW0ziwr31bF2MXBxC AksZJSbN/swCU/Tx+B9GEFtIYBGjxIqVwRBFE5gkmpb9YwZJsAnoSGxf8p0dxBYRkJD41X+V EaSIWaCJUeLlrIlARRwcwgJREusW2IHUsAioSsx5v4AJxOYVcJVYeaeFGWKZnMSWW4/A5nAC xSev6WCGWOwi0dTykx1kpoTAZHaJXQ9OskEMEpD4NvkQC8h8CQFZiU0HoOZIShxccYNlAqPw AkaGVYyiqQXJBcVJ6UWGesWJucWleel6yfm5mxiBwX3637PeHYy3D1gfYhTgYFTi4Z2hciFE iDWxrLgy9xCjKdCGicxSosn5wBjKK4k3NDYzsjA1MTU2Mrc0UxLnVZT6GSwkkJ5YkpqdmlqQ WhRfVJqTWnyIkYmDU6qBsfT76f1WTrbBC819PdiDV+TsC3n0+Mvfe4/ltsz+M/nrOl2pFULG 08/mTEtULJGacLSdX3SalG5qXucHH+70y+Z5Pay95eJVW6a73pGM3Ncd+fOA0X21sMUuJ7LC 9ex/2ZZ1TRSbvuchc03HrK6srUJ+M9u3Ja63MdbZsvtQyruHH3Jmqe2SVmIpzkg01GIuKk4E APIgh0FpAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrAIsWRmVeSWpSXmKPExsVy+t9jAd0LzRdCDP7MZ7c49ecxo0XHkRZG i6kPzjFafNuyjdFi+euN7BZv93ayO7B5zG64yOKxc9Zddo8Fm0o9zt7ZwejRt2UVYwBrVAOj TUZqYkpqkUJqXnJ+SmZeuq2Sd3C8c7ypmYGhrqGlhbmSQl5ibqqtkotPgK5bZg7QCUoKZYk5 pUChgMTiYiV9O0wTQkPcdC1gGiN0fUOC4HqMDNBAwhrGjN0/PjAVXOWu+H91L2sD4x3OLkZO DgkBE4mPx/8wQthiEhfurWcDsYUEFjFKrFgZ3MXIBWRPYJJoWvaPGSTBJqAjsX3Jd3YQW0RA QuJX/1VGkCJmgSZGiZezJgIVcXAIC0RJrFtgB1LDIqAqMef9AiYQm1fAVWLlnRZmiGVyEltu PQKbwwkUn7ymgxlisYtEU8tP9gmMvAsYGVYxiqYWJBcUJ6XnGukVJ+YWl+al6yXn525iBMfO M+kdjKsaLA4xCnAwKvHwzlC5ECLEmlhWXJl7iFGCg1lJhFc3HyjEm5JYWZValB9fVJqTWnyI 0RToqonMUqLJ+cC4ziuJNzQ2MTc1NrU0sTAxs1QS51WybwsREkhPLEnNTk0tSC2C6WPi4JRq YFx3+wCD1ofdXjM/Rv8QzzlvcWy98nnBOayTXoR+uqLK92y+PtvVwgdeB1z3pUwTehBlot3d ufn0QX7z3KDy7fVL7lbL/NK8d8e3YHdV/SuJDz57Whbwc++o9Dfk8o2we/n61Y0FW090X3x5 kLn4V9qURRqXOW6f+3NE6dFe6wsXNJ9P03L/a1mjxFKckWioxVxUnAgA/2pqbrMCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: u-boot-review@google.com, Akshay Saraswat Subject: [U-Boot] [PATCH v2 10/11] 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 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 3fbaaf3..e9e3cb7 100644 --- a/arch/arm/cpu/armv7/exynos/lowlevel_init.c +++ b/arch/arm/cpu/armv7/exynos/lowlevel_init.c @@ -125,7 +125,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);