]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_log.c
Merge branch 'master' of /home/wd/git/u-boot/master/
[karo-tx-uboot.git] / common / cmd_log.c
index fba8bd8bf5c51a3e39ecbaa0fd8ccb3d8f639eec..b9f9ba03428fe2c7d35dff7b6ae2a2b2880c9374 100644 (file)
@@ -48,8 +48,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#if defined(CONFIG_LOGBUFFER)
-
 /* Local prototypes */
 static void logbuff_putc (const char c);
 static void logbuff_puts (const char *s);
@@ -61,14 +59,25 @@ static char buf[1024];
 static unsigned console_loglevel = 3;
 static unsigned default_message_loglevel = 4;
 static unsigned log_version = 1;
+#ifdef CONFIG_ALT_LB_ADDR
+static volatile logbuff_t *log;
+#else
 static logbuff_t *log;
+#endif
+static char *lbuf;
 
 void logbuff_init_ptrs (void)
 {
        unsigned long tag, post_word;
        char *s;
 
+#ifdef CONFIG_ALT_LB_ADDR
+       log = (logbuff_t *)CONFIG_ALT_LH_ADDR;
+       lbuf = (char *)CONFIG_ALT_LB_ADDR;
+#else
        log = (logbuff_t *)(gd->bd->bi_memsize-LOGBUFF_LEN) - 1;
+       lbuf = (char *)log->buf;
+#endif
 
        /* Set up log version */
        if ((s = getenv ("logversion")) != NULL)
@@ -103,11 +112,26 @@ void logbuff_init_ptrs (void)
 
 void logbuff_reset (void)
 {
+#ifndef CONFIG_ALT_LB_ADDR
        memset (log, 0, sizeof (logbuff_t));
-       if (log_version == 2)
+#endif
+       if (log_version == 2) {
                log->v2.tag = LOGBUFF_MAGIC;
-       else
+#ifdef CONFIG_ALT_LB_ADDR
+               log->v2.start = 0;
+               log->v2.con = 0;
+               log->v2.end = 0;
+               log->v2.chars = 0;
+#endif
+       } else {
                log->v1.tag = LOGBUFF_MAGIC;
+#ifdef CONFIG_ALT_LB_ADDR
+               log->v1.dummy = 0;
+               log->v1.start = 0;
+               log->v1.size = 0;
+               log->v1.chars = 0;
+#endif
+       }
 }
 
 int drv_logbuff_init (void)
@@ -190,7 +214,7 @@ int do_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                                size = log->v1.size;
                        }
                        for (i=0; i < (size&LOGBUFF_MASK); i++) {
-                               s = (char *)log->buf+((start+i)&LOGBUFF_MASK);
+                               s = lbuf+((start+i)&LOGBUFF_MASK);
                                putc (*s);
                        }
                        return 0;
@@ -198,7 +222,7 @@ int do_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                        logbuff_reset ();
                        return 0;
                } else if (strcmp(argv[1],"info") == 0) {
-                       printf ("Logbuffer   at  %08lx\n", (unsigned long)log->buf);
+                       printf ("Logbuffer   at  %08lx\n", (unsigned long)lbuf);
                        if (log_version == 2) {
                                printf ("log_start    =  %08lx\n", log->v2.start);
                                printf ("log_end      =  %08lx\n", log->v2.end);
@@ -259,14 +283,14 @@ static int logbuff_printk(const char *line)
                line_feed = 0;
                for (; p < buf_end; p++) {
                        if (log_version == 2) {
-                               log->buf[log->v2.end & LOGBUFF_MASK] = *p;
+                               lbuf[log->v2.end & LOGBUFF_MASK] = *p;
                                log->v2.end++;
                                if (log->v2.end - log->v2.start > LOGBUFF_LEN)
                                        log->v2.start++;
                                log->v2.chars++;
                        }
                        else {
-                               log->buf[(log->v1.start + log->v1.size) &
+                               lbuf[(log->v1.start + log->v1.size) &
                                         LOGBUFF_MASK] = *p;
                                if (log->v1.size < LOGBUFF_LEN)
                                        log->v1.size++;
@@ -287,5 +311,3 @@ static int logbuff_printk(const char *line)
        }
        return i;
 }
-
-#endif /* (CONFIG_LOGBUFFER) */