| /* |
| * (C) Copyright 2000 |
| * Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
| * |
| * SPDX-License-Identifier: GPL-2.0+ |
| */ |
| |
| /* #define DEBUG */ |
| |
| #include <common.h> |
| #include <autoboot.h> |
| #include <cli.h> |
| #include <cli_hush.h> |
| #include <malloc.h> |
| #include <version.h> |
| |
| /* |
| * Board-specific Platform code can reimplement show_boot_progress () if needed |
| */ |
| void inline __show_boot_progress (int val) {} |
| void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress"))); |
| |
| #ifdef CONFIG_MODEM_SUPPORT |
| int do_mdm_init = 0; |
| extern void mdm_init(void); /* defined in board.c */ |
| #endif |
| |
| void main_loop(void) |
| { |
| #ifdef CONFIG_PREBOOT |
| char *p; |
| #endif |
| |
| bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop"); |
| |
| #ifndef CONFIG_SYS_GENERIC_BOARD |
| puts("Warning: Your board does not use generic board. Please read\n"); |
| puts("doc/README.generic-board and take action. Boards not\n"); |
| puts("upgraded by the late 2014 may break or be removed.\n"); |
| #endif |
| |
| #ifdef CONFIG_MODEM_SUPPORT |
| debug("DEBUG: main_loop: do_mdm_init=%d\n", do_mdm_init); |
| if (do_mdm_init) { |
| char *str = strdup(getenv("mdm_cmd")); |
| setenv("preboot", str); /* set or delete definition */ |
| if (str != NULL) |
| free(str); |
| mdm_init(); /* wait for modem connection */ |
| } |
| #endif /* CONFIG_MODEM_SUPPORT */ |
| |
| #ifdef CONFIG_VERSION_VARIABLE |
| { |
| setenv("ver", version_string); /* set version variable */ |
| } |
| #endif /* CONFIG_VERSION_VARIABLE */ |
| |
| #ifdef CONFIG_SYS_HUSH_PARSER |
| u_boot_hush_start(); |
| #endif |
| |
| #if defined(CONFIG_HUSH_INIT_VAR) |
| hush_init_var(); |
| #endif |
| |
| #ifdef CONFIG_PREBOOT |
| p = getenv("preboot"); |
| if (p != NULL) { |
| # ifdef CONFIG_AUTOBOOT_KEYED |
| int prev = disable_ctrlc(1); /* disable Control C checking */ |
| # endif |
| |
| run_command_list(p, -1, 0); |
| |
| # ifdef CONFIG_AUTOBOOT_KEYED |
| disable_ctrlc(prev); /* restore Control C checking */ |
| # endif |
| } |
| #endif /* CONFIG_PREBOOT */ |
| |
| #if defined(CONFIG_UPDATE_TFTP) |
| update_tftp(0UL); |
| #endif /* CONFIG_UPDATE_TFTP */ |
| |
| bootdelay_process(); |
| /* |
| * Main Loop for Monitor Command Processing |
| */ |
| #ifdef CONFIG_SYS_HUSH_PARSER |
| parse_file_outer(); |
| /* This point is never reached */ |
| for (;;); |
| #else |
| cli_loop(); |
| #endif /*CONFIG_SYS_HUSH_PARSER*/ |
| } |