Index: kernel/printk.c
===================================================================
RCS file: /home/bh/cvskern/linux.220p7/kernel/printk.c,v
retrieving revision 1.1.1.1
diff -a -u -r1.1.1.1 printk.c
--- printk.c	1999/01/13 19:10:47	1.1.1.1
+++ printk.c	1999/01/18 16:50:24
@@ -229,6 +229,56 @@
 	return do_syslog(type, buf, len);
 }
 
+#if 1
+
+/*
+ * Some code fragments to do direct output on the uart
+ *
+ * $Revision: 1.1 $
+ */
+#define	UART_0_BASE		0x03f8 /* The DB9 on Hugh/Borg backplane */
+#define	UART_1_BASE		0x02f8 /* Not brought out on Hugh/Borg */
+
+/* copied from arcs/include/sys/uart16550.h */
+#define	REG_DAT			0
+#define	REG_LSR			5
+
+#define	LSR_XHRE		0x20    /* tx hold reg is now empty */ 
+
+/* somewhat ripped off from Linux kernel source file include/asm-i386/io.h */
+static inline void
+__outb(unsigned char value, unsigned short port)
+{
+	__asm__ __volatile__ ("outb %b0,%w1"  : : "a" (value), "Nd" (port));
+}
+
+static inline unsigned char
+__inb(unsigned short port)
+{
+	unsigned char  _v;
+	__asm__ __volatile__ ("inb %w1,%0"  : "=a" (_v) : "Nd" (port));
+	return _v;
+}
+
+static void inline
+prbyte(unsigned char byte)
+{
+#define	BASE UART_0_BASE
+	while ((__inb(BASE + REG_LSR) & LSR_XHRE) == 0) {
+	}
+	__outb(byte, BASE + REG_DAT);
+}
+prstr(char *str, int bytes)
+{
+	while (bytes--) {
+		char c = *str++;
+		if (c == '\n') {
+			prbyte('\r');
+		}
+		prbyte(c);
+	}
+}
+#endif
 
 spinlock_t console_lock;
 
@@ -278,6 +328,7 @@
 				break;
 			}
 		}
+#if 0
 		if (msg_level < console_loglevel && console_drivers) {
 			struct console *c = console_drivers;
 			while(c) {
@@ -286,6 +337,9 @@
 				c = c->next;
 			}
 		}
+#else
+	prstr(msg, p - msg + line_feed);
+#endif
 		if (line_feed)
 			msg_level = -1;
 	}
