xv6

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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:
Mkernel/console.c | 14++++++++++++--
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)";