xref: /rk3399_ARM-atf/plat/common/aarch32/platform_mp_stack.S (revision 82cb2c1ad9897473743f08437d0a3995bed561b9)
1877cf3ffSSoby Mathew/*
2a6b3954bSSoby Mathew * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
3877cf3ffSSoby Mathew *
4*82cb2c1aSdp-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
22877cf3ffSSoby Mathew	mov	r3, lr
23877cf3ffSSoby Mathew	get_my_mp_stack platform_normal_stacks, PLATFORM_STACK_SIZE
24877cf3ffSSoby Mathew	bx	r3
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
35877cf3ffSSoby Mathew	mov	r3, lr
36877cf3ffSSoby Mathew	get_my_mp_stack platform_normal_stacks, PLATFORM_STACK_SIZE
37877cf3ffSSoby Mathew	mov	sp, r0
38877cf3ffSSoby Mathew	bx	r3
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	 */
46877cf3ffSSoby Mathewdeclare_stack platform_normal_stacks, tzfw_normal_stacks, \
47877cf3ffSSoby Mathew		PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT
48