Browse Source

lib: Split panic functions out of vsprintf.c

To allow panic and panic_str to still be used when using tiny-printf,
split them out into their own file which gets build regardless of what
printf implementation is used.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
scm-imx_v2016.03_4.1.15_2.0.0_ga
Sjoerd Simons 5 years ago
committed by Simon Glass
parent
commit
2b22a99c65
3 changed files with 48 additions and 32 deletions
  1. +3
    -3
      lib/Makefile
  2. +45
    -0
      lib/panic.c
  3. +0
    -29
      lib/vsprintf.c

+ 3
- 3
lib/Makefile View File

@ -85,13 +85,13 @@ obj-$(CONFIG_LIB_RAND) += rand.o
ifdef CONFIG_SPL_BUILD
# SPL U-Boot may use full-printf, tiny-printf or none at all
ifdef CONFIG_USE_TINY_PRINTF
obj-$(CONFIG_SPL_SERIAL_SUPPORT) += tiny-printf.o
obj-$(CONFIG_SPL_SERIAL_SUPPORT) += tiny-printf.o panic.o
else
obj-$(CONFIG_SPL_SERIAL_SUPPORT) += vsprintf.o
obj-$(CONFIG_SPL_SERIAL_SUPPORT) += vsprintf.o panic.o
endif
else
# Main U-Boot always uses the full printf support
obj-y += vsprintf.o
obj-y += vsprintf.o panic.o
endif
subdir-ccflags-$(CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED) += -O2

+ 45
- 0
lib/panic.c View File

@ -0,0 +1,45 @@
/*
* linux/lib/vsprintf.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/
/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
/*
* Wirzenius wrote this portably, Torvalds fucked it up :-)
*/
#include <common.h>
#if !defined(CONFIG_PANIC_HANG)
#include <command.h>
#endif
static void panic_finish(void) __attribute__ ((noreturn));
static void panic_finish(void)
{
putc('\n');
#if defined(CONFIG_PANIC_HANG)
hang();
#else
udelay(100000); /* allow messages to go out */
do_reset(NULL, 0, 0, NULL);
#endif
while (1)
;
}
void panic_str(const char *str)
{
puts(str);
panic_finish();
}
void panic(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
panic_finish();
}

+ 0
- 29
lib/vsprintf.c View File

@ -897,35 +897,6 @@ int vprintf(const char *fmt, va_list args)
return i;
}
static void panic_finish(void) __attribute__ ((noreturn));
static void panic_finish(void)
{
putc('\n');
#if defined(CONFIG_PANIC_HANG)
hang();
#else
udelay(100000); /* allow messages to go out */
do_reset(NULL, 0, 0, NULL);
#endif
while (1)
;
}
void panic_str(const char *str)
{
puts(str);
panic_finish();
}
void panic(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
panic_finish();
}
void __assert_fail(const char *assertion, const char *file, unsigned line,
const char *function)


Loading…
Cancel
Save