soc/intel/ptl: Update ME specification version to 21
[coreboot.git] / src / mainboard / emulation / qemu-sbsa / bootblock_custom.S
blobc05afed5ff29713d8202635738b29942142ea081
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /*
4  * Early initialization code for sbsa-ref machine
5  */
7 #include <arch/asm.h>
9 ENTRY(_start)
11         /* TF-A arg which contains a pointer to fdt */
12         ldr     x1, =_fdt_pointer
13         str     x0, [x1]
15         /* Setup CPU. */
16         /* bl      arm64_init_cpu */
18         /* ==== stack init from arm64_init_cpu ==== */
20         msr SPSel, #0 /* use SP_EL0 */
22         ldr     x2, =0xdeadbeefdeadbeef
23         ldr     x0, =_stack
24         ldr     x1, =_estack
26         stp     x2, x2, [x0], #16
27         cmp     x0, x1
28         bne     1b
30         sub     sp, x0, #16
32         /* ==== END ==== */
34         /* Get code positions. */
35         ldr     x1, =_flash
36         ldr     x0, =_bootblock
38         /* Calculate bootblock size. */
39         ldr     x2, =_ebootblock
40         sub     x2, x2, x0
42         /* Call memcpy in arch/arm64/memcpy.S */
43         bl      memcpy
44         dmb     sy
46         /* Calculate relocation offset between bootblock in flash and in DRAM. */
47         ldr     x0, =_flash
48         ldr     x1, =_bootblock
49         sub     x1, x1, x0
51         /* Jump to main() in DRAM. */
52         adr     x0, main
53         add     x0, x0, x1
54         blr     x0
55 ENDPROC(_start)