[ARM] Fix decompressor serial IO to give CRLF not LFCR
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Tue, 28 Mar 2006 09:24:33 +0000 (10:24 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 28 Mar 2006 09:24:33 +0000 (10:24 +0100)
As per the corresponding change to the serial drivers, arrange
for ARM decompressors to give CRLF.  Move the common putstr code
into misc.c such that machines only need to supply "putc" and
"flush" functions.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
24 files changed:
arch/arm/boot/compressed/misc.c
include/asm-arm/arch-aaec2000/uncompress.h
include/asm-arm/arch-at91rm9200/uncompress.h
include/asm-arm/arch-cl7500/uncompress.h
include/asm-arm/arch-clps711x/uncompress.h
include/asm-arm/arch-ebsa110/uncompress.h
include/asm-arm/arch-ebsa285/uncompress.h
include/asm-arm/arch-ep93xx/uncompress.h
include/asm-arm/arch-h720x/uncompress.h
include/asm-arm/arch-imx/uncompress.h
include/asm-arm/arch-integrator/uncompress.h
include/asm-arm/arch-iop3xx/uncompress.h
include/asm-arm/arch-ixp2000/uncompress.h
include/asm-arm/arch-ixp4xx/uncompress.h
include/asm-arm/arch-l7200/uncompress.h
include/asm-arm/arch-lh7a40x/uncompress.h
include/asm-arm/arch-omap/uncompress.h
include/asm-arm/arch-pxa/uncompress.h
include/asm-arm/arch-realview/uncompress.h
include/asm-arm/arch-rpc/uncompress.h
include/asm-arm/arch-s3c2410/uncompress.h
include/asm-arm/arch-sa1100/uncompress.h
include/asm-arm/arch-shark/uncompress.h
include/asm-arm/arch-versatile/uncompress.h

index 5ab94584baee6a46839e58819a9b443422c2a923..28626ec2d289804646cf61a79a0c2c8f24e0120f 100644 (file)
@@ -20,24 +20,32 @@ unsigned int __machine_arch_type;
 
 #include <linux/string.h>
 
-#include <asm/arch/uncompress.h>
-
 #ifdef STANDALONE_DEBUG
 #define putstr printf
-#endif
+#else
 
-#ifdef CONFIG_DEBUG_ICEDCC
-#define putstr icedcc_putstr
-#define putc icedcc_putc
+static void putstr(const char *ptr);
 
+#include <linux/compiler.h>
+#include <asm/arch/uncompress.h>
+
+#ifdef CONFIG_DEBUG_ICEDCC
 extern void icedcc_putc(int ch);
+#define putc(ch)       icedcc_putc(ch)
+#define flush()        do { } while (0)
+#endif
 
-static void
-icedcc_putstr(const char *ptr)
+static void putstr(const char *ptr)
 {
-       for (; *ptr != '\0'; ptr++) {
-               icedcc_putc(*ptr);
+       char c;
+
+       while ((c = *ptr++) != '\0') {
+               if (c == '\n')
+                       putc('\r');
+               putc(c);
        }
+
+       flush();
 }
 
 #endif
index fff0c94b75c4c99c2de6976450766ca378eccf70..300f4bf3bc74c0d973e48125a92d3adadc7d9694 100644 (file)
@@ -15,7 +15,7 @@
 
 #define UART(x)         (*(volatile unsigned long *)(serial_port + (x)))
 
-static void putstr( const char *s )
+static void putc(int c)
 {
        unsigned long serial_port;
         do {
@@ -28,17 +28,16 @@ static void putstr( const char *s )
                return;
        } while (0);
 
-       for (; *s; s++) {
-               /* wait for space in the UART's transmitter */
-               while ((UART(UART_SR) & UART_SR_TxFF));
-               /* send the character out. */
-               UART(UART_DR) = *s;
-               /* if a LF, also do CR... */
-               if (*s == 10) {
-                       while ((UART(UART_SR) & UART_SR_TxFF));
-                       UART(UART_DR) = 13;
-               }
-       }
+       /* wait for space in the UART's transmitter */
+       while ((UART(UART_SR) & UART_SR_TxFF))
+               barrier();
+
+       /* send the character out. */
+       UART(UART_DR) = c;
+}
+
+static inline void flush(void)
+{
 }
 
 #define arch_decomp_setup()
index b30dd5520713d73653deb2c62182e5b328f50857..7b38497c24b5adf118c2960a5977896a984e765c 100644 (file)
  *
  * This does not append a newline
  */
-static void putstr(const char *s)
+static void putc(int c)
+{
+       void __iomem *sys = (void __iomem *) AT91_BASE_SYS;     /* physical address */
+
+       while (!(__raw_readl(sys + AT91_DBGU_SR) & AT91_DBGU_TXRDY))
+               barrier();
+       __raw_writel(c, sys + AT91_DBGU_THR);
+}
+
+static inline void flush(void)
 {
        void __iomem *sys = (void __iomem *) AT91_BASE_SYS;     /* physical address */
 
-       while (*s) {
-               while (!(__raw_readl(sys + AT91_DBGU_SR) & AT91_DBGU_TXRDY)) { barrier(); }
-               __raw_writel(*s, sys + AT91_DBGU_THR);
-               if (*s == '\n') {
-                       while (!(__raw_readl(sys + AT91_DBGU_SR) & AT91_DBGU_TXRDY)) { barrier(); }
-                       __raw_writel('\r', sys + AT91_DBGU_THR);
-               }
-               s++;
-       }
        /* wait for transmission to complete */
-       while (!(__raw_readl(sys + AT91_DBGU_SR) & AT91_DBGU_TXEMPTY)) { barrier(); }
+       while (!(__raw_readl(sys + AT91_DBGU_SR) & AT91_DBGU_TXEMPTY))
+               barrier();
 }
 
 #define arch_decomp_setup()
index 68601b3e3b957b7cbceb4a4df244364afdf9b98b..c437e0c88c3f9c94f95cda9bab906654672b1c21 100644 (file)
@@ -3,27 +3,19 @@
  *
  * Copyright (C) 1999, 2000 Nexus Electronics Ltd.
  */
-
 #define BASE 0x03010000
 #define SERBASE (BASE + (0x2f8 << 2))
 
-static __inline__ void putc(char c)
+static inline void putc(char c)
 {
-       while (!(*((volatile unsigned int *)(SERBASE + 0x14)) & 0x20));
+       while (!(*((volatile unsigned int *)(SERBASE + 0x14)) & 0x20))
+               barrier();
+
        *((volatile unsigned int *)(SERBASE)) = c;
 }
 
-/*
- * This does not append a newline
- */
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s) {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 static __inline__ void arch_decomp_setup(void)
index 9fc4bcfa1681666126e1b7e8cf5b004324cd70fa..07157b7e4b202297106421a71b63a860ad3d28ac 100644 (file)
@@ -25,7 +25,6 @@
 #undef CLPS7111_BASE
 #define CLPS7111_BASE CLPS7111_PHYS_BASE
 
-#define barrier()              __asm__ __volatile__("": : :"memory")
 #define __raw_readl(p)         (*(unsigned long *)(p))
 #define __raw_writel(v,p)      (*(unsigned long *)(p) = (v))
 
 /*
  * This does not append a newline
  */
-static void putstr(const char *s)
+static inline void putc(int c)
 {
-       char c;
-
-       while ((c = *s++) != '\0') {
-               while (clps_readl(SYSFLGx) & SYSFLG_UTXFF)
-                       barrier();
-               clps_writel(c, UARTDRx);
+       while (clps_readl(SYSFLGx) & SYSFLG_UTXFF)
+               barrier();
+       clps_writel(c, UARTDRx);
+}
 
-               if (c == '\n') {
-                       while (clps_readl(SYSFLGx) & SYSFLG_UTXFF)
-                               barrier();
-                       clps_writel('\r', UARTDRx);
-               }
-       }
+static inline void flush(void)
+{
        while (clps_readl(SYSFLGx) & SYSFLG_UBUSY)
                barrier();
 }
index eee95581a9231124f995a7c7294ca44f3e45979c..66b19c7fd908abd0158037891ea994849039d61c 100644 (file)
@@ -8,33 +8,34 @@
  * published by the Free Software Foundation.
  */
 
+#include <linux/serial_reg.h>
+
+#define SERIAL_BASE    ((unsigned char *)0xfe000be0)
+
 /*
  * This does not append a newline
  */
-static void putstr(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)
 {
-       unsigned long tmp1, tmp2;
-       __asm__ __volatile__(
-       "ldrb   %0, [%2], #1\n"
-"      teq     %0, #0\n"
-"      beq     3f\n"
-"1:    strb    %0, [%3]\n"
-"2:    ldrb    %1, [%3, #0x14]\n"
-"      and     %1, %1, #0x60\n"
-"      teq     %1, #0x60\n"
-"      bne     2b\n"
-"      teq     %0, #'\n'\n"
-"      moveq   %0, #'\r'\n"
-"      beq     1b\n"
-"      ldrb    %0, [%2], #1\n"
-"      teq     %0, #0\n"
-"      bne     1b\n"
-"3:    ldrb    %1, [%3, #0x14]\n"
-"      and     %1, %1, #0x60\n"
-"      teq     %1, #0x60\n"
-"      bne     3b"
-       : "=&r" (tmp1), "=&r" (tmp2)
-       : "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));
 }
 
 /*
index c2fd84e2d90e10c37e25218259191645994b36ac..86142c882b3a0fd9086ce82061875795f6daeb58 100644 (file)
 #define DC21285_BASE ((volatile unsigned int *)0x42000160)
 #define SER0_BASE    ((volatile unsigned char *)0x7c0003f8)
 
-static __inline__ void putc(char c)
+static inline void putc(char c)
 {
        if (machine_is_netwinder()) {
-               while ((SER0_BASE[5] & 0x60) != 0x60);
+               while ((SER0_BASE[5] & 0x60) != 0x60)
+                       barrier();
                SER0_BASE[0] = c;
        } else {
                while (DC21285_BASE[6] & 8);
@@ -26,17 +27,8 @@ static __inline__ void putc(char c)
        }
 }
 
-/*
- * This does not append a newline
- */
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s) {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 /*
index 2171082d4fc59d3a024f760c9dda637c9313872b..c15274c85d5d2683291382ef4cca0a16bf8a95cb 100644 (file)
@@ -36,7 +36,7 @@ static void __raw_writel(unsigned int value, unsigned int ptr)
 #define PHYS_UART1_FLAG                0x808c0018
 #define UART1_FLAG_TXFF                0x20
 
-static __inline__ void putc(char c)
+static inline void putc(int c)
 {
        int i;
 
@@ -49,14 +49,8 @@ static __inline__ void putc(char c)
        __raw_writeb(c, PHYS_UART1_DATA);
 }
 
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s) {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 
index 9535764bcc715705263995a201491265202ece0c..18c69e0f3585dc6c36e7cc977ac0f68add1377a4 100644 (file)
 #define LSR    0x14
 #define TEMPTY         0x40
 
-static void putstr(const char *s)
+static inline void putc(int c)
 {
-       char c;
        volatile unsigned char *p = (volatile unsigned char *)(IO_PHYS+0x20000);
 
-       while ( (c = *s++) != '\0') {
-               /* wait until transmit buffer is empty */
-               while((p[LSR] & TEMPTY) == 0x0);
-               /* write next character */
-               *p = c;
-
-               if(c == '\n') {
-                       while((p[LSR] & TEMPTY) == 0x0);
-                       *p = '\r';
-               }
-       }
+       /* wait until transmit buffer is empty */
+       while((p[LSR] & TEMPTY) == 0x0)
+               barrier();
+
+       /* write next character */
+       *p = c;
+}
+
+static inline void flush(void)
+{
 }
 
 /*
index 096077f2750b48a3a782f302070287743850e0a5..da333f69136f599cd7c0bd2645d654bd06dafd29 100644 (file)
@@ -39,8 +39,7 @@
  *
  * This does not append a newline
  */
-static void
-putstr(const char *s)
+static void putc(int c)
 {
        unsigned long serial_port;
 
@@ -54,20 +53,14 @@ putstr(const char *s)
                return;
        } while(0);
 
-       while (*s) {
-               while ( !(UART(USR2) & USR2_TXFE) )
-                       barrier();
+       while (!(UART(USR2) & USR2_TXFE))
+               barrier();
 
-               UART(TXR) = *s;
-
-               if (*s == '\n') {
-                       while ( !(UART(USR2) & USR2_TXFE) )
-                               barrier();
+       UART(TXR) = c;
+}
 
-                       UART(TXR) = '\r';
-               }
-               s++;
-       }
+static inline void flush(void)
+{
 }
 
 /*
index 3957402741d393456279a23dd4dd342d22ca854f..f61825c4d9018d5011653790ca978461f2899536 100644 (file)
 /*
  * This does not append a newline
  */
