xref: /rk3399_ARM-atf/plat/common/aarch32/platform_up_stack.S (revision da04341ed52d214139fe2d16667ef5b58c38e502)
11a0a3f06SYatharth Kochar/*
275311203Sdp-arm * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
31a0a3f06SYatharth Kochar *
482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause
51a0a3f06SYatharth Kochar */
61a0a3f06SYatharth Kochar
71a0a3f06SYatharth Kochar#include <arch.h>
81a0a3f06SYatharth Kochar#include <asm_macros.S>
91a0a3f06SYatharth Kochar#include <platform_def.h>
101a0a3f06SYatharth Kochar
1175311203Sdp-arm	.weak	plat_get_my_stack
1275311203Sdp-arm	.weak	plat_set_my_stack
131a0a3f06SYatharth Kochar
141a0a3f06SYatharth Kochar	/* -----------------------------------------------------
151a0a3f06SYatharth Kochar	 * unsigned long plat_get_my_stack ()
161a0a3f06SYatharth Kochar	 *
171a0a3f06SYatharth Kochar	 * For cold-boot BL images, only the primary CPU needs
181a0a3f06SYatharth Kochar	 * a stack. This function returns the stack pointer for
191a0a3f06SYatharth Kochar	 * a stack allocated in normal memory.
201a0a3f06SYatharth Kochar	 * -----------------------------------------------------
211a0a3f06SYatharth Kochar	 */
221a0a3f06SYatharth Kocharfunc plat_get_my_stack
231a0a3f06SYatharth Kochar	get_up_stack platform_normal_stacks, PLATFORM_STACK_SIZE
241a0a3f06SYatharth Kochar	bx	lr
251a0a3f06SYatharth Kocharendfunc	plat_get_my_stack
261a0a3f06SYatharth Kochar
271a0a3f06SYatharth Kochar	/* -----------------------------------------------------
281a0a3f06SYatharth Kochar	 * void plat_set_my_stack ()
291a0a3f06SYatharth Kochar	 *
301a0a3f06SYatharth Kochar	 * For cold-boot BL images, only the primary CPU needs
311a0a3f06SYatharth Kochar	 * a stack. This function sets the stack pointer to a
321a0a3f06SYatharth Kochar	 * stack allocated in normal memory.
331a0a3f06SYatharth Kochar	 * -----------------------------------------------------
341a0a3f06SYatharth Kochar	 */
351a0a3f06SYatharth Kocharfunc plat_set_my_stack
361a0a3f06SYatharth Kochar	get_up_stack platform_normal_stacks, PLATFORM_STACK_SIZE
371a0a3f06SYatharth Kochar	mov	sp, r0
381a0a3f06SYatharth Kochar	bx	lr
391a0a3f06SYatharth Kocharendfunc plat_set_my_stack
401a0a3f06SYatharth Kochar
411a0a3f06SYatharth Kochar	/* -----------------------------------------------------
421a0a3f06SYatharth Kochar	 * Per-cpu stacks in normal memory. Each cpu gets a
431a0a3f06SYatharth Kochar	 * stack of PLATFORM_STACK_SIZE bytes.
441a0a3f06SYatharth Kochar	 * -----------------------------------------------------
451a0a3f06SYatharth Kochar	 */
46*da04341eSChris Kaydeclare_stack platform_normal_stacks, .tzfw_normal_stacks, \
471a0a3f06SYatharth Kochar		PLATFORM_STACK_SIZE, 1, CACHE_WRITEBACK_GRANULE
48