]> git.sur5r.net Git - u-boot/blob - arch/sh/lib/start.S
Merge git://git.denx.de/u-boot-mpc85xx
[u-boot] / arch / sh / lib / start.S
1 /*
2  * Copyright (C) 2016 Vladimir Zapolskiy <vz@mleia.com>
3  * Copyright (C) 2007, 2010 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #include <asm-offsets.h>
9 #include <config.h>
10
11         .text
12         .align  2
13
14         .global _start
15 _start:
16 #ifdef CONFIG_CPU_SH2
17         .long 0x00000010        /* Ppower ON reset PC*/
18         .long 0x00000000
19         .long 0x00000010        /* Manual reset PC */
20         .long 0x00000000
21 #endif
22         mov.l   ._lowlevel_init, r0
23 100:    bsrf    r0
24         nop
25
26         bsr     1f
27         nop
28 1:      sts     pr, r5
29         mov.l   ._reloc_dst, r4
30         add     #(_start-1b), r5
31         mov.l   ._reloc_dst_end, r6
32
33 2:      mov.l   @r5+, r1
34         mov.l   r1, @r4
35         add     #4, r4
36         cmp/hs  r6, r4
37         bf      2b
38
39         mov.l   ._bss_start, r4
40         mov.l   ._bss_end, r5
41         mov     #0, r1
42
43 3:      mov.l   r1, @r4                 /* bss clear */
44         add     #4, r4
45         cmp/hs  r5, r4
46         bf      3b
47
48         mov.l   ._gd_init, r13          /* global data */
49         mov.l   ._stack_init, r15       /* stack */
50
51         mov.l   ._sh_generic_init, r0
52         jsr     @r0
53         mov     #0, r4
54
55 loop:
56         bra     loop
57
58         .align  2
59
60 ._lowlevel_init:        .long   (lowlevel_init - (100b + 4))
61 ._reloc_dst:            .long   _start
62 ._reloc_dst_end:        .long   reloc_dst_end
63 ._bss_start:            .long   bss_start
64 ._bss_end:              .long   bss_end
65 ._gd_init:              .long   (_start - GENERATED_GBL_DATA_SIZE)
66 ._stack_init:           .long   (_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16)
67 ._sh_generic_init:      .long   board_init_f