uboot/common/main.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * (C) Copyright 2000
   4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   5 */
   6
   7/* #define      DEBUG   */
   8
   9#include <common.h>
  10#include <autoboot.h>
  11#include <bootstage.h>
  12#include <cli.h>
  13#include <command.h>
  14#include <console.h>
  15#include <env.h>
  16#include <init.h>
  17#include <net.h>
  18#include <version_string.h>
  19#include <efi_loader.h>
  20
  21static void run_preboot_environment_command(void)
  22{
  23        char *p;
  24
  25        p = env_get("preboot");
  26        if (p != NULL) {
  27                int prev = 0;
  28
  29                if (IS_ENABLED(CONFIG_AUTOBOOT_KEYED))
  30                        prev = disable_ctrlc(1); /* disable Ctrl-C checking */
  31
  32                run_command_list(p, -1, 0);
  33
  34                if (IS_ENABLED(CONFIG_AUTOBOOT_KEYED))
  35                        disable_ctrlc(prev);    /* restore Ctrl-C checking */
  36        }
  37}
  38
  39/* We come here after U-Boot is initialised and ready to process commands */
  40void main_loop(void)
  41{
  42        const char *s;
  43
  44        bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop");
  45
  46        if (IS_ENABLED(CONFIG_VERSION_VARIABLE))
  47                env_set("ver", version_string);  /* set version variable */
  48
  49        cli_init();
  50
  51        if (IS_ENABLED(CONFIG_USE_PREBOOT))
  52                run_preboot_environment_command();
  53
  54        if (IS_ENABLED(CONFIG_UPDATE_TFTP))
  55                update_tftp(0UL, NULL, NULL);
  56
  57        if (IS_ENABLED(CONFIG_EFI_CAPSULE_ON_DISK_EARLY))
  58                efi_launch_capsules();
  59
  60        s = bootdelay_process();
  61        if (cli_process_fdt(&s))
  62                cli_secure_boot_cmd(s);
  63
  64        autoboot_command(s);
  65
  66        cli_loop();
  67        panic("No CLI available");
  68}
  69