12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*
- * 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
|