Index: src/debug/print.c
===================================================================
--- src/debug/print.c	(revision 0d2f8058babf45e17ed29e67097158b7d3387b3f)
+++ src/debug/print.c	(revision ca90d6514ad952eddb6ba612fb54e45e73d64b8e)
@@ -50,5 +50,5 @@
  * width.
  */
-void print_fixed_hex(__u32 num, int width)
+void print_fixed_hex(__native num, int width)
 {
 	int i;
@@ -62,8 +62,8 @@
  * It prints only significant digits.
  */
-void print_number(__u32 num, int base)
+void print_number(__native num, int base)
 { 
-	char d[32+1];		/* this is good enough even for base == 2 */
-        int i = 31;
+	char d[sizeof(__native)*8+1];		/* this is good enough even for base == 2 */
+        int i = sizeof(__native)*8-1;
     
 	do {
@@ -71,5 +71,5 @@
 	} while (num /= base);
 	
-	d[32] = 0;	
+	d[sizeof(__native)*8] = 0;	
 	print_str(&d[i + 1]);
 }
@@ -110,5 +110,5 @@
 
 				case 'c':
-					c = va_arg(ap, char);
+					c = (char) va_arg(ap, int);
 					break;
 
