diff options
author | thead_admin <occ_thead@service.alibaba.com> | 2022-09-13 11:04:33 +0800 |
---|---|---|
committer | thead_admin <occ_thead@service.alibaba.com> | 2022-09-13 11:04:33 +0800 |
commit | 43db9e00d5837c100c0b2fbbee64a08ab807d1e0 (patch) | |
tree | b40c0eed02935b6682e8c5c975e3016b6b2f55fe /common/main.c |
Linux_SDK_V0.9.5Linux_SDK_V0.9.5
Diffstat (limited to 'common/main.c')
-rw-r--r-- | common/main.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/common/main.c b/common/main.c new file mode 100644 index 00000000..a94df7ae --- /dev/null +++ b/common/main.c @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + */ + +/* #define DEBUG */ + +#include <common.h> +#include <autoboot.h> +#include <cli.h> +#include <command.h> +#include <console.h> +#include <env.h> +#include <version.h> + +/* + * Board-specific Platform code can reimplement show_boot_progress () if needed + */ +__weak void show_boot_progress(int val) {} + +static void run_preboot_environment_command(void) +{ + char *p; + + p = env_get("preboot"); + if (p != NULL) { + int prev = 0; + + if (IS_ENABLED(CONFIG_AUTOBOOT_KEYED)) + prev = disable_ctrlc(1); /* disable Ctrl-C checking */ + + run_command_list(p, -1, 0); + + if (IS_ENABLED(CONFIG_AUTOBOOT_KEYED)) + disable_ctrlc(prev); /* restore Ctrl-C checking */ + } +} + +/* We come here after U-Boot is initialised and ready to process commands */ +void main_loop(void) +{ + const char *s; + + bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop"); + + if (IS_ENABLED(CONFIG_VERSION_VARIABLE)) + env_set("ver", version_string); /* set version variable */ + + cli_init(); + + if (IS_ENABLED(CONFIG_USE_PREBOOT)) + run_preboot_environment_command(); + + if (IS_ENABLED(CONFIG_UPDATE_TFTP)) + update_tftp(0UL, NULL, NULL); + + s = bootdelay_process(); + if (cli_process_fdt(&s)) + cli_secure_boot_cmd(s); + + autoboot_command(s); + + cli_loop(); + panic("No CLI available"); +} |