diff options
author | Simon Glass <sjg@chromium.org> | 2019-10-21 17:26:45 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2019-10-27 10:56:51 -0600 |
commit | 831c1611195961bf79ac55a8deaac9034112ef5f (patch) | |
tree | 2ca660cdba5ebd262c51bda3a3dc74566768df5d /lib/tiny-printf.c | |
parent | dee74e6cc4a94da19b99309ad1c99eb5bddfe217 (diff) | |
download | u-boot-831c1611195961bf79ac55a8deaac9034112ef5f.tar.gz |
tiny-printf: Reorder code to support %p
With a bit of code reordering we can support %p using the existing code
for ulong.
Move the %p code up and adjust the logic accordingly.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'lib/tiny-printf.c')
-rw-r--r-- | lib/tiny-printf.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c index d46d206873..4f7fc239ae 100644 --- a/lib/tiny-printf.c +++ b/lib/tiny-printf.c @@ -157,7 +157,8 @@ static void ip4_addr_string(struct printf_info *info, u8 *addr) * decimal). */ -static void pointer(struct printf_info *info, const char *fmt, void *ptr) +static void __maybe_unused pointer(struct printf_info *info, const char *fmt, + void *ptr) { #ifdef DEBUG unsigned long num = (uintptr_t)ptr; @@ -266,6 +267,21 @@ static int _vprintf(struct printf_info *info, const char *fmt, va_list va) div_out(info, &num, div); } break; + case 'p': +#ifdef DEBUG + pointer(info, fmt, va_arg(va, void *)); + /* + * Skip this because it pulls in _ctype which is + * 256 bytes, and we don't generally implement + * pointer anyway + */ + while (isalnum(fmt[0])) + fmt++; + break; +#else + islong = true; + /* no break */ +#endif case 'x': if (islong) { num = va_arg(va, unsigned long); @@ -287,18 +303,6 @@ static int _vprintf(struct printf_info *info, const char *fmt, va_list va) case 's': p = va_arg(va, char*); break; - case 'p': - pointer(info, fmt, va_arg(va, void *)); - /* - * Skip this because it pulls in _ctype which is - * 256 bytes, and we don't generally implement - * pointer anyway - */ -#ifdef DEBUG - while (isalnum(fmt[0])) - fmt++; -#endif - break; case '%': out(info, '%'); default: |