diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-06-09 09:26:43 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-06-09 09:26:43 +0200 |
commit | 0c3bb48db9249662db3b9e74dc4f6788b12f3c39 (patch) | |
tree | 3e26e6a94d31eb3011c1d3da6a646b3492bd5ca0 /commands | |
parent | 11efb8022225d0ff2c6bd15eedc8da200c79be5a (diff) | |
parent | d7050d1a9d2b13a24421e13b2f5cdada6bf90182 (diff) | |
download | barebox-0c3bb48db9249662db3b9e74dc4f6788b12f3c39.tar.gz barebox-0c3bb48db9249662db3b9e74dc4f6788b12f3c39.tar.xz |
Merge branch 'for-next/mem64'
Diffstat (limited to 'commands')
-rw-r--r-- | commands/md.c | 3 | ||||
-rw-r--r-- | commands/mem.c | 3 | ||||
-rw-r--r-- | commands/memcmp.c | 3 | ||||
-rw-r--r-- | commands/memcpy.c | 3 | ||||
-rw-r--r-- | commands/memset.c | 3 | ||||
-rw-r--r-- | commands/mm.c | 20 | ||||
-rw-r--r-- | commands/mw.c | 10 |
7 files changed, 36 insertions, 9 deletions
diff --git a/commands/md.c b/commands/md.c index 07a03d51f3..c88259a3f8 100644 --- a/commands/md.c +++ b/commands/md.c @@ -49,7 +49,7 @@ static int do_mem_md(int argc, char *argv[]) if (argc < 2) return COMMAND_ERROR_USAGE; - if (mem_parse_options(argc, argv, "bwls:x", &mode, &filename, NULL, + if (mem_parse_options(argc, argv, "bwlqs:x", &mode, &filename, NULL, &swab) < 0) return 1; @@ -105,6 +105,7 @@ BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT ("-b", "byte access") BAREBOX_CMD_HELP_OPT ("-w", "word access (16 bit)") BAREBOX_CMD_HELP_OPT ("-l", "long access (32 bit)") +BAREBOX_CMD_HELP_OPT ("-q", "quad access (64 bit)") BAREBOX_CMD_HELP_OPT ("-s FILE", "display file (default /dev/mem)") BAREBOX_CMD_HELP_OPT ("-x", "swap bytes at output") BAREBOX_CMD_HELP_TEXT("") diff --git a/commands/mem.c b/commands/mem.c index 568050d34b..23c703f0b5 100644 --- a/commands/mem.c +++ b/commands/mem.c @@ -84,6 +84,9 @@ int mem_parse_options(int argc, char *argv[], char *optstr, int *mode, case 'l': *mode = O_RWSIZE_4; break; + case 'q': + *mode = O_RWSIZE_8; + break; case 's': *sourcefile = optarg; break; diff --git a/commands/memcmp.c b/commands/memcmp.c index d048150672..e079d5f78e 100644 --- a/commands/memcmp.c +++ b/commands/memcmp.c @@ -49,7 +49,7 @@ static int do_memcmp(int argc, char *argv[]) int offset = 0; struct stat statbuf; - if (mem_parse_options(argc, argv, "bwls:d:", &mode, &sourcefile, + if (mem_parse_options(argc, argv, "bwlqs:d:", &mode, &sourcefile, &destfile, NULL) < 0) return 1; @@ -138,6 +138,7 @@ BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT ("-b", "byte access") BAREBOX_CMD_HELP_OPT ("-w", "word access (16 bit)") BAREBOX_CMD_HELP_OPT ("-l", "long access (32 bit)") +BAREBOX_CMD_HELP_OPT ("-q", "quad access (64 bit)") BAREBOX_CMD_HELP_OPT ("-s FILE", "source file (default /dev/mem)") BAREBOX_CMD_HELP_OPT ("-d FILE", "destination file (default /dev/mem)") BAREBOX_CMD_HELP_END diff --git a/commands/memcpy.c b/commands/memcpy.c index 78716b1bbc..9c8b64525c 100644 --- a/commands/memcpy.c +++ b/commands/memcpy.c @@ -47,7 +47,7 @@ static int do_memcpy(int argc, char *argv[]) struct stat statbuf; int ret = 0; - if (mem_parse_options(argc, argv, "bwls:d:", &mode, &sourcefile, + if (mem_parse_options(argc, argv, "bwlqs:d:", &mode, &sourcefile, &destfile, NULL) < 0) return 1; @@ -135,6 +135,7 @@ BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT ("-b", "byte access") BAREBOX_CMD_HELP_OPT ("-w", "word access (16 bit)") BAREBOX_CMD_HELP_OPT ("-l", "long access (32 bit)") +BAREBOX_CMD_HELP_OPT ("-q", "quad access (64 bit)") BAREBOX_CMD_HELP_OPT ("-s FILE", "source file (default /dev/mem)") BAREBOX_CMD_HELP_OPT ("-d FILE", "write file (default /dev/mem)") BAREBOX_CMD_HELP_END diff --git a/commands/memset.c b/commands/memset.c index bb5f46de7a..fc5b659b9b 100644 --- a/commands/memset.c +++ b/commands/memset.c @@ -44,7 +44,7 @@ static int do_memset(int argc, char *argv[]) int ret = 1; char *file = "/dev/mem"; - if (mem_parse_options(argc, argv, "bwld:", &mode, NULL, &file, + if (mem_parse_options(argc, argv, "bwlqd:", &mode, NULL, &file, NULL) < 0) return 1; @@ -92,6 +92,7 @@ BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT ("-b", "byte access") BAREBOX_CMD_HELP_OPT ("-w", "word access (16 bit)") BAREBOX_CMD_HELP_OPT ("-l", "long access (32 bit)") +BAREBOX_CMD_HELP_OPT ("-q", "quad access (64 bit)") BAREBOX_CMD_HELP_OPT ("-d FILE", "write file (default /dev/mem)") BAREBOX_CMD_HELP_END diff --git a/commands/mm.c b/commands/mm.c index ff2e746670..7c890a6696 100644 --- a/commands/mm.c +++ b/commands/mm.c @@ -38,9 +38,10 @@ static int do_mem_mm(int argc, char *argv[]) u8 val8; u16 val16; u32 val32; - u32 value, mask; + u64 val64; + u64 value, mask; - if (mem_parse_options(argc, argv, "bwld:", &mode, NULL, &filename, + if (mem_parse_options(argc, argv, "bwlqd:", &mode, NULL, &filename, &swab) < 0) return 1; @@ -48,8 +49,8 @@ static int do_mem_mm(int argc, char *argv[]) return COMMAND_ERROR_USAGE; adr = strtoull_suffix(argv[optind++], NULL, 0); - value = simple_strtoul(argv[optind++], NULL, 0); - mask = simple_strtoul(argv[optind++], NULL, 0); + value = simple_strtoull(argv[optind++], NULL, 0); + mask = simple_strtoull(argv[optind++], NULL, 0); fd = open_and_lseek(filename, mode | O_RDWR, adr); if (fd < 0) @@ -86,6 +87,16 @@ static int do_mem_mm(int argc, char *argv[]) if (ret < 0) goto out_write; break; + case O_RWSIZE_8: + if (ret < 0) + goto out_read; + ret = pread(fd, &val64, 8, adr); + val64 &= ~mask; + val64 |= (value & mask); + ret = pwrite(fd, &val64, 8, adr); + if (ret < 0) + goto out_write; + break; } close(fd); @@ -110,6 +121,7 @@ BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT ("-b", "byte access") BAREBOX_CMD_HELP_OPT ("-w", "word access (16 bit)") BAREBOX_CMD_HELP_OPT ("-l", "long access (32 bit)") +BAREBOX_CMD_HELP_OPT ("-q", "quad access (64 bit)") BAREBOX_CMD_HELP_OPT ("-d FILE", "write file (default /dev/mem)") BAREBOX_CMD_HELP_END diff --git a/commands/mw.c b/commands/mw.c index f0384f6435..8ca3c61d7f 100644 --- a/commands/mw.c +++ b/commands/mw.c @@ -42,7 +42,7 @@ static int do_mem_mw(int argc, char *argv[]) loff_t adr; int swab = 0; - if (mem_parse_options(argc, argv, "bwld:x", &mode, NULL, &filename, + if (mem_parse_options(argc, argv, "bwlqd:x", &mode, NULL, &filename, &swab) < 0) return 1; @@ -59,6 +59,7 @@ static int do_mem_mw(int argc, char *argv[]) u8 val8; u16 val16; u32 val32; + u64 val64; switch (mode) { case O_RWSIZE_1: val8 = simple_strtoul(argv[optind], NULL, 0); @@ -76,6 +77,12 @@ static int do_mem_mw(int argc, char *argv[]) val32 = __swab32(val32); ret = write(fd, &val32, 4); break; + case O_RWSIZE_8: + val64 = simple_strtoull(argv[optind], NULL, 0); + if (swab) + val64 = __swab64(val64); + ret = write(fd, &val64, 8); + break; } if (ret < 0) { perror("write"); @@ -97,6 +104,7 @@ BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT ("-b", "byte access") BAREBOX_CMD_HELP_OPT ("-w", "word access (16 bit)") BAREBOX_CMD_HELP_OPT ("-l", "long access (32 bit)") +BAREBOX_CMD_HELP_OPT ("-q", "quad access (64 bit)") BAREBOX_CMD_HELP_OPT ("-d FILE", "write file (default /dev/mem)") BAREBOX_CMD_HELP_END |