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 <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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Nick Bowler
				Nick Bowler