Index: u-boot-1.3.2/common/main.c =================================================================== --- u-boot-1.3.2.orig/common/main.c +++ u-boot-1.3.2/common/main.c @@ -377,6 +377,15 @@ void main_loop (void) } else #endif /* CONFIG_BOOTCOUNT_LIMIT */ +#ifdef CONFIG_ENV_BOOTRESCUE + if ( gpio_get(GPIO_RED_BUTTON) ) { + printf ("Red button pressed: booting in rescue mode.\n"); + s = getenv (CONFIG_ENV_BOOTRESCUE); + if ( !s ) + printf ("Warning: environment variable '" CONFIG_ENV_BOOTRESCUE "' not set. Giving up rescue boot.\n"); + } + else +#endif s = getenv ("bootcmd"); debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : ""); Index: u-boot-1.3.2/include/configs/MPC8313ERDB.h =================================================================== --- u-boot-1.3.2.orig/include/configs/MPC8313ERDB.h +++ u-boot-1.3.2/include/configs/MPC8313ERDB.h @@ -405,6 +405,7 @@ #define PRE_INIT_GPIO 0x28 #define INIT_GPIO 0x08 #define MAX_GPIO_OUT 7 +#define GPIO_RED_BUTTON 7 /* Digital Thermometer and Thermostat */ #define CONFIG_DTT_LM73 1 @@ -558,6 +559,7 @@ * Environment Configuration */ #define CONFIG_ENV_OVERWRITE +#define CONFIG_ENV_BOOTRESCUE "bootrescue" #define CONFIG_ETHADDR 00:E0:0C:00:95:01 #define CONFIG_HAS_ETH1