summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Garber <jgarber1@ualberta.ca>2019-07-03 12:38:46 -0600
committerNico Huber <nico.h@gmx.de>2019-07-04 21:45:58 +0000
commitc764fb20122e7f6cb88855d4f671611aeb76df76 (patch)
tree5dc1414a88ba2a94c0d6d0777bde6d1b753f0480
parentb19946cc627b3c027a527bc51cfe2e08ead46b07 (diff)
downloadcoreboot-c764fb20122e7f6cb88855d4f671611aeb76df76.tar.xz
console: Implement j specifier in vtxprintf()
It is occasionally useful to print a uintmax_t or intmax_t, so add support for the j specifier. This also makes defining the PRI* macros in <inttypes.h> simpler. Change-Id: I656e3992029199b48e62a9df2d56f54c34e4e10f Signed-off-by: Jacob Garber <jgarber1@ualberta.ca> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34027 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr>
-rw-r--r--src/console/vtxprintf.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/console/vtxprintf.c b/src/console/vtxprintf.c
index 2d4953d013..b50f3987a5 100644
--- a/src/console/vtxprintf.c
+++ b/src/console/vtxprintf.c
@@ -18,6 +18,7 @@
#include <console/vtxprintf.h>
#include <ctype.h>
#include <string.h>
+#include <stdint.h>
#define call_tx(x) tx_byte(x, data)
@@ -136,7 +137,7 @@ int vtxprintf(void (*tx_byte)(unsigned char byte, void *data),
int field_width; /* width of output field */
int precision; /* min. # of digits for integers; max
number of chars for from string */
- int qualifier; /* 'h', 'H', 'l', or 'L' for integer fields */
+ int qualifier; /* 'h', 'H', 'l', 'L', 'z', or 'j' for integer fields */
int count;
@@ -190,7 +191,7 @@ repeat:
/* get the conversion qualifier */
qualifier = -1;
- if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt == 'z') {
+ if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt == 'z' || *fmt == 'j') {
qualifier = *fmt;
++fmt;
if (*fmt == 'l') {
@@ -291,6 +292,8 @@ repeat:
num = va_arg(args, unsigned long);
} else if (qualifier == 'z') {
num = va_arg(args, size_t);
+ } else if (qualifier == 'j') {
+ num = va_arg(args, uintmax_t);
} else if (qualifier == 'h') {
num = (unsigned short) va_arg(args, int);
if (flags & SIGN)