diff --git a/litex/soc/software/include/base/stdarg.h b/litex/soc/software/include/base/stdarg.h index 6df509304..08729e47c 100644 --- a/litex/soc/software/include/base/stdarg.h +++ b/litex/soc/software/include/base/stdarg.h @@ -16,6 +16,7 @@ extern "C" { int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); int vscnprintf(char *buf, size_t size, const char *fmt, va_list args); int vsprintf(char *buf, const char *fmt, va_list args); +int vprintf(const char *format, va_list ap); #ifdef __cplusplus } diff --git a/litex/soc/software/libbase/console.c b/litex/soc/software/libbase/console.c index 17274e229..45fbc574e 100644 --- a/litex/soc/software/libbase/console.c +++ b/litex/soc/software/libbase/console.c @@ -64,17 +64,22 @@ void putsnonl(const char *s) #define PRINTF_BUFFER_SIZE 256 -int printf(const char *fmt, ...) +int vprintf(const char *fmt, va_list args) { - va_list args; int len; char outbuf[PRINTF_BUFFER_SIZE]; - - va_start(args, fmt); len = vscnprintf(outbuf, sizeof(outbuf), fmt, args); - va_end(args); outbuf[len] = 0; putsnonl(outbuf); - + return len; +} + +int printf(const char *fmt, ...) +{ + int len; + va_list args; + va_start(args, fmt); + len = vprintf(fmt, args); + va_end(args); return len; }