(uart): kprintf_internals improvements

This commit is contained in:
Liam Kerr 2026-02-12 23:53:59 +00:00
parent 225e44bbdc
commit b5788b01cd

View file

@ -137,6 +137,7 @@ void kprintf_internal(const char *format, va_list args)
if (*p == '%') if (*p == '%')
{ {
p++; p++;
if(*p == '\0') break;
switch (*p) switch (*p)
{ {
case 'c': case 'c':
@ -148,6 +149,7 @@ void kprintf_internal(const char *format, va_list args)
case 's': case 's':
{ {
char *s = va_arg(args, char *); char *s = va_arg(args, char *);
if (!s) s = "(null)";
kprint(s); kprint(s);
break; break;
} }
@ -157,6 +159,12 @@ void kprintf_internal(const char *format, va_list args)
kprint_int(d); kprint_int(d);
break; break;
} }
case 'u':
{
unsigned int u = va_arg(args, unsigned int);
kprint_int((int)u);
break;
}
case 'f': case 'f':
{ {
double f = va_arg(args, double); double f = va_arg(args, double);
@ -166,7 +174,11 @@ void kprintf_internal(const char *format, va_list args)
case 'x': // Hex case 'x': // Hex
case 'p': // Pointer case 'p': // Pointer
{ {
uint64_t x = va_arg(args, uint64_t); #if UINTPTR_MAX == 0xffffffffULL
unsigned int x = va_arg(args, unsigned int);
#else
uint64_t x = va_arg(args, uint64_t);
#endif
kprint_hex(x); kprint_hex(x);
break; break;
} }