diff --git a/commands/md.c b/commands/md.c index c1361a6a2..07a03d51f 100644 --- a/commands/md.c +++ b/commands/md.c @@ -44,6 +44,7 @@ static int do_mem_md(int argc, char *argv[]) char *filename = "/dev/mem"; int mode = O_RWSIZE_4; int swab = 0; + void *map; if (argc < 2) return COMMAND_ERROR_USAGE; @@ -65,6 +66,13 @@ static int do_mem_md(int argc, char *argv[]) if (fd < 0) return 1; + map = memmap(fd, PROT_READ); + if (map != (void *)-1) { + ret = memory_display(map + start, start, size, + mode >> O_RWSIZE_SHIFT, swab); + goto out; + } + do { now = min(size, (loff_t)RW_BUF_SIZE); r = read(fd, mem_rw_buf, now);