forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
802 B
33 lines
802 B
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* Copyright (c) 2003 ARM Limited |
|
* Copyright (c) u-boot contributors |
|
* Copyright (c) 2012 Pavel Machek <pavel@denx.de> |
|
*/ |
|
#include <linux/linkage.h> |
|
#include <linux/init.h> |
|
#include <asm/memory.h> |
|
#include <asm/assembler.h> |
|
|
|
.arch armv7-a |
|
.arm |
|
|
|
ENTRY(secondary_trampoline) |
|
/* CPU1 will always fetch from 0x0 when it is brought out of reset. |
|
* Thus, we can just subtract the PAGE_OFFSET to get the physical |
|
* address of &cpu1start_addr. This would not work for platforms |
|
* where the physical memory does not start at 0x0. |
|
*/ |
|
ARM_BE8(setend be) |
|
adr r0, 1f |
|
ldmia r0, {r1, r2} |
|
sub r2, r2, #PAGE_OFFSET |
|
ldr r3, [r2] |
|
ldr r4, [r3] |
|
ARM_BE8(rev r4, r4) |
|
bx r4 |
|
|
|
.align |
|
1: .long . |
|
.long socfpga_cpu1start_addr |
|
ENTRY(secondary_trampoline_end)
|
|
|