diff --git a/sys/pci/locate.pl b/sys/pci/locate.pl
new file mode 100755
index 00000000000..5fcb5d93b0c
--- /dev/null
+++ b/sys/pci/locate.pl
@@ -0,0 +1,31 @@
+#!/usr/local/bin/perl
+
+$errpos = hex($ARGV[0])/4;
+$ofs=0;
+
+open (INPUT, "cc -E ncr.c 2>/dev/null |");
+
+while ($_ = )
+{
+ last if /^struct script \{/;
+}
+
+while ($_ = )
+{
+ last if /^\}\;/;
+ ($label, $size) = /ncrcmd\s+(\S+)\s+\[([^]]+)/;
+ $size = eval($size);
+ if ($label) {
+ if ($errpos) {
+ if ($ofs + $size > $errpos) {
+ printf ("%4x: %s\n", $ofs * 4, $label);
+ printf ("%4x: %s + %d\n", $errpos * 4, $label, $errpos - $ofs);
+ last;
+ }
+ $ofs += $size;
+ } else {
+ printf ("%4x: %s\n", $ofs * 4, $label);
+ }
+ }
+}
+