xref: /openbmc/linux/arch/arm/mach-socfpga/headsmp.S (revision ee89bd6b)
1/*
2 *  Copyright (c) 2003 ARM Limited
3 *  Copyright (c) u-boot contributors
4 *  Copyright (c) 2012 Pavel Machek <pavel@denx.de>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10#include <linux/linkage.h>
11#include <linux/init.h>
12
13	__CPUINIT
14	.arch	armv7-a
15
16ENTRY(secondary_trampoline)
17	movw	r2, #:lower16:cpu1start_addr
18	movt  r2, #:upper16:cpu1start_addr
19
20	/* The socfpga VT cannot handle a 0xC0000000 page offset when loading
21		the cpu1start_addr, we bit clear it. Tested on HW and VT. */
22	bic	r2, r2, #0x40000000
23
24	ldr	r0, [r2]
25	ldr	r1, [r0]
26	bx	r1
27
28ENTRY(secondary_trampoline_end)
29
30ENTRY(socfpga_secondary_startup)
31       bl      v7_invalidate_l1
32       b       secondary_startup
33ENDPROC(socfpga_secondary_startup)
34