1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * (C) Copyright 2013
4 * Andreas Bie��mann <andreas@biessmann.org>
5 *
6 * This file consolidates all the different hang() functions implemented in
7 * u-boot.
8 */
9
10#include <bootstage.h>
11#include <hang.h>
12#include <stdio.h>
13#include <os.h>
14
15/**
16 * hang - stop processing by staying in an endless loop
17 *
18 * The purpose of this function is to stop further execution of code cause
19 * something went completely wrong.  To catch this and give some feedback to
20 * the user one needs to catch the bootstage_error (see show_boot_progress())
21 * in the board code.
22 */
23void hang(void)
24{
25#if !defined(CONFIG_SPL_BUILD) || \
26		(CONFIG_IS_ENABLED(LIBCOMMON_SUPPORT) && \
27		 CONFIG_IS_ENABLED(SERIAL))
28	puts("### ERROR ### Please RESET the board ###\n");
29#endif
30	bootstage_error(BOOTSTAGE_ID_NEED_RESET);
31	if (IS_ENABLED(CONFIG_SANDBOX))
32		os_exit(1);
33	for (;;)
34		;
35}
36