1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /* SPDX-License-Identifier: GPL-2.0+ */
- /*
- * Utility functions for FEL mode.
- *
- * Copyright (c) 2015 Google, Inc
- */
- #include <asm-offsets.h>
- #include <config.h>
- #include <asm/system.h>
- #include <linux/linkage.h>
- ENTRY(save_boot_params)
- ldr r0, =fel_stash
- str sp, [r0, #0]
- str lr, [r0, #4]
- mrs lr, cpsr @ Read CPSR
- str lr, [r0, #8]
- mrc p15, 0, lr, c1, c0, 0 @ Read CP15 SCTLR Register
- str lr, [r0, #12]
- mrc p15, 0, lr, c12, c0, 0 @ Read VBAR
- str lr, [r0, #16]
- mrc p15, 0, lr, c1, c0, 0 @ Read CP15 Control Register
- str lr, [r0, #20]
- b save_boot_params_ret
- ENDPROC(save_boot_params)
- ENTRY(return_to_fel)
- mov sp, r0
- mov lr, r1
- ldr r0, =fel_stash
- ldr r1, [r0, #20]
- mcr p15, 0, r1, c1, c0, 0 @ Write CP15 Control Register
- ldr r1, [r0, #16]
- mcr p15, 0, r1, c12, c0, 0 @ Write VBAR
- ldr r1, [r0, #12]
- mcr p15, 0, r1, c1, c0, 0 @ Write CP15 SCTLR Register
- ldr r1, [r0, #8]
- msr cpsr, r1 @ Write CPSR
- bx lr
- ENDPROC(return_to_fel)
|