]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/arm/cpu/armv7/lowlevel_init.S
kconfig: arm: remove duplicate definitions of SOC_MX*
[karo-tx-uboot.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. Global data is not available yet.
21          */
22 #ifndef CONFIG_SPL_BUILD
23         ldr     sp, =CONFIG_SYS_INIT_SP_ADDR
24 #else
25         ldr     sp, =CONFIG_SPL_STACK
26 #endif
27         bic     sp, sp, #7 /* 8-byte alignment for ABI compliance */
28 #ifdef CONFIG_SPL_DM
29         mov     r9, #0
30 #else
31         /*
32          * Set up global data for boards that still need it. This will be
33          * removed soon.
34          */
35 #ifdef CONFIG_SPL_BUILD
36         ldr     r9, =gdata
37 #else
38         sub     sp, sp, #GD_SIZE
39         bic     sp, sp, #7
40         mov     r9, sp
41 #endif
42 #endif
43         /*
44          * Save the old lr(passed in ip) and the current lr to stack
45          */
46         push    {ip, lr}
47
48         /*
49          * Call the very early init function. This should do only the
50          * absolute bare minimum to get started. It should not:
51          *
52          * - set up DRAM
53          * - use global_data
54          * - clear BSS
55          * - try to start a console
56          *
57          * For boards with SPL this should be empty since SPL can do all of
58          * this init in the SPL board_init_f() function which is called
59          * immediately after this.
60          */
61         bl      s_init
62         pop     {ip, pc}
63 ENDPROC(lowlevel_init)