From ed9a782a423896a8f5cf55811fab51317a699708 Mon Sep 17 00:00:00 2001 From: "Ronald G. Minnich" Date: Thu, 5 Sep 2002 20:44:24 +0000 Subject: [PATCH] Dump memory so we can figure out where the bios is. --- util/dumpdevmem/Makefile | 2 ++ util/dumpdevmem/dumpdevmem.c | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 util/dumpdevmem/Makefile create mode 100644 util/dumpdevmem/dumpdevmem.c diff --git a/util/dumpdevmem/Makefile b/util/dumpdevmem/Makefile new file mode 100644 index 0000000000..7e24c6bd23 --- /dev/null +++ b/util/dumpdevmem/Makefile @@ -0,0 +1,2 @@ +dumpdevmem: dumpdevmem.o + cc -o dumpdevmem dumpdevmem.o \ No newline at end of file diff --git a/util/dumpdevmem/dumpdevmem.c b/util/dumpdevmem/dumpdevmem.c new file mode 100644 index 0000000000..8a3544a03e --- /dev/null +++ b/util/dumpdevmem/dumpdevmem.c @@ -0,0 +1,46 @@ +#include +#include + +#include +#include + +main(int argc, char *argv[]) +{ + int i; + volatile unsigned char *cp; + int fd; + void *v; + off_t nvram = 0xffe00000; + size_t length = 0x200000; + + if ((argc > 1) && (! strncmp(argv[1], "--help", 6))) { + fprintf(stderr, + "Usage: %s [high 16 bits of base address [size]]\n", argv[0]); + fprintf(stderr, + "Dumps dev mem, starting at either argv[1]<<16 or (default) "); + fprintf(stderr, + "0xffe00000 for 0x200000 bytes (i.e. last 2MB of memory\n"); + fprintf(stderr, "Example: %s 0xfff00000 0x100000\n"); + fprintf(stderr, "Dumps last 1M of memory to stdout\n"); + exit(0); + } + if (argc > 1) + nvram = (strtol(argv[1], 0, 0)) << 16; + if (argc > 2) + length = (strtol(argv[2], 0, 0)) ; + if((fd = open("/dev/mem",O_RDWR)) != -1) + { + v = mmap(0, length, PROT_READ | PROT_WRITE, MAP_SHARED,fd,nvram); + fprintf(stderr, "mmap returns %p\n", v); + + if ( (int)v == -1) + { + perror("mmap"); + exit(1); + } + } else { + perror("open /dev/mem"); + exit(1); + } + write(fileno(stdout), v, length); +}