[new uImage] Move image verify flag to bootm_headers structure

Do not pass image verification flag directly to related routines.
Simplify argument passing and move it to the bootm_header structure which
contains curently processed image specific data and is already being passed
on the argument list.

Signed-off-by: Marian Balakowicz <m8@semihalf.com>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
master
Marian Balakowicz 17 years ago
parent 823afe7cef
commit 8a5ea3e616
  1. 47
      common/cmd_bootm.c
  2. 13
      common/image.c
  3. 7
      include/image.h
  4. 4
      lib_arm/bootm.c
  5. 4
      lib_avr32/bootm.c
  6. 2
      lib_blackfin/bootm.c
  7. 4
      lib_i386/bootm.c
  8. 4
      lib_m68k/bootm.c
  9. 2
      lib_microblaze/bootm.c
  10. 4
      lib_mips/bootm.c
  11. 2
      lib_nios/bootm.c
  12. 2
      lib_nios2/bootm.c
  13. 8
      lib_ppc/bootm.c
  14. 2
      lib_sh/bootm.c

@ -65,10 +65,8 @@ static int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
static void fixup_silent_linux (void); static void fixup_silent_linux (void);
#endif #endif
static void *get_kernel (cmd_tbl_t *cmdtp, int flag, static void *get_kernel (cmd_tbl_t *cmdtp, int flag,int argc, char *argv[],
int argc, char *argv[], int verify, bootm_headers_t *images, ulong *os_data, ulong *os_len);
bootm_headers_t *images,
ulong *os_data, ulong *os_len);
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
/* /*
@ -81,8 +79,7 @@ extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
*/ */
typedef void boot_os_fn (cmd_tbl_t *cmdtp, int flag, typedef void boot_os_fn (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images,/* pointers to os/initrd/fdt */ bootm_headers_t *images); /* pointers to os/initrd/fdt */
int verify); /* getenv("verify")[0] != 'n' */
extern boot_os_fn do_bootm_linux; extern boot_os_fn do_bootm_linux;
static boot_os_fn do_bootm_netbsd; static boot_os_fn do_bootm_netbsd;
@ -114,7 +111,6 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
ulong iflag; ulong iflag;
const char *type_name; const char *type_name;
uint unc_len = CFG_BOOTM_LEN; uint unc_len = CFG_BOOTM_LEN;
int verify = getenv_verify();
uint8_t comp, type, os; uint8_t comp, type, os;
void *os_hdr; void *os_hdr;
@ -123,9 +119,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
ulong load_start, load_end; ulong load_start, load_end;
memset ((void *)&images, 0, sizeof (images)); memset ((void *)&images, 0, sizeof (images));
images.verify = getenv_verify();
/* get kernel image header, start address and length */ /* get kernel image header, start address and length */
os_hdr = get_kernel (cmdtp, flag, argc, argv, verify, os_hdr = get_kernel (cmdtp, flag, argc, argv,
&images, &os_data, &os_len); &images, &os_data, &os_len);
if (os_len == 0) if (os_len == 0)
return 1; return 1;
@ -246,36 +243,36 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
#ifdef CONFIG_SILENT_CONSOLE #ifdef CONFIG_SILENT_CONSOLE
fixup_silent_linux(); fixup_silent_linux();
#endif #endif
do_bootm_linux (cmdtp, flag, argc, argv, &images, verify); do_bootm_linux (cmdtp, flag, argc, argv, &images);
break; break;
case IH_OS_NETBSD: case IH_OS_NETBSD:
do_bootm_netbsd (cmdtp, flag, argc, argv, &images, verify); do_bootm_netbsd (cmdtp, flag, argc, argv, &images);
break; break;
#ifdef CONFIG_LYNXKDI #ifdef CONFIG_LYNXKDI
case IH_OS_LYNXOS: case IH_OS_LYNXOS:
do_bootm_lynxkdi (cmdtp, flag, argc, argv, &images, verify); do_bootm_lynxkdi (cmdtp, flag, argc, argv, &images);
break; break;
#endif #endif
case IH_OS_RTEMS: case IH_OS_RTEMS:
do_bootm_rtems (cmdtp, flag, argc, argv, &images, verify); do_bootm_rtems (cmdtp, flag, argc, argv, &images);
break; break;
#if defined(CONFIG_CMD_ELF) #if defined(CONFIG_CMD_ELF)
case IH_OS_VXWORKS: case IH_OS_VXWORKS:
do_bootm_vxworks (cmdtp, flag, argc, argv, &images, verify); do_bootm_vxworks (cmdtp, flag, argc, argv, &images);
break; break;
case IH_OS_QNX: case IH_OS_QNX:
do_bootm_qnxelf (cmdtp, flag, argc, argv, &images, verify); do_bootm_qnxelf (cmdtp, flag, argc, argv, &images);
break; break;
#endif #endif
#ifdef CONFIG_ARTOS #ifdef CONFIG_ARTOS
case IH_OS_ARTOS: case IH_OS_ARTOS:
do_bootm_artos (cmdtp, flag, argc, argv, &images, verify); do_bootm_artos (cmdtp, flag, argc, argv, &images);
break; break;
#endif #endif
} }
@ -300,10 +297,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
* pointer to image header if valid image was found, plus kernel start * pointer to image header if valid image was found, plus kernel start
* address and length, otherwise NULL * address and length, otherwise NULL
*/ */
static void *get_kernel (cmd_tbl_t *cmdtp, int flag, static void *get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
int argc, char *argv[], int verify, bootm_headers_t *images, ulong *os_data, ulong *os_len)
bootm_headers_t *images,
ulong *os_data, ulong *os_len)
{ {
image_header_t *hdr; image_header_t *hdr;
ulong img_addr; ulong img_addr;
@ -362,7 +357,7 @@ static void *get_kernel (cmd_tbl_t *cmdtp, int flag,
show_boot_progress (3); show_boot_progress (3);
image_print_contents (hdr); image_print_contents (hdr);
if (verify) { if (images->verify) {
puts (" Verifying Checksum ... "); puts (" Verifying Checksum ... ");
if (!image_check_dcrc (hdr)) { if (!image_check_dcrc (hdr)) {
printf ("Bad Data CRC\n"); printf ("Bad Data CRC\n");
@ -648,7 +643,7 @@ static void fixup_silent_linux ()
static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag, static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
void (*loader)(bd_t *, image_header_t *, char *, char *); void (*loader)(bd_t *, image_header_t *, char *, char *);
image_header_t *os_hdr, *hdr; image_header_t *os_hdr, *hdr;
@ -731,7 +726,7 @@ static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
#ifdef CONFIG_LYNXKDI #ifdef CONFIG_LYNXKDI
static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag, static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
image_header_t *hdr = images->legacy_hdr_os; image_header_t *hdr = images->legacy_hdr_os;
@ -748,7 +743,7 @@ static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag, static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
image_header_t *hdr = images->legacy_hdr_os; image_header_t *hdr = images->legacy_hdr_os;
void (*entry_point)(bd_t *); void (*entry_point)(bd_t *);
@ -777,7 +772,7 @@ static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
#if defined(CONFIG_CMD_ELF) #if defined(CONFIG_CMD_ELF)
static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag, static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
char str[80]; char str[80];
image_header_t *hdr = images->legacy_hdr_os; image_header_t *hdr = images->legacy_hdr_os;
@ -796,7 +791,7 @@ static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag,
static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag, static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
char *local_args[2]; char *local_args[2];
char str[16]; char str[16];
@ -819,7 +814,7 @@ static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag,
#if defined(CONFIG_ARTOS) && defined(CONFIG_PPC) #if defined(CONFIG_ARTOS) && defined(CONFIG_PPC)
static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag, static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
ulong top; ulong top;
char *s, *cmdline; char *s, *cmdline;

@ -58,6 +58,10 @@ extern int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
#endif #endif
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
static image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[],
ulong rd_addr, uint8_t arch, int verify);
#else #else
#include "mkimage.h" #include "mkimage.h"
#endif /* USE_HOSTCC*/ #endif /* USE_HOSTCC*/
@ -485,7 +489,7 @@ ulong gen_get_image (ulong img_addr)
* pointer to a ramdisk image header, if image was found and valid * pointer to a ramdisk image header, if image was found and valid
* otherwise, board is reset * otherwise, board is reset
*/ */
image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag, static image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
ulong rd_addr, uint8_t arch, int verify) ulong rd_addr, uint8_t arch, int verify)
{ {
@ -539,8 +543,7 @@ image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag,
* @flag: command flag * @flag: command flag
* @argc: command argument count * @argc: command argument count
* @argv: command argument list * @argv: command argument list
* @images: pointer to the bootm images strcture * @images: pointer to the bootm images structure
* @verify: checksum verification flag
* @arch: expected ramdisk architecture * @arch: expected ramdisk architecture
* @rd_start: pointer to a ulong variable, will hold ramdisk start address * @rd_start: pointer to a ulong variable, will hold ramdisk start address
* @rd_end: pointer to a ulong variable, will hold ramdisk end * @rd_end: pointer to a ulong variable, will hold ramdisk end
@ -557,7 +560,7 @@ image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag,
* board is reset if ramdisk image is found but corrupted * board is reset if ramdisk image is found but corrupted
*/ */
void get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify, uint8_t arch, bootm_headers_t *images, uint8_t arch,
ulong *rd_start, ulong *rd_end) ulong *rd_start, ulong *rd_end)
{ {
ulong rd_addr, rd_load; ulong rd_addr, rd_load;
@ -621,7 +624,7 @@ void get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
debug ("* ramdisk: legacy format image\n"); debug ("* ramdisk: legacy format image\n");
rd_hdr = image_get_ramdisk (cmdtp, flag, argc, argv, rd_hdr = image_get_ramdisk (cmdtp, flag, argc, argv,
rd_addr, arch, verify); rd_addr, arch, images->verify);
rd_data = image_get_data (rd_hdr); rd_data = image_get_data (rd_hdr);
rd_len = image_get_data_size (rd_hdr); rd_len = image_get_data_size (rd_hdr);

@ -202,6 +202,7 @@ typedef struct bootm_headers {
void *fit_hdr_fdt; /* FDT blob FIT image header */ void *fit_hdr_fdt; /* FDT blob FIT image header */
char *fit_uname_fdt; /* FDT blob node unit name */ char *fit_uname_fdt; /* FDT blob node unit name */
#endif #endif
int verify; /* getenv("verify")[0] != 'n' */
#endif #endif
} bootm_headers_t; } bootm_headers_t;
@ -380,12 +381,8 @@ void image_print_contents (image_header_t *hdr);
int gen_image_get_format (void *img_addr); int gen_image_get_format (void *img_addr);
ulong gen_get_image (ulong img_addr); ulong gen_get_image (ulong img_addr);
image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag,
int argc, char *argv[],
ulong rd_addr, uint8_t arch, int verify);
void get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify, uint8_t arch, bootm_headers_t *images, uint8_t arch,
ulong *rd_start, ulong *rd_end); ulong *rd_start, ulong *rd_end);
#if defined(CONFIG_PPC) || defined(CONFIG_M68K) #if defined(CONFIG_PPC) || defined(CONFIG_M68K)

@ -62,7 +62,7 @@ static struct tag *params;
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
ulong initrd_start, initrd_end; ulong initrd_start, initrd_end;
ulong ep = 0; ulong ep = 0;
@ -95,7 +95,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
printf ("Using machid 0x%x from environment\n", machid); printf ("Using machid 0x%x from environment\n", machid);
} }
get_ramdisk (cmdtp, flag, argc, argv, images, verify, get_ramdisk (cmdtp, flag, argc, argv, images,
IH_ARCH_ARM, &initrd_start, &initrd_end); IH_ARCH_ARM, &initrd_start, &initrd_end);
show_boot_progress (15); show_boot_progress (15);

