Dear Graeme Russ, In message <1314449645-16900-1-git-send-email-graeme.r...@gmail.com> you wrote: > This cropped up as an aside to another thread so I thought I would give > it a go. It's pretty rough-and-ready but it does the trick :)
Hm....the problem is that we need some buffer to store the data. On some systems this may work, but on many (most?) it doesnt. > diff --git a/arch/x86/include/asm/global_data.h > b/arch/x86/include/asm/global_data.h > index 2902e61..4ebc5bd 100644 > --- a/arch/x86/include/asm/global_data.h > +++ b/arch/x86/include/asm/global_data.h > @@ -44,6 +44,7 @@ typedef struct global_data { > unsigned long env_addr; /* Address of Environment struct */ > unsigned long cpu_clk; /* CPU clock in Hz! */ > unsigned long bus_clk; > + unsigned long con_buf_idx; /* Console buffer index */ > unsigned long relocaddr; /* Start address of U-Boot in RAM */ > unsigned long start_addr_sp; /* start_addr_stackpointer */ > phys_size_t ram_size; /* RAM size */ > @@ -65,13 +66,14 @@ extern gd_t *gd; > #define GD_ENV_ADDR 5 > #define GD_CPU_CLK 6 > #define GD_BUS_CLK 7 > -#define GD_RELOC_ADDR 8 > -#define GD_START_ADDR_SP 9 > -#define GD_RAM_SIZE 10 > -#define GD_RESET_STATUS 11 > -#define GD_JT 12 > +#define GD_CON_BUF_IDX 8 > +#define GD_RELOC_ADDR 9 > +#define GD_START_ADDR_SP 10 > +#define GD_RAM_SIZE 11 > +#define GD_RESET_STATUS 12 > +#define GD_JT 13 > > -#define GD_SIZE 13 > +#define GD_SIZE 14 Argh... your whole "Word Offsets into Global Data" needs to be removed. This should be auto-generated as asm-offsets. > --- a/common/console.c > +++ b/common/console.c > @@ -323,6 +323,28 @@ int tstc(void) > return serial_tstc(); > } Hm... this adds a lot of code, unconditionally. In thos form this is not acceptable, especially as many boards cannot make use of this, or eventually don't want to make use of it. > + if (gd->flags & GD_FLG_HAVE_CONSOLE) { > + if (gd->flags & GD_FLG_DEVINIT) { > + /* Send to the standard output */ > + fputc(stdout, c); > + } else { > + /* Send directly to the handler */ > + serial_putc(c); > + } > } else { > - /* Send directly to the handler */ > - serial_putc(c); > + pre_console_putc(c); > } > } And this is actually wrong. If we can use the serial console for output, we definitely don;t want to use your buffer any more. > diff --git a/include/configs/eNET.h b/include/configs/eNET.h > index 548d52c..4fb971f 100644 > --- a/include/configs/eNET.h > +++ b/include/configs/eNET.h ...and compilation for all other boards breaks? Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de A bore is someone who persists in holding his own views after we have enlightened him with ours. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot