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.
36 lines
948 B
36 lines
948 B
/* |
|
* Copyright (c) 2003 ARM Limited |
|
* Copyright (c) u-boot contributors |
|
* Copyright (c) 2012 Pavel Machek <pavel@denx.de> |
|
* |
|
* This program is free software; you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License version 2 as |
|
* published by the Free Software Foundation. |
|
*/ |
|
#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)
|
|
|