xref: /rk3399_rockchip-uboot/arch/arm/cpu/armv7/sunxi/fel_utils.S (revision b9cb64825b5e6efeb715abd8b48d9b12f98973e9)
1942cb0b6SSimon Glass/*
2942cb0b6SSimon Glass * Utility functions for FEL mode.
3942cb0b6SSimon Glass *
4942cb0b6SSimon Glass * Copyright (c) 2015 Google, Inc
5942cb0b6SSimon Glass *
6942cb0b6SSimon Glass * SPDX-License-Identifier:	GPL-2.0+
7942cb0b6SSimon Glass */
8942cb0b6SSimon Glass
9942cb0b6SSimon Glass#include <asm-offsets.h>
10942cb0b6SSimon Glass#include <config.h>
11942cb0b6SSimon Glass#include <asm/system.h>
12942cb0b6SSimon Glass#include <linux/linkage.h>
13942cb0b6SSimon Glass
14942cb0b6SSimon GlassENTRY(save_boot_params)
15942cb0b6SSimon Glass	ldr	r0, =fel_stash
16942cb0b6SSimon Glass	str	sp, [r0, #0]
17942cb0b6SSimon Glass	str	lr, [r0, #4]
18*840fe95cSSiarhei Siamashka	mrs	lr, cpsr		@ Read CPSR
19*840fe95cSSiarhei Siamashka	str	lr, [r0, #8]
20*840fe95cSSiarhei Siamashka	mrc	p15, 0, lr, c1, c0, 0	@ Read CP15 SCTLR Register
21*840fe95cSSiarhei Siamashka	str	lr, [r0, #12]
22*840fe95cSSiarhei Siamashka	mrc	p15, 0, lr, c12, c0, 0	@ Read VBAR
23*840fe95cSSiarhei Siamashka	str	lr, [r0, #16]
24*840fe95cSSiarhei Siamashka	mrc	p15, 0, lr, c1, c0, 0	@ Read CP15 Control Register
25*840fe95cSSiarhei Siamashka	str	lr, [r0, #20]
26942cb0b6SSimon Glass	b	save_boot_params_ret
27942cb0b6SSimon GlassENDPROC(save_boot_params)
28942cb0b6SSimon Glass
29942cb0b6SSimon GlassENTRY(return_to_fel)
30942cb0b6SSimon Glass	mov	sp, r0
31942cb0b6SSimon Glass	mov	lr, r1
32*840fe95cSSiarhei Siamashka	ldr	r0, =fel_stash
33*840fe95cSSiarhei Siamashka	ldr	r1, [r0, #20]
34*840fe95cSSiarhei Siamashka	mcr	p15, 0, r1, c1, c0, 0	@ Write CP15 Control Register
35*840fe95cSSiarhei Siamashka	ldr	r1, [r0, #16]
36*840fe95cSSiarhei Siamashka	mcr	p15, 0, r1, c12, c0, 0	@ Write VBAR
37*840fe95cSSiarhei Siamashka	ldr	r1, [r0, #12]
38*840fe95cSSiarhei Siamashka	mcr	p15, 0, r1, c1, c0, 0	@ Write CP15 SCTLR Register
39*840fe95cSSiarhei Siamashka	ldr	r1, [r0, #8]
40*840fe95cSSiarhei Siamashka	msr	cpsr, r1		@ Write CPSR
41942cb0b6SSimon Glass	bx	lr
42942cb0b6SSimon GlassENDPROC(return_to_fel)
43