blob: b6aa85328ac0ccc05936bcf9b477499e7bbbbfe7 [file] [log] [blame]
Max Filippove85e3352012-12-03 15:01:43 +04001/*
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 */
Chris Zankel4bedea92005-06-23 22:01:12 -070016
Chris Zankel4bedea92005-06-23 22:01:12 -070017#include <asm/bootparam.h>
Max Filippove85e3352012-12-03 15:01:43 +040018#include <asm/processor.h>
19#include <asm/pgtable.h>
20#include <asm/page.h>
21#include <asm/cacheasm.h>
22#include <asm/initialize_mmu.h>
Max Filippovccd0ef32014-10-02 22:03:27 +040023#include <asm/vectors.h>
Max Filippove85e3352012-12-03 15:01:43 +040024#include <linux/linkage.h>
Chris Zankel4bedea92005-06-23 22:01:12 -070025
Max Filippove85e3352012-12-03 15:01:43 +040026 .section .ResetVector.text, "ax"
Chris Zankel4bedea92005-06-23 22:01:12 -070027 .global _ResetVector
Max Filippove85e3352012-12-03 15:01:43 +040028 .global reset
29
Chris Zankel4bedea92005-06-23 22:01:12 -070030_ResetVector:
Max Filippove85e3352012-12-03 15:01:43 +040031 _j _SetupMMU
32
33 .begin no-absolute-literals
34 .literal_position
35
Chris Zankel4bedea92005-06-23 22:01:12 -070036 .align 4
37RomInitAddr:
Max Filippova9f2fc62016-04-13 05:20:02 +030038#if defined(CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) && \
39 XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY
40 .word CONFIG_KERNEL_LOAD_ADDRESS
41#else
42 .word KERNELOFFSET
43#endif
Chris Zankel4bedea92005-06-23 22:01:12 -070044RomBootParam:
45 .word _bootparam
Max Filippove85e3352012-12-03 15:01:43 +040046_bootparam:
47 .short BP_TAG_FIRST
48 .short 4
49 .long BP_VERSION
50 .short BP_TAG_LAST
51 .short 0
52 .long 0
53
54 .align 4
55_SetupMMU:
56 movi a0, 0
57 wsr a0, windowbase
58 rsync
59 movi a0, 1
60 wsr a0, windowstart
61 rsync
62 movi a0, 0x1F
63 wsr a0, ps
64 rsync
65
Max Filippove85e3352012-12-03 15:01:43 +040066#ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
67 initialize_mmu
68#endif
69
70 .end no-absolute-literals
71
72 rsil a0, XCHAL_DEBUGLEVEL-1
73 rsync
Chris Zankel4bedea92005-06-23 22:01:12 -070074reset:
75 l32r a0, RomInitAddr
76 l32r a2, RomBootParam
77 movi a3, 0
78 movi a4, 0
79 jx a0