summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-06-09 09:26:43 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2015-06-09 09:26:43 +0200
commit0c3bb48db9249662db3b9e74dc4f6788b12f3c39 (patch)
tree3e26e6a94d31eb3011c1d3da6a646b3492bd5ca0 /commands
parent11efb8022225d0ff2c6bd15eedc8da200c79be5a (diff)
parentd7050d1a9d2b13a24421e13b2f5cdada6bf90182 (diff)
downloadbarebox-0c3bb48db9249662db3b9e74dc4f6788b12f3c39.tar.gz
barebox-0c3bb48db9249662db3b9e74dc4f6788b12f3c39.tar.xz
Merge branch 'for-next/mem64'
Diffstat (limited to 'commands')
-rw-r--r--commands/md.c3
-rw-r--r--commands/mem.c3
-rw-r--r--commands/memcmp.c3
-rw-r--r--commands/memcpy.c3
-rw-r--r--commands/memset.c3
-rw-r--r--commands/mm.c20
-rw-r--r--commands/mw.c10
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