1*91f16700Schasinglulu/* 2*91f16700Schasinglulu * Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu#include <arch.h> 8*91f16700Schasinglulu#include <asm_macros.S> 9*91f16700Schasinglulu#include <platform_def.h> 10*91f16700Schasinglulu 11*91f16700Schasinglulu 12*91f16700Schasinglulu .local platform_normal_stacks 13*91f16700Schasinglulu .weak plat_set_my_stack 14*91f16700Schasinglulu .weak plat_get_my_stack 15*91f16700Schasinglulu 16*91f16700Schasinglulu /* ----------------------------------------------------- 17*91f16700Schasinglulu * uintptr_t plat_get_my_stack () 18*91f16700Schasinglulu * 19*91f16700Schasinglulu * For cold-boot BL images, only the primary CPU needs a 20*91f16700Schasinglulu * stack. This function returns the stack pointer for a 21*91f16700Schasinglulu * stack allocated in device memory. 22*91f16700Schasinglulu * ----------------------------------------------------- 23*91f16700Schasinglulu */ 24*91f16700Schasinglulufunc plat_get_my_stack 25*91f16700Schasinglulu get_up_stack platform_normal_stacks, PLATFORM_STACK_SIZE 26*91f16700Schasinglulu ret 27*91f16700Schasingluluendfunc plat_get_my_stack 28*91f16700Schasinglulu 29*91f16700Schasinglulu /* ----------------------------------------------------- 30*91f16700Schasinglulu * void plat_set_my_stack () 31*91f16700Schasinglulu * 32*91f16700Schasinglulu * For cold-boot BL images, only the primary CPU needs a 33*91f16700Schasinglulu * stack. This function sets the stack pointer to a stack 34*91f16700Schasinglulu * allocated in normal memory. 35*91f16700Schasinglulu * ----------------------------------------------------- 36*91f16700Schasinglulu */ 37*91f16700Schasinglulufunc plat_set_my_stack 38*91f16700Schasinglulu get_up_stack platform_normal_stacks, PLATFORM_STACK_SIZE 39*91f16700Schasinglulu mov sp, x0 40*91f16700Schasinglulu ret 41*91f16700Schasingluluendfunc plat_set_my_stack 42*91f16700Schasinglulu 43*91f16700Schasinglulu /* ----------------------------------------------------- 44*91f16700Schasinglulu * Single cpu stack in normal memory. 45*91f16700Schasinglulu * Used for C code during boot, PLATFORM_STACK_SIZE bytes 46*91f16700Schasinglulu * are allocated 47*91f16700Schasinglulu * ----------------------------------------------------- 48*91f16700Schasinglulu */ 49*91f16700Schasingluludeclare_stack platform_normal_stacks, .tzfw_normal_stacks, \ 50*91f16700Schasinglulu PLATFORM_STACK_SIZE, 1, CACHE_WRITEBACK_GRANULE 51