Merge tag 'xtensa-20181228' of git://github.com/jcmvbkbc/linux-xtensa
[sfrench/cifs-2.6.git] / arch / xtensa / boot / boot-elf / bootstrap.S
1 /*
2  * arch/xtensa/boot/boot-elf/bootstrap.S
3  *
4  * Low-level exception handling
5  *
6  * This file is subject to the terms and conditions of the GNU General Public
7  * License.  See the file "COPYING" in the main directory of this archive
8  * for more details.
9  *
10  * Copyright (C) 2004 - 2013 by Tensilica Inc.
11  *
12  * Chris Zankel <chris@zankel.net>
13  * Marc Gauthier <marc@tensilica.com>
14  * Piet Delaney <piet@tensilica.com>
15  */
16
17 #include <asm/bootparam.h>
18 #include <asm/initialize_mmu.h>
19 #include <asm/vectors.h>
20 #include <linux/linkage.h>
21
22         .section        .ResetVector.text, "ax"
23         .global         _ResetVector
24         .global         reset
25
26 _ResetVector:
27         _j _SetupMMU
28
29         .begin  no-absolute-literals
30         .literal_position
31
32 #ifdef CONFIG_PARSE_BOOTPARAM
33         .align 4
34 _bootparam:
35         .short  BP_TAG_FIRST
36         .short  4
37         .long   BP_VERSION
38         .short  BP_TAG_LAST
39         .short  0
40         .long   0
41 #endif
42
43         .align  4
44 _SetupMMU:
45         movi    a0, 0
46         wsr     a0, windowbase
47         rsync
48         movi    a0, 1
49         wsr     a0, windowstart
50         rsync
51         movi    a0, 0x1F
52         wsr     a0, ps
53         rsync
54
55 #ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
56         initialize_mmu
57 #endif
58
59         rsil    a0, XCHAL_DEBUGLEVEL-1
60         rsync
61 reset:
62 #if defined(CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) && \
63         XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY
64         movi    a0, CONFIG_KERNEL_LOAD_ADDRESS
65 #else
66         movi    a0, KERNELOFFSET
67 #endif
68 #ifdef CONFIG_PARSE_BOOTPARAM
69         movi    a2, _bootparam
70 #else
71         movi    a2, 0
72 #endif
73         movi    a3, 0
74         movi    a4, 0
75         jx      a0
76
77         .end    no-absolute-literals