Peng Fan | 3d6ea86 | 2019-08-26 08:12:09 +0000 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
| 2 | /* |
| 3 | * Copyright 2019 NXP |
| 4 | */ |
| 5 | |
| 6 | #include <config.h> |
| 7 | |
| 8 | .align 8 |
| 9 | .global boot_pointer |
| 10 | boot_pointer: |
| 11 | .space 32 |
| 12 | |
| 13 | /* |
| 14 | * Routine: save_boot_params (called after reset from start.S) |
| 15 | */ |
| 16 | |
| 17 | .global save_boot_params |
| 18 | save_boot_params: |
| 19 | /* The firmware provided ATAG/FDT address can be found in r2/x0 */ |
| 20 | adr x0, boot_pointer |
| 21 | stp x1, x2, [x0], #16 |
| 22 | stp x3, x4, [x0], #16 |
| 23 | |
| 24 | /* |
| 25 | * We use absolute address not PC relative address for return. |
| 26 | * When running SPL on iMX8, the A core starts at address 0, |
| 27 | * an alias to OCRAM 0x100000, our linker address for SPL is |
| 28 | * from 0x100000. So using absolute address can jump to the OCRAM |
| 29 | * address from the alias. The alias only map first 96KB of OCRAM, |
| 30 | * so this require the SPL size can't beyond 96KB. |
| 31 | * But when using SPL DM, the size increase significantly and |
| 32 | * always beyonds 96KB. That's why we have to jump to OCRAM. |
| 33 | * Normal u-boot also runs into this codes, but there is no impact. |
| 34 | */ |
| 35 | ldr x1, =save_boot_params_ret |
| 36 | br x1 |