This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / include / asm-arm / arch-ebsa110 / uncompress.h
index 3ff4bd0..ae5b775 100644 (file)
@@ -8,31 +8,34 @@
  * published by the Free Software Foundation.
  */
 
+#include <linux/serial_reg.h>
+
+#define SERIAL_BASE    ((unsigned char *)0xf0000be0)
+
 /*
  * This does not append a newline
  */
-static void puts(const char *s)
+static inline void putc(int c)
+{
+       unsigned char v, *base = SERIAL_BASE;
+
+       do {
+               v = base[UART_LSR << 2];
+               barrier();
+       } while (!(v & UART_LSR_THRE));
+
+       base[UART_TX << 2] = c;
+}
+
+static inline void flush(void)
 {
-       __asm__ __volatile__("
-       ldrb    %0, [%2], #1
-       teq     %0, #0
-       beq     3f
-1:     strb    %0, [%3]
-2:     ldrb    %1, [%3, #0x14]
-       and     %1, %1, #0x60
-       teq     %1, #0x60
-       bne     2b
-       teq     %0, #'\n'
-       moveq   %0, #'\r'
-       beq     1b
-       ldrb    %0, [%2], #1
-       teq     %0, #0
-       bne     1b
-3:     ldrb    %1, [%3, #0x14]
-       and     %1, %1, #0x60
-       teq     %1, #0x60
-       bne     3b
-       " : : "r" (0), "r" (0), "r" (s), "r" (0xf0000be0) : "cc");
+       unsigned char v, *base = SERIAL_BASE;
+
+       do {
+               v = base[UART_LSR << 2];
+               barrier();
+       } while ((v & (UART_LSR_TEMT|UART_LSR_THRE)) !=
+                (UART_LSR_TEMT|UART_LSR_THRE));
 }
 
 /*