@ -174,7 +174,7 @@ static void setup_end_tag(struct tag *params)
} }
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
ulong initrd_start, initrd_end; ulong initrd_start, initrd_end;
ulong ep = 0; ulong ep = 0;
@ -196,7 +196,7 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
} }
theKernel = (void *)ep; theKernel = (void *)ep;
get_ramdisk (cmdtp, flag, argc, argv, images, verify, get_ramdisk (cmdtp, flag, argc, argv, images,
IH_ARCH_AVR32, &initrd_start, &initrd_end); IH_ARCH_AVR32, &initrd_start, &initrd_end);
show_boot_progress (15); show_boot_progress (15);

@ -47,7 +47,7 @@ extern void flush_data_cache(void);
static char *make_command_line(void); static char *make_command_line(void);
void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
int (*appl) (char *cmdline); int (*appl) (char *cmdline);
char *cmdline; char *cmdline;

@ -32,7 +32,7 @@
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
void *base_ptr; void *base_ptr;
ulong os_data, os_len; ulong os_data, os_len;
@ -40,7 +40,7 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
ulong ep; ulong ep;
image_header_t *hdr; image_header_t *hdr;
get_ramdisk (cmdtp, flag, argc, argv, images, verify, get_ramdisk (cmdtp, flag, argc, argv, images,
IH_ARCH_I386, &initrd_start, &initrd_end); IH_ARCH_I386, &initrd_start, &initrd_end);
if (images->legacy_hdr_valid) { if (images->legacy_hdr_valid) {

@ -46,7 +46,7 @@ extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, void do_bootm_linux(cmd_tbl_t * cmdtp, int flag,
int argc, char *argv[], int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
ulong sp, sp_limit, alloc_current; ulong sp, sp_limit, alloc_current;
@ -95,7 +95,7 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag,
kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))ep; kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))ep;
/* find ramdisk */ /* find ramdisk */
get_ramdisk (cmdtp, flag, argc, argv, images, verify, get_ramdisk (cmdtp, flag, argc, argv, images,
IH_ARCH_M68K, &rd_data_start, &rd_data_end); IH_ARCH_M68K, &rd_data_start, &rd_data_end);
rd_len = rd_data_end - rd_data_start; rd_len = rd_data_end - rd_data_start;

