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