X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-arm%2Farch-clps711x%2Funcompress.h;h=9fc4bcfa1681666126e1b7e8cf5b004324cd70fa;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=07157b7e4b202297106421a71b63a860ad3d28ac;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/include/asm-arm/arch-clps711x/uncompress.h b/include/asm-arm/arch-clps711x/uncompress.h index 07157b7e4..9fc4bcfa1 100644 --- a/include/asm-arm/arch-clps711x/uncompress.h +++ b/include/asm-arm/arch-clps711x/uncompress.h @@ -25,6 +25,7 @@ #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)) @@ -39,15 +40,21 @@ /* * This does not append a newline */ -static inline void putc(int c) +static void putstr(const char *s) { - while (clps_readl(SYSFLGx) & SYSFLG_UTXFF) - barrier(); - clps_writel(c, UARTDRx); -} + char c; -static inline void flush(void) -{ + while ((c = *s++) != '\0') { + 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); + } + } while (clps_readl(SYSFLGx) & SYSFLG_UBUSY) barrier(); }