blob: 287ddbe2815c2efa15b373c749be798b0841231c [file] [log] [blame]
Elyes HAOUASf50b6622020-07-19 14:00:43 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
2
Asami Doif7952422019-06-11 16:01:31 +09003/*
4 * Early initialization code for aarch64 (a.k.a. armv8)
Asami Doif7952422019-06-11 16:01:31 +09005 */
6
7#include <arch/asm.h>
8
9ENTRY(_start)
10 /* Setup CPU. */
11 bl arm64_init_cpu
12
13 /* Get code positions. */
14 ldr x1, =_flash
15 ldr x0, =_bootblock
16
17 /* Calculate bootblock size. */
18 ldr x2, =_ebootblock
19 sub x2, x2, x0
20
21 /* Call memcpy in arch/arm64/memcpy.S */
22 bl memcpy
23 dmb sy
24
25 /* Calculate relocation offset between bootblock in flash and in DRAM. */
Elyes HAOUASfd8de182020-03-31 21:42:02 +020026 ldr x0, =_flash
Asami Doif7952422019-06-11 16:01:31 +090027 ldr x1, =_bootblock
28 sub x1, x1, x0
29
30 /* Jump to main() in DRAM. */
31 adr x0, main
32 add x0, x0, x1
33 blr x0
34ENDPROC(_start)