{
DECLARE_GLOBAL_DATA_PTR;
unsigned long *ext_tag;
+ unsigned long post_word;
char *s;
log_buf = (unsigned char *)(gd->bd->bi_memsize-LOGBUFF_LEN);
ext_tag = (unsigned long *)(log_buf)-4;
- ext_log_start = (unsigned long *)(log_buf)-3;
+ ext_log_start = (unsigned long *)(log_buf)-3;
ext_log_size = (unsigned long *)(log_buf)-2;
ext_logged_chars = (unsigned long *)(log_buf)-1;
- if (*ext_tag!=LOGBUFF_MAGIC) {
+ post_word = post_word_load();
+#ifdef CONFIG_POST
+ /* The post routines have setup the word so we can simply test it */
+ if (post_word_load () & POST_COLDBOOT) {
logged_chars = log_size = log_start = 0;
- *ext_tag = LOGBUFF_MAGIC;
+ *ext_tag = LOGBUFF_MAGIC;
}
+#else
+ /* No post routines, so we do our own checking */
+ if (post_word != LOGBUFF_MAGIC) {
+ logged_chars = log_size = log_start = 0;
+ post_word_store (LOGBUFF_MAGIC);
+ *ext_tag = LOGBUFF_MAGIC;
+ }
+#endif
/* Initialize default loglevel if present */
if ((s = getenv ("loglevel")) != NULL)
console_loglevel = (int)simple_strtoul (s, NULL, 10);
if (strcmp(argv[1],"append") == 0) {
/* Log concatenation of all arguments separated by spaces */
for (i=2; i<argc; i++) {
- if (i<argc-1) {
- logbuff_printk (argv[i]);
- logbuff_putc (' ');
- } else {
- logbuff_puts (argv[i]);
- }
+ logbuff_printk (argv[i]);
+ logbuff_putc ((i<argc-1) ? ' ' : '\n');
}
return 0;
}
case 2:
if (strcmp(argv[1],"show") == 0) {
for (i=0; i < (log_size&LOGBUFF_MASK); i++) {
- s = log_buf+((log_start+i)&LOGBUFF_MASK);
+ s = (char *)log_buf+((log_start+i)&LOGBUFF_MASK);
putc (*s);
}
return 0;
return 1;
}
}
-
+#if defined(CONFIG_LOGBUFFER)
+U_BOOT_CMD(
+ log, 255, 1, do_log,
+ "log - manipulate logbuffer\n",
+ "info - show pointer details\n"
+ "log reset - clear contents\n"
+ "log show - show contents\n"
+ "log append <msg> - append <msg> to the logbuffer\n"
+);
+#endif /* CONFIG_LOGBUFFER */
static int logbuff_printk(const char *line)
{
int i;