/*1* Xtensa Secondary Processors startup code.2*3* This file is subject to the terms and conditions of the GNU General Public4* License. See the file "COPYING" in the main directory of this archive5* for more details.6*7* Copyright (C) 2001 - 2013 Tensilica Inc.8*9* Joe Taylor <[email protected]>10* Chris Zankel <[email protected]>11* Marc Gauthier <[email protected], [email protected]>12* Pete Delaney <[email protected]>13*/1415#include <linux/linkage.h>1617#include <asm/cacheasm.h>18#include <asm/initialize_mmu.h>19#include <asm/mxregs.h>20#include <asm/regs.h>212223.section .SecondaryResetVector.text, "ax"242526ENTRY(_SecondaryResetVector)27_j _SetupOCD2829.begin no-absolute-literals30.literal_position3132_SetupOCD:33/*34* Initialize WB, WS, and clear PS.EXCM (to allow loop instructions).35* Set Interrupt Level just below XCHAL_DEBUGLEVEL to allow36* xt-gdb to single step via DEBUG exceptions received directly37* by ocd.38*/39#if XCHAL_HAVE_WINDOWED40movi a1, 141movi a0, 042wsr a1, windowstart43wsr a0, windowbase44rsync45#endif4647movi a1, LOCKLEVEL48wsr a1, ps49rsync5051_SetupMMU:52#ifdef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX53initialize_mmu54#endif5556/*57* Start Secondary Processors with NULL pointer to boot params.58*/59movi a2, 0 # a2 == NULL60movi a3, _startup61jx a36263.end no-absolute-literals646566