commit 8914ac6680f7b0c655d3886719c8efd6832c60c4
parent 0314dcdbf19d535f116c7c84ba78dddfbc79f6b9
Author: Brian Swetland <swetland@frotz.net>
Date: Tue, 31 Dec 2013 11:26:07 -0800
correctly print 64bit pointers (%p) in cprintf()
Diffstat:
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/kernel/console.c b/kernel/console.c
@@ -25,10 +25,18 @@ static struct {
int locking;
} cons;
+static char digits[] = "0123456789abcdef";
+
+static void
+printptr(uintp x) {
+ int i;
+ for (i = 0; i < (sizeof(uintp) * 2); i++, x <<= 4)
+ consputc(digits[x >> (sizeof(uintp) * 8 - 4)]);
+}
+
static void
printint(int xx, int base, int sign)
{
- static char digits[] = "0123456789abcdef";
char buf[16];
int i;
uint x;
@@ -81,9 +89,11 @@ cprintf(char *fmt, ...)
printint(va_arg(ap, int), 10, 1);
break;
case 'x':
- case 'p':
printint(va_arg(ap, int), 16, 0);
break;
+ case 'p':
+ printptr(va_arg(ap, uintp));
+ break;
case 's':
if((s = va_arg(ap, char*)) == 0)
s = "(null)";