mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 21:21:37 +00:00
vsprintf: Add modifier for phys_addr_t
Provide a new modifier to vsprintf() to print phys_addr_t variables to avoid having to cast or #ifdef when printing them out. The %pa modifier is used for this purpose, so phys_addr_t variables need to be passed by reference, like so: phys_addr_t start = 0; printf("start: %pa\n", &start); Depending on the size of phys_addr_t this will print out the address with 8 or 16 hexadecimal digits following a 0x prefix. Signed-off-by: Thierry Reding <treding@nvidia.com> Tested-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
59e890ef7b
commit
1eebd14b79
1 changed files with 14 additions and 2 deletions
|
@ -515,6 +515,8 @@ static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width,
|
||||||
static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||||
int field_width, int precision, int flags)
|
int field_width, int precision, int flags)
|
||||||
{
|
{
|
||||||
|
u64 num = (uintptr_t)ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Being a boot loader, we explicitly allow pointers to
|
* Being a boot loader, we explicitly allow pointers to
|
||||||
* (physical) address null.
|
* (physical) address null.
|
||||||
|
@ -527,6 +529,17 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_NET
|
#ifdef CONFIG_CMD_NET
|
||||||
switch (*fmt) {
|
switch (*fmt) {
|
||||||
|
case 'a':
|
||||||
|
flags |= SPECIAL | ZEROPAD;
|
||||||
|
|
||||||
|
switch (fmt[1]) {
|
||||||
|
case 'p':
|
||||||
|
default:
|
||||||
|
field_width = sizeof(phys_addr_t) * 2 + 2;
|
||||||
|
num = *(phys_addr_t *)ptr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
flags |= SPECIAL;
|
flags |= SPECIAL;
|
||||||
/* Fallthrough */
|
/* Fallthrough */
|
||||||
|
@ -552,8 +565,7 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||||
field_width = 2*sizeof(void *);
|
field_width = 2*sizeof(void *);
|
||||||
flags |= ZEROPAD;
|
flags |= ZEROPAD;
|
||||||
}
|
}
|
||||||
return number(buf, end, (unsigned long)ptr, 16, field_width,
|
return number(buf, end, num, 16, field_width, precision, flags);
|
||||||
precision, flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vsnprintf_internal(char *buf, size_t size, const char *fmt,
|
static int vsnprintf_internal(char *buf, size_t size, const char *fmt,
|
||||||
|
|
Loading…
Add table
Reference in a new issue