]> git.sur5r.net Git - u-boot/blob - arch/arm/cpu/armv7/sunxi/fel_utils.S
b2310751d9d2e47b1a4579260f2cd3830a1dfe22
[u-boot] / arch / arm / cpu / armv7 / sunxi / fel_utils.S
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
13 ENTRY(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
26 ENDPROC(save_boot_params)
27
28 ENTRY(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
41 ENDPROC(return_to_fel)