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 <[email protected]>
- * Marc Gauthier <[email protected]>
- * Piet Delaney <[email protected]>
- */
- #include <asm/bootparam.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
- #ifdef CONFIG_PARSE_BOOTPARAM
- .align 4
- _bootparam:
- .short BP_TAG_FIRST
- .short 4
- .long BP_VERSION
- .short BP_TAG_LAST
- .short 0
- .long 0
- #endif
- .align 4
- _SetupMMU:
- #if XCHAL_HAVE_WINDOWED
- movi a0, 0
- wsr a0, windowbase
- rsync
- movi a0, 1
- wsr a0, windowstart
- rsync
- #endif
- movi a0, 0x1F
- wsr a0, ps
- rsync
- #ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
- initialize_mmu
- #endif
- rsil a0, XCHAL_DEBUGLEVEL-1
- rsync
- reset:
- #if defined(CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) && \
- XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY
- movi a0, CONFIG_KERNEL_LOAD_ADDRESS
- #else
- movi a0, KERNELOFFSET
- #endif
- #ifdef CONFIG_PARSE_BOOTPARAM
- movi a2, _bootparam
- #else
- movi a2, 0
- #endif
- movi a3, 0
- movi a4, 0
- jx a0
- .end no-absolute-literals
|