xref: /openbmc/u-boot/arch/arm/mach-imx/imx8m/lowlevel_init.S (revision 522e035441ca04d99de2fc13b614ad896691e9c9)
1*cd357ad1SPeng Fan/* SPDX-License-Identifier: GPL-2.0+ */
2*cd357ad1SPeng Fan/*
3*cd357ad1SPeng Fan * Copyright 2017 NXP
4*cd357ad1SPeng Fan */
5*cd357ad1SPeng Fan
6*cd357ad1SPeng Fan#include <config.h>
7*cd357ad1SPeng Fan
8*cd357ad1SPeng Fan.align 8
9*cd357ad1SPeng Fan.global rom_pointer
10*cd357ad1SPeng Fanrom_pointer:
11*cd357ad1SPeng Fan	.space 256
12*cd357ad1SPeng Fan
13*cd357ad1SPeng Fan/*
14*cd357ad1SPeng Fan * Routine: save_boot_params (called after reset from start.S)
15*cd357ad1SPeng Fan */
16*cd357ad1SPeng Fan
17*cd357ad1SPeng Fan.global save_boot_params
18*cd357ad1SPeng Fansave_boot_params:
19*cd357ad1SPeng Fan	/* The firmware provided ATAG/FDT address can be found in r2/x0 */
20*cd357ad1SPeng Fan	adr	x0, rom_pointer
21*cd357ad1SPeng Fan	stp	x1, x2, [x0], #16
22*cd357ad1SPeng Fan	stp	x3, x4, [x0], #16
23*cd357ad1SPeng Fan	stp	x5, x6, [x0], #16
24*cd357ad1SPeng Fan	stp	x7, x8, [x0], #16
25*cd357ad1SPeng Fan	stp	x9, x10, [x0], #16
26*cd357ad1SPeng Fan	stp	x11, x12, [x0], #16
27*cd357ad1SPeng Fan	stp	x13, x14, [x0], #16
28*cd357ad1SPeng Fan	stp	x15, x16, [x0], #16
29*cd357ad1SPeng Fan	stp	x17, x18, [x0], #16
30*cd357ad1SPeng Fan	stp	x19, x20, [x0], #16
31*cd357ad1SPeng Fan	stp	x21, x22, [x0], #16
32*cd357ad1SPeng Fan	stp	x23, x24, [x0], #16
33*cd357ad1SPeng Fan	stp	x25, x26, [x0], #16
34*cd357ad1SPeng Fan	stp	x27, x28, [x0], #16
35*cd357ad1SPeng Fan	stp	x29, x30, [x0], #16
36*cd357ad1SPeng Fan	mov	x30, sp
37*cd357ad1SPeng Fan	str	x30, [x0], #8
38*cd357ad1SPeng Fan
39*cd357ad1SPeng Fan	/* Returns */
40*cd357ad1SPeng Fan	b	save_boot_params_ret
41*cd357ad1SPeng Fan
42*cd357ad1SPeng Fan.global restore_boot_params
43*cd357ad1SPeng Fanrestore_boot_params:
44*cd357ad1SPeng Fan	adr	x0, rom_pointer
45*cd357ad1SPeng Fan	ldp	x1, x2, [x0], #16
46*cd357ad1SPeng Fan	ldp	x3, x4, [x0], #16
47*cd357ad1SPeng Fan	ldp	x5, x6, [x0], #16
48*cd357ad1SPeng Fan	ldp	x7, x8, [x0], #16
49*cd357ad1SPeng Fan	ldp	x9, x10, [x0], #16
50*cd357ad1SPeng Fan	ldp	x11, x12, [x0], #16
51*cd357ad1SPeng Fan	ldp	x13, x14, [x0], #16
52*cd357ad1SPeng Fan	ldp	x15, x16, [x0], #16
53*cd357ad1SPeng Fan	ldp	x17, x18, [x0], #16
54*cd357ad1SPeng Fan	ldp	x19, x20, [x0], #16
55*cd357ad1SPeng Fan	ldp	x21, x22, [x0], #16
56*cd357ad1SPeng Fan	ldp	x23, x24, [x0], #16
57*cd357ad1SPeng Fan	ldp	x25, x26, [x0], #16
58*cd357ad1SPeng Fan	ldp	x27, x28, [x0], #16
59*cd357ad1SPeng Fan	ldp	x29, x30, [x0], #16
60*cd357ad1SPeng Fan	ldr	x0, [x0]
61*cd357ad1SPeng Fan	mov	sp, x0
62*cd357ad1SPeng Fan	ret
63