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
					
				
			
		
					 1 changed files with 2 additions and 7 deletions
				
			
		|  | @ -13,6 +13,7 @@ | |||
| #include <linux/smp.h> | ||||
| 
 | ||||
| #include <asm/cacheflush.h> | ||||
| #include <asm/system.h> | ||||
| 
 | ||||
| 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 | ||||
| 	 */ | ||||
| 	for (;;) { | ||||
| 		/*
 | ||||
| 		 * here's the WFI | ||||
| 		 */ | ||||
| 		asm(".word	0xe320f003\n" | ||||
| 		    : | ||||
| 		    : | ||||
| 		    : "memory", "cc"); | ||||
| 		wfi(); | ||||
| 
 | ||||
| 		if (pen_release == cpu) { | ||||
| 			/*
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Nick Bowler
				Nick Bowler