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: Nick Bowler <nbowler@elliptictech.com> Reviewed-by: Jamie Iles <jamie@jamieiles.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
ef4c53687e
commit
b3377d1865
@ -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)
|
|||||||
* 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) {
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user