aboutsummaryrefslogtreecommitdiff
path: root/platform/zynq/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'platform/zynq/start.S')
-rw-r--r--platform/zynq/start.S120
1 files changed, 0 insertions, 120 deletions
diff --git a/platform/zynq/start.S b/platform/zynq/start.S
deleted file mode 100644
index c97c5241..00000000
--- a/platform/zynq/start.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2014-2015 Travis Geiselbrecht
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-#include <asm.h>
-#include <platform/zynq.h>
-
-/* code run at the very beginning of the system, attempting to trap the 2nd cpu */
-FUNCTION(platform_reset)
- /* figure out our cpu number */
- mrc p15, 0, r12, c0, c0, 5 /* MPIDR */
-
- /* mask off the bottom 8 bits to test cpu number */
- ubfx r12, r12, #0, #8
-
- /* if we're the 0th cpu, continue to arm_reset */
- teq r12, #0
- beq arm_reset
-
- /* bump the cpu counter */
- adr r12, __cpu_trapped
- mov r11, #1
- str r11, [r12]
- dsb
-
-#if !WITH_SMP
-0:
- /* stay trapped here forever */
- wfe
- b 0b
-#else
- /* pass on through the reset vector, where the arm arch code will trap the cpu */
- b arm_reset
-#endif
-
-DATA(__cpu_trapped)
- .word 0
-
-#if 0
-/* disabled for now */
-
-/* this code attempts to remap sram to 0xfffc0000 - 0xffffffff and
- branch the cpu into the equivalent spot. Assumes the cpu is running
- at the initial 0 based mapping */
-
-/* a spot of the top bank of OCM memory for us to run our code from
- needs to be below where the second cpu is running (0xffffe00-0xfffffff0) */
-#define TARGET_SPOT 0xfffff800
-
-/* first piece of code run out of the reset vector. use
- to relocate sram to the final location at 0xfffc0000
- and switch to there */
-FUNCTION(platform_reset)
- /* relocate the below code to TARGET_SPOT */
- ldr r8, =TARGET_SPOT
- adr r9, .Lcore_reloc_start
- adr r10, .Lcore_reloc_end
-
-0:
- ldr r12, [r9], #4
- str r12, [r8], #4
- cmp r9, r10
- bne 0b
-
- /* load constants we will need below */
- ldr r8, =SLCR_BASE
- ldr r9, =SCU_CONTROL_BASE
-
- /* calculate the new return address this code will need to branch to */
- adr r12, .Ldone
- add r12, #0xfffc0000
-
- ldr r10, =TARGET_SPOT
- bx r10
-
-.Ldone:
- b arm_reset
-
-.Lcore_reloc_start:
- # use SCLR to map the sram blocks to the top of their segment
- movw r10, #SLCR_UNLOCK_KEY
- str r10, [r8, #SLCR_UNLOCK]
-
- ldr r10, [r8, #OCM_CFG]
- orr r10, #0xf
- str r10, [r8, #OCM_CFG]
-
- movw r10, #SLCR_LOCK_KEY
- str r10, [r8, #SLCR_LOCK]
-
- # tell the SCU to not filter first 1MB
- mov r10, #0
- str r10, [r9, #0x40] /* SCU filter start address */
- dmb
-
- bx r12
-.Lcore_reloc_end:
-
-.ltorg
-#endif
-
-