-static void putstr(const char *s)
+static void putc(int c)
 {
-       while (*s) {
-               while (AMBA_UART_FR & (1 << 5));
+       while (AMBA_UART_FR & (1 << 5))
+               barrier();
 
-               AMBA_UART_DR = *s;
-
-               if (*s == '\n') {
-                       while (AMBA_UART_FR & (1 << 5));
+       AMBA_UART_DR = c;
+}
 
-                       AMBA_UART_DR = '\r';
-               }
-               s++;
-       }
-       while (AMBA_UART_FR & (1 << 3));
+static inline void flush(void)
+{
+       while (AMBA_UART_FR & (1 << 3))
+               barrier();
 }
 
 /*
index 82b88762c3cc049655b92180bd0c2e8ed788e078..c98eb6254b1f06016638f59db4db6f47a5f7a939 100644 (file)
@@ -19,23 +19,15 @@ static volatile UTYPE uart_base;
 
 #define TX_DONE (UART_LSR_TEMT|UART_LSR_THRE)
 
-static __inline__ void putc(char c)
+static inline void putc(char c)
 {
-       while ((uart_base[UART_LSR] & TX_DONE) != TX_DONE);
+       while ((uart_base[UART_LSR] & TX_DONE) != TX_DONE)
+               barrier();
        *uart_base = c;
 }
 
-/*
- * This does not append a newline
- */
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s) {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 static __inline__ void __arch_decomp_setup(unsigned long arch_id)
index 3d3d5b2ed6e981f5cbe601bc8037150d078dcf7c..f66b408f363ebbe9b9761f8ea97fed85b40b628e 100644 (file)
 #define UARTSR          PHYS(0x14)      /* Status reg */
 
 
-static __inline__ void putc(char c)
+static inline void putc(int c)
 {
        int j = 0x1000;
 
-       while (--j && !(*UARTSR & UART_LSR_THRE)); 
+       while (--j && !(*UARTSR & UART_LSR_THRE))
+               barrier();
+
        *UARTDR = c;
 }
 
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s)
-       {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 #define arch_decomp_setup()
index 960c35810a2232dfbe42244aeddddebf0585116f..09ae6c91be60b075c3e972b383841515a9506900 100644 (file)
 
 static volatile u32* uart_base;
 
-static __inline__ void putc(char c)
+static inline void putc(int c)
 {
        /* Check THRE and TEMT bits before we transmit the character.
         */
-       while ((uart_base[UART_LSR] & TX_DONE) != TX_DONE); 
+       while ((uart_base[UART_LSR] & TX_DONE) != TX_DONE)
+               barrier();
+
        *uart_base = c;
 }
 
-/*
- * This does not append a newline
- */
-static void putstr(const char *s)
+static void flush(void)
 {
-       while (*s)
-       {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 static __inline__ void __arch_decomp_setup(unsigned long arch_id)
index 1caa2b560f5362158772c936388aa31e403440e1..9fcd40aee3e3027a929b03e2aa0c24f6e00ebd8d 100644 (file)
 #define __raw_writeb(v,p)      (*(volatile unsigned char *)(p) = (v))
 #define __raw_readb(p)         (*(volatile unsigned char *)(p))
 
-static __inline__ void putc(char c)
+static inline void putc(int c)
 {
        while(__raw_readb(IO_UART + 0x18) & 0x20 ||
-               __raw_readb(IO_UART + 0x18) & 0x08);
+             __raw_readb(IO_UART + 0x18) & 0x08)
+               barrier();
+
        __raw_writeb(c, IO_UART + 0x00);
 }
 
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s) {
-               if (*s == 10) {                 /* If a LF, add CR */
-                       putc(10);
-                       putc(13);
-               }
-               putc(*(s++));
-       }
 }
 
 static __inline__ void arch_decomp_setup(void)
