diff -urN --exclude=offsets.h clean/kernel/printk.c linux/kernel/printk.c
--- clean/kernel/printk.c	Thu Oct 25 09:11:55 2001
+++ linux/kernel/printk.c	Fri Oct 26 11:10:30 2001
@@ -669,6 +669,9 @@
 #define VGALINES	24
 #define VGACOLS		80
 
+#define UART_BASE       ((char *)0xc0000000FF5E0000)
+#include <linux/serial_reg.h>
+
 static int current_ypos = VGALINES, current_xpos = 0;
 
 void
@@ -679,6 +682,16 @@
 
 	while (len-- > 0) {
 		c = *str++;
+#ifdef CONFIG_IA64_HP_PROTO
+		while (!(UART_LSR_TEMT & readb((char *)(UART_BASE + UART_LSR))))
+			; /* spin */
+
+		writeb(c, (char *)UART_BASE + UART_TX);
+
+		if (c == '\n')
+			writeb('\r', (char *)UART_BASE + UART_TX);
+#else
+
 		if (current_ypos >= VGALINES) {
 			/* scroll 1 line up */
 			for (k = 1, j = 0; k < VGALINES; k++, j++) {
@@ -703,6 +716,7 @@
 				current_ypos++;
 			}
 		}
+#endif
 	}
 }
 
