mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00
fix(intel): handle cold reset via physical reset switch
On the Agilex5 platform when cold reset is issued via CLI application in the OS, it is received in the BL31 via a SMC call and handled accordingly like flush/invalidate the caches. However, when the cold reset is issued via an external switch these handlings are missed. This patch addresses those missed cache operations. Also, this patch is to restoring SCR_EL3 NS bit to its previous value in order to avoid unintended behavior especially if subsequent code expects the SCR_EL3 register to be in its original configuration. Change-Id: I9737f2db649e483ba61fffa6eeb0b56a9d15074a Signed-off-by: Girisha Dengi <girisha.dengi@intel.com> Signed-off-by: Sieu Mun Tang <sieu.mun.tang@intel.com>
This commit is contained in:
parent
9ef62bd88d
commit
bf3877e072
2 changed files with 7 additions and 2 deletions
|
@ -196,6 +196,9 @@ void bl31_plat_arch_setup(void)
|
|||
NOTICE("BL31: CPU ID = %x\n", cpuid);
|
||||
INFO("BL31: Invalidate Data cache\n");
|
||||
invalidate_dcache_all();
|
||||
|
||||
/* Invalidate for NS EL2 and EL1 */
|
||||
invalidate_cache_low_el();
|
||||
}
|
||||
|
||||
/* Get non-secure image entrypoint for BL33. Zephyr and Linux */
|
||||
|
|
|
@ -15,14 +15,16 @@
|
|||
* --------------------------------------------------------
|
||||
*/
|
||||
func invalidate_cache_low_el
|
||||
mrs x0,SCR_EL3
|
||||
orr x1,x0,#SCR_NS_BIT
|
||||
mrs x0, SCR_EL3
|
||||
orr x1, x0, #SCR_NS_BIT
|
||||
msr SCR_EL3, x1
|
||||
isb
|
||||
tlbi ALLE2
|
||||
dsb sy
|
||||
tlbi ALLE1
|
||||
dsb sy
|
||||
msr SCR_EL3, x0
|
||||
isb
|
||||
endfunc invalidate_cache_low_el
|
||||
|
||||
.pushsection .text.asm_dcache_level, "ax"
|
||||
|
|
Loading…
Add table
Reference in a new issue