X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Farm%2Fboot%2Fcompressed%2Fmisc.c;h=ace3fb5835d9278833a0c539b8fff0b74e8af885;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=ebcac6cfbd610c4e9a9c767c30de235ca296759a;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index ebcac6cfb..ace3fb583 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c @@ -20,24 +20,45 @@ unsigned int __machine_arch_type; #include -#include - #ifdef STANDALONE_DEBUG -#define puts printf -#endif +#define putstr printf +#else + +static void putstr(const char *ptr); + +#include +#include #ifdef CONFIG_DEBUG_ICEDCC -#define puts icedcc_puts -#define putc icedcc_putc +static void icedcc_putc(int ch) +{ + int status, i = 0x4000000; + + do { + if (--i < 0) + return; -extern void idedcc_putc(int ch); + asm volatile ("mrc p14, 0, %0, c0, c0, 0" : "=r" (status)); + } while (status & 2); -static void -icedcc_puts(const char *ptr) + asm("mcr p14, 0, %0, c1, c0, 0" : : "r" (ch)); +} + +#define putc(ch) icedcc_putc(ch) +#define flush() do { } while (0) +#endif + +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 @@ -191,7 +212,7 @@ static void error(char *m); static void gzip_mark(void **); static void gzip_release(void **); -static void puts(const char *); +static void putstr(const char *); extern int end; static ulg free_mem_ptr; @@ -280,14 +301,20 @@ void flush_window(void) bytes_out += (ulg)outcnt; output_ptr += (ulg)outcnt; outcnt = 0; - puts("."); + putstr("."); } +#ifndef arch_error +#define arch_error(x) +#endif + static void error(char *x) { - puts("\n\n"); - puts(x); - puts("\n\n -- System halted"); + arch_error(x); + + putstr("\n\n"); + putstr(x); + putstr("\n\n -- System halted"); while(1); /* Halt */ } @@ -306,9 +333,9 @@ decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p, arch_decomp_setup(); makecrc(); - puts("Uncompressing Linux..."); + putstr("Uncompressing Linux..."); gunzip(); - puts(" done, booting the kernel.\n"); + putstr(" done, booting the kernel.\n"); return output_ptr; } #else @@ -320,9 +347,9 @@ int main() output_data = output_buffer; makecrc(); - puts("Uncompressing Linux..."); + putstr("Uncompressing Linux..."); gunzip(); - puts("done.\n"); + putstr("done.\n"); return 0; } #endif