| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Segher Boessenkool <segher@kernel.crashing.org> |
| Date: Thu, 6 Oct 2016 13:42:19 +0000 |
| Subject: [PATCH 11/12] powerpc: Convert cmp to cmpd in idle enter sequence |
| |
| PowerPC's "cmp" instruction has four operands. Normally people write |
| "cmpw" or "cmpd" for the second cmp operand 0 or 1. But, frequently |
| people forget, and write "cmp" with just three operands. |
| |
| With older binutils this is silently accepted as if this was "cmpw", |
| while often "cmpd" is wanted. With newer binutils GAS will complain |
| about this for 64-bit code. For 32-bit code it still silently assumes |
| "cmpw" is what is meant. |
| |
| In this instance the code comes directly from ISA v2.07, including the |
| cmp, but cmpd is correct. Backport to stable so that new toolchains can |
| build old kernels. |
| |
| Fixes: 948cf67c4726 ("powerpc: Add NAP mode support on Power7 in HV mode") |
| Cc: stable@vger.kernel.org # v3.0 |
| Reviewed-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> |
| Signed-off-by: Segher Boessenkool <segher@kernel.crashing.org> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| (cherry picked from commit 80f23935cadb1c654e81951f5a8b7ceae0acc1b4) |
| Signed-off-by: Joel Stanley <joel@jms.id.au> |
| --- |
| arch/powerpc/kernel/idle_power7.S | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/powerpc/kernel/idle_power7.S b/arch/powerpc/kernel/idle_power7.S |
| index 112ccf497562..73f638789a38 100644 |
| --- a/arch/powerpc/kernel/idle_power7.S |
| +++ b/arch/powerpc/kernel/idle_power7.S |
| @@ -44,7 +44,7 @@ |
| std r0,0(r1); \ |
| ptesync; \ |
| ld r0,0(r1); \ |
| -1: cmp cr0,r0,r0; \ |
| +1: cmpd cr0,r0,r0; \ |
| bne 1b; \ |
| IDLE_INST; \ |
| b . |
| -- |
| 2.11.0 |
| |