From 26b4200ba5b87699435f167f12fe4532bf66ba4a Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 27 Sep 2007 16:34:00 +0200 Subject: [PATCH] add alternate command for ipe337 board --- board/ipe337/Makefile | 1 + board/ipe337/cmd_alternate.c | 51 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 board/ipe337/cmd_alternate.c diff --git a/board/ipe337/Makefile b/board/ipe337/Makefile index 448133ceb..e16123812 100644 --- a/board/ipe337/Makefile +++ b/board/ipe337/Makefile @@ -1,3 +1,4 @@ obj-y += ipe337.o +obj-y += cmd_alternate.o extra-y += u-boot.lds diff --git a/board/ipe337/cmd_alternate.c b/board/ipe337/cmd_alternate.c new file mode 100644 index 000000000..fc4395331 --- /dev/null +++ b/board/ipe337/cmd_alternate.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include + +static int do_alternate (cmd_tbl_t *cmdtp, int argc, char *argv[]) +{ + void *buf; + size_t size; + ulong *ptr, val = 0, bitcount = 0; + + if (argc != 2) { + u_boot_cmd_usage(cmdtp); + return 1; + } + + buf = read_file(argv[1], &size); + if (!buf) + return 1; + + ptr = buf; + + while ((ulong)ptr <= (ulong)buf + size && !(val = *ptr++)) + bitcount += 32; + + if (val) { + do { + if (val & 1) + break; + bitcount++; + } while (val >>= 1); + } + + printf("bitcount : %d\n", bitcount); + + free(buf); + return bitcount & 1 ? 2 : 3; +} + +static __maybe_unused char cmd_alternate_help[] = +"Usage: alternate \n" +"\n"; + +U_BOOT_CMD_START(alternate) + .maxargs = CONFIG_MAXARGS, + .cmd = do_alternate, + .usage = "count zero bits in a file", + U_BOOT_CMD_HELP(cmd_alternate_help) +U_BOOT_CMD_END +