diff options
Diffstat (limited to 'common/cmd_boot.c')
| -rw-r--r-- | common/cmd_boot.c | 18 | 
1 files changed, 16 insertions, 2 deletions
| diff --git a/common/cmd_boot.c b/common/cmd_boot.c index 4e5ffb0a3..fef84597d 100644 --- a/common/cmd_boot.c +++ b/common/cmd_boot.c @@ -406,12 +406,13 @@ read_record (char *buf, ulong len)  		}  	    /* Check for the console hangup (if any different from serial) */ - +#ifdef CONFIG_PPC	/* we don't have syscall_tbl anywhere else */  	    if (syscall_tbl[SYSCALL_GETC] != serial_getc) {  		if (ctrlc()) {  		    return (-1);  		}  	    } +#endif  	}  	/* line too long - truncate */ @@ -691,11 +692,24 @@ int do_load_serial_bin (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  static ulong load_serial_bin (ulong offset)  { -	int size; +	int size, i;  	char buf[32];  	set_kerm_bin_mode ((ulong *) offset);  	size = k_recv (); + +	/* +	 * Gather any trailing characters (for instance, the ^D which +	 * is sent by 'cu' after sending a file), and give the +	 * box some time (100 * 1 ms) +	 */ +	for (i=0; i<100; ++i) { +		if (serial_tstc()) { +			(void) serial_getc(); +		} +		udelay(1000); +	} +	  	flush_cache (offset, size);  	printf("## Total Size      = 0x%08x = %d Bytes\n", size, size); |