@ -35,7 +35,7 @@ DECLARE_GLOBAL_DATA_PTR;
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
/* First parameter is mapped to $r5 for kernel boot args */ /* First parameter is mapped to $r5 for kernel boot args */
void (*theKernel) (char *); void (*theKernel) (char *);

@ -46,7 +46,7 @@ static void linux_env_set (char * env_name, char * env_val);
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
ulong initrd_start, initrd_end; ulong initrd_start, initrd_end;
ulong ep = 0; ulong ep = 0;
@ -68,7 +68,7 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
} }
theKernel = (void (*)(int, char **, char **, int *))ep; theKernel = (void (*)(int, char **, char **, int *))ep;
get_ramdisk (cmdtp, flag, argc, argv, images, verify, get_ramdisk (cmdtp, flag, argc, argv, images,
IH_ARCH_MIPS, &initrd_start, &initrd_end); IH_ARCH_MIPS, &initrd_start, &initrd_end);
show_boot_progress (15); show_boot_progress (15);

@ -29,6 +29,6 @@
* *
*/ */
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
} }

@ -28,7 +28,7 @@
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
ulong ep = 0; ulong ep = 0;

@ -59,10 +59,8 @@ static ulong get_sp (void);
static void set_clocks_in_mhz (bd_t *kbd); static void set_clocks_in_mhz (bd_t *kbd);
void __attribute__((noinline)) void __attribute__((noinline))
do_bootm_linux(cmd_tbl_t *cmdtp, int flag, do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
int argc, char *argv[], bootm_headers_t *images)
bootm_headers_t *images,
int verify)
{ {
ulong sp, sp_limit, alloc_current; ulong sp, sp_limit, alloc_current;
@ -116,7 +114,7 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag,
kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))ep; kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))ep;
/* find ramdisk */ /* find ramdisk */
get_ramdisk (cmdtp, flag, argc, argv, images, verify, get_ramdisk (cmdtp, flag, argc, argv, images,
IH_ARCH_PPC, &rd_data_start, &rd_data_end); IH_ARCH_PPC, &rd_data_start, &rd_data_end);
rd_len = rd_data_end - rd_data_start; rd_len = rd_data_end - rd_data_start;

@ -60,7 +60,7 @@ static void hexdump (unsigned char *buf, int len)
#endif #endif
void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images, int verify) bootm_headers_t *images)
{ {
ulong ep = 0; ulong ep = 0;
char *bootargs = getenv("bootargs"); char *bootargs = getenv("bootargs");

Loading…
Cancel
Save