index ec8ab67122f3320024d4e5031e909cf39a02c505..f8053346f60897d58c36440118d270f01cabf924 100644 (file)
 #define UART_STATUS (*(volatile unsigned long*) (UART2_PHYS + UART_R_STATUS))
 #define UART_DATA   (*(volatile unsigned long*) (UART2_PHYS + UART_R_DATA))
 
-static __inline__ void putc (char ch)
+static inline void putc(int ch)
 {
        while (UART_STATUS & nTxRdy)
-               ;
+               barrier();
        UART_DATA = ch;
 }
 
-static void putstr (const char* sz)
+static inline void flush(void)
 {
-       for (; *sz; ++sz) {
-               putc (*sz);
-               if (*sz == '\n')
-                       putc ('\r');
-       }
 }
 
        /* NULL functions; we don't presently need them */
index c718264affbd1fd7672faf887efb5fd6eb2164e6..ca2c8bec82e7d299a1f8fbf94465f68f1a090b80 100644 (file)
@@ -30,8 +30,7 @@ unsigned int system_rev;
 #define check_port(base, shift) ((base[UART_OMAP_MDR1 << shift] & 7) == 0)
 #define omap_get_id() ((*(volatile unsigned int *)(0xfffed404)) >> 12) & ID_MASK
 
