• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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