* Remove flashasm.S for DNP1110 - DNP doesn't require data puzzling.
Flash still not working on DNP
* Add Support for JFFS2 boot
* Import PPCboot: Change command functions to have a return value
+======================================================================
+Modifications for 1.0.1:
+======================================================================
+
+* Cleanup (remove some obsolete files and CVS keys
+
+* Remove flashasm.S for DNP1110 - DNP doesn't require data puzzling.
+ Flash still not working on DNP
+
+* Add Support for JFFS2 boot
+
+* Import PPCboot: Change command functions to have a return value
+
======================================================================
Modifications for 1.0:
======================================================================
${MAKE} ${target}_config
${MAKE} all 2>&1 >LOG/$target.MAKELOG | tee LOG/$target.ERR
${CROSS_COMPILE:-arm_armv4-}size armboot | tee -a LOG/$target.MAKELOG
+ test -n "$KEEP_BINARY" && cp armboot.bin LOG/$target.bin
+ test -n "$KEEP_ELF" && cp armboot.bin LOG/$target.elf
}
#-----------------------------------------------------------------------
LIB = lib$(BOARD).a
OBJS := dnp1110.o flash.o env.o
-SOBJS := flashasm.o memsetup.o
+SOBJS := memsetup.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
extern u32 data_from_flash(u32);
extern u32 data_to_flash(u32);
-#define PUZZLE_FROM_FLASH(x) data_from_flash((x))
-#define PUZZLE_TO_FLASH(x) data_to_flash((x))
+#define PUZZLE_FROM_FLASH(x) (x)
+#define PUZZLE_TO_FLASH(x) (x)
flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
+++ /dev/null
-/*
- * flashasm.S: flash magic for LART
- *
- * Copyright (C) 1999 2000 2001 Jan-Derk bakker (J.D.Bakker@its.tudelft.nl)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-.ident "$Id: flashasm.S,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $"
-
-//#ifdef HAVE_CONFIG_H
-//# include <blob/config.h>
-//#endif
-
-.text
-
-
-.globl data_to_flash
-.globl data_from_flash
- /* Subroutine that takes data in r0 and formats it so it will be in */
- /* the correct order for the internal flash */
- /* used for LART only */
-data_to_flash:
-//#if defined LART
- mov r1, #0x0
-
- tst r0, #0x00000001
- orrne r1, r1, #0x00001000
- tst r0, #0x00000002
- orrne r1, r1, #0x00004000
- tst r0, #0x00000004
- orrne r1, r1, #0x00000800
- tst r0, #0x00000008
- orrne r1, r1, #0x00000200
- tst r0, #0x00000010
- orrne r1, r1, #0x00000001
- tst r0, #0x00000020
- orrne r1, r1, #0x00000004
- tst r0, #0x00000040
- orrne r1, r1, #0x00000080
- tst r0, #0x00000080
- orrne r1, r1, #0x00000020
-
- tst r0, #0x00000100
- orrne r1, r1, #0x00002000
- tst r0, #0x00000200
- orrne r1, r1, #0x00008000
- tst r0, #0x00000400
- orrne r1, r1, #0x00000400
- tst r0, #0x00000800
- orrne r1, r1, #0x00000100
- tst r0, #0x00001000
- orrne r1, r1, #0x00000002
- tst r0, #0x00002000
- orrne r1, r1, #0x00000008
- tst r0, #0x00004000
- orrne r1, r1, #0x00000040
- tst r0, #0x00008000
- orrne r1, r1, #0x00000010
-
- tst r0, #0x00010000
- orrne r1, r1, #0x00100000
- tst r0, #0x00020000
- orrne r1, r1, #0x00400000
- tst r0, #0x00040000
- orrne r1, r1, #0x00080000
- tst r0, #0x00080000
- orrne r1, r1, #0x00020000
- tst r0, #0x00100000
- orrne r1, r1, #0x01000000
- tst r0, #0x00200000
- orrne r1, r1, #0x04000000
- tst r0, #0x00400000
- orrne r1, r1, #0x80000000
- tst r0, #0x00800000
- orrne r1, r1, #0x20000000
-
- tst r0, #0x01000000
- orrne r1, r1, #0x00200000
- tst r0, #0x02000000
- orrne r1, r1, #0x00800000
- tst r0, #0x04000000
- orrne r1, r1, #0x00040000
- tst r0, #0x08000000
- orrne r1, r1, #0x00010000
- tst r0, #0x10000000
- orrne r1, r1, #0x02000000
- tst r0, #0x20000000
- orrne r1, r1, #0x08000000
- tst r0, #0x40000000
- orrne r1, r1, #0x40000000
- tst r0, #0x80000000
- orrne r1, r1, #0x10000000
-
- mov r0, r1
-//#endif
- mov pc, lr
-
- /* Takes data received from the flash, and unshuffles it. */
-data_from_flash:
-//#if defined LART
- mov r1, #0x00
-
- tst r0, #0x00000001
- orrne r1, r1, #0x00000010
- tst r0, #0x00000002
- orrne r1, r1, #0x00001000
- tst r0, #0x00000004
- orrne r1, r1, #0x00000020
- tst r0, #0x00000008
- orrne r1, r1, #0x00002000
- tst r0, #0x00000010
- orrne r1, r1, #0x00008000
- tst r0, #0x00000020
- orrne r1, r1, #0x00000080
- tst r0, #0x00000040
- orrne r1, r1, #0x00004000
- tst r0, #0x00000080
- orrne r1, r1, #0x00000040
-
- tst r0, #0x00000100
- orrne r1, r1, #0x00000800
- tst r0, #0x00000200
- orrne r1, r1, #0x00000008
- tst r0, #0x00000400
- orrne r1, r1, #0x00000400
- tst r0, #0x00000800
- orrne r1, r1, #0x00000004
- tst r0, #0x00001000
- orrne r1, r1, #0x00000001
- tst r0, #0x00002000
- orrne r1, r1, #0x00000100
- tst r0, #0x00004000
- orrne r1, r1, #0x00000002
- tst r0, #0x00008000
- orrne r1, r1, #0x00000200
-
- tst r0, #0x00010000
- orrne r1, r1, #0x08000000
- tst r0, #0x00020000
- orrne r1, r1, #0x00080000
- tst r0, #0x00040000
- orrne r1, r1, #0x04000000
- tst r0, #0x00080000
- orrne r1, r1, #0x00040000
- tst r0, #0x00100000
- orrne r1, r1, #0x00010000
- tst r0, #0x00200000
- orrne r1, r1, #0x01000000
- tst r0, #0x00400000
- orrne r1, r1, #0x00020000
- tst r0, #0x00800000
- orrne r1, r1, #0x02000000
-
- tst r0, #0x01000000
- orrne r1, r1, #0x00100000
- tst r0, #0x02000000
- orrne r1, r1, #0x10000000
- tst r0, #0x04000000
- orrne r1, r1, #0x00200000
- tst r0, #0x08000000
- orrne r1, r1, #0x20000000
- tst r0, #0x10000000
- orrne r1, r1, #0x80000000
- tst r0, #0x20000000
- orrne r1, r1, #0x00800000
- tst r0, #0x40000000
- orrne r1, r1, #0x40000000
- tst r0, #0x80000000
- orrne r1, r1, #0x00400000
-
- mov r0, r1
-//#endif
- mov pc, lr
*
*/
-.ident "$Id: flashasm.S,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $"
-
-//#ifdef HAVE_CONFIG_H
-//# include <blob/config.h>
-//#endif
-
.text
/* the correct order for the internal flash */
/* used for LART only */
data_to_flash:
-//#if defined LART
mov r1, #0x0
tst r0, #0x00000001
orrne r1, r1, #0x10000000
mov r0, r1
-//#endif
mov pc, lr
/* Takes data received from the flash, and unshuffles it. */
data_from_flash:
-//#if defined LART
mov r1, #0x00
tst r0, #0x00000001
orrne r1, r1, #0x00400000
mov r0, r1
-//#endif
mov pc, lr
extern image_header_t header; /* from cmd_bootm.c */
-void
+int
autoscript(bd_t *bd, ulong addr)
{
ulong crc, data, len;
image_header_t *hdr = &header;
ulong *len_ptr;
char *cmd = 0;
+ int rc;
memcpy (hdr, (char *)addr, sizeof(image_header_t));
if (SWAP32(hdr->ih_magic) != IH_MAGIC)
{
printf("Bad magic number\n");
- return;
+ return 1;
}
crc = SWAP32(hdr->ih_hcrc);
if (crc32(0, (char *)data, len) != crc)
{
printf("Bad header crc\n");
- return;
+ return 1;
}
data = addr + sizeof(image_header_t);
if (crc32(0, (char *)data, len) != SWAP32(hdr->ih_dcrc))
{
printf("Bad data crc\n");
- return;
+ return 1;
}
if (hdr->ih_type != IH_TYPE_SCRIPT)
{
printf("Bad image type\n");
- return;
+ return 1;
}
/* get len of script and make sure cmd is null terminated */
cmd = malloc (len + 1);
if (!cmd)
{
- return;
+ return 1;
}
while (*len_ptr++);
memcpy(cmd,(char *)len_ptr,len);
}
}
}
- run_command(cmd, bd, 0);
+ rc = run_command(cmd, bd, 0);
free(cmd);
+
+ return rc;
}
#endif
#if (CONFIG_COMMANDS & CFG_CMD_AUTOSCRIPT)
-void
+int
do_autoscript (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr;
}
printf("## Executing script at %08lx\n",addr);
-
- autoscript(bd,addr);
+ return autoscript(bd,addr);
}
#endif
#if (CONFIG_COMMANDS & CFG_CMD_BDI)
-void do_bdinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_bdinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
int i;
printf ("DRAM:%02d.start = %08lX\n", i, bd->bi_dram[i].start);
printf ("DRAM:%02d.size = %08lX\n", i, bd->bi_dram[i].size);
}
+ return 0;
}
#endif /* CFG_CMD_BDI */
-void do_go (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_go (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr, rc;
if (argc < 2) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
addr = simple_strtoul(argv[1], NULL, 16);
rc = ((ulong (*)(bd_t *, int, char *[]))addr) (bd, --argc, &argv[1]);
printf ("## Application terminated, rc = 0x%lx\n", rc);
+ return 0;
}
#if (CONFIG_COMMANDS & CFG_CMD_LOADS)
-void do_load_serial (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_load_serial (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong offset = 0;
ulong addr;
}
}
#endif
+ return 0;
}
static ulong
char his_quote; /* quote chars he'll use */
-void do_load_serial_bin (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_load_serial_bin (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong offset = 0;
ulong addr;
int i;
int loadb_baudrate = bd->bi_baudrate;
+ int rc = 0;
if (argc >= 2) {
offset = simple_strtoul(argv[1], NULL, 16);
if (((s = getenv(bd, "autoscript")) != NULL) && (strcmp(s,"yes") == 0)) {
printf("Running autoscript at addr 0x%08lX ...\n", load_addr);
- autoscript (bd, load_addr);
+ rc = autoscript (bd, load_addr);
}
}
#endif
+ return rc;
}
static void zfree(void *, void *, unsigned);
#if (CONFIG_COMMANDS & CFG_CMD_IMI)
-static void image_info (unsigned long addr);
+static int image_info (unsigned long addr);
#endif
static void print_type (image_header_t *hdr);
ulong *len_ptr,
int verify);
-void do_bootm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_bootm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong iflag;
ulong addr, ram_addr;
if (SWAP32(hdr->ih_magic) != IH_MAGIC) {
printf ("Bad Magic Number\n");
- return;
+ return 1;
}
data = (ulong)&header;
if (crc32 (0, (char *)data, len) != checksum) {
printf ("Bad Header Checksum\n");
- return;
+ return 1;
}
/************************************************************/
printf (" Verifying Checksum ... ");
if (crc32 (0, (char *)data, len) != SWAP32(hdr->ih_dcrc)) {
printf ("Bad Data CRC\n");
- return;
+ return 1;
}
printf ("OK\n");
}
if (hdr->ih_arch != IH_CPU_ARM) {
printf ("Unsupported Architecture\n");
- return;
+ return 1;
}
switch (hdr->ih_type) {
data += 4;
break;
default: printf ("Wrong Image Type for %s command\n", cmdtp->name);
- return;
+ return 1;
}
/*
if (iflag)
enable_interrupts();
printf ("Unimplemented compression type %d\n", hdr->ih_comp);
- return;
+ return 1;
}
printf ("OK\n");
if (iflag)
enable_interrupts();
printf ("Can't boot image type %d\n", hdr->ih_type);
- return;
+ return 1;
}
switch (hdr->ih_os)
break;
}
+ printf ("\n## Control returned to monitor\n");
#ifdef DEBUG
- printf ("\n## Control returned to monitor - resetting...\n");
+ printf ("\nResetting Hardware ... \n");
do_reset (cmdtp, bd, flag, argc, argv);
#endif
+ return 0;
}
#if (CONFIG_COMMANDS & CFG_CMD_BOOTD)
-void do_bootd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_bootd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- run_command (getenv (bd, "bootcmd"), bd, flag);
+ return run_command (getenv (bd, "bootcmd"), bd, flag);
}
#endif
#if (CONFIG_COMMANDS & CFG_CMD_IMI)
-void do_iminfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_iminfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
int arg;
ulong addr;
+ int rc = 0;
if (argc < 2) {
- image_info (load_addr);
- return;
+ rc = image_info (load_addr);
}
-
- for (arg=1; arg <argc; ++arg) {
- addr = simple_strtoul(argv[arg], NULL, 16);
- image_info (addr);
+ else {
+ for (arg = 1; arg < argc && rc == 0; ++arg) {
+ addr = simple_strtoul(argv[arg], NULL, 16);
+ rc = image_info (addr);
+ }
}
+ return rc;
}
-static void image_info (ulong addr)
+static int image_info (ulong addr)
{
ulong data, len, checksum;
image_header_t *hdr = &header;
if (SWAP32(hdr->ih_magic) != IH_MAGIC) {
printf (" Bad Magic Number\n");
- return;
+ return 1;
}
data = (ulong)&header;
if (crc32 (0, (char *)data, len) != checksum) {
printf (" Bad Header Checksum\n");
- return;
+ return 1;
}
/* for multi-file images we need the data part, too */
printf (" Verifying Checksum ... ");
if (crc32 (0, (char *)data, len) != SWAP32(hdr->ih_dcrc)) {
printf (" Bad Data CRC\n");
- return;
+ return 1;
}
printf ("OK\n");
+ return 0;
}
#endif /* CFG_CMD_IMI */
static int on_off (const char *);
-void do_icache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_icache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
switch (argc) {
case 2: /* on / off */
case 1: /* get status */
printf ("Instruction Cache is %s\n",
icache_status() ? "ON" : "OFF");
- return;
- default:
- printf ("Usage:\n%s\n", cmdtp->usage);
+ return 0;
}
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
}
-void do_dcache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_dcache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
switch (argc) {
case 2: /* on / off */
case 1: /* get status */
printf ("Data (writethrough) Cache is %s\n",
dcache_status() ? "ON" : "OFF");
- return;
- default:
- printf ("Usage:\n%s\n", cmdtp->usage);
+ return 0;
}
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
}
static int on_off (const char *s)
#if (CONFIG_COMMANDS & CFG_CMD_EEPROM)
-void do_eeprom (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_eeprom (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
switch (argc) {
- default:
- printf ("Usage:\n%s\n", cmdtp->usage);
- return;
case 5:
/* 4 args */
eeprom_read (off, (uchar *)addr, cnt);
printf ("done\n");
- return;
+ return 0;
} else if (strcmp(argv[1],"write") == 0) {
ulong addr = simple_strtoul(argv[2], NULL, 16);
eeprom_write(off, (uchar *)addr, cnt);
printf ("done\n");
- return;
+ return 0;
- } else {
- printf ("Usage:\n%s\n", cmdtp->usage);
}
-
- return;
}
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
}
#endif /* CFG_CMD_EEPROM */
return 1;
}
-void do_flinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_flinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong bank;
flash_print_info (&flash_info[bank]);
}
- return;
+ return 0;
}
bank = simple_strtoul(argv[1], NULL, 16);
if ((bank < 1) || (bank > CFG_MAX_FLASH_BANKS)) {
printf ("Only FLASH Banks # 1 ... # %d supported\n",
CFG_MAX_FLASH_BANKS);
- return;
+ return 1;
}
printf ("\nBank # %ld: ", bank);
flash_print_info (&flash_info[bank-1]);
+ return 0;
}
-void do_flerase(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_flerase(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
flash_info_t *info;
ulong bank, addr_first, addr_last;
if (argc < 2) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
if (strcmp(argv[1], "all") == 0) {
n = flash_erase (info, 0, info->sector_count-1);
if (n < 0) {
flash_perror(n);
- break;
+ return 1;
}
else
printf("Done.\n");
}
- return;
+ return 0;
}
if ((n = abbrev_spec(argv[1], &info, §_first, §_last)) != 0) {
if (n < 0) {
printf("Bad sector specification\n");
- return;
+ return 1;
}
printf ("Erase Flash Sectors %d-%d in Bank # %d:\n",
sect_first, sect_last, (info-flash_info)+1);
n = flash_erase(info, sect_first, sect_last);
- if (n < 0)
+ if (n < 0) {
flash_perror(n);
+ return 1;
+ }
else
printf("Done.\n");
- return;
+ return 0;
}
if (argc != 3) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
if (strcmp(argv[1], "bank") == 0) {
if ((bank < 1) || (bank > CFG_MAX_FLASH_BANKS)) {
printf ("Only FLASH Banks # 1 ... # %d supported\n",
CFG_MAX_FLASH_BANKS);
- return;
+ return 1;
}
printf ("Erase Flash Bank # %ld:\n", bank);
info = &flash_info[bank-1];
n = flash_erase (info, 0, info->sector_count-1);
- if (n < 0)
+ if (n < 0) {
flash_perror(n);
+ return 1;
+ }
else
printf("done.\n");
- return;
+ return 0;
}
addr_first = simple_strtoul(argv[1], NULL, 16);
if (addr_first >= addr_last) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
printf ("Erase Flash from 0x%08lx to 0x%08lx... ", addr_first, addr_last);
n = flash_sect_erase(addr_first, addr_last);
- if (n < 0)
+ if (n < 0) {
flash_perror(n);
+ return 1;
+ }
else
printf("done.\nErased %d sectors.\n", n);
+ return 0;
}
-void do_protect(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_protect(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
flash_info_t *info;
ulong bank, addr_first, addr_last;
if (argc < 3) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
if (strcmp(argv[1], "off") == 0)
p = 1;
else {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
if (strcmp(argv[2], "all") == 0) {
info->protect[i] = p;
}
}
- return;
+ return 0;
}
if ((n = abbrev_spec(argv[2], &info, §_first, §_last)) != 0) {
if (n < 0) {
printf("Bad sector specification\n");
- return;
+ return 1;
}
printf("%sProtect Flash Sectors %d-%d in Bank # %d\n",
p ? "" : "Un-", sect_first, sect_last,
for (i = sect_first; i <= sect_last; i++) {
info->protect[i] = p;
}
- return;
+ return 0;
}
if (argc != 4) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
if (strcmp(argv[2], "bank") == 0) {
if ((bank < 1) || (bank > CFG_MAX_FLASH_BANKS)) {
printf ("Only FLASH Banks # 1 ... # %d supported\n",
CFG_MAX_FLASH_BANKS);
- return;
+ return 1;
}
printf ("%sProtect Flash Bank # %ld\n",
p ? "" : "Un-", bank);
if (info->flash_id == FLASH_UNKNOWN) {
printf ("missing or unknown FLASH type\n");
- return;
+ return 1;
}
for (i=0; i<info->sector_count; ++i) {
info->protect[i] = p;
}
- return;
+ return 0;
}
addr_first = simple_strtoul(argv[2], NULL, 16);
if (addr_first >= addr_last) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
- flash_sect_protect (p, addr_first, addr_last);
+ return flash_sect_protect (p, addr_first, addr_last) ? 1 : 0;
}
int flash_sect_protect (int p, ulong addr_first, ulong addr_last)
#if (CONFIG_COMMANDS & CFG_CMD_MEMORY)
-static void mod_mem(cmd_tbl_t *, int, int, int, char *[]);
+static int mod_mem(cmd_tbl_t *, int, int, int, char *[]);
/* Display values from last command.
* Memory modify remembered values are different from display memory.
*/
#define DISP_LINE_LEN 16
-void do_mem_md (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_md (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr, size, length;
ulong i, nbytes, linebytes;
if (argc < 2) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
if ((flag & CMD_FLAG_REPEAT) == 0) {
dp_last_addr = addr;
dp_last_length = length;
dp_last_size = size;
+
+ return 0;
}
-void do_mem_mm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_mm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- mod_mem (cmdtp, 1, flag, argc, argv);
+ return mod_mem (cmdtp, 1, flag, argc, argv);
}
-void do_mem_nm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_nm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- mod_mem (cmdtp, 0, flag, argc, argv);
+ return mod_mem (cmdtp, 0, flag, argc, argv);
}
-void do_mem_mw (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_mw (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr, size, writeval, count;
if ((argc < 3) || (argc > 4)) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
/* Check for size specification.
*((uchar *)addr) = (uchar)writeval;
addr += size;
}
+
+ return 0;
}
-void do_mem_cmp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_cmp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong size, addr1, addr2, count, ngood;
if (argc != 4) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
/* Check for size specification.
printf("Total of %ld %s%s were the same\n",
ngood, size == 4 ? "word" : size == 2 ? "halfword" : "byte",
ngood == 1 ? "" : "s");
+
+ return 0;
}
-void do_mem_cp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_cp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr, size, dest, count;
if (argc != 4) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
/* Check for size specification.
printf ("Copy to Flash... ");
rc = flash_write ((uchar *)addr, dest, count*size);
- if (rc < 0)
+ if (rc < 0) {
flash_perror(rc);
+ return 1;
+ }
else
printf("done.\n");
- return;
+ return 0;
}
while (count-- > 0) {
addr += size;
dest += size;
}
+
+ return 0;
}
-void do_mem_base (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_base (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
if (argc > 1) {
/* Set new base address.
/* Print the current base address.
*/
printf("Base Address: 0x%08lx\n", base_address);
+ return 0;
}
-void do_mem_loop (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_loop (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr, size, length, i, junk;
volatile uint *longp;
if (argc < 3) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
/* Check for a size spefication.
while (i-- > 0)
junk = *cp++;
}
+ return 0;
}
/* Just a quickie to walk through some memory.
*/
uint baseval = 0;
-void do_mem_mtest (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_mtest (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
int *memaddr;
int memval;
for (;;) {
if (ctrlc()) {
- return;
+ return 1;
}
memaddr = (uint *)CFG_MEMTEST_START;
baseval++;
}
+ return 0;
}
* nm{.b, .w, .l} {addr}
*/
-static void
+static int
mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char *argv[])
{
ulong addr, size, i;
if (argc != 2) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
#ifdef CONFIG_BOOT_RETRY_TIME
mm_last_addr = addr;
mm_last_size = size;
+
+ return 0;
}
-void do_mem_crc (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_mem_crc (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr, length;
ulong crc;
if (argc < 3) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
addr = simple_strtoul(argv[1], NULL, 16);
printf ("CRC32 for %08lx ... %08lx ==> %08lx\n",
addr, addr + length -1, crc);
+
+ return 0;
}
#endif /* CFG_CMD_MEMORY */
# include <cmd_autoscript.h>
# endif
-extern void do_bootm (cmd_tbl_t *, bd_t *, int, int, char *[]);
+extern int do_bootm (cmd_tbl_t *, bd_t *, int, int, char *[]);
-static void netboot_common (int, cmd_tbl_t *, bd_t *, int , char *[]);
+static int netboot_common (int, cmd_tbl_t *, bd_t *, int , char *[]);
-void do_bootp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_bootp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- netboot_common (BOOTP, cmdtp, bd, argc, argv);
+ return netboot_common (BOOTP, cmdtp, bd, argc, argv);
}
-void do_tftpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_tftpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- netboot_common (TFTP, cmdtp, bd, argc, argv);
+ return netboot_common (TFTP, cmdtp, bd, argc, argv);
}
-void do_rarpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_rarpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- netboot_common (RARP, cmdtp, bd, argc, argv);
+ return netboot_common (RARP, cmdtp, bd, argc, argv);
}
#if (CONFIG_COMMANDS & CFG_CMD_DHCP)
-void do_dhcp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_dhcp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- netboot_common(DHCP, cmdtp, bd, argc, argv);
+ return netboot_common(DHCP, cmdtp, bd, argc, argv);
}
#endif /* CFG_CMD_DHCP */
}
}
-static void
+static int
netboot_common (int proto, cmd_tbl_t *cmdtp, bd_t *bd, int argc, char *argv[])
{
char *s;
-
+ int rc = 0;
+
switch (argc) {
case 1:
break;
break;
default: printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
if (NetLoop(bd, proto) == 0)
- return;
+ return 0;
/* NetLoop ok, update environment */
netboot_update_env();
printf ("Automatic boot of image at addr 0x%08lX ...\n",
load_addr);
- do_bootm (cmdtp, bd, 0, 1, local_args);
+ rc = do_bootm (cmdtp, bd, 0, 1, local_args);
}
#ifdef CONFIG_AUTOSCRIPT
- if (((s = getenv(Net_bd, "autoscript")) != NULL) && (strcmp(s,"yes") == 0)) {
+ if (rc == 0 &&
+ ((s = getenv(Net_bd, "autoscript")) != NULL) && (strcmp(s,"yes") == 0)) {
printf("Running autoscript at addr 0x%08lX ...\n", load_addr);
- autoscript (bd, load_addr);
+ rc = autoscript (bd, load_addr);
}
#endif
+ return rc;
}
#endif /* CFG_CMD_NET */
* Command interface: print one or all environment variables
*/
-void do_printenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_printenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
int i, j, k, nxt;
if (ctrlc()) {
printf ("\n ** Abort\n");
- return;
+ return 1;
}
}
printf("\nEnvironment size: %d/%d bytes\n", i, sizeof(bd->bi_env_data));
- return;
+ return 0;
}
for (i=1; i<argc; ++i) { /* print single env variables */
break;
}
if (k < 0)
+ {
printf ("## Error: \"%s\" not defined\n", name);
+ return 1;
+ }
}
+ return 0;
}
/************************************************************************
* This function will ONLY work with a in-RAM copy of the environment
*/
-void _do_setenv (bd_t *bd, int flag, int argc, char *argv[])
+int _do_setenv (bd_t *bd, int flag, int argc, char *argv[])
{
int i, len, oldval;
uchar *env, *nxt = 0;
/* need writable copy in RAM */
if (!bd->bi_env_data)
- return;
+ return 1;
name = argv[1];
# endif /* CONFIG_OVERWRITE_ETHADDR_ONCE && CONFIG_ETHADDR */
) ) {
printf ("Can't overwrite \"%s\"\n", name);
- return;
+ return 1;
}
#endif
if (i == N_BAUDRATES) {
printf ("## Baudrate %d bps not supported\n",
baudrate);
- return;
+ return 1;
}
printf ("## Switch baudrate to %d bps and press ENTER ...\n",
baudrate);
if ((argc < 3) || argv[2] == NULL) {
/* Update CRC */
bd->bi_env_crc = crc32(0, bd->bi_env_data, sizeof(bd->bi_env_data));
- return;
+ return 0;
}
/*
}
if (len > sizeof(bd->bi_env_data)) {
printf ("## Error: environment overflow, \"%s\" deleted\n", name);
- return;
+ return 1;
}
while ((*env = *name++) != '\0')
env++;
bd->bi_enetaddr[i] = s ? simple_strtoul(s, &e, 16) : 0;
if (s) s = (*e) ? e+1 : e;
}
- return;
+ return 0;
}
-
+
if (strcmp(argv[1],"ipaddr") == 0) {
char *s = argv[2]; /* always use only one arg */
char *e;
bd->bi_ip_addr |= (val & 0xFF);
if (s) s = (*e) ? e+1 : e;
}
- return;
+ return 0;
}
+
if (strcmp(argv[1],"loadaddr") == 0) {
load_addr = simple_strtoul(argv[2], NULL, 16);
- return;
+ return 0;
}
+
#if (CONFIG_COMMANDS & CFG_CMD_NET)
if (strcmp(argv[1],"bootfile") == 0) {
copy_filename (BootFile, argv[2], sizeof(BootFile));
- return;
+ return 0;
}
#endif /* CFG_CMD_NET */
+
+ return 0;
}
void setenv (bd_t * bd, char *varname, char *varvalue)
_do_setenv (bd, 0, 3, argv);
}
-void do_setenv (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc,
+int do_setenv (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc,
char *argv[])
{
if (argc < 2) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
- _do_setenv (bd, flag, argc, argv);
+ return _do_setenv (bd, flag, argc, argv);
}
/************************************************************************
*/
#if (CONFIG_COMMANDS & CFG_CMD_ASKENV)
-void do_askenv (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc,
+int do_askenv (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc,
char *argv[])
{
extern char console_buffer[CFG_CBSIZE];
if (argc < 2) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
/* Check the syntax */
switch (argc) {
case 1:
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
case 2: /* askenv envname */
sprintf (message, "Please enter '%s':", argv[1]);
if (size >= CFG_CBSIZE)
size = CFG_CBSIZE - 1;
-
+
if (size <= 0)
- return;
-
+ return 1;
+
/* prompt for input */
len = readline (message);
-
+
if (size < len)
console_buffer[size] = '\0';
-
+
len = 2;
if (console_buffer[0] != '\0') {
local_args[2] = console_buffer;
}
// Continue calling setenv code
- _do_setenv (bd, flag, len, local_args);
+ return _do_setenv (bd, flag, len, local_args);
}
#endif /* CFG_CMD_ASKENV */
#if (CONFIG_COMMANDS & CFG_CMD_ENV)
-void do_saveenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_saveenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
- board_env_save(bd, bd->bi_env, sizeof(env_t));
+ return (board_env_save(bd, bd->bi_env, sizeof(env_t))) ? 1 : 0;
}
#endif /* CFG_CMD_ENV */
#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-void do_pinit (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_pinit (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
-
if (argc != 2) {
printf ("Usage: pinit {on | off}\n");
- return;
+ return 1;
}
if (strcmp(argv[1],"on") == 0) {
pcmcia_on ();
pcmcia_off ();
} else {
printf ("Usage: pinit {on | off}\n");
- return;
+ return 1;
}
- return;
+ return 0;
}
#endif /* CFG_CMD_PCMCIA */
+++ /dev/null
-/*
- * (C) Copyright 2000
- * Subodh Nijsure, SkyStream Networks, snijsure@skystream.com
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <armboot.h>
-#include <command.h>
-#include <cmd_boot.h>
-#if defined(CONFIG_8xx)
-#include <mpc8xx.h>
-#endif
-
-#if defined(CONFIG_8xx) && (CONFIG_COMMANDS & CFG_CMD_REGINFO)
-
-void do_reginfo(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- volatile sysconf8xx_t *sysconf = &immap->im_siu_conf;
- volatile sit8xx_t *timers = &immap->im_sit;
-
- /* Hopefully more PowerPC knowledgable people will add code to display
- * other useful registers
- */
-
- printf("\nSystem Configuration registers\n");
-
- printf("\tIMMR\t0x%08X\n", get_immr(0));
-
- printf("\tSIUMCR\t0x%08X", sysconf->sc_siumcr);
- printf("\tSYPCR\t0x%08X\n",sysconf->sc_sypcr);
-
- printf("\tSWT\t0x%08X", sysconf->sc_swt);
- printf("\tSWSR\t0x%04X\n", sysconf->sc_swsr);
-
- printf("\tSIPEND\t0x%08X\tSIMASK\t0x%08X\n",
- sysconf->sc_sipend, sysconf->sc_simask);
- printf("\tSIEL\t0x%08X\tSIVEC\t0x%08X\n",
- sysconf->sc_siel, sysconf->sc_sivec);
- printf("\tTESR\t0x%08X\tSDCR\t0x%08X\n",
- sysconf->sc_tesr, sysconf->sc_sdcr);
-
- printf("Memory Controller Registers\n");
-
- printf("\tBR0\t0x%08X\tOR0\t0x%08X \n", memctl->memc_br0, memctl->memc_or0);
- printf("\tBR1\t0x%08X\tOR1\t0x%08X \n", memctl->memc_br1, memctl->memc_or1);
- printf("\tBR2\t0x%08X\tOR2\t0x%08X \n", memctl->memc_br2, memctl->memc_or2);
- printf("\tBR3\t0x%08X\tOR3\t0x%08X \n", memctl->memc_br3, memctl->memc_or3);
- printf("\tBR4\t0x%08X\tOR4\t0x%08X \n", memctl->memc_br4, memctl->memc_or4);
- printf("\tBR5\t0x%08X\tOR5\t0x%08X \n", memctl->memc_br5, memctl->memc_or5);
- printf("\tBR6\t0x%08X\tOR6\t0x%08X \n", memctl->memc_br6, memctl->memc_or6);
- printf("\tBR7\t0x%08X\tOR7\t0x%08X \n", memctl->memc_br7, memctl->memc_or7);
- printf("\n");
-
- printf("\tmamr\t0x%08X\tmbmr\t0x%08X \n",
- memctl->memc_mamr, memctl->memc_mbmr );
- printf("\tmstat\t0x%08X\tmptpr\t0x%08X \n",
- memctl->memc_mstat, memctl->memc_mptpr );
- printf("\tmdr\t0x%08X \n", memctl->memc_mdr);
-
- printf("\nSystem Integration Timers\n");
- printf("\tTBSCR\t0x%08X\tRTCSC\t0x%08X \n",
- timers->sit_tbscr, timers->sit_rtcsc);
- printf("\tPISCR\t0x%08X \n", timers->sit_piscr);
-
- /*
- * May be some CPM info here?
- */
-
-}
-
-#endif /* CONFIG_8xx && CFG_CMD_REGINFO */
" - echo args to console; \\c suppresses newline\n" \
),
-void
-do_version (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_version (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
extern char version_string[];
printf ("\n%s\n", version_string);
+ return 0;
}
-void
-do_echo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_echo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
int i, putnl = 1;
if (putnl)
putc('\n');
+
+ return 0;
}
/*
* Use puts() instead of printf() to avoid printf buffer overflow
* for long help messages
*/
-void
-do_help (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+int do_help (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
int i;
for (cmdtp=&cmd_tbl[0]; cmdtp->name; cmdtp++) {
/* allow user abort */
if (ctrlc())
- return;
+ return 1;
if (cmdtp->usage == NULL)
continue;
puts (cmdtp->usage);
}
- return;
+ return 0;
}
/*
);
}
}
+ return 0;
}
/***************************************************************************
/****************************************************************************/
#if (CONFIG_COMMANDS & CFG_CMD_RUN)
-void do_run (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char *argv[])
+int do_run (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char *argv[])
{
int i;
+ int rc = 0;
if (argc < 2) {
printf ("Usage:\n%s\n", cmdtp->usage);
- return;
+ return 1;
}
- for (i=1; i<argc; ++i) {
- run_command (getenv (bd, argv[i]), bd, flag);
+ for (i=1; rc == 0 && i<argc; ++i) {
+ rc = run_command (getenv (bd, argv[i]), bd, flag);
}
+
+ return rc;
}
#endif
LDSCRIPT := board/$(BOARDDIR)/armboot.lds
CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS) \
- -D__arm__ -DTEXT_BASE=$(TEXT_BASE) \
+ -D__arm__ -DTEXT_BASE=$(TEXT_BASE) \
-I$(TOPDIR)/include \
-fno-builtin \
-pipe $(PLATFORM_CPPFLAGS)
* provisions above, a recipient may use your version of this file
* under either the RHEPL or the GPL.
*
- * $Id: compr_rtime.c,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $
- *
*
* Very simple lz77-ish encoder.
*
* provisions above, a recipient may use your version of this file
* under either the RHEPL or the GPL.
*
- * $Id: compr_rubin.c,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $
- *
*/
#include <config.h>
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the RHEPL or the GPL.
- *
- * $Id: compr_zlib.c,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $
- *
*/
#include <armboot.h>
/*
-------------------------------------------------------------------------
* Filename: jffs2.c
- * Version: $Id: jffs2_1pass.c,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $
* Copyright: Copyright (C) 2001, Russ Dill
* Author: Russ Dill <Russ.Dill@asu.edu>
* Description: Module to load kernel from jffs2
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the RHEPL or the GPL.
- *
- * $Id: jffs2_1pass.c,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $
- *
*/
/* Ok, so anyone who knows the jffs2 code will probably want to get a papar
/*-------------------------------------------------------------------------
* Filename: mini_inflate.c
- * Version: $Id: mini_inflate.c,v 1.1 2002/03/14 16:44:04 mariusgroeger Exp $
* Copyright: Copyright (C) 2001, Russ Dill
* Author: Russ Dill <Russ.Dill@asu.edu>
* Description: Mini inflate implementation (RFC 1951)
#define bi_env_data bi_env->data
#define bi_env_crc bi_env->crc
+/* arm/crc32.c */
+ulong crc32 (ulong, const unsigned char *, uint);
+ulong crc32_no_comp (ulong crc, const unsigned char *, uint);
+
+/*
+ * Don't define some stuff private to armboot target code
+ */
+#ifndef HOST_TOOLS
+
/* board/.../env.c */
int board_env_getchar(bd_t * bd, int index, uchar *c);
int board_env_save (bd_t * bd, env_t *data, int size);
int sprintf (char * buf, const char *fmt, ...);
int vsprintf (char *buf, const char *fmt, va_list args);
-/* arm/crc32.c */
-ulong crc32 (ulong, const unsigned char *, uint);
-ulong crc32_no_comp (ulong crc, const unsigned char *, uint);
-
void udelay (unsigned long);
int ctrlc (void);
void clear_ctrlc (void);
int disable_ctrlc (int);
-
int console_assign (int file, char *devname);
/* */
(((x) << 8) & 0x00ff0000) | \
(((x) << 24) & 0xff000000) )
+#endif /* HOST_TOOLS */
#endif /* _ARMBOOT_H_ */
"A valid autoscr header must be present\n" \
),
-void autoscript (bd_t *bd, ulong addr);
-void do_autoscript (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int autoscript (bd_t *bd, ulong addr);
+int do_autoscript (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
NULL \
),
-void do_bdinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_bdinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_BDINFO
" passing 'arg' as arguments\n" \
),
-void do_go (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_go (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#if (CONFIG_COMMANDS & CFG_CMD_LOADS)
#ifdef CFG_LOADS_BAUD_CHANGE
),
#endif /* CFG_LOADS_BAUD_CHANGE */
-void do_load_serial (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_load_serial (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else /* ! CFG_CMD_LOADS */
#define CMD_TBL_LOADS
" with offset 'off' and baudrate 'baud'\n" \
),
-void do_load_serial_bin (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_load_serial_bin (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_LOADB
),
/* Implemented in $(CPU)/cpu.c */
-void do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#endif /* _CMD_BOOT_H */
#ifndef _CMD_BOOTM_H
#define _CMD_BOOTM_H
-void do_bootm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_bootm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#define CMD_TBL_BOOTM MK_CMD_TBL_ENTRY( \
"bootm", 5, CFG_MAXARGS, 1, do_bootm, \
),
#if (CONFIG_COMMANDS & CFG_CMD_BOOTD)
-void do_bootd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_bootd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#define CMD_TBL_BOOTD MK_CMD_TBL_ENTRY( \
"bootd", 4, 1, 1, do_bootd, \
#endif
#if (CONFIG_COMMANDS & CFG_CMD_IMI)
-void do_iminfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_iminfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#define CMD_TBL_IMINFO MK_CMD_TBL_ENTRY( \
"iminfo", 3, CFG_MAXARGS, 1, do_iminfo, \
" - enable or disable data (writethrough) cache\n" \
),
-void do_icache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_dcache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_icache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_dcache (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_ICACHE
#define CMD_TBL_DCACHE
" - read/write `cnt' bytes at EEPROM offset `off'\n" \
),
-void do_eeprom (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_eeprom (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
"protect off all\n - make all FLASH banks writable\n" \
),
-void do_flinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_flerase(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_protect(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_flinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_flerase(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_protect(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_FLINFO
#define CMD_TBL_FLERASE
"\n - simple SDRAM read/write test\n" \
),
-void do_mem_md (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_mm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_nm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_mw (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_cp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_cmp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_crc (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_base (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_loop (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
-void do_mem_mtest (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_md (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_mm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_nm (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_mw (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_cp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_cmp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_crc (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_base (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_loop (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_mem_mtest (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_MD
"[loadAddress] [bootfilename]\n" \
),
-void do_bootp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_bootp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#define CMD_TBL_TFTPB MK_CMD_TBL_ENTRY( \
"tftpboot", 4, 3, 1, do_tftpb, \
),
-void do_tftpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_tftpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#define CMD_TBL_RARPB MK_CMD_TBL_ENTRY( \
),
-void do_rarpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_rarpb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#if (CONFIG_COMMANDS & CFG_CMD_DHCP)
#define CMD_TBL_DHCP MK_CMD_TBL_ENTRY( \
),
-void do_dhcp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_dhcp (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_DHCP
#endif /* CFG_CMD_DHCP */
"printenv name ...\n" \
" - print value of environment variable 'name'\n" \
),
-void do_printenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_printenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#define CMD_TBL_SETENV MK_CMD_TBL_ENTRY( \
"setenv", 6, CFG_MAXARGS, 0, do_setenv, \
"setenv name\n" \
" - delete environment variable 'name'\n" \
),
-void do_setenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_setenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#if ((CONFIG_COMMANDS & (CFG_CMD_ENV|CFG_CMD_FLASH)) == (CFG_CMD_ENV|CFG_CMD_FLASH))
#define CMD_TBL_SAVEENV MK_CMD_TBL_ENTRY( \
"saveenv - save environment variables to persistent storage\n", \
NULL \
),
-void do_saveenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_saveenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_SAVEENV
#endif /* CFG_CMD_ENV */
" - display 'message' string and get environment variable 'name'" \
"from stdin (max 'size' chars)\n" \
),
-void do_askenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_askenv (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_ASKENV
#endif /* CFG_CMD_ASKENV */
"var [...]\n" \
" - run the commands in the environment variable(s) 'var'\n" \
),
-void do_run (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_run (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_RUN
#endif /* CFG_CMD_RUN */
"pinit off - power off PCMCIA socket\n" \
),
-void do_pinit (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_pinit (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
#define CMD_TBL_PINIT
#endif
" - with argument: set the system date & time\n" \
),
-void do_date (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_date (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
#else
int maxargs; /* maximum number of arguments */
int repeatable; /* autorepeat allowed? */
/* Implementation function */
- void (*cmd)(struct cmd_tbl_s *, bd_t *, int, int, char *[]);
+ int (*cmd)(struct cmd_tbl_s *, bd_t *, int, int, char *[]);
char *usage; /* Usage message (short) */
#ifdef CFG_LONGHELP
char *help; /* Help message (long) */
* void function (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
*/
-typedef void command_t (cmd_tbl_t *, bd_t *, int, int, char *[]);
+typedef int command_t (cmd_tbl_t *, bd_t *, int, int, char *[]);
#endif /* __ASSEMBLY__ */
#define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT|CONFIG_BOOTP_BOOTFILESIZE)
-#define CONFIG_COMMANDS (CONFIG_CMD_DFL)
+#define CONFIG_COMMANDS (CONFIG_CMD_DFL | CFG_CMD_JFFS2)
/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
#include <cmd_confdefs.h>
#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x1C000) /* Addr of Environment Sector */
#define CFG_ENV_SIZE 0x4000 /* Total Size of Environment Sector */
+/* Flash banks JFFS2 should use */
+#define CFG_JFFS2_FIRST_BANK 0
+#define CFG_JFFS2_FIRST_SECTOR 8
+#define CFG_JFFS2_NUM_BANKS 2
+
#endif /* __CONFIG_H */
/* Rubin encoder/decoder header */
/* work started at : aug 3, 1994 */
/* last modification : aug 15, 1994 */
-/* $Id: compr_rubin.h,v 1.1 2002/03/14 16:44:03 mariusgroeger Exp $ */
#define RUBIN_REG_SIZE 16
#define UPPER_BIT_RUBIN (((long) 1)<<(RUBIN_REG_SIZE-1))
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the RHEPL or the GPL.
- *
- * $Id: jffs2.h,v 1.1 2002/03/14 16:44:03 mariusgroeger Exp $
- *
*/
#ifndef __LINUX_JFFS2_H__
#define load_kernel_h
/*-------------------------------------------------------------------------
* Filename: load_kernel.h
- * Version: $Id: load_kernel.h,v 1.1 2002/03/14 16:44:03 mariusgroeger Exp $
* Copyright: Copyright (C) 2001, Russ Dill
* Author: Russ Dill <Russ.Dill@asu.edu>
* Description: header for load kernel modules
/*-------------------------------------------------------------------------
* Filename: mini_inflate.h
- * Version: $Id: mini_inflate.h,v 1.1 2002/03/14 16:44:03 mariusgroeger Exp $
* Copyright: Copyright (C) 2001, Russ Dill
* Author: Russ Dill <Russ.Dill@asu.edu>
* Description: Mini deflate implementation
/*-------------------------------------------------------------------------
* Filename: serial.h
- * Version: $Id: serial.h,v 1.1 2002/03/14 16:44:03 mariusgroeger Exp $
* Copyright: Copyright (C) 1999, Erik Mouw
* Author: Erik Mouw <J.A.K.Mouw@its.tudelft.nl>
* Description: Header file for serial.c
*
*/
-#ident "$Id: serial.h,v 1.1 2002/03/14 16:44:03 mariusgroeger Exp $"
-
-#ifndef BLOB_SERIAL_H
-#define BLOB_SERIAL_H
-
-
#include "types.h"
/* Function protos */
void serial_getc(const char c);
int serial_tstc(void);
-#endif
#ifndef __VERSION_H__
#define __VERSION_H__
-#define ARMBOOT_VERSION "ARMboot 1.0"
+#define ARMBOOT_VERSION "ARMboot 1.0.1"
#endif /* __VERSION_H__ */
# Use native tools and options
#
CPPFLAGS = -Wall -I../include -I.. -DTEXT_BASE=$(TEXT_BASE)
-CFLAGS = $(CPPFLAGS) -O
+CFLAGS = $(CPPFLAGS) -O -DHOST_TOOLS
AFLAGS = -D__ASSEMBLY__ $(CPPFLAGS)
CC = $(HOSTCC)
MAKEDEPEND = makedepend