diff --git a/common/main.c b/common/main.c
index 1c7d73e5dba58212bc9541ab560375f644fd87b1..163ba02e62b0df0ef4f37afa6172259abe6a4f70 100644
--- a/common/main.c
+++ b/common/main.c
@@ -709,6 +709,13 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len)
 
 	while (1) {
 		rlen = 1;
+#ifdef CONFIG_BOOT_RETRY_TIME
+		while (!tstc()) {	/* while no incoming data */
+			if (retry_time >= 0 && get_ticks() > endtime)
+				return (-2);	/* timed out */
+		}
+#endif
+
 		ichar = getcmd_getch();
 
 		if ((ichar == '\n') || (ichar == '\r')) {