-static void
-putstr(const char *s)
+static void putc(int c)
 {
        volatile u8 * uart = 0;
        int shift = 2;
@@ -69,16 +68,13 @@ putstr(const char *s)
        /*
         * Now, xmit each character
         */
-       while (*s) {
-               while (!(uart[UART_LSR << shift] & UART_LSR_THRE))
-                       barrier();
-               uart[UART_TX << shift] = *s;
-               if (*s++ == '\n') {
-                       while (!(uart[UART_LSR << shift] & UART_LSR_THRE))
-                               barrier();
-                       uart[UART_TX << shift] = '\r';
-               }
-       }
+       while (!(uart[UART_LSR << shift] & UART_LSR_THRE))
+               barrier();
+       uart[UART_TX << shift] = c;
+}
+
+static inline void flush(void)
+{
 }
 
 /*
index fe38090444e0b4c3de7828a69434588b5bb5065f..178aa2e073ac0aa1322ac22b46a7dd2405ba9ce5 100644 (file)
 #define UART           FFUART
 
 
-static __inline__ void putc(char c)
+static inline void putc(char c)
 {
-       while (!(UART[5] & 0x20));
+       while (!(UART[5] & 0x20))
+               barrier();
        UART[0] = c;
 }
 
 /*
  * This does not append a newline
  */
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s) {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 /*
index b5e4d360665b31d276c92d1b044e5fca1486ab31..f05631d767435f2f086c3ead981a95790b19ce08 100644 (file)
 /*
  * This does not append a newline
  */
-static void putstr(const char *s)
+static inline void putc(int c)
 {
-       while (*s) {
-               while (AMBA_UART_FR & (1 << 5))
-                       barrier();
-
-               AMBA_UART_DR = *s;
+       while (AMBA_UART_FR & (1 << 5))
+               barrier();
 
-               if (*s == '\n') {
-                       while (AMBA_UART_FR & (1 << 5))
-                               barrier();
+       AMBA_UART_DR = c;
+}
 
-                       AMBA_UART_DR = '\r';
-               }
-               s++;
-       }
+static inline void flush(void)
+{
        while (AMBA_UART_FR & (1 << 3))
                barrier();
 }
index 43035fec64d21eef7ad94f0ba821db99e342468f..06231ede54e5c05c82ec1b8d8b625fb2da1f6a31 100644 (file)
@@ -67,31 +67,28 @@ extern __attribute__((pure)) struct param_struct *params(void);
 /*
  * This does not append a newline
  */
-static void putstr(const char *s)
+static void putc(int c)
 {
        extern void ll_write_char(char *, char c, char white);
        int x,y;
-       unsigned char c;
        char *ptr;
 
        x = params->video_x;
        y = params->video_y;
 
-       while ( ( c = *(unsigned char *)s++ ) != '\0' ) {
-               if ( c == '\n' ) {
+       if (c == '\n') {
+               if (++y >= video_num_lines)
+                       y--;
+       } else if (c == '\r') {
+               x = 0;
+       } else {
+               ptr = VIDMEM + ((y*video_num_columns*params->bytes_per_char_v+x)*bytes_per_char_h);
+               ll_write_char(ptr, c, white);
+               if (++x >= video_num_columns) {
                        x = 0;
                        if ( ++y >= video_num_lines ) {
                                y--;
                        }
-               } else {
-                       ptr = VIDMEM + ((y*video_num_columns*params->bytes_per_char_v+x)*bytes_per_char_h);
-                       ll_write_char(ptr, c, white);
-                       if ( ++x >= video_num_columns ) {
-                               x = 0;
-                               if ( ++y >= video_num_lines ) {
-                                       y--;
-                               }
-                       }
                }
        }
 
@@ -99,6 +96,10 @@ static void putstr(const char *s)
        params->video_y = y;
 }
 
+static inline void flush(void)
+{
+}
+
 static void error(char *x);
 
 /*
index 4367ec054b51aeb277040bbee9c5f47bb99b5762..a6f6a0e44afaf2e818a716288fc7ba34e1316ffc 100644 (file)
@@ -67,8 +67,7 @@ uart_rd(unsigned int reg)
  * waiting for tx to happen...
 */
 
-static void
-putc(char ch)
+static void putc(int ch)
 {
        int cpuid = S3C2410_GSTATUS1_2410;
 
@@ -77,9 +76,6 @@ putc(char ch)
        cpuid &= S3C2410_GSTATUS1_IDMASK;
 #endif
 
-       if (ch == '\n')
-               putc('\r');    /* expand newline to \r\n */
-
        if (uart_rd(S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE) {
                int level;
 
@@ -101,19 +97,16 @@ putc(char ch)
        } else {
                /* not using fifos */
 
-               while ((uart_rd(S3C2410_UTRSTAT) & S3C2410_UTRSTAT_TXE) != S3C2410_UTRSTAT_TXE);
+               while ((uart_rd(S3C2410_UTRSTAT) & S3C2410_UTRSTAT_TXE) != S3C2410_UTRSTAT_TXE)
+                       barrier();
        }
 
        /* write byte to transmission register */
        uart_wr(S3C2410_UTXH, ch);
 }
 
-static void
-putstr(const char *ptr)
+static inline void flush(void)
 {
-       for (; *ptr != '\0'; ptr++) {
-               putc(*ptr);
-       }
 }
 
 #define __raw_writel(d,ad) do { *((volatile unsigned int *)(ad)) = (d); } while(0)
index 43453501ee6688b56c47b7859b0079d671940485..2601a77a6ddaede178a1222e6d18252b3aac22f1 100644 (file)
@@ -17,7 +17,7 @@
 
 #define UART(x)                (*(volatile unsigned long *)(serial_port + (x)))
 
-static void putstr( const char *s )
+static void putc(int c)
 {
        unsigned long serial_port;
 
@@ -31,19 +31,16 @@ static void putstr( const char *s )
                return;
        } while (0);
 
-       for (; *s; s++) {
-               /* wait for space in the UART's transmitter */
-               while (!(UART(UTSR1) & UTSR1_TNF));
+       /* wait for space in the UART's transmitter */
+       while (!(UART(UTSR1) & UTSR1_TNF))
+               barrier();
 
-               /* send the character out. */
-               UART(UTDR) = *s;
+       /* send the character out. */
+       UART(UTDR) = c;
+}
 
-               /* if a LF, also do CR... */
-               if (*s == 10) {
-                       while (!(UART(UTSR1) & UTSR1_TNF));
-                       UART(UTDR) = 13;
-               }
-       }
+static inline void flush(void)
+{
 }
 
 /*
index 910a8e0a0ca58f78e7a555b61da861b0d1122444..7eca6534f1bb33e5abbd68c30e900a56d7695715 100644 (file)
@@ -9,7 +9,7 @@
 
 #define SERIAL_BASE ((volatile unsigned char *)0x400003f8)
 
-static __inline__ void putc(char c)
+static inline void putc(int c)
 {
        int t;
 
@@ -18,17 +18,8 @@ static __inline__ void putc(char c)
        while (t--);
 }
 
-/*
- * This does not append a newline
- */
-static void putstr(const char *s)
+static inline void flush(void)
 {
-       while (*s) {
-               putc(*s);
-               if (*s == '\n')
-                       putc('\r');
-               s++;
-       }
 }
 
 #ifdef DEBUG
index 2f57499c7b92baebea5d48e8299cb5221076b431..7215133d0514202cb6d4438d46f2a79785c742da 100644 (file)
 /*
  * This does not append a newline
  */
-static void putstr(const char *s)
+static inline void putc(int c)
 {
-       while (*s) {
-               while (AMBA_UART_FR & (1 << 5))
-                       barrier();
-
-               AMBA_UART_DR = *s;
+       while (AMBA_UART_FR & (1 << 5))
+               barrier();
 
-               if (*s == '\n') {
-                       while (AMBA_UART_FR & (1 << 5))
-                               barrier();
+       AMBA_UART_DR = c;
+}
 
-                       AMBA_UART_DR = '\r';
-               }
-               s++;
-       }
+static inline void flush(void)
+{
        while (AMBA_UART_FR & (1 << 3))
                barrier();
 }