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