uboot/arch/sh/lib/zimageboot.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * (C) Copyright 2010
   4 *   Renesas Solutions Corp.
   5 *   Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
   6 */
   7
   8/*
   9 * Linux SuperH zImage loading and boot
  10 */
  11
  12#include <common.h>
  13#include <command.h>
  14#include <env.h>
  15#include <irq_func.h>
  16#include <asm/io.h>
  17#include <asm/zimage.h>
  18
  19int do_sh_zimageboot(struct cmd_tbl *cmdtp, int flag, int argc,
  20                     char *const argv[])
  21{
  22        ulong (*zboot_entry)(int, char * const []) = NULL;
  23        char *s0, *s1;
  24        unsigned char *param = NULL;
  25        char *cmdline;
  26        char *bootargs;
  27
  28        disable_interrupts();
  29
  30        if (argc >= 3) {
  31                /* argv[1] holds the address of the zImage */
  32                s0 = argv[1];
  33                /* argv[2] holds the address of zero page */
  34                s1 = argv[2];
  35        } else {
  36                goto exit;
  37        }
  38
  39        if (s0)
  40                zboot_entry = (ulong (*)(int, char * const []))hextoul(s0,
  41                                                                        NULL);
  42
  43        /* empty_zero_page */
  44        if (s1)
  45                param = (unsigned char *)hextoul(s1, NULL);
  46
  47        /* Linux kernel command line */
  48        cmdline = (char *)param + COMMAND_LINE;
  49        bootargs = env_get("bootargs");
  50
  51        /* Clear zero page */
  52        /* cppcheck-suppress nullPointer */
  53        memset(param, 0, 0x1000);
  54
  55        /* Set commandline */
  56        strcpy(cmdline, bootargs);
  57
  58        /* Boot */
  59        zboot_entry(0, NULL);
  60
  61exit:
  62        return -1;
  63}
  64
  65U_BOOT_CMD(
  66        zimageboot, 3, 0,       do_sh_zimageboot,
  67        "Boot zImage for Renesas SH",
  68        ""
  69);
  70