Home | History | Annotate | Download | only in aarch64
      1 /*
      2  * Copyright (c) 2014-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 
     12 	.local	platform_normal_stacks
     13 	.weak	plat_set_my_stack
     14 	.weak	plat_get_my_stack
     15 	.weak	platform_set_stack
     16 	.weak	platform_get_stack
     17 
     18 	/* -----------------------------------------------------
     19 	 * uintptr_t plat_get_my_stack ()
     20 	 *
     21 	 * For cold-boot BL images, only the primary CPU needs a
     22 	 * stack. This function returns the stack pointer for a
     23 	 * stack allocated in device memory.
     24 	 * -----------------------------------------------------
     25 	 */
     26 func plat_get_my_stack
     27 	get_up_stack platform_normal_stacks, PLATFORM_STACK_SIZE
     28 	ret
     29 endfunc plat_get_my_stack
     30 
     31 	/* -----------------------------------------------------
     32 	 * void plat_set_my_stack ()
     33 	 *
     34 	 * For cold-boot BL images, only the primary CPU needs a
     35 	 * stack. This function sets the stack pointer to a stack
     36 	 * allocated in normal memory.
     37 	 * -----------------------------------------------------
     38 	 */
     39 func plat_set_my_stack
     40 	get_up_stack platform_normal_stacks, PLATFORM_STACK_SIZE
     41 	mov sp, x0
     42 	ret
     43 endfunc plat_set_my_stack
     44 
     45 	/* -----------------------------------------------------
     46 	 * unsigned long platform_get_stack ()
     47 	 *
     48 	 * For cold-boot BL images, only the primary CPU needs a
     49 	 * stack. This function returns the stack pointer for a
     50 	 * stack allocated in device memory. This function
     51 	 * is deprecated.
     52 	 * -----------------------------------------------------
     53 	 */
     54 func_deprecated platform_get_stack
     55 	b	plat_get_my_stack
     56 endfunc_deprecated platform_get_stack
     57 
     58 	/* -----------------------------------------------------
     59 	 * void platform_set_stack ()
     60 	 *
     61 	 * For cold-boot BL images, only the primary CPU needs a
     62 	 * stack. This function sets the stack pointer to a stack
     63 	 * allocated in normal memory.This function is
     64 	 * deprecated.
     65 	 * -----------------------------------------------------
     66 	 */
     67 func_deprecated platform_set_stack
     68 	b	plat_set_my_stack
     69 endfunc_deprecated platform_set_stack
     70 
     71 	/* -----------------------------------------------------
     72 	 * Single cpu stack in normal memory.
     73 	 * Used for C code during boot, PLATFORM_STACK_SIZE bytes
     74 	 * are allocated
     75 	 * -----------------------------------------------------
     76 	 */
     77 declare_stack platform_normal_stacks, tzfw_normal_stacks, \
     78 		PLATFORM_STACK_SIZE, 1, CACHE_WRITEBACK_GRANULE
     79