Merge git://git.denx.de/u-boot-arm
[platform/kernel/u-boot.git] / arch / arm / cpu / armv7 / lowlevel_init.S
1 /*
2  * A lowlevel_init function that sets up the stack to call a C function to
3  * perform further init.
4  *
5  * (C) Copyright 2010
6  * Texas Instruments, <www.ti.com>
7  *
8  * Author :
9  *      Aneesh V        <aneesh@ti.com>
10  *
11  * SPDX-License-Identifier:     GPL-2.0+
12  */
13
14 #include <asm-offsets.h>
15 #include <config.h>
16 #include <linux/linkage.h>
17
18 ENTRY(lowlevel_init)
19         /*
20          * Setup a temporary stack
21          */
22         ldr     sp, =CONFIG_SYS_INIT_SP_ADDR
23         bic     sp, sp, #7 /* 8-byte alignment for ABI compliance */
24 #ifdef CONFIG_SPL_BUILD
25         ldr     r8, =gdata
26 #else
27         sub     sp, #GD_SIZE
28         bic     sp, sp, #7
29         mov     r8, sp
30 #endif
31         /*
32          * Save the old lr(passed in ip) and the current lr to stack
33          */
34         push    {ip, lr}
35
36         /*
37          * go setup pll, mux, memory
38          */
39         bl      s_init
40         pop     {ip, pc}
41 ENDPROC(lowlevel_init)