/*++ linux/arch/arm/mach-wmt/headsmp.S Copyright (c) 2013 WonderMedia Technologies, Inc. Copyright (C) 2002 ARM Ltd. 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 as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . WonderMedia Technologies, Inc. 10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C. --*/ #include #include __CPUINIT /* * WMT specific entry point for secondary CPUs. This provides * a "holding pen" into which all secondary cores are held until we're * ready for them to initialise. */ ENTRY(wmt_secondary_startup) 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 ENDPROC(wmt_secondary_startup) .align 2 1: .long . .long pen_release