1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * Utility functions for FEL mode. 4 * 5 * Copyright (c) 2015 Google, Inc 6 */ 7 8#include <asm-offsets.h> 9#include <config.h> 10#include <asm/system.h> 11#include <linux/linkage.h> 12 13ENTRY(save_boot_params) 14 ldr r0, =fel_stash 15 str sp, [r0, #0] 16 str lr, [r0, #4] 17 mrs lr, cpsr @ Read CPSR 18 str lr, [r0, #8] 19 mrc p15, 0, lr, c1, c0, 0 @ Read CP15 SCTLR Register 20 str lr, [r0, #12] 21 mrc p15, 0, lr, c12, c0, 0 @ Read VBAR 22 str lr, [r0, #16] 23 mrc p15, 0, lr, c1, c0, 0 @ Read CP15 Control Register 24 str lr, [r0, #20] 25 b save_boot_params_ret 26ENDPROC(save_boot_params) 27 28ENTRY(return_to_fel) 29 mov sp, r0 30 mov lr, r1 31 ldr r0, =fel_stash 32 ldr r1, [r0, #20] 33 mcr p15, 0, r1, c1, c0, 0 @ Write CP15 Control Register 34 ldr r1, [r0, #16] 35 mcr p15, 0, r1, c12, c0, 0 @ Write VBAR 36 ldr r1, [r0, #12] 37 mcr p15, 0, r1, c1, c0, 0 @ Write CP15 SCTLR Register 38 ldr r1, [r0, #8] 39 msr cpsr, r1 @ Write CPSR 40 bx lr 41ENDPROC(return_to_fel) 42