| 
									
										
										
										
											2010-07-26 21:08:52 +09:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2011-02-14 16:33:10 +09:00
										 |  |  |  *  linux/arch/arm/mach-exynos4/headsmp.S | 
					
						
							| 
									
										
										
										
											2010-07-26 21:08:52 +09:00
										 |  |  |  * | 
					
						
							|  |  |  |  *  Cloned from linux/arch/arm/mach-realview/headsmp.S | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Copyright (c) 2003 ARM Limited | 
					
						
							|  |  |  |  *  All Rights Reserved | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or modify
 | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License version 2 as | 
					
						
							|  |  |  |  * published by the Free Software Foundation. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #include <linux/linkage.h> | 
					
						
							|  |  |  | #include <linux/init.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-04 19:03:54 +09:00
										 |  |  | 	__CPUINIT | 
					
						
							| 
									
										
										
										
											2010-07-26 21:08:52 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							| 
									
										
										
										
											2011-02-14 16:33:10 +09:00
										 |  |  |  * exynos4 specific entry point for secondary CPUs.  This provides | 
					
						
							| 
									
										
										
										
											2010-07-26 21:08:52 +09:00
										 |  |  |  * a "holding pen" into which all secondary cores are held until we're | 
					
						
							|  |  |  |  * ready for them to initialise. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-02-14 16:33:10 +09:00
										 |  |  | ENTRY(exynos4_secondary_startup) | 
					
						
							| 
									
										
										
										
											2010-07-26 21:08:52 +09:00
										 |  |  | 	mrc	p15, 0, r0, c0, c0, 5 | 
					
						
							|  |  |  | 	and	r0, r0, #15 | 
					
						
							|  |  |  | 	adr	r4, 1f | 
					
						
							|  |  |  | 	ldmia	r4, {r5, r6} | 
					
						
							|  |  |  | 	sub	r4, r4, r5 | 
					
						
							|  |  |  | 	add	r6, r6, r4 | 
					
						
							|  |  |  | pen:	ldr	r7, [r6] | 
					
						
							|  |  |  | 	cmp	r7, r0 | 
					
						
							|  |  |  | 	bne	pen | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* | 
					
						
							|  |  |  | 	 * we've been released from the holding pen: secondary_stack | 
					
						
							|  |  |  | 	 * should now contain the SVC stack for this core | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	b	secondary_startup | 
					
						
							| 
									
										
										
										
											2012-01-09 15:39:19 -06:00
										 |  |  | ENDPROC(exynos4_secondary_startup) | 
					
						
							| 
									
										
										
										
											2010-07-26 21:08:52 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-09 15:39:19 -06:00
										 |  |  | 	.align 2
 | 
					
						
							| 
									
										
										
										
											2010-07-26 21:08:52 +09:00
										 |  |  | 1:	.long	. | 
					
						
							|  |  |  | 	.long	pen_release
 |