xref: /openbmc/linux/arch/arm/mach-socfpga/headsmp.S (revision c4ee0af3)
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	.arch	armv7-a
14
15ENTRY(secondary_trampoline)
16	movw	r2, #:lower16:cpu1start_addr
17	movt  r2, #:upper16:cpu1start_addr
18
19	/* The socfpga VT cannot handle a 0xC0000000 page offset when loading
20		the cpu1start_addr, we bit clear it. Tested on HW and VT. */
21	bic	r2, r2, #0x40000000
22
23	ldr	r0, [r2]
24	ldr	r1, [r0]
25	bx	r1
26
27ENTRY(secondary_trampoline_end)
28
29ENTRY(socfpga_secondary_startup)
30       bl      v7_invalidate_l1
31       b       secondary_startup
32ENDPROC(socfpga_secondary_startup)
33