mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	For some reasons shrouded in mystery, the code saving the FEL state was saving the SCTLR register twice, with the second copy trying to justify itself by using its ancient "control register" alias name. Drop the redundant second copy, both from the fel_stash data structure, and also the code saving and restoring it. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Samuel Holland <samuel@sholland.org> Tested-by: Samuel Holland <samuel@sholland.org>
		
			
				
	
	
		
			38 lines
		
	
	
		
			800 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			800 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0+ */
 | 
						|
/*
 | 
						|
 * Utility functions for FEL mode.
 | 
						|
 *
 | 
						|
 * Copyright (c) 2015 Google, Inc
 | 
						|
 */
 | 
						|
 | 
						|
#include <asm-offsets.h>
 | 
						|
#include <config.h>
 | 
						|
#include <asm/system.h>
 | 
						|
#include <linux/linkage.h>
 | 
						|
 | 
						|
ENTRY(save_boot_params)
 | 
						|
	ldr	r0, =fel_stash
 | 
						|
	str	sp, [r0, #0]
 | 
						|
	str	lr, [r0, #4]
 | 
						|
	mrs	lr, cpsr		@ Read CPSR
 | 
						|
	str	lr, [r0, #8]
 | 
						|
	mrc	p15, 0, lr, c1, c0, 0	@ Read CP15 SCTLR Register
 | 
						|
	str	lr, [r0, #12]
 | 
						|
	mrc	p15, 0, lr, c12, c0, 0	@ Read VBAR
 | 
						|
	str	lr, [r0, #16]
 | 
						|
	b	save_boot_params_ret
 | 
						|
ENDPROC(save_boot_params)
 | 
						|
 | 
						|
ENTRY(return_to_fel)
 | 
						|
	mov	sp, r0
 | 
						|
	mov	lr, r1
 | 
						|
	ldr	r0, =fel_stash
 | 
						|
	ldr	r1, [r0, #16]
 | 
						|
	mcr	p15, 0, r1, c12, c0, 0	@ Write VBAR
 | 
						|
	ldr	r1, [r0, #12]
 | 
						|
	mcr	p15, 0, r1, c1, c0, 0	@ Write CP15 SCTLR Register
 | 
						|
	ldr	r1, [r0, #8]
 | 
						|
	msr	cpsr, r1		@ Write CPSR
 | 
						|
	bx	lr
 | 
						|
ENDPROC(return_to_fel)
 |