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