summaryrefslogtreecommitdiffstats
path: root/sys/i386/conf
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2002-07-16 09:28:25 +0000
committermarkm <markm@FreeBSD.org>2002-07-16 09:28:25 +0000
commit8b9e48e9c04092e3736007abdd5babad8e690338 (patch)
tree697c003efd55d5e8a7db293b49c57ea8492d99d3 /sys/i386/conf
parent5e26e30d8913ab5e8322f0de19e08d01934c5605 (diff)
downloadFreeBSD-src-8b9e48e9c04092e3736007abdd5babad8e690338.zip
FreeBSD-src-8b9e48e9c04092e3736007abdd5babad8e690338.tar.gz
Retire the perl gethints.conf in favour of an awk version. Move
the awk version to a central place for maintenance. Submitted by: Cyrille Lefevre <cyrille.lefevre@laposte.net>
Diffstat (limited to 'sys/i386/conf')
-rw-r--r--sys/i386/conf/gethints.awk116
-rw-r--r--sys/i386/conf/gethints.pl100
2 files changed, 116 insertions, 100 deletions
diff --git a/sys/i386/conf/gethints.awk b/sys/i386/conf/gethints.awk
new file mode 100644
index 0000000..a2de29e
--- /dev/null
+++ b/sys/i386/conf/gethints.awk
@@ -0,0 +1,116 @@
+#! /usr/bin/awk -f
+#
+# This is a transition aid. It extracts old-style configuration information
+# from a config file and writes an equivalent device.hints file to stdout.
+# You can use that with loader(8) or statically compile it in with the
+# 'hints' directive. See how GENERIC and GENERIC.hints fit together for
+# a static example. You should use loader(8) if at all possible.
+#
+# $FreeBSD$
+
+# skip commented lines, empty lines and not "device" lines
+/^[ \t]*#/ || /^[ \t]*$/ || !/[ \t]*device/ { next; }
+
+# input format :
+# device <name><unit> at <controler>[?] [key [val]]...
+# possible keys are :
+# disable, port #, irq #, drq #, drive #, iomem #, iosiz #,
+# flags #, bus #, target #, unit #.
+# output format :
+# hint.<name>.<unit>.<key>=<val>
+# mapped keys are :
+# iomem -> maddr, iosiz -> msize.
+{
+ gsub ("#.*", ""); # delete comments
+ gsub ("\"", ""); # and double-quotes
+ nameunit = $2; # <name><unit>
+ at = $3; # at
+ controler = $4; # <controler>[?]
+ rest = 5; # optional keys begin at indice 5
+ if (at != "at" || controler == "")
+ next; # skip devices w/o controlers
+ name = nameunit;
+ sub ("[0-9]*$", "", name); # get the name
+ unit = nameunit;
+ sub ("^" name, "", unit); # and the unit
+ sub ("\?$", "", controler);
+ printf "hint.%s.%s.at=\"%s\"\n", name, unit, controler;
+ # for each keys, if any ?
+ for (key = $rest; rest <= NF; key = $(++rest)) {
+ # skip auto-detect keys (the one w/ a ?)
+ if (key == "port?" || key == "drq?" || key == "irq?" || \
+ key == "iomem?" || key == "iosiz?")
+ continue;
+ # disable has no value, so, give it one
+ if (key == "disable") {
+ printf "hint.%s.%s.disabled=\"1\"\n", name, unit;
+ continue;
+ }
+ # recognized keys
+ if (key == "port" || key == "irq" || key == "drq" || \
+ key == "drive" || key == "iomem" || key == "iosiz" || \
+ key == "flags" || key == "bus" || key == "target" || \
+ key == "unit") {
+ val = $(++rest);
+ if (val == "?") # has above
+ continue;
+ if (key == "port") {
+ # map port macros to static values
+ sub ("IO_AHA0", "0x330", val);
+ sub ("IO_AHA1", "0x334", val);
+ sub ("IO_ASC1", "0x3EB", val);
+ sub ("IO_ASC2", "0x22B", val);
+ sub ("IO_ASC3", "0x26B", val);
+ sub ("IO_ASC4", "0x2AB", val);
+ sub ("IO_ASC5", "0x2EB", val);
+ sub ("IO_ASC6", "0x32B", val);
+ sub ("IO_ASC7", "0x36B", val);
+ sub ("IO_ASC8", "0x3AB", val);
+ sub ("IO_BT0", "0x330", val);
+ sub ("IO_BT1", "0x334", val);
+ sub ("IO_CGA", "0x3D0", val);
+ sub ("IO_COM1", "0x3F8", val);
+ sub ("IO_COM2", "0x2F8", val);
+ sub ("IO_COM3", "0x3E8", val);
+ sub ("IO_COM4", "0x2E8", val);
+ sub ("IO_DMA1", "0x000", val);
+ sub ("IO_DMA2", "0x0C0", val);
+ sub ("IO_DMAPG", "0x080", val);
+ sub ("IO_FD1", "0x3F0", val);
+ sub ("IO_FD2", "0x370", val);
+ sub ("IO_GAME", "0x201", val);
+ sub ("IO_GSC1", "0x270", val);
+ sub ("IO_GSC2", "0x2E0", val);
+ sub ("IO_GSC3", "0x370", val);
+ sub ("IO_GSC4", "0x3E0", val);
+ sub ("IO_ICU1", "0x020", val);
+ sub ("IO_ICU2", "0x0A0", val);
+ sub ("IO_KBD", "0x060", val);
+ sub ("IO_LPT1", "0x378", val);
+ sub ("IO_LPT2", "0x278", val);
+ sub ("IO_LPT3", "0x3BC", val);
+ sub ("IO_MDA", "0x3B0", val);
+ sub ("IO_NMI", "0x070", val);
+ sub ("IO_NPX", "0x0F0", val);
+ sub ("IO_PMP1", "0x026", val);
+ sub ("IO_PMP2", "0x178", val);
+ sub ("IO_PPI", "0x061", val);
+ sub ("IO_RTC", "0x070", val);
+ sub ("IO_TIMER1", "0x040", val);
+ sub ("IO_TIMER2", "0x048", val);
+ sub ("IO_UHA0", "0x330", val);
+ sub ("IO_VGA", "0x3C0", val);
+ sub ("IO_WD1", "0x1F0", val);
+ sub ("IO_WD2", "0x170", val);
+ } else {
+ # map key names
+ sub ("iomem", "maddr", key);
+ sub ("iosiz", "msize", key);
+ }
+ printf "hint.%s.%s.%s=\"%s\"\n", name, unit, key, val;
+ continue;
+ }
+ printf ("unrecognized config token '%s:%s' on line %s\n",
+ rest, key, NR); # > "/dev/stderr";
+ }
+}
diff --git a/sys/i386/conf/gethints.pl b/sys/i386/conf/gethints.pl
deleted file mode 100644
index 9eeb193..0000000
--- a/sys/i386/conf/gethints.pl
+++ /dev/null
@@ -1,100 +0,0 @@
-#! /usr/bin/perl
-#
-# This is a transition aid. It extracts old-style configuration information
-# from a config file and writes an equivalent device.hints file to stdout.
-# You can use that with loader(8) or statically compile it in with the
-# 'hints' directive. See how GENERIC and GENERIC.hints fit together for
-# a static example. You should use loader(8) if at all possible.
-#
-# $FreeBSD$
-
-while (<>) {
- $line++;
- chop;
- s/#.*//;
- next unless /^device/;
- s/"//g;
- ($dev, $nameunit, $at, $where, @rest) = split;
- next unless $at eq "at" && $where ne "";
- $name = $nameunit;
- $name =~ s/[0-9]*$//g;
- $unit = $nameunit;
- $unit =~ s/.*[^0-9]//g;
- $where =~ s/\?$//;
- print "hint.$name.$unit.at=\"$where\"\n";
- while ($key = shift(@rest)) {
- if ($key eq "disable") {
- print "hint.$name.$unit.disabled=\"1\"\n";
- next;
- }
- if ($key eq "port") {
- $val = shift(@rest);
- $val =~ s/IO_AHA0/0x330/;
- $val =~ s/IO_AHA1/0x334/;
- $val =~ s/IO_ASC1/0x3EB/;
- $val =~ s/IO_ASC2/0x22B/;
- $val =~ s/IO_ASC3/0x26B/;
- $val =~ s/IO_ASC4/0x2AB/;
- $val =~ s/IO_ASC5/0x2EB/;
- $val =~ s/IO_ASC6/0x32B/;
- $val =~ s/IO_ASC7/0x36B/;
- $val =~ s/IO_ASC8/0x3AB/;
- $val =~ s/IO_BT0/0x330/;
- $val =~ s/IO_BT1/0x334/;
- $val =~ s/IO_CGA/0x3D0/;
- $val =~ s/IO_COM1/0x3F8/;
- $val =~ s/IO_COM2/0x2F8/;
- $val =~ s/IO_COM3/0x3E8/;
- $val =~ s/IO_COM4/0x2E8/;
- $val =~ s/IO_DMA1/0x000/;
- $val =~ s/IO_DMA2/0x0C0/;
- $val =~ s/IO_DMAPG/0x080/;
- $val =~ s/IO_FD1/0x3F0/;
- $val =~ s/IO_FD2/0x370/;
- $val =~ s/IO_GAME/0x201/;
- $val =~ s/IO_GSC1/0x270/;
- $val =~ s/IO_GSC2/0x2E0/;
- $val =~ s/IO_GSC3/0x370/;
- $val =~ s/IO_GSC4/0x3E0/;
- $val =~ s/IO_ICU1/0x020/;
- $val =~ s/IO_ICU2/0x0A0/;
- $val =~ s/IO_KBD/0x060/;
- $val =~ s/IO_LPT1/0x378/;
- $val =~ s/IO_LPT2/0x278/;
- $val =~ s/IO_LPT3/0x3BC/;
- $val =~ s/IO_MDA/0x3B0/;
- $val =~ s/IO_NMI/0x070/;
- $val =~ s/IO_NPX/0x0F0/;
- $val =~ s/IO_PMP1/0x026/;
- $val =~ s/IO_PMP2/0x178/;
- $val =~ s/IO_PPI/0x061/;
- $val =~ s/IO_RTC/0x070/;
- $val =~ s/IO_TIMER1/0x040/;
- $val =~ s/IO_TIMER2/0x048/;
- $val =~ s/IO_UHA0/0x330/;
- $val =~ s/IO_VGA/0x3C0/;
- $val =~ s/IO_WD1/0x1F0/;
- $val =~ s/IO_WD2/0x170/;
- if ($val ne "?") {
- print "hint.$name.$unit.port=\"$val\"\n";
- }
- next;
- }
- if ($key eq "port?" || $key eq "drq?" || $key eq "irq?" ||
- $key eq "iomem?" || $key eq "iosiz?") {
- next;
- }
- if ($key eq "irq" || $key eq "drq" || $key eq "drive" ||
- $key eq "iomem" || $key eq "iosiz" || $key eq "flags"||
- $key eq "bus" || $key eq "target" || $key eq "unit") {
- $key =~ s/iomem/maddr/;
- $key =~ s/iosiz/msize/;
- $val = shift(@rest);
- if ($val ne "?") {
- print "hint.$name.$unit.$key=\"$val\"\n";
- }
- next;
- }
- print STDERR "unrecognized config token '$key' on line $line\n";
- }
-}
OpenPOWER on IntegriCloud