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