xref: /rk3399_ARM-atf/plat/common/aarch32/platform_mp_stack.S (revision 338dbe2f1f4b98da260e556d3f0fbdd8123caf06)
1877cf3ffSSoby Mathew/*
2a6b3954bSSoby Mathew * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
3877cf3ffSSoby Mathew *
482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause
5877cf3ffSSoby Mathew */
6877cf3ffSSoby Mathew
7877cf3ffSSoby Mathew#include <arch.h>
8877cf3ffSSoby Mathew#include <asm_macros.S>
9877cf3ffSSoby Mathew#include <platform_def.h>
10877cf3ffSSoby Mathew
11a6b3954bSSoby Mathew	.weak	plat_get_my_stack
12a6b3954bSSoby Mathew	.weak	plat_set_my_stack
13877cf3ffSSoby Mathew
14877cf3ffSSoby Mathew	/* -----------------------------------------------------
15877cf3ffSSoby Mathew	 * uintptr_t plat_get_my_stack (u_register_t mpidr)
16877cf3ffSSoby Mathew	 *
17877cf3ffSSoby Mathew	 * For a given CPU, this function returns the stack
18877cf3ffSSoby Mathew	 * pointer for a stack allocated in device memory.
19877cf3ffSSoby Mathew	 * -----------------------------------------------------
20877cf3ffSSoby Mathew	 */
21877cf3ffSSoby Mathewfunc plat_get_my_stack
22eecdf19bSJeenu Viswambharan	push	{r4, lr}
23877cf3ffSSoby Mathew	get_my_mp_stack platform_normal_stacks, PLATFORM_STACK_SIZE
24eecdf19bSJeenu Viswambharan	pop	{r4, pc}
25877cf3ffSSoby Mathewendfunc	plat_get_my_stack
26877cf3ffSSoby Mathew
27877cf3ffSSoby Mathew	/* -----------------------------------------------------
28877cf3ffSSoby Mathew	 * void plat_set_my_stack ()
29877cf3ffSSoby Mathew	 *
30877cf3ffSSoby Mathew	 * For the current CPU, this function sets the stack
31877cf3ffSSoby Mathew	 * pointer to a stack allocated in normal memory.
32877cf3ffSSoby Mathew	 * -----------------------------------------------------
33877cf3ffSSoby Mathew	 */
34877cf3ffSSoby Mathewfunc plat_set_my_stack
35eecdf19bSJeenu Viswambharan	mov	r4, lr
36877cf3ffSSoby Mathew	get_my_mp_stack platform_normal_stacks, PLATFORM_STACK_SIZE
37877cf3ffSSoby Mathew	mov	sp, r0
38eecdf19bSJeenu Viswambharan	bx	r4
39877cf3ffSSoby Mathewendfunc plat_set_my_stack
40877cf3ffSSoby Mathew
41877cf3ffSSoby Mathew	/* -----------------------------------------------------
42877cf3ffSSoby Mathew	 * Per-cpu stacks in normal memory. Each cpu gets a
43877cf3ffSSoby Mathew	 * stack of PLATFORM_STACK_SIZE bytes.
44877cf3ffSSoby Mathew	 * -----------------------------------------------------
45877cf3ffSSoby Mathew	 */
46*da04341eSChris Kaydeclare_stack platform_normal_stacks, .tzfw_normal_stacks, \
47877cf3ffSSoby Mathew		PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT
48