1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * arch/arm/mach-spear13XX/headsmp.S 4 * 5 * Picked from realview 6 * Copyright (c) 2012 ST Microelectronics Limited 7 * Shiraz Hashim <shiraz.linux.kernel@gmail.com> 8 */ 9 10#include <linux/linkage.h> 11#include <linux/init.h> 12 13#include <asm/assembler.h> 14 15 __INIT 16 17/* 18 * spear13xx specific entry point for secondary CPUs. This provides 19 * a "holding pen" into which all secondary cores are held until we're 20 * ready for them to initialise. 21 */ 22ENTRY(spear13xx_secondary_startup) 23 mrc p15, 0, r0, c0, c0, 5 24 and r0, r0, #15 25 adr_l r6, spear_pen_release 26pen: ldr r7, [r6] 27 cmp r7, r0 28 bne pen 29 30 /* re-enable coherency */ 31 mrc p15, 0, r0, c1, c0, 1 32 orr r0, r0, #(1 << 6) | (1 << 0) 33 mcr p15, 0, r0, c1, c0, 1 34 /* 35 * we've been released from the holding pen: secondary_stack 36 * should now contain the SVC stack for this core 37 */ 38 b secondary_startup 39ENDPROC(spear13xx_secondary_startup) 40