/*
 * arch/xtensa/boot/boot-elf/bootstrap.S
 *
 * Low-level exception handling
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 2004 - 2013 by Tensilica Inc.
 *
 * Chris Zankel <chris@zankel.net>
 * Marc Gauthier <marc@tensilica.com>
 * Piet Delaney <piet@tensilica.com>
 */

#include <asm/bootparam.h>
#include <asm/processor.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/cacheasm.h>
#include <asm/initialize_mmu.h>
#include <asm/vectors.h>
#include <linux/linkage.h>

	.section	.ResetVector.text, "ax"
	.global         _ResetVector
	.global         reset

_ResetVector:
	_j _SetupMMU

	.begin  no-absolute-literals
	.literal_position

	.align 4
RomInitAddr:
	.word	LOAD_MEMORY_ADDRESS
RomBootParam:
	.word _bootparam
_bootparam:
	.short	BP_TAG_FIRST
	.short	4
	.long	BP_VERSION
	.short	BP_TAG_LAST
	.short	0
	.long	0

	.align  4
_SetupMMU:
	movi	a0, 0
	wsr	a0, windowbase
	rsync
	movi	a0, 1
	wsr	a0, windowstart
	rsync
	movi	a0, 0x1F
	wsr	a0, ps
	rsync

	Offset = _SetupMMU - _ResetVector

#ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
	initialize_mmu
#endif

	.end    no-absolute-literals

	rsil    a0, XCHAL_DEBUGLEVEL-1
	rsync
reset:
	l32r    a0, RomInitAddr
	l32r	a2, RomBootParam
	movi	a3, 0
	movi	a4, 0
	jx      a0

#ifdef CONFIG_MMU
	.align 4

	.section	.ResetVector.remapped_text, "x"
	.global         _RemappedResetVector

	/* Do org before literals */
	.org 0

_RemappedResetVector:
	.begin  no-absolute-literals
	.literal_position

	_j	_RemappedSetupMMU

	/* Position Remapped code at the same location as the original code */
	. = _RemappedResetVector + Offset

_RemappedSetupMMU:
#ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
	initialize_mmu
#endif

	.end    no-absolute-literals
#endif
