summaryrefslogtreecommitdiffstats
path: root/sys/i386/conf/gethints.pl
blob: 9eeb1932ddbb8632d50480a79e56969bef0edb2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#! /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