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