xref: /rk3399_ARM-atf/plat/arm/board/juno/juno_err.c (revision 4da6f6cde3c72bd9786fc20141848c770c84f784)
1*4da6f6cdSSathees Balya /*
2*4da6f6cdSSathees Balya  * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
3*4da6f6cdSSathees Balya  *
4*4da6f6cdSSathees Balya  * SPDX-License-Identifier: BSD-3-Clause
5*4da6f6cdSSathees Balya  */
6*4da6f6cdSSathees Balya 
7*4da6f6cdSSathees Balya #include <arch_helpers.h>
8*4da6f6cdSSathees Balya #include <errno.h>
9*4da6f6cdSSathees Balya #include <platform.h>
10*4da6f6cdSSathees Balya #include <v2m_def.h>
11*4da6f6cdSSathees Balya 
12*4da6f6cdSSathees Balya /*
13*4da6f6cdSSathees Balya  * Juno error handler
14*4da6f6cdSSathees Balya  */
15*4da6f6cdSSathees Balya void __dead2 plat_arm_error_handler(int err)
16*4da6f6cdSSathees Balya {
17*4da6f6cdSSathees Balya 	uint32_t *flags_ptr = (uint32_t *)V2M_SYS_NVFLAGS_ADDR;
18*4da6f6cdSSathees Balya 
19*4da6f6cdSSathees Balya 	/* Propagate the err code in the NV-flags register */
20*4da6f6cdSSathees Balya 	*flags_ptr = err;
21*4da6f6cdSSathees Balya 
22*4da6f6cdSSathees Balya 	/* Loop until the watchdog resets the system */
23*4da6f6cdSSathees Balya 	for (;;)
24*4da6f6cdSSathees Balya 		wfi();
25*4da6f6cdSSathees Balya }
26