/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright 2017 NXP */ #include .align 4 .global rom_pointer rom_pointer: .space 256 /* * Routine: save_boot_params (called after reset from start.S) */ .global save_boot_params save_boot_params: /* The firmware provided ATAG/FDT address can be found in r2/x0 */ adr x0, rom_pointer stp x1, x2, [x0], #16 stp x3, x4, [x0], #16 stp x5, x6, [x0], #16 stp x7, x8, [x0], #16 stp x9, x10, [x0], #16 stp x11, x12, [x0], #16 stp x13, x14, [x0], #16 stp x15, x16, [x0], #16 stp x17, x18, [x0], #16 stp x19, x20, [x0], #16 stp x21, x22, [x0], #16 stp x23, x24, [x0], #16 stp x25, x26, [x0], #16 stp x27, x28, [x0], #16 stp x29, x30, [x0], #16 mov x30, sp str x30, [x0], #8 /* Returns */ b save_boot_params_ret .global restore_boot_params restore_boot_params: adr x0, rom_pointer ldp x1, x2, [x0], #16 ldp x3, x4, [x0], #16 ldp x5, x6, [x0], #16 ldp x7, x8, [x0], #16 ldp x9, x10, [x0], #16 ldp x11, x12, [x0], #16 ldp x13, x14, [x0], #16 ldp x15, x16, [x0], #16 ldp x17, x18, [x0], #16 ldp x19, x20, [x0], #16 ldp x21, x22, [x0], #16 ldp x23, x24, [x0], #16 ldp x25, x26, [x0], #16 ldp x27, x28, [x0], #16 ldp x29, x30, [x0], #16 ldr x0, [x0] mov sp, x0 ret .global armv8_el2_to_aarch32 armv8_el2_to_aarch32: cmp x0, #0 bne 0f mov x3, x2 mov x2, x1 mov x1, x4 ldr x0, =0xc20000fd 0: smc #0 ret