Commit b3377d18 authored by Nick Bowler's avatar Nick Bowler Committed by Russell King

ARM: 7064/1: vexpress: Use wfi macro in platform_do_lowpower.

Current Versatile Express CPU hotplug code includes a hardcoded WFI
instruction, in ARM encoding.  When the kernel is compiled in Thumb-2
mode, this is invalid and causes the machine to hang hard when a CPU
is offlined.

Using the wfi macro (which uses the appropriate assembler mnemonic)
causes the correct instruction to be emitted in either case.  As a
consequence of this change, an apparently vestigial "cc" clobber is
dropped from the asm (the macro uses "memory" only).
Signed-off-by: default avatarNick Bowler <nbowler@elliptictech.com>
Reviewed-by: default avatarJamie Iles <jamie@jamieiles.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent ef4c5368
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/system.h>
extern volatile int pen_release; extern volatile int pen_release;
...@@ -62,13 +63,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious) ...@@ -62,13 +63,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
* code will have already disabled interrupts * code will have already disabled interrupts
*/ */
for (;;) { for (;;) {
/* wfi();
* here's the WFI
*/
asm(".word 0xe320f003\n"
:
:
: "memory", "cc");
if (pen_release == cpu) { if (pen_release == cpu) {
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment