]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/arm/cpu/arm720t/start.S
karo: fdt: fix panel-dpi support
[karo-tx-uboot.git] / arch / arm / cpu / arm720t / start.S
1 /*
2  *  armboot - Startup Code for ARM720 CPU-core
3  *
4  *  Copyright (c) 2001  Marius Gröger <mag@sysgo.de>
5  *  Copyright (c) 2002  Alex Züpke <azu@sysgo.de>
6  *
7  * SPDX-License-Identifier:     GPL-2.0+
8  */
9
10 #include <asm-offsets.h>
11 #include <config.h>
12
13 /*
14  *************************************************************************
15  *
16  * Startup Code (reset vector)
17  *
18  * do important init only if we don't start from RAM!
19  * relocate armboot to ram
20  * setup stack
21  * jump to second stage
22  *
23  *************************************************************************
24  */
25
26         .globl  reset
27
28 reset:
29         /*
30          * set the cpu to SVC32 mode
31          */
32         mrs     r0,cpsr
33         bic     r0,r0,#0x1f
34         orr     r0,r0,#0xd3
35         msr     cpsr,r0
36
37         /*
38          * we do sys-critical inits only at reboot,
39          * not when booting from ram!
40          */
41 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
42         bl      cpu_init_crit
43 #endif
44
45         bl      _main
46
47 /*------------------------------------------------------------------------------*/
48
49         .globl  c_runtime_cpu_setup
50 c_runtime_cpu_setup:
51
52         mov     pc, lr
53
54 /*
55  *************************************************************************
56  *
57  * CPU_init_critical registers
58  *
59  * setup important registers
60  * setup memory timing
61  *
62  *************************************************************************
63  */
64
65 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
66 cpu_init_crit:
67
68         mov     ip, lr
69         /*
70          * before relocating, we have to setup RAM timing
71          * because memory timing is board-dependent, you will
72          * find a lowlevel_init.S in your board directory.
73          */
74         bl      lowlevel_init
75         mov     lr, ip
76
77         mov     pc, lr
78 #endif /* CONFIG_SKIP_LOWLEVEL_INIT */