From patchwork Fri Jan 29 14:06:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101027 Delivered-To: patch@linaro.org Received: by 10.112.130.2 with SMTP id oa2csp1139956lbb; Fri, 29 Jan 2016 06:09:09 -0800 (PST) X-Received: by 10.98.1.21 with SMTP id 21mr13748264pfb.8.1454076548881; Fri, 29 Jan 2016 06:09:08 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f88si22267891pfj.136.2016.01.29.06.09.08; Fri, 29 Jan 2016 06:09:08 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932531AbcA2OI7 (ORCPT + 30 others); Fri, 29 Jan 2016 09:08:59 -0500 Received: from mout.kundenserver.de ([217.72.192.73]:59623 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756270AbcA2OIX (ORCPT ); Fri, 29 Jan 2016 09:08:23 -0500 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue104) with ESMTPA (Nemesis) id 0MLOoU-1aObU53kDy-000ZAf; Fri, 29 Jan 2016 15:07:59 +0100 From: Arnd Bergmann To: Robert Jarzmik Cc: linux-arm-kernel@lists.infradead.org, Arnd Bergmann , Haojian Zhuang , Daniel Mack , linux-kernel@vger.kernel.org Subject: [PATCH 7/9] ARM: pxa: fix building without IWMMXT Date: Fri, 29 Jan 2016 15:06:31 +0100 Message-Id: <1454076396-3563101-8-git-send-email-arnd@arndb.de> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1454076396-3563101-1-git-send-email-arnd@arndb.de> References: <1454076396-3563101-1-git-send-email-arnd@arndb.de> X-Provags-ID: V03:K0:WJfunlTmaCzmrGs67RBQozHWZTLO+OkHZgftuENK8LxfVCucsH7 l3/oei8T5crN2ku3rhOI5MUFQ2zV1JqFK8j0F/b7O+ixGQpm1jbm1KzpejQzjjXnxXd1vW2 LK8OkuOM+RffjR7eXwmtPNq/pGNAo6O1goqFkgH+klJE2i6V5PGeM+m+u4fkNm8SEKWxBd6 qDjdFNseAU8/jt8x35xPQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:MEBmdr3auMM=:qcnhDEJhDXbBYgbLivJ4Bi uThdQkjqEpm/Kn7qrKLDy25CdpHdB9HUIne2g/pDWx8kME2gO8WhfQ6A49eSyR/YihN6wgKTq Aup5CJFJ6uz616XXC1TkUmuKcuW2GncoDLvxGg4OYliikBzxdxBX2AIuxQ5gHymgZHMP8Zqb9 79zyDgpP67mM+62Qy5Yt1BY+4ClWuYGqpbG3pd9VahujhlY9+rNuIV/dvbi8Pf51UThKcn8+f HqZ85ypQsff4BG0PPC37PfWZFbrZgXbzualTqWM7AIWsEKJGmn/kMLMB/CvBT29IDDLq7lNES 73pc+gCzGtK313C1yB7PSW4qiXZ5Rt/EDo0ejJfWBtAj/aQlNuVfQ9YV8Vkpgo3D3SZUjQlHN 7PeA7kOuXTIvubpqlZynHc1dCH2m5x9T+Us8QjNGcuJQFbCw8fMr1pzq7kXb4rhAZoPPOsmv3 6ylaoqSU5tXB+6KgJadIHqAbr0gAVsjvzO0eVZ4fhkW2ZFdO1hn6+K+EqfyXl0B0Z8/ts75rz T7n5Oup+j2q1hL198vNMEgO/6paaPKzyD5RQoSUFKZKFP503cSgqyfy0rBqrMb62Fvs3N+AUi UFJ6aXjOqE3OgBbMUGt8mffKWkQuSSF09DVGEeAOBjWFumjNS9/ry/70mWQGvp1Lja0gaCDTi 2Qbuo5gHI0YED0bOkhaMXJLTx8gnsziuB34pTlWSahGRJ46VXAXwAeQmYOiAqRxHln2I= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When CONFIG_IWMMXT, the pxa3xx and pxa27x suspend/resume code emits some xscale specific instructions, which are rejected by the assembler, because gcc is built with -march=armv5 -mtune=xscale and passes that option to the assembler: /tmp/cciHumzr.s:553: Error: selected processor does not support ARM mode `mra r2,r3,acc0' /tmp/cciHumzr.s:605: Error: selected processor does not support ARM mode `mar acc0,r2,r3' make[3]: *** [arch/arm/mach-pxa/pxa3xx.o] Error 1 /tmp/cci5MUNu.s:326: Error: selected processor does not support ARM mode `mra r2,r3,acc0' /tmp/cci5MUNu.s:367: Error: selected processor does not support ARM mode `mar acc0,r2,r3' make[3]: *** [arch/arm/mach-pxa/pxa27x.o] Error 1 Overriding with -Wa,-march=xscale no longer works, so instead I'm adding an explict ".arch_extension" directive in all four inline assembly statements, which should work even if they end up in a different order in the assembly output. Signed-off-by: Arnd Bergmann --- arch/arm/mach-pxa/pxa27x.c | 6 ++++-- arch/arm/mach-pxa/pxa3xx.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) -- 2.7.0 diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 8dfd1755c659..49c735962148 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c @@ -132,7 +132,8 @@ void pxa27x_cpu_pm_enter(suspend_state_t state) #ifndef CONFIG_IWMMXT u64 acc0; - asm volatile("mra %Q0, %R0, acc0" : "=r" (acc0)); + asm volatile(".arch_extension xscale\n\t" + "mra %Q0, %R0, acc0" : "=r" (acc0)); #endif /* ensure voltage-change sequencer not initiated, which hangs */ @@ -151,7 +152,8 @@ void pxa27x_cpu_pm_enter(suspend_state_t state) case PM_SUSPEND_MEM: cpu_suspend(pwrmode, pxa27x_finish_suspend); #ifndef CONFIG_IWMMXT - asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); + asm volatile(".arch_extension xscale\n\t" + "mar acc0, %Q0, %R0" : "=r" (acc0)); #endif break; } diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 1ba62be65f7c..126c265691f5 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c @@ -102,7 +102,8 @@ static void pxa3xx_cpu_pm_suspend(void) #ifndef CONFIG_IWMMXT u64 acc0; - asm volatile("mra %Q0, %R0, acc0" : "=r" (acc0)); + asm volatile(".arch_extension xscale\n\t" + "mra %Q0, %R0, acc0" : "=r" (acc0)); #endif /* resuming from D2 requires the HSIO2/BOOT/TPM clocks enabled */ @@ -130,7 +131,8 @@ static void pxa3xx_cpu_pm_suspend(void) AD3ER = 0; #ifndef CONFIG_IWMMXT - asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); + asm volatile(".arch_extension xscale\n\t" + "mar acc0, %Q0, %R0" : "=r" (acc0)); #endif }