Message ID | 1415842036-28471-2-git-send-email-sjg@chromium.org |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
Hi Simon, Thanks for taking this over. Besides the three small nitpicks (which aren't really blockers, so feel free to ignore) this looks like what I would've done had I respun the series. Thierry
On 17 November 2014 10:18, Thierry Reding <treding@nvidia.com> wrote: > Hi Simon, > > Thanks for taking this over. Besides the three small nitpicks (which > aren't really blockers, so feel free to ignore) this looks like what I > would've done had I respun the series. Great - thanks for going through this. - Simon
On Wed, Nov 12, 2014 at 06:26:47PM -0700, Simon Glass wrote: > From: Thierry Reding <treding@nvidia.com> > > 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> Applied to u-boot/master, thanks!
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index b585713..6b5a1e9 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -518,6 +518,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, int field_width, int precision, int flags) { + u64 num = (uintptr_t)ptr; + /* * Being a boot loader, we explicitly allow pointers to * (physical) address null. @@ -530,6 +532,17 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, #ifdef CONFIG_CMD_NET 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': flags |= SPECIAL; /* Fallthrough */ @@ -555,8 +568,7 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, field_width = 2*sizeof(void *); flags |= ZEROPAD; } - return number(buf, end, (unsigned long)ptr, 16, field_width, - precision, flags); + return number(buf, end, num, 16, field_width, precision, flags); } static int vsnprintf_internal(char *buf, size_t size, const char *fmt,