Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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#if XCHAL_HAVE_WINDOWED
46 movi a0, 0
47 wsr a0, windowbase
48 rsync
49 movi a0, 1
50 wsr a0, windowstart
51 rsync
52#endif
53 movi a0, 0x1F
54 wsr a0, ps
55 rsync
56
57#ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
58 initialize_mmu
59#endif
60
61 rsil a0, XCHAL_DEBUGLEVEL-1
62 rsync
63reset:
64#if defined(CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) && \
65 XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY
66 movi a0, CONFIG_KERNEL_LOAD_ADDRESS
67#else
68 movi a0, KERNELOFFSET
69#endif
70#ifdef CONFIG_PARSE_BOOTPARAM
71 movi a2, _bootparam
72#else
73 movi a2, 0
74#endif
75 movi a3, 0
76 movi a4, 0
77 jx a0
78
79 .end no-absolute-literals