diff options
author | Sascha Hauer <sha@octopus.labnet.pengutronix.de> | 2007-09-27 16:34:00 +0200 |
---|---|---|
committer | Sascha Hauer <sha@octopus.labnet.pengutronix.de> | 2007-09-27 16:34:00 +0200 |
commit | 26b4200ba5b87699435f167f12fe4532bf66ba4a (patch) | |
tree | f6811a54d3e5d410d84c6ab636dc7423fa6cf5d3 /board/ipe337/cmd_alternate.c | |
parent | 79ed00ba92a0c2dd209d94e0550d582897ca176e (diff) | |
download | barebox-26b4200ba5b87699435f167f12fe4532bf66ba4a.tar.gz barebox-26b4200ba5b87699435f167f12fe4532bf66ba4a.tar.xz |
add alternate command for ipe337 board
Diffstat (limited to 'board/ipe337/cmd_alternate.c')
-rw-r--r-- | board/ipe337/cmd_alternate.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/board/ipe337/cmd_alternate.c b/board/ipe337/cmd_alternate.c new file mode 100644 index 0000000000..fc43953315 --- /dev/null +++ b/board/ipe337/cmd_alternate.c @@ -0,0 +1,51 @@ +#include <common.h> +#include <command.h> +#include <linux/stat.h> +#include <malloc.h> +#include <fs.h> + +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 <file>\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 + |