1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * linux/arch/arm/plat-versatile/headsmp.S 4 * 5 * Copyright (c) 2003 ARM Limited 6 * All Rights Reserved 7 */ 8#include <linux/linkage.h> 9#include <linux/init.h> 10#include <asm/assembler.h> 11 12/* 13 * Realview/Versatile Express specific entry point for secondary CPUs. 14 * This provides a "holding pen" into which all secondary cores are held 15 * until we're ready for them to initialise. 16 */ 17ENTRY(versatile_secondary_startup) 18 ARM_BE8(setend be) 19 mrc p15, 0, r0, c0, c0, 5 20 bic r0, #0xff000000 21 adr_l r6, versatile_cpu_release 22pen: ldr r7, [r6] 23 cmp r7, r0 24 bne pen 25 26 /* 27 * we've been released from the holding pen: secondary_stack 28 * should now contain the SVC stack for this core 29 */ 30 b secondary_startup 31ENDPROC(versatile_secondary_startup) 32