diff --git a/board/alaska/flash.c b/board/alaska/flash.c
index 383491f..7156160 100644
--- a/board/alaska/flash.c
+++ b/board/alaska/flash.c
@@ -670,7 +670,7 @@
 
 	/* Check if Flash is (sufficiently) erased */
 	if ((*addr & data) != data) {
-		printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
+		printf ("not erased at %08lx (%lx)\n", (ulong)addr, (ulong)*addr);
 		return (2);
 	}
 	/* Disable interrupts which might cause a timeout here */
@@ -712,7 +712,7 @@
 	for (i = 0; i < WR_BLOCK; i++)
 		if ((*dstaddr++ & 0xff) != 0xff) {
 			printf ("not erased at %08lx (%lx)\n",
-				(ulong) dstaddr, *dstaddr);
+				(ulong)dstaddr, (ulong)*dstaddr);
 			return (2);
 		}
 
diff --git a/board/barco/barco.c b/board/barco/barco.c
index 72e7e0b..f8b2084 100644
--- a/board/barco/barco.c
+++ b/board/barco/barco.c
@@ -177,7 +177,7 @@
 		write_flash ((char *)buf, (*buf) & 0xFE);
 		*((unsigned char *)0xFF800000) = 0xF0;
 		udelay (100);
-		printf ("buf [%#010x] %#010x\n", buf, (*buf));
+		printf ("buf [%#010x] %#010x\n", (unsigned)buf, (*buf));
 		/* XXX - fall through??? */
 	case BOOT_WORKING :
 		return BOOT_WORKING;
@@ -273,10 +273,10 @@
 	/* give length of the kernel image to bootm */
 	sprintf (bootm_args[0],"%x",start->size);
 	/* give address of the kernel image to bootm */
-	sprintf (bootm_args[1],"%x",buf);
+	sprintf (bootm_args[1],"%x",(unsigned)buf);
 
 	printf ("flash address: %#10x\n",start->address+8);
-	printf ("buf address: %#10x\n",buf);
+	printf ("buf address: %#10x\n",(unsigned)buf);
 
 	/* aha, we reserve 8 bytes here... */
 	for (cnt = 0; cnt < start->size ; cnt++) {
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 959689e..f701ab6 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -613,7 +613,7 @@
 		return NULL;
 	}
 
-	debug ("   kernel data at 0x%08lx, len = 0x%08lx (%d)\n",
+	debug ("   kernel data at 0x%08lx, len = 0x%08lx (%ld)\n",
 			*os_data, *os_len, *os_len);
 
 	return (void *)img_addr;
diff --git a/drivers/net/ns8382x.c b/drivers/net/ns8382x.c
index 0b9a3ae..bb58438 100644
--- a/drivers/net/ns8382x.c
+++ b/drivers/net/ns8382x.c
@@ -770,14 +770,14 @@
 
 	for (i = 0; (tx_stat = le32_to_cpu(txd.cmdsts)) & DescOwn; i++) {
 		if (i >= TOUT_LOOP) {
-			printf ("%s: tx error buffer not ready: txd.cmdsts %#X\n",
+			printf ("%s: tx error buffer not ready: txd.cmdsts %#lX\n",
 			     dev->name, tx_stat);
 			goto Done;
 		}
 	}
 
 	if (!(tx_stat & DescPktOK)) {
-		printf("ns8382x_send: Transmit error, Tx status %X.\n", tx_stat);
+		printf("ns8382x_send: Transmit error, Tx status %lX.\n", tx_stat);
 		goto Done;
 	}
 #ifdef NS8382X_DEBUG
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 7423bc0..d069afb 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -392,7 +392,7 @@
 
 	/* if unknown chip, assume array element #0, original RTL-8169 in this case */
 	printf("PCI device %s: unknown chip version, assuming RTL-8169\n", dev->name);
-	printf("PCI device: TxConfig = 0x%hX\n", (unsigned long) RTL_R32(TxConfig));
+	printf("PCI device: TxConfig = 0x%lX\n", (unsigned long) RTL_R32(TxConfig));
 	tpc->chipset = 0;
 
 match:
diff --git a/examples/test_burst.c b/examples/test_burst.c
index f09707f..3157bc8 100644
--- a/examples/test_burst.c
+++ b/examples/test_burst.c
@@ -173,7 +173,7 @@
 	int i, n;
 	int res = 1;
 
-	printf ("Test pattern %08x ...", pattern);
+	printf ("Test pattern %08lx ...", pattern);
 
 	n = size / 4;
 
@@ -248,7 +248,7 @@
 {
 	printf(
 	"The following tests will be conducted:\n"
-	"1)  Map %d-byte region of physical RAM at 0x%08x\n"
+	"1)  Map %ld-byte region of physical RAM at 0x%08x\n"
 	"    into two virtual regions:\n"
 	"    one cached at 0x%08x and\n"
 	"    the the other uncached at 0x%08x.\n",
@@ -277,8 +277,8 @@
 	p[1] = val;
 	p[2] = pattern;
 
-	printf ("\nError at step %s, addr %08x: read %08x, pattern %08x",
-		step, addr, val, pattern);
+	printf ("\nError at step %s, addr %08lx: read %08lx, pattern %08lx",
+		(unsigned long)step, addr, val, pattern);
 }
 
 static void signal_init(void)
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 9afa88a..1bc2f46 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -786,7 +786,7 @@
 		 */
 		s = getenv ("flashchecksum");
 		if (s && (*s == 'y')) {
-			printf ("  CRC: %08lX",
+			printf ("  CRC: %08X",
 				crc32 (0, (const unsigned char *) CFG_FLASH_BASE, flash_size)
 			);
 		}
