@@ -365,24 +365,45 @@ void puts(const char *s)
}
}
-int printf(const char *fmt, ...)
+#if defined(CONFIG_BOOT_TRACE)
+int printf_boot_trace(const char *fmt, ...)
{
va_list args;
- uint i;
+ uint i = 0;
char printbuffer[CONFIG_SYS_PBSIZE];
+ char *buf = printbuffer;
+ unsigned long long ticks = get_ticks();
+ uint secs = ticks / get_tbclk();
+ uint msec = ((ticks * 1000000) / get_tbclk()) - (secs * 1000000);
+
+ i += sprintf(buf, "[%5u.%06u] ", secs, msec);
+ buf += i;
va_start(args, fmt);
/* For this to work, printbuffer must be larger than
* anything we ever want to print.
*/
- i = vsprintf(printbuffer, fmt, args);
+ i += vsprintf(buf, fmt, args);
va_end(args);
/* Print the string */
puts(printbuffer);
return i;
}
+#endif
+
+int printf(const char *fmt, ...)
+{
+ va_list args;
+ uint i = 0;
+
+ va_start(args, fmt);
+ i = vprintf(fmt, args);
+ va_end(args);
+
+ return i;
+}
int vprintf(const char *fmt, va_list args)
{
@@ -712,6 +712,8 @@ void puts(const char *s);
int printf(const char *fmt, ...)
__attribute__ ((format (__printf__, 1, 2)));
int vprintf(const char *fmt, va_list args);
+int printf_boot_trace(const char *fmt, ...)
+ __attribute__ ((format (__printf__, 1, 2)));
/* stderr */
#define eputc(c) fputc(stderr, c)