summaryrefslogtreecommitdiff
path: root/lib/tiny-printf.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-10-21 17:26:45 -0600
committerSimon Glass <sjg@chromium.org>2019-10-27 10:56:51 -0600
commit831c1611195961bf79ac55a8deaac9034112ef5f (patch)
tree2ca660cdba5ebd262c51bda3a3dc74566768df5d /lib/tiny-printf.c
parentdee74e6cc4a94da19b99309ad1c99eb5bddfe217 (diff)
downloadu-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.c30
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: