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>
This commit is contained in:
parent
b19946cc62
commit
c764fb2012
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue