mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 03:15:00 +00:00
efi_selftest: enable printing hexadecimal numbers
Add code to use %x in efi_st_print(). Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
e2aff337ed
commit
9487683821
1 changed files with 22 additions and 13 deletions
|
@ -44,26 +44,29 @@ static void mac(void *pointer, u16 **buf)
|
|||
}
|
||||
|
||||
/*
|
||||
* Print a pointer to an u16 string
|
||||
* printx() - print hexadecimal number to an u16 string
|
||||
*
|
||||
* @pointer: pointer
|
||||
* @buf: pointer to buffer address
|
||||
* @prec: minimum number of digits to print
|
||||
* @buf: pointer to buffer address,
|
||||
* on return position of terminating zero word
|
||||
* @size: size of value to be printed in bytes
|
||||
*/
|
||||
static void pointer(void *pointer, u16 **buf)
|
||||
static void printx(u64 p, int prec, u16 **buf)
|
||||
{
|
||||
int i;
|
||||
u16 c;
|
||||
uintptr_t p = (uintptr_t)pointer;
|
||||
u16 *pos = *buf;
|
||||
|
||||
for (i = 8 * sizeof(p) - 4; i >= 0; i -= 4) {
|
||||
c = (p >> i) & 0x0f;
|
||||
for (i = 2 * sizeof(p) - 1; i >= 0; --i) {
|
||||
c = (p >> (4 * i)) & 0x0f;
|
||||
if (c || pos != *buf || !i || i < prec) {
|
||||
c += '0';
|
||||
if (c > '9')
|
||||
c += 'a' - '9' - 1;
|
||||
*pos++ = c;
|
||||
}
|
||||
}
|
||||
*pos = 0;
|
||||
*buf = pos;
|
||||
}
|
||||
|
@ -212,7 +215,9 @@ void efi_st_printc(int color, const char *fmt, ...)
|
|||
break;
|
||||
default:
|
||||
--c;
|
||||
pointer(va_arg(args, void*), &pos);
|
||||
printx((uintptr_t)va_arg(args, void *),
|
||||
2 * sizeof(void *), &pos);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
|
@ -223,6 +228,10 @@ void efi_st_printc(int color, const char *fmt, ...)
|
|||
case 'u':
|
||||
uint2dec(va_arg(args, u32), prec, &pos);
|
||||
break;
|
||||
case 'x':
|
||||
printx((u64)va_arg(args, unsigned int),
|
||||
prec, &pos);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue