diff options
Diffstat (limited to 'ANDROID_3.4.5/arch/arm/mach-wmt/headsmp.S')
-rwxr-xr-x | ANDROID_3.4.5/arch/arm/mach-wmt/headsmp.S | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/ANDROID_3.4.5/arch/arm/mach-wmt/headsmp.S b/ANDROID_3.4.5/arch/arm/mach-wmt/headsmp.S new file mode 100755 index 00000000..180cbb5f --- /dev/null +++ b/ANDROID_3.4.5/arch/arm/mach-wmt/headsmp.S @@ -0,0 +1,53 @@ +/*++ + 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 <http://www.gnu.org/licenses/>. + + WonderMedia Technologies, Inc. + 10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C. +--*/ + +#include <linux/linkage.h> +#include <linux/init.h> + + __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 |