
On 08/14/2012 01:40 PM, Jeroen Hofstee wrote:
Several omap boards won't build when DEBUG is defined, SPL build error: "vsprintf.c:791: undefined reference to `do_reset'", since SPL has no commands. Therefore don't call do_reset in SPL. SPL panic will end in an endless loop or call hang if CONFIG_PANIC_HANG is defined.
cc: Tom Rini trini@ti.com Signed-off-by: Jeroen Hofstee jhofstee@victronenergy.com
lib/vsprintf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index e38a4b7..4fa392d 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -18,7 +18,7 @@ #include <errno.h>
#include <common.h> -#if !defined (CONFIG_PANIC_HANG) +#if !defined(CONFIG_PANIC_HANG) && !defined(CONFIG_SPL_BUILD) #include <command.h> #endif
@@ -786,7 +786,7 @@ void panic(const char *fmt, ...) va_end(args); #if defined (CONFIG_PANIC_HANG) hang(); -#else +#elif !defined(CONFIG_SPL_BUILD) udelay (100000); /* allow messages to go out */ do_reset (NULL, 0, 0, NULL); #endif
Thinking about this more. The point is that today, no one that does SPL has reset ability. I would like to see this changed, slightly. Lets do: #if defined(CONFIG_PANIC_HANG) || defined(CONFIG_SPL_BUILD) #if defined(CONFIG_SPL_BUILD) puts("hanging\n"); #endif hang(); #else ...
And no need to not include command.h I think. This makes it clear that a panic results in hang in SPL so that in the future, should someone depend on other behavior it's at least saying why we aren't resetting which is my concern.