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