diff --git a/usr.sbin/ifmcstat/ifmcstat.8 b/usr.sbin/ifmcstat/ifmcstat.8
index 93221e15d854..5298e7183e6d 100644
--- a/usr.sbin/ifmcstat/ifmcstat.8
+++ b/usr.sbin/ifmcstat/ifmcstat.8
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 19, 2007
+.Dd March 20, 2007
 .Dt IFMCSTAT 8
 .Os
 .Sh NAME
@@ -39,7 +39,8 @@
 .Nm
 .Op Fl i Ar interface
 .Op Fl f Ar address-family
-.Op Fl k Ar kernel
+.Op Fl M Ar core
+.Op Fl N Ar system
 .Nm
 .Op Ar kernel
 .\"
@@ -59,13 +60,17 @@ specifies the address-family to be displayed; currently only
 and
 .Ar inet6
 are supported.
-.It Fl k Ar kernel
+.It Fl M Ar core
+extracts values associated with the name list from the specified core,
+instead of the default
+.Pa /dev/kmem .
+.It Fl N Ar system
 extracts the name list from the specified kernel instead of the
 default, which is the kernel image the system has booted from.
-.It Nm Ar kernel
+.It Nm Ar system
 This is the same as specifying
 .Nm
-.Fl k Ar kernel .
+.Fl N Ar system .
 This usage is deprecated; it is supported only for backwards compatibility.
 .Sh BUGS
 .Nm
diff --git a/usr.sbin/ifmcstat/ifmcstat.c b/usr.sbin/ifmcstat/ifmcstat.c
index b2d13689c37c..71f3ede71b93 100644
--- a/usr.sbin/ifmcstat/ifmcstat.c
+++ b/usr.sbin/ifmcstat/ifmcstat.c
@@ -29,7 +29,6 @@
  * SUCH DAMAGE.
  */
 
-/* TODO: use -M, -N for kernel/namelist. */
 /* TODO: use sysctl. */
 
 #include <sys/cdefs.h>
@@ -151,12 +150,13 @@ int main(argc, argv)
 	int c;
 	struct	ifnet	*ifp, *nifp, ifnet;
 	const char *kernel = NULL;
+	const char *core = NULL;
 
 	/* "ifmcstat [kernel]" format is supported for backward compatiblity */
 	if (argc == 2)
 		kernel = argv[1];
 
-	while ((c = getopt(argc, argv, "i:f:k:")) != -1) {
+	while ((c = getopt(argc, argv, "i:f:M:N:")) != -1) {
 		switch (c) {
 		case 'i':
 			if ((ifindex = if_nametoindex(optarg)) == 0) {
@@ -176,17 +176,22 @@ int main(argc, argv)
 			fprintf(stderr, "%s: unknown address family\n", optarg);
 			exit(1);
 			/*NOTREACHED*/
-		case 'k':
+		case 'M':
+			core = strdup(optarg);
+			break;
+		case 'N':
 			kernel = strdup(optarg);
 			break;
 		default:
-			fprintf(stderr, "usage: ifmcstat [-i interface] [-f address family] [-k kernel]\n");
+			fprintf(stderr,
+"usage: ifmcstat [-i interface] [-f address family] [-M core] [-N system]\n");
 			exit(1);
 			/*NOTREACHED*/
 		}
 	}
 
-	if ((kvmd = kvm_openfiles(kernel, NULL, NULL, O_RDONLY, buf)) == NULL) {
+	if ((kvmd = kvm_openfiles(kernel, core, NULL, O_RDONLY, buf)) ==
+	    NULL) {
 		perror("kvm_openfiles");
 		exit(1);
 	}