80 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * 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:
 | |
| #if defined(CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) && \
 | |
| 	XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY
 | |
| 	.word	CONFIG_KERNEL_LOAD_ADDRESS
 | |
| #else
 | |
| 	.word	KERNELOFFSET
 | |
| #endif
 | |
| 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
 | |
| 
 | |
| #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
 |