diff --git a/common/console.c b/common/console.c
index bf73178..3339a93 100644
--- a/common/console.c
+++ b/common/console.c
@@ -524,9 +524,21 @@ int vprintf(const char *fmt, va_list args)
 /* test if ctrl-c was pressed */
 static int ctrlc_disabled = 0;	/* see disable_ctrl() */
 static int ctrlc_was_pressed = 0;
+#ifndef CONFIG_CTRLC_POLL_MS
+/*
+ * Process Ctrl-C every 1000 ms by default to improve performance
+ * (like TFTP boot) when interlaced with other tasks.
+ */
+#define CONFIG_CTRLC_POLL_MS 1000
+#endif
+static unsigned long ctrlc_ts = CONFIG_CTRLC_POLL_MS;
 int ctrlc(void)
 {
 	if (!ctrlc_disabled && gd->have_console) {
+		if (get_timer(ctrlc_ts) < CONFIG_CTRLC_POLL_MS)
+			return 0;
+		else
+			ctrlc_ts = get_timer(0);
 		if (tstc()) {
 			switch (getc()) {
 			case 0x03:		/* ^C - Control C */
