Home | History | Annotate | Download | only in aarch32
      1 /*
      2  * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
      3  *
      4  * SPDX-License-Identifier: BSD-3-Clause
      5  */
      6 
      7 #include <arch.h>
      8 #include <asm_macros.S>
      9 #include <platform_def.h>
     10 
     11 	.weak	plat_get_my_stack
     12 	.weak	plat_set_my_stack
     13 
     14 	/* -----------------------------------------------------
     15 	 * uintptr_t plat_get_my_stack (u_register_t mpidr)
     16 	 *
     17 	 * For a given CPU, this function returns the stack
     18 	 * pointer for a stack allocated in device memory.
     19 	 * -----------------------------------------------------
     20 	 */
     21 func plat_get_my_stack
     22 	push	{r4, lr}
     23 	get_my_mp_stack platform_normal_stacks, PLATFORM_STACK_SIZE
     24 	pop	{r4, pc}
     25 endfunc	plat_get_my_stack
     26 
     27 	/* -----------------------------------------------------
     28 	 * void plat_set_my_stack ()
     29 	 *
     30 	 * For the current CPU, this function sets the stack
     31 	 * pointer to a stack allocated in normal memory.
     32 	 * -----------------------------------------------------
     33 	 */
     34 func plat_set_my_stack
     35 	mov	r4, lr
     36 	get_my_mp_stack platform_normal_stacks, PLATFORM_STACK_SIZE
     37 	mov	sp, r0
     38 	bx	r4
     39 endfunc plat_set_my_stack
     40 
     41 	/* -----------------------------------------------------
     42 	 * Per-cpu stacks in normal memory. Each cpu gets a
     43 	 * stack of PLATFORM_STACK_SIZE bytes.
     44 	 * -----------------------------------------------------
     45 	 */
     46 declare_stack platform_normal_stacks, tzfw_normal_stacks, \
     47 		PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT
     48