1*45ce6f9eSNobuhiro Iwamatsu /* 2*45ce6f9eSNobuhiro Iwamatsu * (C) Copyright 2010 3*45ce6f9eSNobuhiro Iwamatsu * Renesas Solutions Corp. 4*45ce6f9eSNobuhiro Iwamatsu * Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> 5*45ce6f9eSNobuhiro Iwamatsu * 6*45ce6f9eSNobuhiro Iwamatsu * See file CREDITS for list of people who contributed to this 7*45ce6f9eSNobuhiro Iwamatsu * project. 8*45ce6f9eSNobuhiro Iwamatsu * 9*45ce6f9eSNobuhiro Iwamatsu * This program is free software; you can redistribute it and/or 10*45ce6f9eSNobuhiro Iwamatsu * modify it under the terms of the GNU General Public License as 11*45ce6f9eSNobuhiro Iwamatsu * published by the Free Software Foundation; either version 2 of 12*45ce6f9eSNobuhiro Iwamatsu * the License, or (at your option) any later version. 13*45ce6f9eSNobuhiro Iwamatsu * 14*45ce6f9eSNobuhiro Iwamatsu * This program is distributed in the hope that it will be useful, 15*45ce6f9eSNobuhiro Iwamatsu * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*45ce6f9eSNobuhiro Iwamatsu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*45ce6f9eSNobuhiro Iwamatsu * GNU General Public License for more details. 18*45ce6f9eSNobuhiro Iwamatsu * 19*45ce6f9eSNobuhiro Iwamatsu * You should have received a copy of the GNU General Public License 20*45ce6f9eSNobuhiro Iwamatsu * along with this program; if not, write to the Free Software 21*45ce6f9eSNobuhiro Iwamatsu * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 22*45ce6f9eSNobuhiro Iwamatsu * MA 02111-1307 USA 23*45ce6f9eSNobuhiro Iwamatsu */ 24*45ce6f9eSNobuhiro Iwamatsu 25*45ce6f9eSNobuhiro Iwamatsu /* 26*45ce6f9eSNobuhiro Iwamatsu * Linux SuperH zImage loading and boot 27*45ce6f9eSNobuhiro Iwamatsu */ 28*45ce6f9eSNobuhiro Iwamatsu 29*45ce6f9eSNobuhiro Iwamatsu #include <common.h> 30*45ce6f9eSNobuhiro Iwamatsu #include <asm/io.h> 31*45ce6f9eSNobuhiro Iwamatsu #include <asm/zimage.h> 32*45ce6f9eSNobuhiro Iwamatsu 33*45ce6f9eSNobuhiro Iwamatsu int do_sh_zimageboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 34*45ce6f9eSNobuhiro Iwamatsu { 35*45ce6f9eSNobuhiro Iwamatsu ulong (*zboot_entry)(int, char * const []) = NULL; 36*45ce6f9eSNobuhiro Iwamatsu char *s0, *s1; 37*45ce6f9eSNobuhiro Iwamatsu unsigned char *param = NULL; 38*45ce6f9eSNobuhiro Iwamatsu char *cmdline; 39*45ce6f9eSNobuhiro Iwamatsu char *bootargs; 40*45ce6f9eSNobuhiro Iwamatsu 41*45ce6f9eSNobuhiro Iwamatsu disable_interrupts(); 42*45ce6f9eSNobuhiro Iwamatsu 43*45ce6f9eSNobuhiro Iwamatsu if (argc >= 3) { 44*45ce6f9eSNobuhiro Iwamatsu /* argv[1] holds the address of the zImage */ 45*45ce6f9eSNobuhiro Iwamatsu s0 = argv[1]; 46*45ce6f9eSNobuhiro Iwamatsu /* argv[2] holds the address of zero page */ 47*45ce6f9eSNobuhiro Iwamatsu s1 = argv[2]; 48*45ce6f9eSNobuhiro Iwamatsu } else { 49*45ce6f9eSNobuhiro Iwamatsu goto exit; 50*45ce6f9eSNobuhiro Iwamatsu } 51*45ce6f9eSNobuhiro Iwamatsu 52*45ce6f9eSNobuhiro Iwamatsu if (s0) 53*45ce6f9eSNobuhiro Iwamatsu zboot_entry = (ulong (*)(int, char * const []))simple_strtoul(s0, NULL, 16); 54*45ce6f9eSNobuhiro Iwamatsu 55*45ce6f9eSNobuhiro Iwamatsu /* empty_zero_page */ 56*45ce6f9eSNobuhiro Iwamatsu if (s1) 57*45ce6f9eSNobuhiro Iwamatsu param = (unsigned char*)simple_strtoul(s1, NULL, 16); 58*45ce6f9eSNobuhiro Iwamatsu 59*45ce6f9eSNobuhiro Iwamatsu /* Linux kernel command line */ 60*45ce6f9eSNobuhiro Iwamatsu cmdline = (char *)param + COMMAND_LINE; 61*45ce6f9eSNobuhiro Iwamatsu bootargs = getenv("bootargs"); 62*45ce6f9eSNobuhiro Iwamatsu 63*45ce6f9eSNobuhiro Iwamatsu /* Clear zero page */ 64*45ce6f9eSNobuhiro Iwamatsu memset(param, 0, 0x1000); 65*45ce6f9eSNobuhiro Iwamatsu 66*45ce6f9eSNobuhiro Iwamatsu /* Set commandline */ 67*45ce6f9eSNobuhiro Iwamatsu strcpy(cmdline, bootargs); 68*45ce6f9eSNobuhiro Iwamatsu 69*45ce6f9eSNobuhiro Iwamatsu /* Boot */ 70*45ce6f9eSNobuhiro Iwamatsu zboot_entry(0, NULL); 71*45ce6f9eSNobuhiro Iwamatsu 72*45ce6f9eSNobuhiro Iwamatsu exit: 73*45ce6f9eSNobuhiro Iwamatsu return -1; 74*45ce6f9eSNobuhiro Iwamatsu } 75*45ce6f9eSNobuhiro Iwamatsu 76*45ce6f9eSNobuhiro Iwamatsu U_BOOT_CMD( 77*45ce6f9eSNobuhiro Iwamatsu zimageboot, 3, 0, do_sh_zimageboot, 78*45ce6f9eSNobuhiro Iwamatsu "Boot zImage for Renesas SH", 79*45ce6f9eSNobuhiro Iwamatsu "" 80*45ce6f9eSNobuhiro Iwamatsu ); 81