blob: 3cfb06e9ca8d06b43946513df3b2867414c2d183 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Andreas Bießmannd7a886b2013-04-18 22:48:50 +00002/*
3 * (C) Copyright 2013
Andreas Bießmann07dafdb2016-05-01 03:46:16 +02004 * Andreas Bießmann <andreas@biessmann.org>
Andreas Bießmannd7a886b2013-04-18 22:48:50 +00005 *
6 * This file consolidates all the different hang() functions implemented in
7 * u-boot.
Andreas Bießmannd7a886b2013-04-18 22:48:50 +00008 */
9
Andreas Bießmannd7a886b2013-04-18 22:48:50 +000010#include <bootstage.h>
Simon Glassf11478f2019-12-28 10:45:07 -070011#include <hang.h>
Tom Rinia877ce12023-12-14 13:16:58 -050012#include <stdio.h>
Simon Glass33b84752019-05-18 11:59:44 -060013#include <os.h>
Andreas Bießmannd7a886b2013-04-18 22:48:50 +000014
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{
Simon Glass60573922018-10-01 12:22:20 -060025#if !defined(CONFIG_SPL_BUILD) || \
26 (CONFIG_IS_ENABLED(LIBCOMMON_SUPPORT) && \
Simon Glassf4d60392021-08-08 12:20:12 -060027 CONFIG_IS_ENABLED(SERIAL))
Andreas Bießmannd7a886b2013-04-18 22:48:50 +000028 puts("### ERROR ### Please RESET the board ###\n");
29#endif
30 bootstage_error(BOOTSTAGE_ID_NEED_RESET);
Simon Glass33b84752019-05-18 11:59:44 -060031 if (IS_ENABLED(CONFIG_SANDBOX))
32 os_exit(1);
Andreas Bießmannd7a886b2013-04-18 22:48:50 +000033 for (;;)
34 ;
35}