summaryrefslogtreecommitdiff
path: root/lib/vsprintf.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-10-14 12:48:07 -0600
committerTom Rini <trini@konsulko.com>2021-11-11 19:02:34 -0500
commit4a255ea3b65e7793eea97a90ad00dc2b59889683 (patch)
tree3d61765cb89672ba2cdab07ec363ca627827aeb0 /lib/vsprintf.c
parent3bfb0f719a196558f909ca568f3803f86a190509 (diff)
downloadu-boot-4a255ea3b65e7793eea97a90ad00dc2b59889683.tar.gz
lib: Add a function to convert a string to a hex value
Add an xtoa() function, similar to itoa() but for hex instead. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Artem Lapkin <email2tema@gmail.com> Tested-by: Artem Lapkin <email2tema@gmail.com>
Diffstat (limited to 'lib/vsprintf.c')
-rw-r--r--lib/vsprintf.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index d7ee35b477..e634bd70b6 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -816,11 +816,12 @@ int vprintf(const char *fmt, va_list args)
}
#endif
+static char local_toa[22];
+
char *simple_itoa(ulong i)
{
/* 21 digits plus null terminator, good for 64-bit or smaller ints */
- static char local[22];
- char *p = &local[21];
+ char *p = &local_toa[21];
*p-- = '\0';
do {
@@ -830,6 +831,21 @@ char *simple_itoa(ulong i)
return p + 1;
}
+char *simple_xtoa(ulong num)
+{
+ /* 16 digits plus nul terminator, good for 64-bit or smaller ints */
+ char *p = &local_toa[17];
+
+ *--p = '\0';
+ do {
+ p -= 2;
+ hex_byte_pack(p, num & 0xff);
+ num >>= 8;
+ } while (num > 0);
+
+ return p;
+}
+
/* We don't seem to have %'d in U-Boot */
void print_grouped_ull(unsigned long long int_val, int digits)
{