1*d2eae43bSAndreas Bießmann /* 2*d2eae43bSAndreas Bießmann * (C) Copyright 2013 3*d2eae43bSAndreas Bießmann * Andreas Bießmann <andreas.devel@googlemail.com> 4*d2eae43bSAndreas Bießmann * 5*d2eae43bSAndreas Bießmann * This file consolidates all the different hang() functions implemented in 6*d2eae43bSAndreas Bießmann * u-boot. 7*d2eae43bSAndreas Bießmann * 8*d2eae43bSAndreas Bießmann * See file CREDITS for list of people who contributed to this 9*d2eae43bSAndreas Bießmann * project. 10*d2eae43bSAndreas Bießmann * 11*d2eae43bSAndreas Bießmann * This program is free software; you can redistribute it and/or 12*d2eae43bSAndreas Bießmann * modify it under the terms of the GNU General Public License as 13*d2eae43bSAndreas Bießmann * published by the Free Software Foundation; either version 2 of 14*d2eae43bSAndreas Bießmann * the License, or (at your option) any later version. 15*d2eae43bSAndreas Bießmann * 16*d2eae43bSAndreas Bießmann * This program is distributed in the hope that it will be useful, 17*d2eae43bSAndreas Bießmann * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*d2eae43bSAndreas Bießmann * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*d2eae43bSAndreas Bießmann * GNU General Public License for more details. 20*d2eae43bSAndreas Bießmann * 21*d2eae43bSAndreas Bießmann * You should have received a copy of the GNU General Public License 22*d2eae43bSAndreas Bießmann * along with this program; if not, write to the Free Software 23*d2eae43bSAndreas Bießmann * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 24*d2eae43bSAndreas Bießmann * MA 02111-1307 USA 25*d2eae43bSAndreas Bießmann */ 26*d2eae43bSAndreas Bießmann 27*d2eae43bSAndreas Bießmann #include <common.h> 28*d2eae43bSAndreas Bießmann #include <bootstage.h> 29*d2eae43bSAndreas Bießmann 30*d2eae43bSAndreas Bießmann /** 31*d2eae43bSAndreas Bießmann * hang - stop processing by staying in an endless loop 32*d2eae43bSAndreas Bießmann * 33*d2eae43bSAndreas Bießmann * The purpose of this function is to stop further execution of code cause 34*d2eae43bSAndreas Bießmann * something went completely wrong. To catch this and give some feedback to 35*d2eae43bSAndreas Bießmann * the user one needs to catch the bootstage_error (see show_boot_progress()) 36*d2eae43bSAndreas Bießmann * in the board code. 37*d2eae43bSAndreas Bießmann */ 38*d2eae43bSAndreas Bießmann void hang(void) 39*d2eae43bSAndreas Bießmann { 40*d2eae43bSAndreas Bießmann #if !defined(CONFIG_SPL_BUILD) || (defined(CONFIG_SPL_LIBCOMMON_SUPPORT) && \ 41*d2eae43bSAndreas Bießmann defined(CONFIG_SPL_SERIAL_SUPPORT)) 42*d2eae43bSAndreas Bießmann puts("### ERROR ### Please RESET the board ###\n"); 43*d2eae43bSAndreas Bießmann #endif 44*d2eae43bSAndreas Bießmann bootstage_error(BOOTSTAGE_ID_NEED_RESET); 45*d2eae43bSAndreas Bießmann for (;;) 46*d2eae43bSAndreas Bießmann ; 47*d2eae43bSAndreas Bießmann } 48