]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * (C) Copyright 2000-2003 | |
3 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | * | |
5 | * SPDX-License-Identifier: GPL-2.0+ | |
6 | */ | |
7 | ||
8 | /* | |
9 | * Misc boot support | |
10 | */ | |
11 | #include <common.h> | |
12 | #include <command.h> | |
13 | #include <net.h> | |
14 | ||
15 | #ifdef CONFIG_CMD_GO | |
16 | ||
17 | /* Allow ports to override the default behavior */ | |
18 | __attribute__((weak)) | |
19 | unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc, | |
20 | char * const argv[]) | |
21 | { | |
22 | return entry (argc, argv); | |
23 | } | |
24 | ||
25 | static int do_go(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) | |
26 | { | |
27 | ulong addr, rc; | |
28 | int rcode = 0; | |
29 | ||
30 | if (argc < 2) | |
31 | return CMD_RET_USAGE; | |
32 | ||
33 | addr = simple_strtoul(argv[1], NULL, 16); | |
34 | ||
35 | printf ("## Starting application at 0x%08lX ...\n", addr); | |
36 | ||
37 | /* | |
38 | * pass address parameter as argv[0] (aka command name), | |
39 | * and all remaining args | |
40 | */ | |
41 | rc = do_go_exec ((void *)addr, argc - 1, argv + 1); | |
42 | if (rc != 0) rcode = 1; | |
43 | ||
44 | printf ("## Application terminated, rc = 0x%lX\n", rc); | |
45 | return rcode; | |
46 | } | |
47 | ||
48 | /* -------------------------------------------------------------------- */ | |
49 | ||
50 | U_BOOT_CMD( | |
51 | go, CONFIG_SYS_MAXARGS, 1, do_go, | |
52 | "start application at address 'addr'", | |
53 | "addr [arg ...]\n - start application at address 'addr'\n" | |
54 | " passing 'arg' as arguments" | |
55 | ); | |
56 | ||
57 | #endif | |
58 | ||
59 | U_BOOT_CMD( | |
60 | reset, 1, 0, do_reset, | |
61 | "Perform RESET of the CPU", | |
62 | "" | |
63 | ); |