| /* |
| * 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> |
| |
| __CPUINIT |
| .arch armv7-a |
| |
| ENTRY(secondary_trampoline) |
| movw r2, #:lower16:cpu1start_addr |
| movt r2, #:upper16:cpu1start_addr |
| |
| /* The socfpga VT cannot handle a 0xC0000000 page offset when loading |
| the cpu1start_addr, we bit clear it. Tested on HW and VT. */ |
| bic r2, r2, #0x40000000 |
| |
| ldr r0, [r2] |
| ldr r1, [r0] |
| bx r1 |
| |
| ENTRY(secondary_trampoline_end) |
| |
| ENTRY(socfpga_secondary_startup) |
| bl v7_invalidate_l1 |
| b secondary_startup |
| ENDPROC(socfpga_secondary_startup) |