summaryrefslogtreecommitdiff
path: root/sys/modules
diff options
context:
space:
mode:
authorcvs2svn <cvs2svn@FreeBSD.org>2004-04-21 11:08:56 +0000
committercvs2svn <cvs2svn@FreeBSD.org>2004-04-21 11:08:56 +0000
commite16674995c4574c1bd13b85d6d2bc2c5ea39deaa (patch)
tree6786fc3cf7351b8f7ad8129d68b23e35e490dd36 /sys/modules
parentb7b2f5b0b8f5aea3ab91202b2a2b26530f44bf2a (diff)
parent7a93aeb05a697b3542488d1d4d684291cff94f2d (diff)
Notes
Diffstat (limited to 'sys/modules')
-rw-r--r--sys/modules/Makefile171
-rw-r--r--sys/modules/Makefile.inc6
-rw-r--r--sys/modules/aac/Makefile15
-rw-r--r--sys/modules/aac/aac_linux/Makefile10
-rw-r--r--sys/modules/accf_data/Makefile7
-rw-r--r--sys/modules/accf_http/Makefile7
-rw-r--r--sys/modules/agp/Makefile11
-rw-r--r--sys/modules/aha/Makefile15
-rw-r--r--sys/modules/aic7xxx/Makefile6
-rw-r--r--sys/modules/aic7xxx/Makefile.inc3
-rw-r--r--sys/modules/aic7xxx/ahc/Makefile40
-rw-r--r--sys/modules/aic7xxx/ahc/Makefile.inc3
-rw-r--r--sys/modules/aic7xxx/ahc/ahc_eisa/Makefile18
-rw-r--r--sys/modules/aic7xxx/ahc/ahc_pci/Makefile16
-rw-r--r--sys/modules/aic7xxx/ahd/Makefile36
-rw-r--r--sys/modules/aic7xxx/aicasm/Makefile30
-rw-r--r--sys/modules/amr/Makefile17
-rw-r--r--sys/modules/an/Makefile11
-rw-r--r--sys/modules/ar/Makefile8
-rw-r--r--sys/modules/asr/Makefile9
-rw-r--r--sys/modules/aue/Makefile11
-rw-r--r--sys/modules/bfe/Makefile9
-rw-r--r--sys/modules/bge/Makefile9
-rw-r--r--sys/modules/bktr/Makefile7
-rw-r--r--sys/modules/bktr/Makefile.inc3
-rw-r--r--sys/modules/bktr/bktr/Makefile21
-rw-r--r--sys/modules/bktr/bktr_mem/Makefile9
-rw-r--r--sys/modules/bridge/Makefile8
-rw-r--r--sys/modules/cam/Makefile35
-rw-r--r--sys/modules/canbepm/Makefile8
-rw-r--r--sys/modules/canbus/Makefile8
-rw-r--r--sys/modules/cardbus/Makefile9
-rw-r--r--sys/modules/cbb/Makefile9
-rw-r--r--sys/modules/ccd/Makefile14
-rw-r--r--sys/modules/cd9660/Makefile10
-rw-r--r--sys/modules/ciss/Makefile11
-rw-r--r--sys/modules/coda/Makefile15
-rw-r--r--sys/modules/coff/Makefile10
-rw-r--r--sys/modules/crypto/Makefile20
-rw-r--r--sys/modules/cryptodev/Makefile7
-rw-r--r--sys/modules/ctau/Makefile42
-rw-r--r--sys/modules/cue/Makefile11
-rw-r--r--sys/modules/cx/Makefile43
-rw-r--r--sys/modules/dc/Makefile9
-rw-r--r--sys/modules/dcons/Makefile19
-rw-r--r--sys/modules/dcons_crom/Makefile14
-rw-r--r--sys/modules/drm/Makefile5
-rw-r--r--sys/modules/drm/Makefile.inc3
-rw-r--r--sys/modules/drm/mga/Makefile10
-rw-r--r--sys/modules/drm/r128/Makefile9
-rw-r--r--sys/modules/drm/radeon/Makefile10
-rw-r--r--sys/modules/drm/tdfx/Makefile9
-rw-r--r--sys/modules/dummynet/Makefile12
-rw-r--r--sys/modules/ed/Makefile18
-rw-r--r--sys/modules/em/Makefile12
-rw-r--r--sys/modules/ext2fs/Makefile11
-rw-r--r--sys/modules/fdesc/Makefile10
-rw-r--r--sys/modules/firewire/Makefile9
-rw-r--r--sys/modules/firewire/Makefile.inc4
-rw-r--r--sys/modules/firewire/firewire/Makefile15
-rw-r--r--sys/modules/firewire/fwe/Makefile16
-rw-r--r--sys/modules/firewire/sbp/Makefile16
-rw-r--r--sys/modules/firewire/sbp_targ/Makefile16
-rw-r--r--sys/modules/fpu/Makefile8
-rw-r--r--sys/modules/fxp/Makefile8
-rw-r--r--sys/modules/gnufpu/Makefile16
-rw-r--r--sys/modules/gx/Makefile8
-rw-r--r--sys/modules/hifn/Makefile12
-rw-r--r--sys/modules/hpfs/Makefile10
-rw-r--r--sys/modules/ibcs2/Makefile20
-rw-r--r--sys/modules/ibcs2/ibcs2.866
-rw-r--r--sys/modules/ibcs2/ibcs2.sh43
-rw-r--r--sys/modules/ida/Makefile14
-rw-r--r--sys/modules/if_disc/Makefile18
-rw-r--r--sys/modules/if_ef/Makefile41
-rw-r--r--sys/modules/if_ef/ef.4102
-rw-r--r--sys/modules/if_faith/Makefile16
-rw-r--r--sys/modules/if_gif/Makefile18
-rw-r--r--sys/modules/if_gre/Makefile17
-rw-r--r--sys/modules/if_ppp/Makefile54
-rw-r--r--sys/modules/if_sl/Makefile20
-rw-r--r--sys/modules/if_stf/Makefile15
-rw-r--r--sys/modules/if_tap/Makefile17
-rw-r--r--sys/modules/if_tun/Makefile16
-rw-r--r--sys/modules/if_vlan/Makefile13
-rw-r--r--sys/modules/iir/Makefile11
-rw-r--r--sys/modules/ip6fw/Makefile17
-rw-r--r--sys/modules/ip_mroute_mod/Makefile9
-rw-r--r--sys/modules/ipfilter/Makefile14
-rw-r--r--sys/modules/ipfw/Makefile22
-rw-r--r--sys/modules/ispfw/Makefile7
-rw-r--r--sys/modules/joy/Makefile12
-rw-r--r--sys/modules/joy/joy.847
-rw-r--r--sys/modules/joy/joy.sh4
-rw-r--r--sys/modules/kue/Makefile11
-rw-r--r--sys/modules/lge/Makefile9
-rw-r--r--sys/modules/libiconv/Makefile18
-rw-r--r--sys/modules/libmchain/Makefile8
-rw-r--r--sys/modules/linprocfs/Makefile10
-rw-r--r--sys/modules/linux/Makefile41
-rw-r--r--sys/modules/linux/linux.848
-rw-r--r--sys/modules/linux/linux.sh21
-rw-r--r--sys/modules/md/Makefile8
-rw-r--r--sys/modules/mfs/Makefile9
-rw-r--r--sys/modules/mii/Makefile11
-rw-r--r--sys/modules/mlx/Makefile7
-rw-r--r--sys/modules/mly/Makefile11
-rw-r--r--sys/modules/msdos/Makefile10
-rw-r--r--sys/modules/my/Makefile8
-rw-r--r--sys/modules/ncp/Makefile44
-rw-r--r--sys/modules/ncv/Makefile11
-rw-r--r--sys/modules/netgraph/Makefile37
-rw-r--r--sys/modules/netgraph/Makefile.inc7
-rw-r--r--sys/modules/netgraph/UI/Makefile8
-rw-r--r--sys/modules/netgraph/async/Makefile8
-rw-r--r--sys/modules/netgraph/bpf/Makefile10
-rw-r--r--sys/modules/netgraph/bridge/Makefile7
-rw-r--r--sys/modules/netgraph/cisco/Makefile8
-rw-r--r--sys/modules/netgraph/echo/Makefile8
-rw-r--r--sys/modules/netgraph/eiface/Makefile7
-rw-r--r--sys/modules/netgraph/etf/Makefile8
-rw-r--r--sys/modules/netgraph/ether/Makefile7
-rw-r--r--sys/modules/netgraph/fec/Makefile11
-rw-r--r--sys/modules/netgraph/frame_relay/Makefile8
-rw-r--r--sys/modules/netgraph/hole/Makefile8
-rw-r--r--sys/modules/netgraph/iface/Makefile8
-rw-r--r--sys/modules/netgraph/ksocket/Makefile7
-rw-r--r--sys/modules/netgraph/l2tp/Makefile7
-rw-r--r--sys/modules/netgraph/lmi/Makefile8
-rw-r--r--sys/modules/netgraph/mppc/Makefile32
-rw-r--r--sys/modules/netgraph/netgraph/Makefile7
-rw-r--r--sys/modules/netgraph/one2many/Makefile7
-rw-r--r--sys/modules/netgraph/ppp/Makefile8
-rw-r--r--sys/modules/netgraph/pppoe/Makefile8
-rw-r--r--sys/modules/netgraph/pptpgre/Makefile8
-rw-r--r--sys/modules/netgraph/rfc1490/Makefile8
-rw-r--r--sys/modules/netgraph/socket/Makefile8
-rw-r--r--sys/modules/netgraph/sync_ar/Makefile11
-rw-r--r--sys/modules/netgraph/sync_sr/Makefile11
-rw-r--r--sys/modules/netgraph/tee/Makefile8
-rw-r--r--sys/modules/netgraph/tty/Makefile8
-rw-r--r--sys/modules/netgraph/vjc/Makefile10
-rw-r--r--sys/modules/netgraph/vlan/Makefile7
-rw-r--r--sys/modules/nfs/Makefile18
-rw-r--r--sys/modules/nge/Makefile9
-rw-r--r--sys/modules/nmdm/Makefile12
-rw-r--r--sys/modules/nsp/Makefile11
-rw-r--r--sys/modules/ntfs/Makefile10
-rw-r--r--sys/modules/nullfs/Makefile9
-rw-r--r--sys/modules/nwfs/Makefile30
-rw-r--r--sys/modules/osf1/Makefile26
-rw-r--r--sys/modules/osf1/osf1.847
-rw-r--r--sys/modules/osf1/osf1.sh36
-rw-r--r--sys/modules/pccard/Makefile9
-rw-r--r--sys/modules/pcfclock/Makefile8
-rw-r--r--sys/modules/pcic/Makefile9
-rw-r--r--sys/modules/pcn/Makefile9
-rw-r--r--sys/modules/pmc/Makefile9
-rw-r--r--sys/modules/portal/Makefile9
-rw-r--r--sys/modules/procfs/Makefile11
-rw-r--r--sys/modules/pst/Makefile9
-rw-r--r--sys/modules/ray/Makefile9
-rw-r--r--sys/modules/rl/Makefile9
-rw-r--r--sys/modules/rp/Makefile9
-rw-r--r--sys/modules/rue/Makefile11
-rw-r--r--sys/modules/safe/Makefile38
-rw-r--r--sys/modules/sbni/Makefile10
-rw-r--r--sys/modules/sbsh/Makefile8
-rw-r--r--sys/modules/scsi_low/Makefile8
-rw-r--r--sys/modules/sf/Makefile9
-rw-r--r--sys/modules/sis/Makefile9
-rw-r--r--sys/modules/sk/Makefile8
-rw-r--r--sys/modules/smbfs/Makefile71
-rw-r--r--sys/modules/snc/Makefile11
-rw-r--r--sys/modules/snp/Makefile8
-rw-r--r--sys/modules/sound/Makefile7
-rw-r--r--sys/modules/sound/Makefile.inc3
-rw-r--r--sys/modules/sound/driver/Makefile7
-rw-r--r--sys/modules/sound/driver/Makefile.inc5
-rw-r--r--sys/modules/sound/driver/ad1816/Makefile9
-rw-r--r--sys/modules/sound/driver/als4000/Makefile10
-rw-r--r--sys/modules/sound/driver/cmi/Makefile9
-rw-r--r--sys/modules/sound/driver/cs4281/Makefile9
-rw-r--r--sys/modules/sound/driver/csa/Makefile9
-rw-r--r--sys/modules/sound/driver/ds1/Makefile9
-rw-r--r--sys/modules/sound/driver/emu10k1/Makefile9
-rw-r--r--sys/modules/sound/driver/es137x/Makefile9
-rw-r--r--sys/modules/sound/driver/ess/Makefile9
-rw-r--r--sys/modules/sound/driver/fm801/Makefile9
-rwxr-xr-xsys/modules/sound/driver/ich/Makefile9
-rw-r--r--sys/modules/sound/driver/maestro/Makefile9
-rw-r--r--sys/modules/sound/driver/maestro3/Makefile12
-rw-r--r--sys/modules/sound/driver/mss/Makefile9
-rw-r--r--sys/modules/sound/driver/neomagic/Makefile9
-rw-r--r--sys/modules/sound/driver/sb16/Makefile10
-rw-r--r--sys/modules/sound/driver/sb8/Makefile10
-rw-r--r--sys/modules/sound/driver/sbc/Makefile8
-rw-r--r--sys/modules/sound/driver/solo/Makefile9
-rw-r--r--sys/modules/sound/driver/t4dwave/Makefile9
-rw-r--r--sys/modules/sound/driver/uaudio/Makefile9
-rw-r--r--sys/modules/sound/driver/via8233/Makefile9
-rw-r--r--sys/modules/sound/driver/via82c686/Makefile9
-rw-r--r--sys/modules/sound/driver/vibes/Makefile9
-rw-r--r--sys/modules/sound/pcm/Makefile12
-rw-r--r--sys/modules/sound/snd/Makefile16
-rw-r--r--sys/modules/splash/Makefile5
-rw-r--r--sys/modules/splash/Makefile.inc3
-rw-r--r--sys/modules/splash/bmp/Makefile8
-rw-r--r--sys/modules/splash/bmp/splash_bmp.c638
-rw-r--r--sys/modules/splash/pcx/Makefile7
-rw-r--r--sys/modules/splash/pcx/splash_pcx.c261
-rw-r--r--sys/modules/sppp/Makefile27
-rw-r--r--sys/modules/sr/Makefile8
-rw-r--r--sys/modules/ste/Makefile9
-rw-r--r--sys/modules/stg/Makefile11
-rw-r--r--sys/modules/streams/Makefile16
-rw-r--r--sys/modules/svr4/Makefile44
-rw-r--r--sys/modules/svr4/README38
-rw-r--r--sys/modules/svr4/TO-DO15
-rw-r--r--sys/modules/svr4/svr4.852
-rw-r--r--sys/modules/svr4/svr4.sh18
-rw-r--r--sys/modules/syscons/Makefile20
-rw-r--r--sys/modules/syscons/Makefile.inc3
-rw-r--r--sys/modules/syscons/apm/Makefile9
-rw-r--r--sys/modules/syscons/apm/apm_saver.c92
-rw-r--r--sys/modules/syscons/blank/Makefile9
-rw-r--r--sys/modules/syscons/blank/blank_saver.c69
-rw-r--r--sys/modules/syscons/daemon/Makefile9
-rw-r--r--sys/modules/syscons/daemon/daemon_saver.c403
-rw-r--r--sys/modules/syscons/dragon/Makefile10
-rw-r--r--sys/modules/syscons/dragon/dragon_saver.c275
-rw-r--r--sys/modules/syscons/fade/Makefile9
-rw-r--r--sys/modules/syscons/fade/fade_saver.c105
-rw-r--r--sys/modules/syscons/fire/Makefile10
-rw-r--r--sys/modules/syscons/fire/fire_saver.c135
-rw-r--r--sys/modules/syscons/green/Makefile9
-rw-r--r--sys/modules/syscons/green/green_saver.c69
-rw-r--r--sys/modules/syscons/logo/Makefile9
-rw-r--r--sys/modules/syscons/logo/logo.c354
-rw-r--r--sys/modules/syscons/logo/logo_saver.c157
-rw-r--r--sys/modules/syscons/rain/Makefile10
-rw-r--r--sys/modules/syscons/rain/rain_saver.c130
-rw-r--r--sys/modules/syscons/snake/Makefile9
-rw-r--r--sys/modules/syscons/snake/snake_saver.c152
-rw-r--r--sys/modules/syscons/star/Makefile9
-rw-r--r--sys/modules/syscons/star/star_saver.c139
-rw-r--r--sys/modules/syscons/warp/Makefile10
-rw-r--r--sys/modules/syscons/warp/warp_saver.c138
-rw-r--r--sys/modules/ti/Makefile7
-rw-r--r--sys/modules/tl/Makefile9
-rw-r--r--sys/modules/trm/Makefile12
-rw-r--r--sys/modules/twa/Makefile25
-rw-r--r--sys/modules/twe/Makefile32
-rw-r--r--sys/modules/tx/Makefile8
-rw-r--r--sys/modules/txp/Makefile8
-rw-r--r--sys/modules/ubsa/Makefile11
-rw-r--r--sys/modules/ubsec/Makefile12
-rw-r--r--sys/modules/ucom/Makefile10
-rw-r--r--sys/modules/ufm/Makefile8
-rw-r--r--sys/modules/uftdi/Makefile11
-rw-r--r--sys/modules/ugen/Makefile10
-rw-r--r--sys/modules/uhid/Makefile10
-rw-r--r--sys/modules/ukbd/Makefile14
-rw-r--r--sys/modules/ulpt/Makefile10
-rw-r--r--sys/modules/umapfs/Makefile9
-rw-r--r--sys/modules/umass/Makefile12
-rw-r--r--sys/modules/umct/Makefile11
-rw-r--r--sys/modules/umodem/Makefile10
-rw-r--r--sys/modules/ums/Makefile10
-rw-r--r--sys/modules/union/Makefile9
-rw-r--r--sys/modules/uplcom/Makefile12
-rw-r--r--sys/modules/usb/Makefile29
-rw-r--r--sys/modules/uscanner/Makefile12
-rw-r--r--sys/modules/uvisor/Makefile11
-rw-r--r--sys/modules/uvscom/Makefile12
-rw-r--r--sys/modules/vesa/Makefile8
-rw-r--r--sys/modules/vinum/.gdbinit.crash4
-rw-r--r--sys/modules/vinum/.gdbinit.kernel645
-rw-r--r--sys/modules/vinum/.gdbinit.serial5
-rw-r--r--sys/modules/vinum/.gdbinit.vinum299
-rw-r--r--sys/modules/vinum/.gdbinit.vinum.paths19
-rw-r--r--sys/modules/vinum/Makefile20
-rw-r--r--sys/modules/vn/Makefile8
-rw-r--r--sys/modules/vpo/Makefile10
-rw-r--r--sys/modules/vr/Makefile9
-rw-r--r--sys/modules/wb/Makefile9
-rw-r--r--sys/modules/wi/Makefile9
-rw-r--r--sys/modules/wx/Makefile8
-rw-r--r--sys/modules/xe/Makefile8
-rw-r--r--sys/modules/xl/Makefile9
290 files changed, 7975 insertions, 0 deletions
diff --git a/sys/modules/Makefile b/sys/modules/Makefile
new file mode 100644
index 000000000000..d6fafedd67db
--- /dev/null
+++ b/sys/modules/Makefile
@@ -0,0 +1,171 @@
+# $FreeBSD$
+
+# XXX present but broken: ip_mroute_mod pcic
+
+SUBDIR= accf_data \
+ accf_http \
+ agp \
+ aha \
+ amr \
+ an \
+ aue \
+ bfe \
+ bge \
+ bridge \
+ cam \
+ ccd \
+ cd9660 \
+ coda \
+ crypto \
+ cryptodev \
+ cue \
+ dc \
+ dcons \
+ dcons_crom \
+ dummynet \
+ ed \
+ ext2fs \
+ fdesc \
+ firewire \
+ fxp \
+ gx \
+ ida \
+ if_disc \
+ if_ef \
+ if_faith \
+ if_gif \
+ if_gre \
+ if_ppp \
+ if_sl \
+ if_stf \
+ if_tap \
+ if_tun \
+ if_vlan \
+ iir \
+ ip6fw \
+ ipfw \
+ ispfw \
+ joy \
+ kue \
+ lge \
+ libiconv \
+ libmchain \
+ linux \
+ md \
+ mfs \
+ mii \
+ mlx \
+ msdos \
+ my \
+ ncp \
+ pcn \
+ netgraph \
+ nfs \
+ nge \
+ nmdm \
+ ntfs \
+ nullfs \
+ nwfs \
+ portal \
+ procfs \
+ rl \
+ rp \
+ rue \
+ sbsh \
+ sf \
+ sis \
+ sk \
+ snp \
+ sound \
+ ste \
+ syscons \
+ ti \
+ tl \
+ trm \
+ twe \
+ txp \
+ ubsa \
+ ucom \
+ ufm \
+ uftdi \
+ ugen \
+ uhid \
+ ukbd \
+ ulpt \
+ umapfs \
+ umass \
+ umct \
+ umodem \
+ ums \
+ union \
+ uplcom \
+ usb \
+ uscanner \
+ uvisor \
+ uvscom \
+ vinum \
+ vn \
+ vpo \
+ vr \
+ wb \
+ wx \
+ xl
+
+.if !defined(NO_IPFILTER)
+SUBDIR+=ipfilter
+.endif
+
+# XXX some of these can move to the general case when de-i386'ed
+.if ${MACHINE_ARCH} == "i386"
+SUBDIR+=ar \
+ bktr \
+ coff \
+ em \
+ fpu \
+ gnufpu \
+ hifn \
+ ibcs2 \
+ linprocfs \
+ ncv \
+ nsp \
+ ray \
+ safe \
+ sbni \
+ scsi_low \
+ smbfs \
+ splash \
+ sppp \
+ sr \
+ stg \
+ streams \
+ svr4 \
+ ubsec \
+ wi \
+ xe
+
+.if ${MACHINE} == "i386"
+SUBDIR+=aac \
+ asr \
+ ciss \
+ mly \
+ pst \
+ twa \
+ vesa
+
+.elif ${MACHINE} == "pc98"
+SUBDIR+=canbepm \
+ canbus \
+ pmc \
+ snc
+.endif
+.endif
+
+.if ${MACHINE_ARCH} == "alpha"
+SUBDIR+=osf1
+.endif
+
+.if defined(MODULES_OVERRIDE)
+SUBDIR=${MODULES_OVERRIDE}
+.endif
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/Makefile.inc b/sys/modules/Makefile.inc
new file mode 100644
index 000000000000..9dc38af9623f
--- /dev/null
+++ b/sys/modules/Makefile.inc
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+.if ${MACHINE} == "pc98"
+CFLAGS+= -DPC98
+.endif
+
diff --git a/sys/modules/aac/Makefile b/sys/modules/aac/Makefile
new file mode 100644
index 000000000000..aea93826fbfc
--- /dev/null
+++ b/sys/modules/aac/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/aac
+
+SUBDIR= aac_linux
+
+KMOD= aac
+SRCS= aac.c aac_pci.c aac_disk.c aac_cam.c
+SRCS+= opt_scsi.h opt_cam.h opt_aac.h
+SRCS+= device_if.h bus_if.h pci_if.h
+
+#CFLAGS+= -DAAC_DEBUG=2
+#SRCS+= aac_debug.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aac/aac_linux/Makefile b/sys/modules/aac/aac_linux/Makefile
new file mode 100644
index 000000000000..774e07df7f99
--- /dev/null
+++ b/sys/modules/aac/aac_linux/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/aac
+
+KMOD= aac_linux
+SRCS= aac_linux.c
+
+KMODDEPS= aac
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/accf_data/Makefile b/sys/modules/accf_data/Makefile
new file mode 100644
index 000000000000..9f3a64ef5213
--- /dev/null
+++ b/sys/modules/accf_data/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet
+KMOD = accf_data
+SRCS = accf_data.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/accf_http/Makefile b/sys/modules/accf_http/Makefile
new file mode 100644
index 000000000000..2b76ac6478ae
--- /dev/null
+++ b/sys/modules/accf_http/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet
+KMOD = accf_http
+SRCS = accf_http.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/agp/Makefile b/sys/modules/agp/Makefile
new file mode 100644
index 000000000000..7eb2ed79ac49
--- /dev/null
+++ b/sys/modules/agp/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = agp
+SRCS = agp.c agp_intel.c agp_via.c agp_sis.c agp_ali.c agp_amd.c
+SRCS += agp_i810.c agp_if.c
+SRCS += device_if.h bus_if.h agp_if.h pci_if.h
+SRCS += opt_bdg.h opt_bus.h opt_pci.h
+MFILES = kern/device_if.m kern/bus_if.m pci/agp_if.m pci/pci_if.m
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aha/Makefile b/sys/modules/aha/Makefile
new file mode 100644
index 000000000000..a13352249b31
--- /dev/null
+++ b/sys/modules/aha/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/aha
+KMOD = aha
+SRCS = aha.c aha_isa.c ahareg.h opt_cam.h device_if.h bus_if.h aha.h \
+ opt_scsi.h isa_if.h
+CLEANFILES = aha.h
+
+aha.h:
+ echo "#define NAHA 1" > aha.h
+
+opt_scsi.h:
+ echo "#define SCSI_DELAY 15000" > opt_scsi.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aic7xxx/Makefile b/sys/modules/aic7xxx/Makefile
new file mode 100644
index 000000000000..47550f0de2c4
--- /dev/null
+++ b/sys/modules/aic7xxx/Makefile
@@ -0,0 +1,6 @@
+
+# $FreeBSD$
+
+SUBDIR= aicasm ahc ahd
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/aic7xxx/Makefile.inc b/sys/modules/aic7xxx/Makefile.inc
new file mode 100644
index 000000000000..265f86d1ed55
--- /dev/null
+++ b/sys/modules/aic7xxx/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/sys/modules/aic7xxx/ahc/Makefile b/sys/modules/aic7xxx/ahc/Makefile
new file mode 100644
index 000000000000..35bab328c2cc
--- /dev/null
+++ b/sys/modules/aic7xxx/ahc/Makefile
@@ -0,0 +1,40 @@
+
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/aic7xxx
+KMOD= ahc
+SUBDIR= ahc_eisa ahc_pci
+
+BEFORE_DEPEND= aic7xxx_{seq,reg}.h
+
+../aicasm/aicasm:
+ ( cd ${.CURDIR}/../aicasm; ${MAKE} aicasm; )
+
+aic7xxx_{seq.h,reg.h,reg_print.c}: \
+ ${.CURDIR}/../../../dev/aic7xxx/aic7xxx.{reg,seq} \
+ ${.CURDIR}/../../../cam/scsi/scsi_message.h ../aicasm/aicasm
+ ${.OBJDIR}/../aicasm/aicasm ${INCLUDES} -I${.CURDIR}/../../../cam/scsi \
+ -I${.CURDIR}/../../../dev/aic7xxx \
+ -o aic7xxx_seq.h -r aic7xxx_reg.h \
+ -p aic7xxx_reg_print.c \
+ -i ${.CURDIR}/../../../dev/aic7xxx/aic7xxx_osm.h \
+ ${.CURDIR}/../../../dev/aic7xxx/aic7xxx.seq
+
+GENSRCS= aic7xxx_reg.h aic7xxx_seq.h pci.h
+
+AHC_REG_PRETTY_PRINT=1
+SRCS= ${GENSRCS}
+.ifdef AHC_REG_PRETTY_PRINT
+SRCS+= aic7xxx_reg_print.c
+CFLAGS+= -DAHC_REG_PRETTY_PRINT=1
+.endif
+SRCS+= aic7xxx.c aic7xxx_93cx6.c aic7xxx_osm.c
+SRCS+= opt_scsi.h opt_aic7xxx.h opt_cam.h
+SRCS+= device_if.h bus_if.h pci_if.h
+
+CLEANFILES= ${GENSRCS} aic7xxx_reg_print.c
+
+pci.h:
+ echo "#define NPCI 1" > pci.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aic7xxx/ahc/Makefile.inc b/sys/modules/aic7xxx/ahc/Makefile.inc
new file mode 100644
index 000000000000..265f86d1ed55
--- /dev/null
+++ b/sys/modules/aic7xxx/ahc/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/sys/modules/aic7xxx/ahc/ahc_eisa/Makefile b/sys/modules/aic7xxx/ahc/ahc_eisa/Makefile
new file mode 100644
index 000000000000..c6a37026beda
--- /dev/null
+++ b/sys/modules/aic7xxx/ahc/ahc_eisa/Makefile
@@ -0,0 +1,18 @@
+
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/aic7xxx
+KMOD= ahc_eisa
+
+../aic7xxx_reg.h:
+ ( cd .. ; ${MAKE} aic7xxx_reg.h )
+
+SRCS= ahc_eisa.c aic7770.c ../aic7xxx_reg.h
+SRCS+= device_if.h bus_if.h pci_if.h
+SRCS+= opt_scsi.h opt_cam.h opt_aic7xxx.h
+
+CFLAGS+= -I${.CURDIR}/../../../../dev/aic7xxx -I..
+
+CLEANFILES= ../aic7xxx_reg.h ../aic7xxx_seq.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aic7xxx/ahc/ahc_pci/Makefile b/sys/modules/aic7xxx/ahc/ahc_pci/Makefile
new file mode 100644
index 000000000000..9a595806500d
--- /dev/null
+++ b/sys/modules/aic7xxx/ahc/ahc_pci/Makefile
@@ -0,0 +1,16 @@
+
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/aic7xxx
+KMOD= ahc_pci
+
+../aic7xxx_reg.h:
+ ( cd .. ; ${MAKE} aic7xxx_reg.h )
+
+SRCS= ahc_pci.c aic7xxx_pci.c ../aic7xxx_reg.h
+SRCS+= device_if.h bus_if.h pci_if.h
+SRCS+= opt_scsi.h opt_cam.h opt_aic7xxx.h
+
+CFLAGS+= -I${.CURDIR}/../../../../dev/aic7xxx -I..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aic7xxx/ahd/Makefile b/sys/modules/aic7xxx/ahd/Makefile
new file mode 100644
index 000000000000..338abfd4ce6b
--- /dev/null
+++ b/sys/modules/aic7xxx/ahd/Makefile
@@ -0,0 +1,36 @@
+
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/aic7xxx
+KMOD= ahd
+
+BEFORE_DEPEND= aic79xx_{seq,reg}.h
+
+../aicasm/aicasm:
+ ( cd ${.CURDIR}/../aicasm; ${MAKE} aicasm; )
+
+aic79xx_{seq.h,reg.h,reg_print.c}: \
+ ${.CURDIR}/../../../dev/aic7xxx/aic79xx.{reg,seq} \
+ ${.CURDIR}/../../../cam/scsi/scsi_message.h ../aicasm/aicasm
+ ${.OBJDIR}/../aicasm/aicasm ${INCLUDES} -I${.CURDIR}/../../../cam/scsi \
+ -I${.CURDIR}/../../../dev/aic7xxx \
+ -o aic79xx_seq.h -r aic79xx_reg.h \
+ -p aic79xx_reg_print.c \
+ -i ${.CURDIR}/../../../dev/aic7xxx/aic79xx_osm.h \
+ ${.CURDIR}/../../../dev/aic7xxx/aic79xx.seq
+
+GENSRCS= aic79xx_reg.h aic79xx_seq.h
+
+SRCS= ${GENSRCS}
+AHD_REG_PRETTY_PRINT=1
+.ifdef AHD_REG_PRETTY_PRINT
+SRCS+= aic79xx_reg_print.c
+CFLAGS+= -DAHD_REG_PRETTY_PRINT=1
+.endif
+SRCS+= aic79xx.c aic79xx_osm.c aic79xx_pci.c ahd_pci.c
+SRCS+= opt_scsi.h opt_aic79xx.h opt_cam.h opt_ddb.h
+SRCS+= device_if.h bus_if.h pci_if.h
+
+CLEANFILES= ${GENSRCS} aic79xx_reg_print.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aic7xxx/aicasm/Makefile b/sys/modules/aic7xxx/aicasm/Makefile
new file mode 100644
index 000000000000..e961b8b0864b
--- /dev/null
+++ b/sys/modules/aic7xxx/aicasm/Makefile
@@ -0,0 +1,30 @@
+
+# $FreeBSD$
+
+all: aicasm
+
+aicasm: ${.CURDIR}/../../../dev/aic7xxx/aicasm/*.[chyl]
+ ${MAKE} -f ${.CURDIR}/../../../dev/aic7xxx/aicasm/Makefile \
+ MAKESRCPATH=${.CURDIR}/../../../dev/aic7xxx/aicasm
+
+depend:
+ ${MAKE} -f ${.CURDIR}/../../../dev/aic7xxx/aicasm/Makefile \
+ MAKESRCPATH=${.CURDIR}/../../../dev/aic7xxx/aicasm depend
+
+obj:
+ ${MAKE} -f ${.CURDIR}/../../../dev/aic7xxx/aicasm/Makefile \
+ MAKESRCPATH=${.CURDIR}/../../../dev/aic7xxx/aicasm obj
+
+clean:
+ ${MAKE} -f ${.CURDIR}/../../../dev/aic7xxx/aicasm/Makefile \
+ MAKESRCPATH=${.CURDIR}/../../../dev/aic7xxx/aicasm clean
+
+cleandir:
+ ${MAKE} -f ${.CURDIR}/../../../dev/aic7xxx/aicasm/Makefile \
+ MAKESRCPATH=${.CURDIR}/../../../dev/aic7xxx/aicasm cleandir
+
+cleandepend:
+ ${MAKE} -f ${.CURDIR}/../../../dev/aic7xxx/aicasm/Makefile \
+ MAKESRCPATH=${.CURDIR}/../../../dev/aic7xxx/aicasm cleandepend
+
+install:
diff --git a/sys/modules/amr/Makefile b/sys/modules/amr/Makefile
new file mode 100644
index 000000000000..d32f63dcd69a
--- /dev/null
+++ b/sys/modules/amr/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/amr
+KMOD = amr
+SRCS = amr.c amr_pci.c amr_disk.c device_if.h bus_if.h pci_if.h
+
+# SCSI passthrough support for non-disk devices
+#CFLAGS += -DAMR_SCSI_PASSTHROUGH
+SRCS += amr_cam.c opt_cam.h opt_scsi.h
+
+# Enable a questionable optimisation for newer adapters
+#CFLAGS += -DAMR_QUARTZ_GOFASTER
+
+# Debugging
+#CFLAGS += -DAMR_DEBUG=3
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/an/Makefile b/sys/modules/an/Makefile
new file mode 100644
index 000000000000..7c18f5db3e2b
--- /dev/null
+++ b/sys/modules/an/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/an
+KMOD = if_an
+SRCS = if_an.c if_an_pccard.c if_an_pci.c if_an_isa.c
+SRCS += opt_inet.h device_if.h bus_if.h pci_if.h isa_if.h
+
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ar/Makefile b/sys/modules/ar/Makefile
new file mode 100644
index 000000000000..3951fd46fb9f
--- /dev/null
+++ b/sys/modules/ar/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ar
+KMOD = if_ar
+SRCS = if_ar.c if_ar_isa.c if_ar_pci.c
+SRCS += device_if.h bus_if.h pci_if.h isa_if.h opt_netgraph.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/asr/Makefile b/sys/modules/asr/Makefile
new file mode 100644
index 000000000000..ee0cd1c86a87
--- /dev/null
+++ b/sys/modules/asr/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/asr
+KMOD = asr
+SRCS = asr.c
+SRCS += opt_scsi.h opt_cam.h opt_asr.h
+SRCS += device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/aue/Makefile b/sys/modules/aue/Makefile
new file mode 100644
index 000000000000..0ff85b6b935d
--- /dev/null
+++ b/sys/modules/aue/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= if_aue
+SRCS= if_aue.c opt_bdg.h opt_usb.h device_if.h bus_if.h
+SRCS+= miibus_if.h
+KMODDEPS= miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/bfe/Makefile b/sys/modules/bfe/Makefile
new file mode 100644
index 000000000000..53b4f2978ad9
--- /dev/null
+++ b/sys/modules/bfe/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/bfe
+
+KMOD= if_bfe
+SRCS= if_bfe.c miibus_if.h opt_bdg.h device_if.h bus_if.h pci_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/bge/Makefile b/sys/modules/bge/Makefile
new file mode 100644
index 000000000000..4d3d58f18c38
--- /dev/null
+++ b/sys/modules/bge/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/bge
+
+KMOD= if_bge
+SRCS= if_bge.c miibus_if.h opt_bdg.h device_if.h bus_if.h pci_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/bktr/Makefile b/sys/modules/bktr/Makefile
new file mode 100644
index 000000000000..1a9e0376921f
--- /dev/null
+++ b/sys/modules/bktr/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+SUBDIR =
+SUBDIR += bktr
+SUBDIR += bktr_mem
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/bktr/Makefile.inc b/sys/modules/bktr/Makefile.inc
new file mode 100644
index 000000000000..265f86d1ed55
--- /dev/null
+++ b/sys/modules/bktr/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/sys/modules/bktr/bktr/Makefile b/sys/modules/bktr/bktr/Makefile
new file mode 100644
index 000000000000..47aa6f4788f7
--- /dev/null
+++ b/sys/modules/bktr/bktr/Makefile
@@ -0,0 +1,21 @@
+# Makefile for the bktr Brooktree Bt848/Bt878 PCI video capture device
+
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/bktr
+KMOD= bktr
+SRCS= bktr_core.c bktr_os.c bktr_audio.c bktr_tuner.c bktr_card.c \
+ bktr.h opt_bktr.h smbus.h bus_if.h device_if.h \
+ pci_if.h vnode_if.h
+CLEANFILES= bktr.h smbus.h
+
+bktr.h:
+ echo "#define NBKTR 1" > bktr.h
+ echo "#define BKTR_FREEBSD_MODULE 1" >> bktr.h
+
+# Does not use SMBUS/IICBUS. Uses the old i2c code self contained in
+# the bt848 driver.
+smbus.h:
+ echo "#define NSMBUS 0" > smbus.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/bktr/bktr_mem/Makefile b/sys/modules/bktr/bktr_mem/Makefile
new file mode 100644
index 000000000000..4d2bba314441
--- /dev/null
+++ b/sys/modules/bktr/bktr_mem/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+MAINTAINER = roger@freebsd.org
+
+.PATH: ${.CURDIR}/../../../dev/bktr
+KMOD= bktr_mem
+SRCS= bktr_mem.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/bridge/Makefile b/sys/modules/bridge/Makefile
new file mode 100644
index 000000000000..193e3fc4e178
--- /dev/null
+++ b/sys/modules/bridge/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+KMOD= bridge
+SRCS= bridge.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/cam/Makefile b/sys/modules/cam/Makefile
new file mode 100644
index 000000000000..c7ef01ea01ac
--- /dev/null
+++ b/sys/modules/cam/Makefile
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+S= ${.CURDIR}/../..
+
+.PATH: $S/cam $S/cam/scsi
+
+KMOD= cam
+
+# See sys/conf/options for the flags that go into the different opt_*.h files.
+SRCS= opt_cam.h
+SRCS+= opt_scsi.h
+SRCS+= opt_cd.h
+SRCS+= opt_hw_wdog.h
+SRCS+= opt_pt.h
+SRCS+= opt_sa.h
+SRCS+= opt_ses.h
+SRCS+= device_if.h bus_if.h vnode_if.h
+SRCS+= cam.c cam_periph.c cam_queue.c
+SRCS+= cam_sim.c cam_xpt.c
+SRCS+= cam_extend.c
+SRCS+= scsi_all.c scsi_cd.c scsi_ch.c
+SRCS+= scsi_da.c
+SRCS+= scsi_pass.c
+SRCS+= scsi_pt.c
+SRCS+= scsi_sa.c
+SRCS+= scsi_ses.c
+SRCS+= scsi_targ_bh.c scsi_target.c
+
+EXPORT_SYMS= YES # XXX evaluate
+
+opt_scsi.h:
+ echo "#define SCSI_DELAY 15000" > ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/canbepm/Makefile b/sys/modules/canbepm/Makefile
new file mode 100644
index 000000000000..0eb911243eee
--- /dev/null
+++ b/sys/modules/canbepm/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pc98/pc98
+KMOD = canbepm
+SRCS = canbepm.c
+SRCS += device_if.h bus_if.h canbus_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/canbus/Makefile b/sys/modules/canbus/Makefile
new file mode 100644
index 000000000000..19487e01ef3d
--- /dev/null
+++ b/sys/modules/canbus/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pc98/pc98
+KMOD = canbus
+SRCS = canbus.c
+SRCS += device_if.h bus_if.h canbus_if.h canbus_if.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/cardbus/Makefile b/sys/modules/cardbus/Makefile
new file mode 100644
index 000000000000..5ac7d33ea465
--- /dev/null
+++ b/sys/modules/cardbus/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/cardbus
+KMOD= cardbus
+SRCS= cardbus.c \
+ device_if.h bus_if.h
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/cbb/Makefile b/sys/modules/cbb/Makefile
new file mode 100644
index 000000000000..a48b00231a6d
--- /dev/null
+++ b/sys/modules/cbb/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD= cbb
+SRCS= pccbb.c \
+ device_if.h bus_if.h
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ccd/Makefile b/sys/modules/ccd/Makefile
new file mode 100644
index 000000000000..3235eae6e474
--- /dev/null
+++ b/sys/modules/ccd/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ccd
+KMOD= ccd
+SRCS= ccd.c ccd.h vnode_if.h
+NOMAN=
+
+NCCD?= 4
+CLEANFILES= ccd.h
+
+ccd.h:
+ echo "#define NCCD ${NCCD}" > ccd.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/cd9660/Makefile b/sys/modules/cd9660/Makefile
new file mode 100644
index 000000000000..8443e318d824
--- /dev/null
+++ b/sys/modules/cd9660/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../isofs/cd9660
+KMOD= cd9660
+SRCS= vnode_if.h \
+ cd9660_bmap.c cd9660_lookup.c cd9660_node.c cd9660_rrip.c \
+ cd9660_util.c cd9660_vfsops.c cd9660_vnops.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ciss/Makefile b/sys/modules/ciss/Makefile
new file mode 100644
index 000000000000..d82c59abec70
--- /dev/null
+++ b/sys/modules/ciss/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+KMOD = ciss
+.PATH: ${.CURDIR}/../../dev/${KMOD}
+SRCS = ciss.c
+SRCS += opt_scsi.h opt_cam.h
+SRCS += device_if.h bus_if.h pci_if.h
+
+CFLAGS +=-DCISS_DEBUG=0
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/coda/Makefile b/sys/modules/coda/Makefile
new file mode 100644
index 000000000000..2c0e138ac3a9
--- /dev/null
+++ b/sys/modules/coda/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../coda
+KMOD= coda
+SRCS= vnode_if.h \
+ coda_fbsd.c coda_namecache.c coda_psdev.c coda_subr.c \
+ coda_venus.c coda_vfsops.c coda_vnops.c vcoda.h
+NOMAN=
+
+CLEANFILES= vcoda.h
+
+vcoda.h:
+ echo "#define NVCODA 4" > vcoda.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/coff/Makefile b/sys/modules/coff/Makefile
new file mode 100644
index 000000000000..2fa1f5429bc4
--- /dev/null
+++ b/sys/modules/coff/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../i386/ibcs2
+KMOD= ibcs2_coff
+SRCS= imgact_coff.c vnode_if.h
+NOMAN=
+CFLAGS+= -DCOMPAT_IBCS2
+KMODDEPS= ibcs2
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/crypto/Makefile b/sys/modules/crypto/Makefile
new file mode 100644
index 000000000000..0d2168e91345
--- /dev/null
+++ b/sys/modules/crypto/Makefile
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../opencrypto
+.PATH: ${.CURDIR}/../../crypto
+.PATH: ${.CURDIR}/../../crypto/blowfish
+.PATH: ${.CURDIR}/../../crypto/des
+.PATH: ${.CURDIR}/../../crypto/sha2
+.PATH: ${.CURDIR}/../../net
+
+KMOD = crypto
+SRCS = crypto.c
+SRCS += criov.c cryptosoft.c xform.c
+SRCS += cast.c deflate.c rmd160.c rijndael.c skipjack.c
+SRCS += bf_enc.c bf_skey.c
+SRCS += des_ecb.c des_enc.c des_setkey.c
+SRCS += sha1.c sha2.c
+SRCS += zlib.c
+SRCS += opt_param.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/cryptodev/Makefile b/sys/modules/cryptodev/Makefile
new file mode 100644
index 000000000000..b2692a690218
--- /dev/null
+++ b/sys/modules/cryptodev/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../opencrypto
+KMOD = cryptodev
+SRCS = cryptodev.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ctau/Makefile b/sys/modules/ctau/Makefile
new file mode 100644
index 000000000000..9b2424a104f4
--- /dev/null
+++ b/sys/modules/ctau/Makefile
@@ -0,0 +1,42 @@
+# Cronyx Id: Makefile,v 1.1.2.2 2003/01/13 08:28:48 rik Exp $
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ctau
+KMOD= if_ct
+SRCS= if_ct.c ctddk.c ctau.c ctau.h opt_netgraph.h opt_ng_cronyx.h bpf.h \
+ sppp.h device_if.h bus_if.h isa_if.h
+NOMAN=
+
+NBPF?= 0
+NCTAU?= 3
+PROTOS?= -DINET
+NG_CRONYX?= 0
+NETGRAPH= ${NG_CRONYX}
+
+CFLAGS+= ${PROTOS}
+CLEANFILES+= opt_ng_cronyx.h opt_netgraph.h ctau.h bpf.h sppp.h
+
+ctau.h:
+ echo "#define NCTAU ${NCTAU}" > ctau.h
+
+opt_netgraph.h:
+ echo "#define NETGRAPH $(NETGRAPH)" > opt_netgraph.h
+
+opt_ng_cronyx.h:
+.if ${NG_CRONYX} != 0
+ echo "#define NETGRAPH_CRONYX 1" > opt_ng_cronyx.h
+.else
+ echo "" > opt_ng_cronyx.h
+.endif
+
+sppp.h:
+.if ${NG_CRONYX} == 0
+ echo "#define NSPPP 1" > sppp.h
+.else
+ echo "#define NSPPP 0" > sppp.h
+.endif
+
+bpf.h:
+ echo "#define NBPF ${NBPF}" > bpf.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/cue/Makefile b/sys/modules/cue/Makefile
new file mode 100644
index 000000000000..fb64b17bd544
--- /dev/null
+++ b/sys/modules/cue/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= if_cue
+SRCS= if_cue.c opt_bdg.h opt_usb.h device_if.h bus_if.h
+SRCS+= miibus_if.h
+KMODDEPS= miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/cx/Makefile b/sys/modules/cx/Makefile
new file mode 100644
index 000000000000..7df2109064c1
--- /dev/null
+++ b/sys/modules/cx/Makefile
@@ -0,0 +1,43 @@
+# Cronyx Id: sys.modules.cx.Makefile,v 1.1.2.2 2003/01/21 15:15:49 rik Exp $
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/cx
+KMOD= if_cx
+SRCS= if_cx.c cxddk.c csigma.c cx.h opt_netgraph.h opt_ng_cronyx.h bpf.h \
+ sppp.h device_if.h bus_if.h isa_if.h
+NOMAN=
+
+NBPF?= 0
+NCX?= 3
+PROTOS?= -DINET
+NG_CRONYX?= 0
+NETGRAPH= ${NG_CRONYX}
+
+
+CFLAGS+= ${PROTOS}
+CLEANFILES+= opt_ng_cronyx.h opt_netgraph.h cx.h bpf.h sppp.h
+
+cx.h:
+ echo "#define NCX $(NCX)" > cx.h
+
+opt_netgraph.h:
+ echo "#define NETGRAPH $(NETGRAPH)" > opt_netgraph.h
+
+opt_ng_cronyx.h:
+.if ${NG_CRONYX} != 0
+ echo "#define NETGRAPH_CRONYX 1" > opt_ng_cronyx.h
+.else
+ echo "" > opt_ng_cronyx.h
+.endif
+
+sppp.h:
+.if ${NG_CRONYX} == 0
+ echo "#define NSPPP 1" > sppp.h
+.else
+ echo "#define NSPPP 0" > sppp.h
+.endif
+
+bpf.h:
+ echo "#define NBPF ${NBPF}" > bpf.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/dc/Makefile b/sys/modules/dc/Makefile
new file mode 100644
index 000000000000..8bcadaadc266
--- /dev/null
+++ b/sys/modules/dc/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_dc
+SRCS = if_dc.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/dcons/Makefile b/sys/modules/dcons/Makefile
new file mode 100644
index 000000000000..b3f9e3191bbe
--- /dev/null
+++ b/sys/modules/dcons/Makefile
@@ -0,0 +1,19 @@
+# $Id: Makefile,v 1.6 2003/10/24 15:41:26 simokawa Exp $
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/dcons
+
+KMOD = dcons
+SRCS = dcons.c dcons.h \
+ opt_dcons.h opt_ddb.h opt_comconsole.h \
+ opt_simos.h
+
+opt_ddb.h:
+ echo "#define DDB 1" > $@
+
+opt_comconsole.h:
+ echo "#define ALT_BREAK_TO_DEBUGGER 1" > $@
+
+CFLAGS+= -I${.CURDIR}/../..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/dcons_crom/Makefile b/sys/modules/dcons_crom/Makefile
new file mode 100644
index 000000000000..bfd5d2a50453
--- /dev/null
+++ b/sys/modules/dcons_crom/Makefile
@@ -0,0 +1,14 @@
+# $Id: Makefile,v 1.6 2003/10/24 15:43:24 simokawa Exp $
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/dcons
+
+KMOD = dcons_crom
+SRCS = dcons_crom.c dcons.h \
+ bus_if.h device_if.h
+
+KMODDEPS = firewire dcons
+
+CFLAGS+= -I${.CURDIR}/../..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/drm/Makefile b/sys/modules/drm/Makefile
new file mode 100644
index 000000000000..665799492371
--- /dev/null
+++ b/sys/modules/drm/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR = mga r128 radeon tdfx
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/drm/Makefile.inc b/sys/modules/drm/Makefile.inc
new file mode 100644
index 000000000000..265f86d1ed55
--- /dev/null
+++ b/sys/modules/drm/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/sys/modules/drm/mga/Makefile b/sys/modules/drm/mga/Makefile
new file mode 100644
index 000000000000..2199a0b78199
--- /dev/null
+++ b/sys/modules/drm/mga/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/drm
+KMOD = mga
+NOMAN = YES
+SRCS = mga_drv.c mga_state.c mga_warp.c mga_dma.c \
+ mga_irq.c
+SRCS +=device_if.h bus_if.h pci_if.h opt_drm.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/drm/r128/Makefile b/sys/modules/drm/r128/Makefile
new file mode 100644
index 000000000000..822a1fe0d1c5
--- /dev/null
+++ b/sys/modules/drm/r128/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/drm
+KMOD = r128
+NOMAN = YES
+SRCS = r128_cce.c r128_drv.c r128_irq.c r128_state.c
+SRCS +=device_if.h bus_if.h pci_if.h opt_drm.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/drm/radeon/Makefile b/sys/modules/drm/radeon/Makefile
new file mode 100644
index 000000000000..7a3fad717206
--- /dev/null
+++ b/sys/modules/drm/radeon/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/drm
+KMOD = radeon
+NOMAN = YES
+SRCS = radeon_cp.c radeon_drv.c radeon_irq.c \
+ radeon_mem.c radeon_state.c
+SRCS +=device_if.h bus_if.h pci_if.h opt_drm.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/drm/tdfx/Makefile b/sys/modules/drm/tdfx/Makefile
new file mode 100644
index 000000000000..7012558e2a76
--- /dev/null
+++ b/sys/modules/drm/tdfx/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/drm
+KMOD = tdfx
+NOMAN = YES
+SRCS = tdfx_drv.c
+SRCS +=device_if.h bus_if.h pci_if.h opt_drm.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/dummynet/Makefile b/sys/modules/dummynet/Makefile
new file mode 100644
index 000000000000..072506aef29d
--- /dev/null
+++ b/sys/modules/dummynet/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet
+KMOD= dummynet
+SRCS= ip_dummynet.c opt_bdg.h
+NOMAN=
+.if defined(IPFW2)
+CFLAGS+= -DIPFW2
+.endif
+KMODDEPS= ipfw
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ed/Makefile b/sys/modules/ed/Makefile
new file mode 100644
index 000000000000..ce8b8b8d0807
--- /dev/null
+++ b/sys/modules/ed/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ed
+
+KMOD= if_ed
+SRCS= if_ed.c if_ed_pccard.c if_ed_pci.c
+KMODDEPS=miibus
+
+.if ${MACHINE} == "pc98"
+SRCS+= if_ed_cbus.c
+.else
+SRCS+= if_ed_isa.c
+.endif
+
+SRCS+= opt_ed.h opt_bdg.h bus_if.h card_if.h device_if.h isa_if.h pci_if.h \
+ miibus_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/em/Makefile b/sys/modules/em/Makefile
new file mode 100644
index 000000000000..df17b2f39a7c
--- /dev/null
+++ b/sys/modules/em/Makefile
@@ -0,0 +1,12 @@
+#$FreeBSD$
+.PATH: ${.CURDIR}/../../dev/em
+KMOD = if_em
+SRCS = device_if.h bus_if.h pci_if.h opt_bdg.h
+SRCS += if_em.c if_em_hw.c
+
+clean:
+ rm -f opt_bdg.h device_if.h bus_if.h pci_if.h setdef*
+ rm -f *.o *.kld *.ko
+ rm -f @ machine
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ext2fs/Makefile b/sys/modules/ext2fs/Makefile
new file mode 100644
index 000000000000..a83cc8f2706b
--- /dev/null
+++ b/sys/modules/ext2fs/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../gnu/ext2fs
+KMOD= ext2fs
+SRCS= opt_ddb.h opt_quota.h opt_suiddir.h vnode_if.h \
+ ext2_alloc.c ext2_balloc.c ext2_inode.c ext2_inode_cnv.c \
+ ext2_linux_balloc.c ext2_linux_ialloc.c ext2_lookup.c \
+ ext2_subr.c ext2_vfsops.c ext2_vnops.c
+
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/fdesc/Makefile b/sys/modules/fdesc/Makefile
new file mode 100644
index 000000000000..09f3ba5ae0d6
--- /dev/null
+++ b/sys/modules/fdesc/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../miscfs/fdesc
+KMOD= fdesc
+SRCS= vnode_if.h \
+ fdesc_vfsops.c fdesc_vnops.c
+NOMAN=
+CFLAGS+= -DFDESC
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/firewire/Makefile b/sys/modules/firewire/Makefile
new file mode 100644
index 000000000000..a8ea55cb9ea3
--- /dev/null
+++ b/sys/modules/firewire/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+SUBDIR =
+SUBDIR += firewire
+SUBDIR += sbp
+SUBDIR += sbp_targ
+SUBDIR += fwe
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/firewire/Makefile.inc b/sys/modules/firewire/Makefile.inc
new file mode 100644
index 000000000000..4b82370a7160
--- /dev/null
+++ b/sys/modules/firewire/Makefile.inc
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+#CFLAGS+=-g
+.include "../Makefile.inc"
diff --git a/sys/modules/firewire/firewire/Makefile b/sys/modules/firewire/firewire/Makefile
new file mode 100644
index 000000000000..8e4e06f0fc91
--- /dev/null
+++ b/sys/modules/firewire/firewire/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+# Makefile for the IEEE1394 OHCI chipset
+
+.PATH: ${.CURDIR}/../../../dev/firewire
+
+KMOD= firewire
+SRCS = bus_if.h device_if.h pci_if.h \
+ firewire.c firewire.h firewire_phy.h firewirereg.h \
+ fwohci.c fwohci_pci.c fwohcireg.h fwohcivar.h \
+ iec13213.h iec68113.h \
+ fwcrom.c fwdev.c fwmem.c fwmem.h fwdma.c fwdma.h
+
+.include <bsd.kmod.mk>
+
diff --git a/sys/modules/firewire/fwe/Makefile b/sys/modules/firewire/fwe/Makefile
new file mode 100644
index 000000000000..b92f5264280a
--- /dev/null
+++ b/sys/modules/firewire/fwe/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+# Makefile for the fwe(4) module (Ethernet over IEEE1394)
+
+.PATH: ${.CURDIR}/../../../dev/firewire
+
+KMOD = if_fwe
+SRCS = bus_if.h device_if.h \
+ opt_inet.h \
+ if_fwe.c if_fwevar.h \
+ firewire.h firewirereg.h
+#CFLAGS += -DDEVICE_POLLING
+KMODDEPS = firewire
+
+.include <bsd.kmod.mk>
+
diff --git a/sys/modules/firewire/sbp/Makefile b/sys/modules/firewire/sbp/Makefile
new file mode 100644
index 000000000000..cd526c5e616e
--- /dev/null
+++ b/sys/modules/firewire/sbp/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+# Makefile for the SBP-II (Serial Bus Protocol 2/SCSI over IEEE1394)
+
+.PATH: ${.CURDIR}/../../../dev/firewire
+
+KMOD = sbp
+SRCS = bus_if.h device_if.h \
+ opt_cam.h opt_scsi.h \
+ sbp.c sbp.h \
+ firewire.h firewirereg.h \
+ iec13213.h
+KMODDEPS = firewire
+
+.include <bsd.kmod.mk>
+
diff --git a/sys/modules/firewire/sbp_targ/Makefile b/sys/modules/firewire/sbp_targ/Makefile
new file mode 100644
index 000000000000..5a0cd7eef7d0
--- /dev/null
+++ b/sys/modules/firewire/sbp_targ/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+# Makefile for the SBP-II Target mode
+
+.PATH: ${.CURDIR}/../../../dev/firewire
+
+KMOD = sbp_targ
+SRCS = bus_if.h device_if.h \
+ opt_cam.h opt_scsi.h \
+ sbp_targ.c sbp.h \
+ firewire.h firewirereg.h \
+ iec13213.h
+KMODDEPS = firewire
+
+.include <bsd.kmod.mk>
+
diff --git a/sys/modules/fpu/Makefile b/sys/modules/fpu/Makefile
new file mode 100644
index 000000000000..66c2ad1ae02a
--- /dev/null
+++ b/sys/modules/fpu/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../i386/i386
+KMOD= fpu
+SRCS= math_emulate.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/fxp/Makefile b/sys/modules/fxp/Makefile
new file mode 100644
index 000000000000..8e9d8479e150
--- /dev/null
+++ b/sys/modules/fxp/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/fxp
+KMOD = if_fxp
+SRCS = if_fxp.c opt_bdg.h device_if.h bus_if.h pci_if.h miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/gnufpu/Makefile b/sys/modules/gnufpu/Makefile
new file mode 100644
index 000000000000..d7bfb676aa6f
--- /dev/null
+++ b/sys/modules/gnufpu/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../gnu/i386/fpemul
+KMOD= gnufpu
+SRCS= div_small.s errors.c fpu_arith.c fpu_aux.c fpu_entry.c fpu_etc.c \
+ fpu_trig.c get_address.c load_store.c poly_2xm1.c poly_atan.c \
+ poly_div.s poly_l2.c poly_mul64.s poly_sin.c poly_tan.c \
+ polynomial.s reg_add_sub.c reg_compare.c reg_constant.c reg_div.s \
+ reg_ld_str.c reg_u_mul.s reg_u_sub.s wm_shrx.s wm_sqrt.s
+NOMAN=
+
+.s.o:
+ ${CC} -x assembler-with-cpp -DLOCORE ${CFLAGS} -c \
+ ${.IMPSRC} -o ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/gx/Makefile b/sys/modules/gx/Makefile
new file mode 100644
index 000000000000..6fd6cd4957fb
--- /dev/null
+++ b/sys/modules/gx/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/gx
+KMOD = if_gx
+SRCS = if_gx.c opt_bdg.h device_if.h bus_if.h pci_if.h miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/hifn/Makefile b/sys/modules/hifn/Makefile
new file mode 100644
index 000000000000..33e6a77c3f59
--- /dev/null
+++ b/sys/modules/hifn/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/hifn
+KMOD = hifn
+SRCS = hifn7751.c opt_hifn.h
+SRCS += device_if.h bus_if.h pci_if.h
+SRCS += opt_bdg.h opt_bus.h crypto_if.h
+
+opt_hifn.h:
+ echo "#define HIFN_DEBUG 1" > opt_hifn.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/hpfs/Makefile b/sys/modules/hpfs/Makefile
new file mode 100644
index 000000000000..9e10cd22cd98
--- /dev/null
+++ b/sys/modules/hpfs/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../fs/hpfs
+KMOD= hpfs
+SRCS= vnode_if.h \
+ hpfs_vfsops.c hpfs_vnops.c hpfs_hash.c hpfs_subr.c hpfs_lookup.c \
+ hpfs_alsubr.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ibcs2/Makefile b/sys/modules/ibcs2/Makefile
new file mode 100644
index 000000000000..6921fde48d55
--- /dev/null
+++ b/sys/modules/ibcs2/Makefile
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../i386/ibcs2
+KMOD= ibcs2
+SRCS= ibcs2_errno.c ibcs2_ipc.c ibcs2_stat.c ibcs2_misc.c \
+ ibcs2_fcntl.c ibcs2_signal.c ibcs2_sysent.c ibcs2_ioctl.c \
+ ibcs2_socksys.c ibcs2_util.c ibcs2_xenix.c ibcs2_xenix_sysent.c \
+ ibcs2_isc.c ibcs2_isc_sysent.c \
+ ibcs2_msg.c ibcs2_other.c ibcs2_sysi86.c ibcs2_sysvec.c \
+ vnode_if.h opt_spx_hack.h
+MAN= ibcs2.8
+
+CFLAGS+= -DCOMPAT_IBCS2
+EXPORT_SYMS= _ibcs2_mod _ibcs2_emul_path _ibcs2_svr3_sysvec
+
+afterinstall:
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/ibcs2.sh ${DESTDIR}/usr/sbin/ibcs2
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ibcs2/ibcs2.8 b/sys/modules/ibcs2/ibcs2.8
new file mode 100644
index 000000000000..fad820edf3ba
--- /dev/null
+++ b/sys/modules/ibcs2/ibcs2.8
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (c) 1995 Lyndon Nerenberg
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 27, 1995
+.Dt IBCS2 8
+.Os
+.Sh NAME
+.Nm ibcs2
+.Nd load iBCS2 runtime support for SCO and ISC binaries
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+utility loads kernel runtime support for iBCS2 compliant programs.
+This runtime support is limited to emulation of the iBCS2
+system call interface, and is far from complete. COFF binaries
+and shared libraries are supported, however no shared libraries
+are provided with the
+.Fx
+distribution.
+.Sh FILES
+.Bl -tag -width /usr/share/examples/ibcs2/* -compact
+.It Pa /modules/ibcs2.ko
+.It Pa /modules/ibcs2_coff.ko
+iBCS2 loadable kernel modules.
+.Pp
+.It Pa /usr/share/examples/ibcs2/*
+Sample object files with which to test the emulator.
+.El
+.Sh "SEE ALSO"
+.Xr kld 4 ,
+.Xr kldload 8
+.Sh BUGS
+The emulation is very incomplete.
+.Pp
+Running dynamically linked binaries requires access to an existing
+SCO system from which you can grab the shared libraries.
+.Pp
+You can't really use this without reading the source code.
diff --git a/sys/modules/ibcs2/ibcs2.sh b/sys/modules/ibcs2/ibcs2.sh
new file mode 100644
index 000000000000..c8bf2a809c81
--- /dev/null
+++ b/sys/modules/ibcs2/ibcs2.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# Copyright (C) 1994-1997
+# FreeBSD Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY FreeBSD Inc. AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL FreeBSD Inc. OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+
+
+PATH=/bin:/sbin:/usr/bin:/usr/sbin; export PATH
+
+if [ $# -le 1 ]; then
+ LOADERS="coff" # elf
+fi
+
+set -e
+
+kldload ibcs2
+
+for loader in $LOADERS; do
+ kldload ibcs2_${loader}
+done
+set +e
diff --git a/sys/modules/ida/Makefile b/sys/modules/ida/Makefile
new file mode 100644
index 000000000000..f3eba0cf5cfa
--- /dev/null
+++ b/sys/modules/ida/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ida
+
+KMOD= ida
+SRCS= ida.c ida_disk.c ida_pci.c
+
+.if !defined(IDA_NO_EISA)
+SRCS+= ida_eisa.c
+.endif
+
+SRCS+= device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_disc/Makefile b/sys/modules/if_disc/Makefile
new file mode 100644
index 000000000000..e33555dbddac
--- /dev/null
+++ b/sys/modules/if_disc/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+KMOD= if_disc
+SRCS= if_disc.c opt_inet.h opt_inet6.h
+NOMAN=
+
+NBPF?= 1
+
+CFLAGS+= ${PROTOS}
+
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+#opt_inet6.h:
+# echo "#define INET6 1" > opt_inet6.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_ef/Makefile b/sys/modules/if_ef/Makefile
new file mode 100644
index 000000000000..091a12c69154
--- /dev/null
+++ b/sys/modules/if_ef/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+
+KMOD= if_ef
+SRCS= if_ef.c opt_ipx.h opt_inet.h opt_ef.h
+MAN= ef.4
+
+# If you need only limited number of frames comment out unneeded ones
+# this will reduce number of visible devices
+ETHER_II=
+ETHER_8023=
+ETHER_8022=
+ETHER_SNAP=
+
+CFLAGS+= ${PROTOS}
+
+.if defined(EFDEBUG)
+CFLAGS+= -DEF_DEBUG
+.endif
+
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+opt_ipx.h:
+ echo "#define IPX 1" > opt_ipx.h
+
+opt_ef.h:
+.for frame in ETHER_II ETHER_8023 ETHER_8022 ETHER_SNAP
+.if defined(${frame})
+ echo "#define ${frame} 1" >> opt_ef.h
+.endif
+.endfor
+
+load: all
+ /sbin/kldload ./${PROG}
+
+unload:
+ /sbin/kldunload ${PROG}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_ef/ef.4 b/sys/modules/if_ef/ef.4
new file mode 100644
index 000000000000..1fc8186db8f0
--- /dev/null
+++ b/sys/modules/if_ef/ef.4
@@ -0,0 +1,102 @@
+.\"
+.\" Copyright (c) 1999, Boris Popov
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 20, 1999
+.Dt EF 4
+.Os
+.Sh NAME
+.Nm ef
+.Nd "pseudo-device driver providing support for multiple ethernet frame types"
+.Sh SYNOPSIS
+.Cd "pseudo-device ef"
+.Sh DESCRIPTION
+The
+.Nm
+pseudo-device driver clones each ethernet type device with four
+additional interfaces. Each of them capable to send or receive only
+one predefined frame type.
+.Pp
+Names for the new interfaces created by adding
+.Ar fN
+suffix to an existing device name. Where
+.Ar N
+is a device unit which can have one of the following values:
+.Bd -literal -offset indent
+0 interface with an Ethernet_II frame
+1 interface with a Novell Ethernet_802.3 frame
+2 interface with an Ethernet_802.2 frame
+3 interface with an Ethernet_802.2/SNAP frame support.
+.Ed
+.Pp
+For example, device
+.Ar ed0
+will be populated with four devices:
+.Ar ed0f0 ,
+.Ar ed0f1 ,
+.Ar ed0f2
+and
+.Ar ed0f3 .
+.Pp
+After that, each device can be configured as usually:
+.Dl # ifconfig ed0f1 ipx 0x105
+This will configure IPX protocol with network number
+.Ar 0x105
+and
+.Ar Ethernet_802.3
+frame type.
+.Pp
+Please note that it is impossible to configure IPX protocol on the 'raw'
+.Ar ed0
+device after
+.Ar if_ef.ko
+driver loaded.
+.Sh EXAMPLES
+The
+.Nm
+driver can be loaded via
+.Xr loader.conf 5
+file:
+.Dl if_ef_load="YES"
+.Pp
+In this case an ordinary interface configuration commands can be used
+in the
+.Xr rc.conf 5
+file:
+.Dl network_interfaces="ed2 lo0 tun0 ed2f0 ed2f1"
+.Dl ifconfig_ed2f0_ipx="ipx 0x101"
+.Dl ifconfig_ed2f1_ipx="ipx 0x102"
+.Sh DIAGNOSTICS
+None.
+.Sh CAVEATS
+Avoid to configuring 'raw' ethernet device for IPX protocol after
+.Nm
+driver is loaded.
+.Sh SEE ALSO
+.Xr ipx 3 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+.An Boris Popov Aq bp@FreeBSD.org .
diff --git a/sys/modules/if_faith/Makefile b/sys/modules/if_faith/Makefile
new file mode 100644
index 000000000000..a5c89f927830
--- /dev/null
+++ b/sys/modules/if_faith/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+
+KMOD= if_faith
+SRCS= if_faith.c opt_inet.h opt_inet6.h
+CFLAGS+= -DNFAITH=0
+NOMAN=
+
+opt_inet.h:
+ echo "#define INET 1" > ${.TARGET}
+
+opt_inet6.h:
+ echo "#define INET6 1" > ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_gif/Makefile b/sys/modules/if_gif/Makefile
new file mode 100644
index 000000000000..29195bd01e3a
--- /dev/null
+++ b/sys/modules/if_gif/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net ${.CURDIR}/../../netinet ${.CURDIR}/../../netinet6
+
+KMOD= if_gif
+SRCS= if_gif.c in_gif.c in6_gif.c opt_inet.h opt_inet6.h opt_mrouting.h
+NOMAN=
+
+opt_inet.h:
+ echo "#define INET 1" > ${.TARGET}
+
+opt_inet6.h:
+ echo "#define INET6 1" > ${.TARGET}
+
+opt_mrouting.h:
+ echo "#define MROUTING 1" > ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_gre/Makefile b/sys/modules/if_gre/Makefile
new file mode 100644
index 000000000000..9079ef9fc2a6
--- /dev/null
+++ b/sys/modules/if_gre/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net ${.CURDIR}/../../netinet
+
+KMOD= if_gre
+SRCS= if_gre.c ip_gre.c opt_inet.h opt_ns.h opt_atalk.h
+
+opt_inet.h:
+ echo "#define INET 1" > ${.TARGET}
+
+opt_ns.h:
+ echo "#define NS 1" > ${.TARGET}
+
+opt_atalk.h:
+ echo "#define NETATALK 1" > ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_ppp/Makefile b/sys/modules/if_ppp/Makefile
new file mode 100644
index 000000000000..3e6c9a54e5da
--- /dev/null
+++ b/sys/modules/if_ppp/Makefile
@@ -0,0 +1,54 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+KMOD= if_ppp
+SRCS= if_ppp.c ppp_tty.c slcompress.c \
+ ppp.h opt_inet.h opt_ipx.h opt_ppp.h vnode_if.h
+NOMAN=
+
+NPPP?= 2
+PPP_BSDCOMP?= 1 # 0/1
+PPP_DEFLATE?= 1 # 0/1
+PPP_FILTER?= 1 # 0/1 - requires bpf to be configured in kernel
+PPP_INET?= 1 # 0/1 - requires INET to be configured in kernel
+PPP_IPX?= 0 # 0/1 - requires IPX to be configured in kernel
+
+CFLAGS+= ${PROTOS}
+
+.if ${PPP_BSDCOMP} > 0
+SRCS+= bsd_comp.c
+.endif
+.if ${PPP_DEFLATE} > 0
+SRCS+= ppp_deflate.c zlib.c
+.endif
+
+CLEANFILES= ppp.h
+
+ppp.h:
+ echo "#define NPPP ${NPPP}" > ppp.h
+
+opt_inet.h:
+ touch opt_inet.h
+.if ${PPP_INET} > 0
+ echo "#define INET 1" > opt_inet.h
+.endif
+
+opt_ipx.h:
+ touch opt_ipx.h
+.if ${PPP_IPX} > 0
+ echo "#define IPX ${PPP_IPX}" > opt_ipx.h
+.endif
+
+opt_ppp.h:
+ touch opt_ppp.h
+.if ${PPP_BSDCOMP} > 0
+ echo "#define PPP_BSDCOMP ${PPP_BSDCOMP}" > opt_ppp.h
+.endif
+.if ${PPP_DEFLATE} > 0
+ echo "#define PPP_DEFLATE ${PPP_DEFLATE}" >> opt_ppp.h
+.endif
+.if ${PPP_FILTER} > 0
+ echo "#define PPP_FILTER ${PPP_FILTER}" >> opt_ppp.h
+.endif
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_sl/Makefile b/sys/modules/if_sl/Makefile
new file mode 100644
index 000000000000..c188d19b0835
--- /dev/null
+++ b/sys/modules/if_sl/Makefile
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+KMOD= if_sl
+SRCS= if_sl.c slcompress.c opt_inet.h sl.h
+NOMAN=
+
+NSL?= 2
+PROTOS?= -DINET
+
+CFLAGS+= ${PROTOS}
+CLEANFILES= sl.h
+
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+sl.h:
+ echo "#define NSL ${NSL}" > sl.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_stf/Makefile b/sys/modules/if_stf/Makefile
new file mode 100644
index 000000000000..5bdb0cbc1b9d
--- /dev/null
+++ b/sys/modules/if_stf/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+
+KMOD= if_stf
+SRCS= if_stf.c opt_inet.h opt_inet6.h
+NOMAN=
+
+opt_inet.h:
+ echo "#define INET 1" > ${.TARGET}
+
+opt_inet6.h:
+ echo "#define INET6 1" > ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_tap/Makefile b/sys/modules/if_tap/Makefile
new file mode 100644
index 000000000000..38a9b1dd189c
--- /dev/null
+++ b/sys/modules/if_tap/Makefile
@@ -0,0 +1,17 @@
+# Copyright (C) 1999-2000 by Maksim Yevmenkin <m_evmenkin@yahoo.com>
+#
+# This file should be in "kernel_dir/modules/if_tap" directory
+# kernel_dir - kernel source root directory (/usr/src/sys)
+#
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+KMOD= if_tap
+SRCS= if_tap.c opt_inet.h vnode_if.h
+
+CLEANFILES+= opt_inet.h vnode_if.h
+
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_tun/Makefile b/sys/modules/if_tun/Makefile
new file mode 100644
index 000000000000..f3821dbf52e9
--- /dev/null
+++ b/sys/modules/if_tun/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+KMOD= if_tun
+SRCS= if_tun.c opt_inet.h vnode_if.h
+NOMAN=
+
+NBPF?= 1
+NTUN?= 2
+
+CFLAGS+= ${PROTOS}
+
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/if_vlan/Makefile b/sys/modules/if_vlan/Makefile
new file mode 100644
index 000000000000..6583fcc2bd0b
--- /dev/null
+++ b/sys/modules/if_vlan/Makefile
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+
+KMOD= if_vlan
+SRCS= if_vlan.c opt_inet.h
+CFLAGS+= -DNVLAN=0
+NOMAN=
+
+opt_inet.h:
+ echo "#define INET 1" > ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/iir/Makefile b/sys/modules/iir/Makefile
new file mode 100644
index 000000000000..dc9eecbdd0e4
--- /dev/null
+++ b/sys/modules/iir/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+KMOD= iir
+
+.PATH: ${.CURDIR}/../../dev/${KMOD}
+
+SRCS= iir.c iir_ctrl.c iir_pci.c
+SRCS+= opt_scsi.h opt_cam.h
+SRCS+= device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ip6fw/Makefile b/sys/modules/ip6fw/Makefile
new file mode 100644
index 000000000000..64fa17ea7f9d
--- /dev/null
+++ b/sys/modules/ip6fw/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet6
+KMOD= ip6fw
+SRCS= ip6_fw.c
+NOMAN=
+CFLAGS+= -DIPV6FIREWALL
+#
+#If you want it verbose
+#CFLAGS+= -DIPV6FIREWALL_VERBOSE
+#CFLAGS+= -DIPV6FIREWALL_VERBOSE_LIMIT=100
+#
+#If you want it to pass all packets by default
+#CFLAGS+= -DIPV6FIREWALL_DEFAULT_TO_ACCEPT
+#
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ip_mroute_mod/Makefile b/sys/modules/ip_mroute_mod/Makefile
new file mode 100644
index 000000000000..39412bcd95a6
--- /dev/null
+++ b/sys/modules/ip_mroute_mod/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet
+KMOD= ip_mroute
+SRCS= ip_mroute.c
+NOMAN=
+CFLAGS+= -DMROUTE_LKM -DMROUTING
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ipfilter/Makefile b/sys/modules/ipfilter/Makefile
new file mode 100644
index 000000000000..64dbb5df4933
--- /dev/null
+++ b/sys/modules/ipfilter/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../contrib/ipfilter/netinet
+KMOD= ipl
+SRCS= mlfk_ipl.c ip_nat.c ip_frag.c ip_state.c ip_proxy.c ip_auth.c \
+ ip_log.c ip_fil.c fil.c
+NOMAN=
+CFLAGS+= -DIPFILTER_LKM -DIPFILTER_LOG
+CFLAGS+= -I${.CURDIR}/../../contrib/ipfilter
+#
+# If you don't want log functionality remove -DIPFILTER_LOG
+#
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ipfw/Makefile b/sys/modules/ipfw/Makefile
new file mode 100644
index 000000000000..b2661e67bd43
--- /dev/null
+++ b/sys/modules/ipfw/Makefile
@@ -0,0 +1,22 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet
+KMOD= ipfw
+NOMAN=
+CFLAGS+= -DIPFIREWALL
+.if defined(IPFW2)
+SRCS= ip_fw2.c
+CFLAGS+= -DIPFW2
+.else
+SRCS= ip_fw.c
+.endif
+#
+#If you want it verbose
+#CFLAGS+= -DIPFIREWALL_VERBOSE
+#CFLAGS+= -DIPFIREWALL_VERBOSE_LIMIT=100
+#
+#If you want it to pass all packets by default
+#CFLAGS+= -DIPFIREWALL_DEFAULT_TO_ACCEPT
+#
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ispfw/Makefile b/sys/modules/ispfw/Makefile
new file mode 100644
index 000000000000..a6a4e8865631
--- /dev/null
+++ b/sys/modules/ispfw/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ispfw
+KMOD = ispfw
+SRCS = ispfw.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/joy/Makefile b/sys/modules/joy/Makefile
new file mode 100644
index 000000000000..fa46c6476ff6
--- /dev/null
+++ b/sys/modules/joy/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../isa
+KMOD = joy
+SRCS = bus_if.h device_if.h isa_if.h joy.c
+MAN = joy.8
+
+afterinstall:
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/joy.sh ${DESTDIR}/usr/bin/joy
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/joy/joy.8 b/sys/modules/joy/joy.8
new file mode 100644
index 000000000000..13091f7122e3
--- /dev/null
+++ b/sys/modules/joy/joy.8
@@ -0,0 +1,47 @@
+.\"
+.\" Copyright (c) 1996 Jean-Marc Zucconi <jmz@cabri.obs-besancon.fr>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 16, 1996
+.Dt JOY 8
+.Os
+.Sh NAME
+.Nm joy
+.Nd load the joystick driver kernel module
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+utility loads the joystick driver kernel module.
+.Sh FILES
+.Bl -tag -width /modules/joy.ko
+.It Pa /modules/joy.ko
+joystick loadable kernel module.
+.El
+.Sh "SEE ALSO"
+.Xr joy 4 ,
+.Xr kld 4 ,
+.Xr kldload 8
diff --git a/sys/modules/joy/joy.sh b/sys/modules/joy/joy.sh
new file mode 100644
index 000000000000..48c5482eb12b
--- /dev/null
+++ b/sys/modules/joy/joy.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+# $FreeBSD$
+
+kldload joy
diff --git a/sys/modules/kue/Makefile b/sys/modules/kue/Makefile
new file mode 100644
index 000000000000..e841c60fb18b
--- /dev/null
+++ b/sys/modules/kue/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= if_kue
+SRCS= if_kue.c opt_bdg.h opt_usb.h device_if.h bus_if.h
+SRCS+= miibus_if.h
+KMODDEPS= miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/lge/Makefile b/sys/modules/lge/Makefile
new file mode 100644
index 000000000000..39d0357740f4
--- /dev/null
+++ b/sys/modules/lge/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/lge
+
+KMOD= if_lge
+SRCS= if_lge.c miibus_if.h opt_bdg.h device_if.h bus_if.h pci_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/libiconv/Makefile b/sys/modules/libiconv/Makefile
new file mode 100644
index 000000000000..5f528a1a64cb
--- /dev/null
+++ b/sys/modules/libiconv/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../libkern ${.CURDIR}/../../sys
+
+KMOD= libiconv
+SRCS= iconv.c iconv_xlat.c
+SRCS+= iconv.h
+SRCS+= bus_if.h device_if.h
+SRCS+= iconv_converter_if.c iconv_converter_if.h
+NOMAN= true
+
+iconv_converter_if.h: @
+ perl @/kern/makeobjops.pl -h @/libkern/iconv_converter_if.m
+
+iconv_converter_if.c: @
+ perl @/kern/makeobjops.pl -c @/libkern/iconv_converter_if.m
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/libmchain/Makefile b/sys/modules/libmchain/Makefile
new file mode 100644
index 000000000000..39cfeb042767
--- /dev/null
+++ b/sys/modules/libmchain/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../kern
+
+KMOD= libmchain
+SRCS= subr_mchain.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/linprocfs/Makefile b/sys/modules/linprocfs/Makefile
new file mode 100644
index 000000000000..5b9f1a7cf42a
--- /dev/null
+++ b/sys/modules/linprocfs/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../i386/linux/linprocfs
+KMOD= linprocfs
+SRCS= vnode_if.h linprocfs_misc.c linprocfs_subr.c \
+ linprocfs_vfsops.c linprocfs_vnops.c
+NOMAN=
+CFLAGS+= -DLINPROCFS
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/linux/Makefile b/sys/modules/linux/Makefile
new file mode 100644
index 000000000000..715c452da44e
--- /dev/null
+++ b/sys/modules/linux/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+
+MAINTAINER= marcel@FreeBSD.org
+
+.PATH: ${.CURDIR}/../../compat/linux ${.CURDIR}/../../${MACHINE_ARCH}/linux
+
+KMOD= linux
+SRCS= linux_dummy.c linux_file.c linux_getcwd.c linux_ioctl.c linux_ipc.c \
+ linux_machdep.c linux_mib.c linux_misc.c linux_signal.c linux_socket.c \
+ linux_stats.c linux_sysctl.c linux_sysent.c linux_sysvec.c \
+ linux_util.c opt_compat.h opt_linux.h opt_vmpage.h vnode_if.h
+OBJS= linux_locore.o
+MAN= linux.8
+
+.if ${MACHINE_ARCH} == "i386"
+SRCS+= linux_ptrace.c linux_uid16.c imgact_linux.c opt_cpu.h
+.endif
+
+CLEANFILES= linux_assym.h linux_genassym.o
+
+linux_assym.h: linux_genassym.o
+.if exists(@)
+linux_assym.h: @/kern/genassym.sh
+.endif
+ sh @/kern/genassym.sh linux_genassym.o > ${.TARGET}
+
+linux_locore.o: linux_locore.s linux_assym.h
+ ${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
+ ${.IMPSRC} -o ${.TARGET}
+
+linux_genassym.o: linux_genassym.c linux.h @ machine
+ ${CC} -c ${CFLAGS} ${.IMPSRC}
+
+opt_compat.h:
+ echo "#define COMPAT_43 1" > opt_compat.h
+
+afterinstall:
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/linux.sh ${DESTDIR}/usr/sbin/linux
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/linux/linux.8 b/sys/modules/linux/linux.8
new file mode 100644
index 000000000000..b2b0e5ae6e51
--- /dev/null
+++ b/sys/modules/linux/linux.8
@@ -0,0 +1,48 @@
+.\"
+.\" Copyright (c) 1997
+.\" The FreeBSD Project. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 9, 1997
+.Dt LINUX 8
+.Os
+.Sh NAME
+.Nm linux
+.Nd load the Linux image activator module
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+utility loads the Linux image activator module.
+.Sh FILES
+.Bl -tag -width /modules/linux.ko
+.It Pa /modules/linux.ko
+Linux image activator loadable kernel module.
+.El
+.Sh SEE ALSO
+.Xr kld 4 ,
+.Xr kldload 8 ,
+.Xr kldstat 8 ,
+.Xr kldunload 8
diff --git a/sys/modules/linux/linux.sh b/sys/modules/linux/linux.sh
new file mode 100644
index 000000000000..a9215cf0be71
--- /dev/null
+++ b/sys/modules/linux/linux.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+FOUND=`kldstat -v | egrep 'linux(aout|elf)'`
+
+exitcode=0
+
+if [ "x$FOUND" != x ] ; then
+ echo Linux driver already loaded
+ exitcode=1
+else
+ kldload linux
+ exitcode=$?
+fi
+
+if [ -f /compat/linux/sbin/ldconfig ] ; then
+ /compat/linux/sbin/ldconfig
+fi
+
+exit $exitcode
diff --git a/sys/modules/md/Makefile b/sys/modules/md/Makefile
new file mode 100644
index 000000000000..bbbec998b357
--- /dev/null
+++ b/sys/modules/md/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/md
+KMOD= md
+SRCS= md.c opt_mfs.h opt_md.h
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/mfs/Makefile b/sys/modules/mfs/Makefile
new file mode 100644
index 000000000000..7f2a0d472549
--- /dev/null
+++ b/sys/modules/mfs/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../ufs/mfs
+KMOD= mfs
+SRCS= vnode_if.h \
+ mfs_vfsops.c mfs_vnops.c opt_mfs.h
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/mii/Makefile b/sys/modules/mii/Makefile
new file mode 100644
index 000000000000..75efb9619611
--- /dev/null
+++ b/sys/modules/mii/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/mii
+KMOD = miibus
+SRCS = mii.c mii_physubr.c ukphy.c ukphy_subr.c bus_if.h pci_if.h
+SRCS += miibus_if.h device_if.h miibus_if.c e1000phy.c exphy.c nsphy.c
+SRCS += mlphy.c tlphy.c rlphy.c amphy.c dcphy.c pnphy.c nsgphy.c
+SRCS += pnaphy.c brgphy.c xmphy.c inphy.c lxtphy.c qsphy.c acphy.c
+SRCS += ruephy.c tdkphy.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/mlx/Makefile b/sys/modules/mlx/Makefile
new file mode 100644
index 000000000000..aaae0f67cdf8
--- /dev/null
+++ b/sys/modules/mlx/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/mlx
+KMOD = mlx
+SRCS = mlx.c mlx_pci.c mlx_disk.c device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/mly/Makefile b/sys/modules/mly/Makefile
new file mode 100644
index 000000000000..1f8abe828496
--- /dev/null
+++ b/sys/modules/mly/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/mly
+KMOD = mly
+SRCS = mly.c mly_pci.c mly_cam.c
+SRCS += opt_scsi.h opt_cam.h
+SRCS += device_if.h bus_if.h pci_if.h
+
+#CFLAGS+= -DMLY_DEBUG=1
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/msdos/Makefile b/sys/modules/msdos/Makefile
new file mode 100644
index 000000000000..1ac0016ca6f6
--- /dev/null
+++ b/sys/modules/msdos/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../msdosfs
+KMOD= msdos
+SRCS= vnode_if.h \
+ msdosfs_conv.c msdosfs_denode.c msdosfs_fat.c msdosfs_lookup.c \
+ msdosfs_vfsops.c msdosfs_vnops.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/my/Makefile b/sys/modules/my/Makefile
new file mode 100644
index 000000000000..4b454a88722c
--- /dev/null
+++ b/sys/modules/my/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/my
+
+KMOD= if_my
+SRCS= if_my.c device_if.h bus_if.h pci_if.h miibus_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ncp/Makefile b/sys/modules/ncp/Makefile
new file mode 100644
index 000000000000..f68602f4f7fc
--- /dev/null
+++ b/sys/modules/ncp/Makefile
@@ -0,0 +1,44 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netncp
+
+KMOD= ncp
+
+# Build with IPX support (1|0)
+NCP_IPX?= 1
+
+# Build with INET support (1|0)
+NCP_INET?= 1
+
+SRCS= ncp_conn.c ncp_sock.c ncp_ncp.c ncp_subr.c ncp_crypt.c ncp_mod.c \
+ ncp_rq.c ncp_login.c ncp_nls.c opt_inet.h opt_ipx.h opt_ncp.h
+
+.if defined(NCPBURST)
+SRCS+= ncp_burst.c
+CFLAGS+= -DNCPBURST
+.endif
+
+NOMAN=
+
+opt_inet.h:
+ touch ${.TARGET}
+.if ${NCP_INET} > 0
+ echo "#define INET 1" > ${.TARGET}
+.endif
+
+opt_ipx.h:
+ touch ${.TARGET}
+.if ${NCP_IPX} > 0
+ echo "#define IPX 1" > ${.TARGET}
+.endif
+
+load: ${KMOD}.ko
+ kldload ./${KMOD}.ko
+
+unload:
+ @(if kldunload ${KMOD}; then true; else true; fi)
+
+deinstall:
+ rm -f /modules/ncp.ko
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ncv/Makefile b/sys/modules/ncv/Makefile
new file mode 100644
index 000000000000..064bda33e098
--- /dev/null
+++ b/sys/modules/ncv/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ncv
+
+KMOD= ncv
+SRCS= ncr53c500_pccard.c ncr53c500.c
+SRCS+= opt_bdg.h device_if.h bus_if.h pci_if.h isa_if.h card_if.h
+SRCS+= opt_cam.h opt_scsi.h opt_ddb.h
+KMODDEPS= scsi_low
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/Makefile b/sys/modules/netgraph/Makefile
new file mode 100644
index 000000000000..2f111f1f2403
--- /dev/null
+++ b/sys/modules/netgraph/Makefile
@@ -0,0 +1,37 @@
+# $Whistle: Makefile,v 1.5 1999/01/24 06:48:37 archie Exp $
+# $FreeBSD$
+
+SUBDIR= UI \
+ async \
+ bpf \
+ bridge \
+ cisco \
+ echo \
+ eiface \
+ etf \
+ ether \
+ frame_relay \
+ hole \
+ iface \
+ ksocket \
+ l2tp \
+ lmi \
+ netgraph \
+ one2many \
+ ppp \
+ pppoe \
+ pptpgre \
+ rfc1490 \
+ socket \
+ sync_ar \
+ sync_sr \
+ tee \
+ tty \
+ vjc \
+ vlan
+
+.if !defined(NOCRYPT) && exists(${.CURDIR}/../../crypto/rc4/rc4.c)
+SUBDIR+= mppc
+.endif
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/netgraph/Makefile.inc b/sys/modules/netgraph/Makefile.inc
new file mode 100644
index 000000000000..16ca171c2de7
--- /dev/null
+++ b/sys/modules/netgraph/Makefile.inc
@@ -0,0 +1,7 @@
+# $FreeBSD$
+# $Whistle: Makefile.inc,v 1.4 1999/01/19 23:46:16 archie Exp $
+
+.PATH: ${.CURDIR}/../../../netgraph
+CFLAGS+= -Wall
+
+.include "../Makefile.inc"
diff --git a/sys/modules/netgraph/UI/Makefile b/sys/modules/netgraph/UI/Makefile
new file mode 100644
index 000000000000..bba8d43d7dd4
--- /dev/null
+++ b/sys/modules/netgraph/UI/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:20 archie Exp $
+
+KMOD= ng_UI
+SRCS= ng_UI.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/async/Makefile b/sys/modules/netgraph/async/Makefile
new file mode 100644
index 000000000000..2c47b1265d93
--- /dev/null
+++ b/sys/modules/netgraph/async/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:20 archie Exp $
+
+KMOD= ng_async
+SRCS= ng_async.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/bpf/Makefile b/sys/modules/netgraph/bpf/Makefile
new file mode 100644
index 000000000000..b5a093cbfb34
--- /dev/null
+++ b/sys/modules/netgraph/bpf/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.1 1999/12/03 01:44:28 archie Exp $
+
+KMOD= ng_bpf
+SRCS= ng_bpf.c bpf_filter.c
+KMODDEPS= netgraph
+
+.PATH: ${.CURDIR}/../../../net
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/bridge/Makefile b/sys/modules/netgraph/bridge/Makefile
new file mode 100644
index 000000000000..2d589b60ef67
--- /dev/null
+++ b/sys/modules/netgraph/bridge/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= ng_bridge
+SRCS= ng_bridge.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/cisco/Makefile b/sys/modules/netgraph/cisco/Makefile
new file mode 100644
index 000000000000..802e94584771
--- /dev/null
+++ b/sys/modules/netgraph/cisco/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:20 archie Exp $
+
+KMOD= ng_cisco
+SRCS= ng_cisco.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/echo/Makefile b/sys/modules/netgraph/echo/Makefile
new file mode 100644
index 000000000000..521bb1ac72c0
--- /dev/null
+++ b/sys/modules/netgraph/echo/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:20 archie Exp $
+
+KMOD= ng_echo
+SRCS= ng_echo.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/eiface/Makefile b/sys/modules/netgraph/eiface/Makefile
new file mode 100644
index 000000000000..043900c72b16
--- /dev/null
+++ b/sys/modules/netgraph/eiface/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= ng_eiface
+SRCS= ng_eiface.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/etf/Makefile b/sys/modules/netgraph/etf/Makefile
new file mode 100644
index 000000000000..c7075acf44fd
--- /dev/null
+++ b/sys/modules/netgraph/etf/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# Ethertype filter
+
+KMOD= ng_etf
+SRCS= ng_etf.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/ether/Makefile b/sys/modules/netgraph/ether/Makefile
new file mode 100644
index 000000000000..86e1802640ad
--- /dev/null
+++ b/sys/modules/netgraph/ether/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= ng_ether
+SRCS= ng_ether.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/fec/Makefile b/sys/modules/netgraph/fec/Makefile
new file mode 100644
index 000000000000..2f4ccc50723b
--- /dev/null
+++ b/sys/modules/netgraph/fec/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+KMOD= ng_fec
+SRCS= ng_fec.c opt_inet.h opt_inet6.h
+#MAN4= ng_fec.4
+NOMAN= yes
+KMODDEPS= netgraph
+
+CFLAGS += -DINET -DINET6
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/frame_relay/Makefile b/sys/modules/netgraph/frame_relay/Makefile
new file mode 100644
index 000000000000..132965b12399
--- /dev/null
+++ b/sys/modules/netgraph/frame_relay/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.1 1999/01/19 19:39:21 archie Exp $
+
+KMOD= ng_frame_relay
+SRCS= ng_frame_relay.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/hole/Makefile b/sys/modules/netgraph/hole/Makefile
new file mode 100644
index 000000000000..778237ba2959
--- /dev/null
+++ b/sys/modules/netgraph/hole/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:21 archie Exp $
+
+KMOD= ng_hole
+SRCS= ng_hole.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/iface/Makefile b/sys/modules/netgraph/iface/Makefile
new file mode 100644
index 000000000000..9f20fdeef402
--- /dev/null
+++ b/sys/modules/netgraph/iface/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:21 archie Exp $
+
+KMOD= ng_iface
+SRCS= ng_iface.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/ksocket/Makefile b/sys/modules/netgraph/ksocket/Makefile
new file mode 100644
index 000000000000..042dfdd54128
--- /dev/null
+++ b/sys/modules/netgraph/ksocket/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= ng_ksocket
+SRCS= ng_ksocket.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/l2tp/Makefile b/sys/modules/netgraph/l2tp/Makefile
new file mode 100644
index 000000000000..bd0227a9e0c8
--- /dev/null
+++ b/sys/modules/netgraph/l2tp/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= ng_l2tp
+SRCS= ng_l2tp.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/lmi/Makefile b/sys/modules/netgraph/lmi/Makefile
new file mode 100644
index 000000000000..cbd07370e0fd
--- /dev/null
+++ b/sys/modules/netgraph/lmi/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.1 1999/01/19 19:39:21 archie Exp $
+
+KMOD= ng_lmi
+SRCS= ng_lmi.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/mppc/Makefile b/sys/modules/netgraph/mppc/Makefile
new file mode 100644
index 000000000000..689074a84bd7
--- /dev/null
+++ b/sys/modules/netgraph/mppc/Makefile
@@ -0,0 +1,32 @@
+# $Whistle: Makefile,v 1.1 1999/12/08 20:20:39 archie Exp $
+# $FreeBSD$
+
+KMOD= ng_mppc
+SRCS= ng_mppc.c opt_netgraph.h
+KMODDEPS= netgraph
+
+NETGRAPH_MPPC_COMPRESSION?= 0
+NETGRAPH_MPPC_ENCRYPTION?= 1
+
+.if ${NETGRAPH_MPPC_COMPRESSION} > 0
+# XXX These files don't exist yet, but hopefully someday they will...
+.PATH: ${.CURDIR}/../../../net
+SRCS+= mppcc.c mppcd.c
+.endif
+
+.if ${NETGRAPH_MPPC_ENCRYPTION} > 0
+.PATH: ${.CURDIR}/../../../crypto
+.PATH: ${.CURDIR}/../../../crypto/rc4
+SRCS+= rc4.c sha1.c
+.endif
+
+opt_netgraph.h:
+ touch ${.TARGET}
+.if ${NETGRAPH_MPPC_COMPRESSION} > 0
+ echo "#define NETGRAPH_MPPC_COMPRESSION 1" >> ${.TARGET}
+.endif
+.if ${NETGRAPH_MPPC_ENCRYPTION} > 0
+ echo "#define NETGRAPH_MPPC_ENCRYPTION 1" >> ${.TARGET}
+.endif
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/netgraph/Makefile b/sys/modules/netgraph/netgraph/Makefile
new file mode 100644
index 000000000000..00d5baaedee6
--- /dev/null
+++ b/sys/modules/netgraph/netgraph/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:22 archie Exp $
+
+KMOD= netgraph
+SRCS= ng_base.c ng_parse.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/one2many/Makefile b/sys/modules/netgraph/one2many/Makefile
new file mode 100644
index 000000000000..52f8537ea614
--- /dev/null
+++ b/sys/modules/netgraph/one2many/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= ng_one2many
+SRCS= ng_one2many.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/ppp/Makefile b/sys/modules/netgraph/ppp/Makefile
new file mode 100644
index 000000000000..aa307b17d136
--- /dev/null
+++ b/sys/modules/netgraph/ppp/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.1 1999/01/24 02:52:12 archie Exp $
+
+KMOD= ng_ppp
+SRCS= ng_ppp.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/pppoe/Makefile b/sys/modules/netgraph/pppoe/Makefile
new file mode 100644
index 000000000000..b77ab1535d80
--- /dev/null
+++ b/sys/modules/netgraph/pppoe/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.1 1999/01/19 19:39:21 archie Exp $
+
+KMOD= ng_pppoe
+SRCS= ng_pppoe.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/pptpgre/Makefile b/sys/modules/netgraph/pptpgre/Makefile
new file mode 100644
index 000000000000..487eb9e12f0f
--- /dev/null
+++ b/sys/modules/netgraph/pptpgre/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.1 1999/11/29 23:14:33 archie Exp $
+
+KMOD= ng_pptpgre
+SRCS= ng_pptpgre.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/rfc1490/Makefile b/sys/modules/netgraph/rfc1490/Makefile
new file mode 100644
index 000000000000..90963d49d773
--- /dev/null
+++ b/sys/modules/netgraph/rfc1490/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:22 archie Exp $
+
+KMOD= ng_rfc1490
+SRCS= ng_rfc1490.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/socket/Makefile b/sys/modules/netgraph/socket/Makefile
new file mode 100644
index 000000000000..8dd7a675a156
--- /dev/null
+++ b/sys/modules/netgraph/socket/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:22 archie Exp $
+
+KMOD= ng_socket
+SRCS= ng_socket.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/sync_ar/Makefile b/sys/modules/netgraph/sync_ar/Makefile
new file mode 100644
index 000000000000..bc51040f0d15
--- /dev/null
+++ b/sys/modules/netgraph/sync_ar/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/ar
+KMOD = ng_sync_ar
+SRCS = if_ar.c if_ar_isa.c if_ar_pci.c
+SRCS += device_if.h bus_if.h pci_if.h isa_if.h opt_netgraph.h
+
+opt_netgraph.h:
+ echo "#define NETGRAPH" > opt_netgraph.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/sync_sr/Makefile b/sys/modules/netgraph/sync_sr/Makefile
new file mode 100644
index 000000000000..16a291ca4654
--- /dev/null
+++ b/sys/modules/netgraph/sync_sr/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/sr
+KMOD = ng_sync_sr
+SRCS = if_sr.c if_sr_isa.c if_sr_pci.c
+SRCS += device_if.h bus_if.h pci_if.h isa_if.h opt_netgraph.h
+
+opt_netgraph.h:
+ echo "#define NETGRAPH" > opt_netgraph.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/tee/Makefile b/sys/modules/netgraph/tee/Makefile
new file mode 100644
index 000000000000..8df0c1f15e87
--- /dev/null
+++ b/sys/modules/netgraph/tee/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:22 archie Exp $
+
+KMOD= ng_tee
+SRCS= ng_tee.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/tty/Makefile b/sys/modules/netgraph/tty/Makefile
new file mode 100644
index 000000000000..65f64b139461
--- /dev/null
+++ b/sys/modules/netgraph/tty/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.2 1999/01/19 19:39:22 archie Exp $
+
+KMOD= ng_tty
+SRCS= ng_tty.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/vjc/Makefile b/sys/modules/netgraph/vjc/Makefile
new file mode 100644
index 000000000000..ee4ea8430fab
--- /dev/null
+++ b/sys/modules/netgraph/vjc/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+# $Whistle: Makefile,v 1.1 1999/01/24 06:48:07 archie Exp $
+
+KMOD= ng_vjc
+SRCS= ng_vjc.c slcompress.c
+KMODDEPS= netgraph
+
+.PATH: ${.CURDIR}/../../../net
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/netgraph/vlan/Makefile b/sys/modules/netgraph/vlan/Makefile
new file mode 100644
index 000000000000..4701c1126d44
--- /dev/null
+++ b/sys/modules/netgraph/vlan/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= ng_vlan
+SRCS= ng_vlan.c
+KMODDEPS= netgraph
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/nfs/Makefile b/sys/modules/nfs/Makefile
new file mode 100644
index 000000000000..34d4006a038f
--- /dev/null
+++ b/sys/modules/nfs/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../nfs
+KMOD= nfs
+SRCS= vnode_if.h \
+ nfs_bio.c nfs_node.c nfs_nqlease.c nfs_serv.c nfs_socket.c \
+ nfs_srvcache.c nfs_subs.c nfs_syscalls.c nfs_vfsops.c \
+ nfs_vnops.c opt_inet.h opt_nfs.h opt_vmpage.h opt_bootp.h
+NFS_INET?= 1 # 0/1 - requires INET to be configured in kernel
+NOMAN=
+
+opt_inet.h:
+ touch ${.TARGET}
+.if ${NFS_INET} > 0
+ echo "#define INET 1" > ${.TARGET}
+.endif
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/nge/Makefile b/sys/modules/nge/Makefile
new file mode 100644
index 000000000000..20a5c060ac59
--- /dev/null
+++ b/sys/modules/nge/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/nge
+
+KMOD= if_nge
+SRCS= if_nge.c miibus_if.h opt_bdg.h device_if.h bus_if.h pci_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/nmdm/Makefile b/sys/modules/nmdm/Makefile
new file mode 100644
index 000000000000..d74b7d3d6ac7
--- /dev/null
+++ b/sys/modules/nmdm/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/nmdm
+
+KMOD= nmdm
+SRCS= nmdm.c
+SRCS+= opt_compat.h vnode_if.h
+
+opt_compat.h:
+ echo "#define COMPAT_43 1" >opt_compat.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/nsp/Makefile b/sys/modules/nsp/Makefile
new file mode 100644
index 000000000000..37b79405ee8f
--- /dev/null
+++ b/sys/modules/nsp/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/nsp
+
+KMOD= nsp
+SRCS= nsp.c nsp_pccard.c
+SRCS+= opt_bdg.h device_if.h bus_if.h pci_if.h isa_if.h card_if.h
+SRCS+= opt_cam.h opt_scsi.h opt_ddb.h
+KMODDEPS= scsi_low
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ntfs/Makefile b/sys/modules/ntfs/Makefile
new file mode 100644
index 000000000000..d13373b7e29d
--- /dev/null
+++ b/sys/modules/ntfs/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../ntfs
+KMOD= ntfs
+SRCS= vnode_if.h \
+ ntfs_vfsops.c ntfs_vnops.c ntfs_subr.c ntfs_ihash.c \
+ ntfs_compr.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/nullfs/Makefile b/sys/modules/nullfs/Makefile
new file mode 100644
index 000000000000..9c5a74162367
--- /dev/null
+++ b/sys/modules/nullfs/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../miscfs/nullfs
+KMOD= null
+SRCS= vnode_if.h opt_ddb.h \
+ null_subr.c null_vfsops.c null_vnops.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/nwfs/Makefile b/sys/modules/nwfs/Makefile
new file mode 100644
index 000000000000..0f8471f7a90d
--- /dev/null
+++ b/sys/modules/nwfs/Makefile
@@ -0,0 +1,30 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../nwfs
+
+KMOD= nwfs
+KMODDEPS= ncp
+
+SRCS= vnode_if.h \
+ nwfs_node.c nwfs_ioctl.c nwfs_io.c nwfs_vfsops.c nwfs_vnops.c \
+ nwfs_subr.c opt_ncp.h opt_nwfs.h opt_vmpage.h
+
+NOMAN=true
+
+.if defined(VNPRINT)
+CFLAGS+= -DVNPRINT
+.endif
+
+opt_ncp.h:
+ echo "#define NCP 1" > ${.TARGET}
+
+load: nwfs.ko
+ kldload ./nwfs.ko
+
+unload:
+ @(if kldunload nwfs; then true; else true; fi)
+
+deinstall:
+ rm -f /modules/nwfs.ko
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/osf1/Makefile b/sys/modules/osf1/Makefile
new file mode 100644
index 000000000000..1f0bdbde073f
--- /dev/null
+++ b/sys/modules/osf1/Makefile
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+MAINTAINER= gallatin@FreeBSD.org
+
+.PATH: ${.CURDIR}/../../alpha/osf1
+
+KMOD= osf1
+SRCS= osf1_ioctl.c osf1_misc.c osf1_signal.c osf1_sysent.c \
+ osf1_mount.c imgact_osf1.c osf1_sysvec.c opt_compat.h \
+ opt_simos.h opt_nfs.h vnode_if.h
+MAN= osf1.8
+
+#CFLAGS+= -g
+EXPORT_SYMS= _osf1
+
+opt_compat.h:
+ echo "#define COMPAT_43 1" > ${.TARGET}
+
+opt_osf1.h opt_simos.h opt_nfs.h:
+ touch ${.TARGET}
+
+afterinstall:
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/osf1.sh ${DESTDIR}/usr/bin/osf1
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/osf1/osf1.8 b/sys/modules/osf1/osf1.8
new file mode 100644
index 000000000000..d8ba59c7b53b
--- /dev/null
+++ b/sys/modules/osf1/osf1.8
@@ -0,0 +1,47 @@
+.\" Copyright (c) 1999
+.\" The FreeBSD Project. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 31, 1998
+.Dt OSF1 8
+.Os
+.Sh NAME
+.Nm osf1
+.Nd load the OSF/1 emulator kernel module
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+utility loads the OSF/1 image activator kernel module.
+.Sh FILES
+.Bl -tag -width /modules/osf1.ko
+.It Pa /modules/osf1.ko
+OSF/1 image activator loadable kernel module.
+.El
+.Sh SEE ALSO
+.Xr kld 4 ,
+.Xr kldload 8 ,
+.Xr kldstat 8 ,
+.Xr kldunload 8
diff --git a/sys/modules/osf1/osf1.sh b/sys/modules/osf1/osf1.sh
new file mode 100644
index 000000000000..b2b4d92f49ac
--- /dev/null
+++ b/sys/modules/osf1/osf1.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# Copyright (c) 1999
+# The FreeBSD Project. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+FOUND=`kldstat -v | egrep 'osf1_ecoff'`
+
+if [ "x$FOUND" != x ] ; then
+ echo Osf1 driver already loaded
+ exit 1
+else
+ kldload osf1
+fi
diff --git a/sys/modules/pccard/Makefile b/sys/modules/pccard/Makefile
new file mode 100644
index 000000000000..c1511fddf058
--- /dev/null
+++ b/sys/modules/pccard/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/pccard
+KMOD= pccard
+SRCS= pccard.c pccard_cis.c pccard_cis_quirks.c \
+ device_if.h bus_if.h card_if.h card_if.c power_if.h power_if.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/pcfclock/Makefile b/sys/modules/pcfclock/Makefile
new file mode 100644
index 000000000000..6d37afe47f46
--- /dev/null
+++ b/sys/modules/pcfclock/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ppbus
+KMOD= pcfclock
+SRCS= pcfclock.c opt_pcfclock.h
+SRCS+= bus_if.h device_if.h ppbus_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/pcic/Makefile b/sys/modules/pcic/Makefile
new file mode 100644
index 000000000000..5514ef9148b8
--- /dev/null
+++ b/sys/modules/pcic/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/pcic
+KMOD= pcic
+SRCS= i82365.c i82365_isa.c \
+ device_if.h bus_if.h isa_if.h power_if.h card_if.h
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/pcn/Makefile b/sys/modules/pcn/Makefile
new file mode 100644
index 000000000000..c71bbd996c41
--- /dev/null
+++ b/sys/modules/pcn/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_pcn
+SRCS = if_pcn.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/pmc/Makefile b/sys/modules/pmc/Makefile
new file mode 100644
index 000000000000..30c1581b049f
--- /dev/null
+++ b/sys/modules/pmc/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pc98/pc98
+
+KMOD= pmc
+SRCS= pmc.c
+SRCS+= bus_if.h device_if.h isa_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/portal/Makefile b/sys/modules/portal/Makefile
new file mode 100644
index 000000000000..5cc476778021
--- /dev/null
+++ b/sys/modules/portal/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../miscfs/portal
+KMOD= portal
+SRCS= vnode_if.h \
+ portal_vfsops.c portal_vnops.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/procfs/Makefile b/sys/modules/procfs/Makefile
new file mode 100644
index 000000000000..28d899028451
--- /dev/null
+++ b/sys/modules/procfs/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../miscfs/procfs
+KMOD= procfs
+SRCS= vnode_if.h \
+ procfs_ctl.c procfs_map.c procfs_note.c procfs_rlimit.c \
+ procfs_status.c procfs_subr.c procfs_type.c procfs_vfsops.c \
+ procfs_vnops.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/pst/Makefile b/sys/modules/pst/Makefile
new file mode 100644
index 000000000000..46e552ddaf74
--- /dev/null
+++ b/sys/modules/pst/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/pst
+
+KMOD= pst
+SRCS= pst-pci.c pst-iop.c pst-raid.c
+SRCS+= device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ray/Makefile b/sys/modules/ray/Makefile
new file mode 100644
index 000000000000..16eb08349481
--- /dev/null
+++ b/sys/modules/ray/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ray
+KMOD = if_ray
+SRCS = if_ray.c
+SRCS += device_if.h bus_if.h card_if.h opt_inet.h
+NOMAN =
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/rl/Makefile b/sys/modules/rl/Makefile
new file mode 100644
index 000000000000..8700ad870e6b
--- /dev/null
+++ b/sys/modules/rl/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_rl
+SRCS = if_rl.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/rp/Makefile b/sys/modules/rp/Makefile
new file mode 100644
index 000000000000..0592276d5191
--- /dev/null
+++ b/sys/modules/rp/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/rp
+
+KMOD= rp
+SRCS= rp.c rp_pci.c device_if.h bus_if.h pci_if.h
+CFLAGS+= -g
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/rue/Makefile b/sys/modules/rue/Makefile
new file mode 100644
index 000000000000..7bed1b0520a1
--- /dev/null
+++ b/sys/modules/rue/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= if_rue
+SRCS= if_rue.c opt_bdg.h opt_usb.h device_if.h bus_if.h
+SRCS+= miibus_if.h
+KMODDEPS= miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/safe/Makefile b/sys/modules/safe/Makefile
new file mode 100644
index 000000000000..b47a594011d9
--- /dev/null
+++ b/sys/modules/safe/Makefile
@@ -0,0 +1,38 @@
+#-
+# Copyright (c) 2003 Sam Leffler, Errno Consulting
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+.PATH: ${.CURDIR}/../../dev/safe
+KMOD = safe
+SRCS = safe.c opt_safe.h
+SRCS += device_if.h bus_if.h pci_if.h
+SRCS += opt_bdg.h opt_bus.h crypto_if.h
+
+opt_safe.h:
+ echo "#define SAFE_DEBUG 1" > opt_safe.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sbni/Makefile b/sys/modules/sbni/Makefile
new file mode 100644
index 000000000000..4b9eb7a83bf7
--- /dev/null
+++ b/sys/modules/sbni/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/sbni
+
+KMOD= if_sbni
+SRCS= if_sbni.c if_sbni_pci.c
+
+SRCS+= bus_if.h device_if.h isa_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sbsh/Makefile b/sys/modules/sbsh/Makefile
new file mode 100644
index 000000000000..74569567c470
--- /dev/null
+++ b/sys/modules/sbsh/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/sbsh
+
+KMOD= if_sbsh
+SRCS= if_sbsh.c bus_if.h device_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/scsi_low/Makefile b/sys/modules/scsi_low/Makefile
new file mode 100644
index 000000000000..ba18c1d46015
--- /dev/null
+++ b/sys/modules/scsi_low/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../cam/scsi
+KMOD= scsi_low
+SRCS= scsi_low.c scsi_low_pisa.c
+SRCS+= opt_ddb.h opt_scsi.h opt_cam.h bus_if.h device_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sf/Makefile b/sys/modules/sf/Makefile
new file mode 100644
index 000000000000..88b594082899
--- /dev/null
+++ b/sys/modules/sf/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_sf
+SRCS = if_sf.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sis/Makefile b/sys/modules/sis/Makefile
new file mode 100644
index 000000000000..de63c38aad67
--- /dev/null
+++ b/sys/modules/sis/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_sis
+SRCS = if_sis.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sk/Makefile b/sys/modules/sk/Makefile
new file mode 100644
index 000000000000..350521cab879
--- /dev/null
+++ b/sys/modules/sk/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_sk
+SRCS = if_sk.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/smbfs/Makefile b/sys/modules/smbfs/Makefile
new file mode 100644
index 000000000000..578423491894
--- /dev/null
+++ b/sys/modules/smbfs/Makefile
@@ -0,0 +1,71 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../crypto/des \
+ ${.CURDIR}/../../crypto/des/arch/${MACHINE_ARCH} \
+ ${.CURDIR}/../../kern \
+ ${.CURDIR}/../../libkern \
+ ${.CURDIR}/../../netsmb \
+ ${.CURDIR}/../../fs/smbfs
+
+KMOD= smbfs
+KMODDEPS= libiconv libmchain
+
+SRCS= vnode_if.h \
+ opt_inet.h opt_ipx.h \
+ opt_netsmb.h opt_smbfs.h opt_vmpage.h \
+ iconv_converter_if.h \
+ md4c.c \
+ smb_conn.c smb_dev.c smb_trantcp.c smb_smb.c smb_subr.c smb_rq.c \
+ smb_usr.c smb_crypt.c smb_iod.c \
+ smbfs_vfsops.c smbfs_node.c smbfs_io.c smbfs_vnops.c \
+ smbfs_subr.c smbfs_smb.c
+
+NOMAN=true
+
+.if exists(${.CURDIR}/../../crypto/des/des.h)
+NETSMBCRYPTO=yes
+.endif
+
+.if defined(NETSMBCRYPTO)
+SRCS+= des_ecb.c des_setkey.c
+.if ${MACHINE_ARCH} == "i386"
+SRCS+= des_enc.S
+.else
+SRCS+= des_enc.c
+.endif
+.endif
+
+# Build with IPX support (1|0)
+SMB_IPX?= 0
+
+# Build with INET support (1|0)
+SMB_INET?= 1
+
+CFLAGS+= ${KDEBUG}
+
+.if defined(VNPRINT)
+CFLAGS+= -DVNPRINT
+.endif
+
+opt_inet.h:
+ touch ${.TARGET}
+.if ${SMB_INET} > 0
+ echo "#define INET 1" > ${.TARGET}
+.endif
+
+opt_ipx.h:
+ touch ${.TARGET}
+.if ${SMB_IPX} > 0
+ echo "#define IPX 1" > ${.TARGET}
+.endif
+
+opt_netsmb.h:
+ echo "#define NETSMB 1" > ${.TARGET}
+.if defined(NETSMBCRYPTO)
+ echo "#define NETSMBCRYPTO 1" >> ${.TARGET}
+.endif
+
+unload:
+ @(if kldunload ${KMOD}; then true; else true; fi)
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/snc/Makefile b/sys/modules/snc/Makefile
new file mode 100644
index 000000000000..f161c1e1e396
--- /dev/null
+++ b/sys/modules/snc/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/snc
+KMOD = if_snc
+SRCS = if_snc.c if_snc_cbus.c if_snc_pccard.c dp83932.c dp83932subr.c
+SRCS += opt_inet.h opt_bdg.h device_if.h bus_if.h isa_if.h
+
+opt_inet.h:
+ echo "#define INET 1" > ${.TARGET}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/snp/Makefile b/sys/modules/snp/Makefile
new file mode 100644
index 000000000000..9cafd330e7b6
--- /dev/null
+++ b/sys/modules/snp/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/snp
+
+KMOD= snp
+SRCS= snp.c vnode_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/Makefile b/sys/modules/sound/Makefile
new file mode 100644
index 000000000000..da5d356ffb31
--- /dev/null
+++ b/sys/modules/sound/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+SUBDIR =
+SUBDIR += pcm
+SUBDIR += driver snd
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/sound/Makefile.inc b/sys/modules/sound/Makefile.inc
new file mode 100644
index 000000000000..265f86d1ed55
--- /dev/null
+++ b/sys/modules/sound/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/sys/modules/sound/driver/Makefile b/sys/modules/sound/driver/Makefile
new file mode 100644
index 000000000000..4001d7e11022
--- /dev/null
+++ b/sys/modules/sound/driver/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+SUBDIR = ad1816 als4000 cmi cs4281 csa ds1 emu10k1 es137x ess fm801 ich
+SUBDIR += maestro maestro3 mss neomagic sb16 sb8 sbc solo t4dwave
+SUBDIR += uaudio via8233 via82c686 vibes
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/sound/driver/Makefile.inc b/sys/modules/sound/driver/Makefile.inc
new file mode 100644
index 000000000000..124bfc8bd11a
--- /dev/null
+++ b/sys/modules/sound/driver/Makefile.inc
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SRCS += ac97_if.h channel_if.h feeder_if.h mixer_if.h
+
+.include "../Makefile.inc"
diff --git a/sys/modules/sound/driver/ad1816/Makefile b/sys/modules/sound/driver/ad1816/Makefile
new file mode 100644
index 000000000000..1796314afee0
--- /dev/null
+++ b/sys/modules/sound/driver/ad1816/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/isa
+KMOD = snd_ad1816
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += ad1816.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/als4000/Makefile b/sys/modules/sound/driver/als4000/Makefile
new file mode 100644
index 000000000000..d985aa51e502
--- /dev/null
+++ b/sys/modules/sound/driver/als4000/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+
+KMOD= snd_als4000
+SRCS= device_if.h bus_if.h isa_if.h pci_if.h
+SRCS+= als4000.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/cmi/Makefile b/sys/modules/sound/driver/cmi/Makefile
new file mode 100644
index 000000000000..2e6dd2561ab4
--- /dev/null
+++ b/sys/modules/sound/driver/cmi/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_cmi
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += cmi.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/cs4281/Makefile b/sys/modules/sound/driver/cs4281/Makefile
new file mode 100644
index 000000000000..de788a544003
--- /dev/null
+++ b/sys/modules/sound/driver/cs4281/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_cs4281
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += cs4281.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/csa/Makefile b/sys/modules/sound/driver/csa/Makefile
new file mode 100644
index 000000000000..387dbba13e9b
--- /dev/null
+++ b/sys/modules/sound/driver/csa/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_csa
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += csa.c csapcm.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/ds1/Makefile b/sys/modules/sound/driver/ds1/Makefile
new file mode 100644
index 000000000000..e488fe440ba5
--- /dev/null
+++ b/sys/modules/sound/driver/ds1/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_ds1
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += ds1.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/emu10k1/Makefile b/sys/modules/sound/driver/emu10k1/Makefile
new file mode 100644
index 000000000000..14f9534bbe2e
--- /dev/null
+++ b/sys/modules/sound/driver/emu10k1/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_emu10k1
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += emu10k1.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/es137x/Makefile b/sys/modules/sound/driver/es137x/Makefile
new file mode 100644
index 000000000000..23a89e86ef4c
--- /dev/null
+++ b/sys/modules/sound/driver/es137x/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_es137x
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += es137x.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/ess/Makefile b/sys/modules/sound/driver/ess/Makefile
new file mode 100644
index 000000000000..0fda8351c264
--- /dev/null
+++ b/sys/modules/sound/driver/ess/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/isa
+KMOD = snd_ess
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += ess.c es1888.c
+KMODDEPS = snd_pcm snd_sbc
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/fm801/Makefile b/sys/modules/sound/driver/fm801/Makefile
new file mode 100644
index 000000000000..217b95b29667
--- /dev/null
+++ b/sys/modules/sound/driver/fm801/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_fm801
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += fm801.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/ich/Makefile b/sys/modules/sound/driver/ich/Makefile
new file mode 100755
index 000000000000..b03a4238eaa2
--- /dev/null
+++ b/sys/modules/sound/driver/ich/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_ich
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += ich.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/maestro/Makefile b/sys/modules/sound/driver/maestro/Makefile
new file mode 100644
index 000000000000..78232ea13c99
--- /dev/null
+++ b/sys/modules/sound/driver/maestro/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_maestro
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += maestro.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/maestro3/Makefile b/sys/modules/sound/driver/maestro3/Makefile
new file mode 100644
index 000000000000..bfc4d48db8d3
--- /dev/null
+++ b/sys/modules/sound/driver/maestro3/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_maestro3
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += maestro3.c
+CFLAGS += -Wall
+
+CFLAGS += -DM3_DEBUG_LEVEL=-1
+
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/mss/Makefile b/sys/modules/sound/driver/mss/Makefile
new file mode 100644
index 000000000000..6d19f5412050
--- /dev/null
+++ b/sys/modules/sound/driver/mss/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/isa
+KMOD = snd_mss
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += mss.c gusc.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/neomagic/Makefile b/sys/modules/sound/driver/neomagic/Makefile
new file mode 100644
index 000000000000..95b2bc3c5b5c
--- /dev/null
+++ b/sys/modules/sound/driver/neomagic/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_neomagic
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += neomagic.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/sb16/Makefile b/sys/modules/sound/driver/sb16/Makefile
new file mode 100644
index 000000000000..75779df6bc10
--- /dev/null
+++ b/sys/modules/sound/driver/sb16/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/isa
+
+KMOD= snd_sb16
+SRCS= device_if.h bus_if.h isa_if.h pci_if.h
+SRCS+= sb16.c
+KMODDEPS = snd_pcm snd_sbc
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/sb8/Makefile b/sys/modules/sound/driver/sb8/Makefile
new file mode 100644
index 000000000000..38782cec5516
--- /dev/null
+++ b/sys/modules/sound/driver/sb8/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/isa
+
+KMOD= snd_sb8
+SRCS= device_if.h bus_if.h isa_if.h pci_if.h
+SRCS+= sb8.c
+KMODDEPS = snd_pcm snd_sbc
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/sbc/Makefile b/sys/modules/sound/driver/sbc/Makefile
new file mode 100644
index 000000000000..3974b5a82db7
--- /dev/null
+++ b/sys/modules/sound/driver/sbc/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/isa
+KMOD = snd_sbc
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += sbc.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/solo/Makefile b/sys/modules/sound/driver/solo/Makefile
new file mode 100644
index 000000000000..e7db0f812e8a
--- /dev/null
+++ b/sys/modules/sound/driver/solo/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_solo
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += solo.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/t4dwave/Makefile b/sys/modules/sound/driver/t4dwave/Makefile
new file mode 100644
index 000000000000..b5225dc2a0de
--- /dev/null
+++ b/sys/modules/sound/driver/t4dwave/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_t4dwave
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += t4dwave.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/uaudio/Makefile b/sys/modules/sound/driver/uaudio/Makefile
new file mode 100644
index 000000000000..d38f42e45145
--- /dev/null
+++ b/sys/modules/sound/driver/uaudio/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/usb
+KMOD = snd_uaudio
+SRCS = device_if.h bus_if.h isa_if.h opt_usb.h
+SRCS += uaudio.c uaudio_pcm.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/via8233/Makefile b/sys/modules/sound/driver/via8233/Makefile
new file mode 100644
index 000000000000..1ed57e1666ff
--- /dev/null
+++ b/sys/modules/sound/driver/via8233/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_via8233
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += via8233.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/via82c686/Makefile b/sys/modules/sound/driver/via82c686/Makefile
new file mode 100644
index 000000000000..18aeab10b291
--- /dev/null
+++ b/sys/modules/sound/driver/via82c686/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_via82c686
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += via82c686.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/driver/vibes/Makefile b/sys/modules/sound/driver/vibes/Makefile
new file mode 100644
index 000000000000..0f57781181c7
--- /dev/null
+++ b/sys/modules/sound/driver/vibes/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/pci
+KMOD = snd_vibes
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += vibes.c
+KMODDEPS = snd_pcm
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/pcm/Makefile b/sys/modules/sound/pcm/Makefile
new file mode 100644
index 000000000000..ed54ad183dd1
--- /dev/null
+++ b/sys/modules/sound/pcm/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/sound/pcm
+KMOD = snd_pcm
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += ac97_if.h channel_if.h feeder_if.h mixer_if.h
+SRCS += ac97_if.c channel_if.c feeder_if.c mixer_if.c
+SRCS += ac97.c ac97_patch.c buffer.c channel.c dsp.c
+SRCS += fake.c feeder.c feeder_fmt.c feeder_rate.c
+SRCS += mixer.c sndstat.c sound.c vchan.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/snd/Makefile b/sys/modules/sound/snd/Makefile
new file mode 100644
index 000000000000..aa4beba03d81
--- /dev/null
+++ b/sys/modules/sound/snd/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/sound
+
+KMOD = snd
+SRCS = device_if.h bus_if.h isa_if.h pci_if.h
+SRCS += ac97_if.h channel_if.h feeder_if.h mixer_if.h
+SRCS += driver.c
+KMODDEPS += snd_pcm
+KMODDEPS += snd_ad1816 snd_als4000 snd_cmi snd_cs4281 snd_csa snd_ds1
+KMODDEPS += snd_emu10k1 snd_es137x snd_fm801 snd_ich
+KMODDEPS += snd_maestro snd_maestro3 snd_mss snd_neomagic
+KMODDEPS += snd_solo snd_t4dwave snd_via82c686 snd_vibes
+KMODDEPS += snd_sbc snd_sb16 snd_sb8 snd_ess
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/splash/Makefile b/sys/modules/splash/Makefile
new file mode 100644
index 000000000000..1c634bf4bf98
--- /dev/null
+++ b/sys/modules/splash/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR= bmp pcx
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/splash/Makefile.inc b/sys/modules/splash/Makefile.inc
new file mode 100644
index 000000000000..265f86d1ed55
--- /dev/null
+++ b/sys/modules/splash/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/sys/modules/splash/bmp/Makefile b/sys/modules/splash/bmp/Makefile
new file mode 100644
index 000000000000..af009a282619
--- /dev/null
+++ b/sys/modules/splash/bmp/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+KMOD= splash_bmp
+SRCS= splash_bmp.c
+
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/splash/bmp/splash_bmp.c b/sys/modules/splash/bmp/splash_bmp.c
new file mode 100644
index 000000000000..5f1d2b29d167
--- /dev/null
+++ b/sys/modules/splash/bmp/splash_bmp.c
@@ -0,0 +1,638 @@
+/*-
+ * Copyright (c) 1999 Michael Smith <msmith@freebsd.org>
+ * Copyright (c) 1999 Kazutaka YOKOTA <yokota@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/linker.h>
+#include <sys/fbio.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#ifndef PC98
+#include <dev/fb/vgareg.h>
+
+#include <isa/isareg.h>
+#endif
+
+#define FADE_TIMEOUT 15 /* sec */
+#define FADE_LEVELS 10
+
+static int splash_mode = -1;
+static int splash_on = FALSE;
+
+static int bmp_start(video_adapter_t *adp);
+static int bmp_end(video_adapter_t *adp);
+static int bmp_splash(video_adapter_t *adp, int on);
+static int bmp_Init(const char *data, int swidth, int sheight, int sdepth);
+static int bmp_Draw(video_adapter_t *adp);
+
+static splash_decoder_t bmp_decoder = {
+ "splash_bmp", bmp_start, bmp_end, bmp_splash, SPLASH_IMAGE,
+};
+
+SPLASH_DECODER(splash_bmp, bmp_decoder);
+
+static int
+bmp_start(video_adapter_t *adp)
+{
+ /* currently only 256-color modes are supported XXX */
+ static int modes[] = {
+#ifdef PC98
+ /*
+ * As 640x400 doesn't generally look great,
+ * it's least preferred here.
+ */
+ M_PC98_PEGC640x400,
+ M_PC98_PEGC640x480,
+ M_PC98_EGC640x400,
+#else
+ M_VESA_CG640x480,
+ M_VESA_CG800x600,
+ M_VESA_CG1024x768,
+ M_CG640x480,
+ /*
+ * As 320x200 doesn't generally look great,
+ * it's least preferred here.
+ */
+ M_VGA_CG320,
+#endif
+ -1,
+ };
+ video_info_t info;
+ int i;
+
+ if ((bmp_decoder.data == NULL) || (bmp_decoder.data_size <= 0)) {
+ printf("splash_bmp: No bitmap file found\n");
+ return ENODEV;
+ }
+ for (i = 0; modes[i] >= 0; ++i) {
+ if (((*vidsw[adp->va_index]->get_info)(adp, modes[i], &info) == 0)
+ && (bmp_Init((u_char *)bmp_decoder.data,
+ info.vi_width, info.vi_height, info.vi_depth) == 0))
+ break;
+ }
+ splash_mode = modes[i];
+ if (splash_mode < 0)
+ printf("splash_bmp: No appropriate video mode found\n");
+ if (bootverbose)
+ printf("bmp_start(): splash_mode:%d\n", splash_mode);
+ return ((splash_mode < 0) ? ENODEV : 0);
+}
+
+static int
+bmp_end(video_adapter_t *adp)
+{
+ /* nothing to do */
+ return 0;
+}
+
+static int
+bmp_splash(video_adapter_t *adp, int on)
+{
+ static u_char pal[256*3];
+ static long time_stamp;
+ u_char tpal[256*3];
+ static int fading = TRUE, brightness = FADE_LEVELS;
+ struct timeval tv;
+ int i;
+
+ if (on) {
+ if (!splash_on) {
+ /* set up the video mode and draw something */
+ if ((*vidsw[adp->va_index]->set_mode)(adp, splash_mode))
+ return 1;
+ if (bmp_Draw(adp))
+ return 1;
+ (*vidsw[adp->va_index]->save_palette)(adp, pal);
+ time_stamp = 0;
+ splash_on = TRUE;
+ }
+ /*
+ * This is a kludge to fade the image away. This section of the
+ * code takes effect only after the system is completely up.
+ * FADE_TIMEOUT should be configurable.
+ */
+ if (!cold) {
+ getmicrotime(&tv);
+ if (time_stamp == 0)
+ time_stamp = tv.tv_sec;
+ if (tv.tv_sec > time_stamp + FADE_TIMEOUT) {
+ if (fading)
+ if (brightness == 0) {
+ fading = FALSE;
+ brightness++;
+ }
+ else brightness--;
+ else
+ if (brightness == FADE_LEVELS) {
+ fading = TRUE;
+ brightness--;
+ }
+ else brightness++;
+ for (i = 0; i < sizeof(pal); ++i) {
+ tpal[i] = pal[i] * brightness / FADE_LEVELS;
+ }
+ (*vidsw[adp->va_index]->load_palette)(adp, tpal);
+ time_stamp = tv.tv_sec;
+ }
+ }
+ return 0;
+ } else {
+ /* the video mode will be restored by the caller */
+ splash_on = FALSE;
+ return 0;
+ }
+}
+
+/*
+** Code to handle Microsoft DIB (".BMP") format images.
+**
+** Blame me (msmith@freebsd.org) if this is broken, not Soren.
+*/
+
+typedef struct tagBITMAPFILEHEADER { /* bmfh */
+ u_short bfType __attribute__ ((packed));
+ int bfSize __attribute__ ((packed));
+ u_short bfReserved1 __attribute__ ((packed));
+ u_short bfReserved2 __attribute__ ((packed));
+ int bfOffBits __attribute__ ((packed));
+} BITMAPFILEHEADER;
+
+typedef struct tagBITMAPINFOHEADER { /* bmih */
+ int biSize __attribute__ ((packed));
+ int biWidth __attribute__ ((packed));
+ int biHeight __attribute__ ((packed));
+ short biPlanes __attribute__ ((packed));
+ short biBitCount __attribute__ ((packed));
+ int biCompression __attribute__ ((packed));
+ int biSizeImage __attribute__ ((packed));
+ int biXPelsPerMeter __attribute__ ((packed));
+ int biYPelsPerMeter __attribute__ ((packed));
+ int biClrUsed __attribute__ ((packed));
+ int biClrImportant __attribute__ ((packed));
+} BITMAPINFOHEADER;
+
+typedef struct tagRGBQUAD { /* rgbq */
+ u_char rgbBlue __attribute__ ((packed));
+ u_char rgbGreen __attribute__ ((packed));
+ u_char rgbRed __attribute__ ((packed));
+ u_char rgbReserved __attribute__ ((packed));
+} RGBQUAD;
+
+typedef struct tagBITMAPINFO { /* bmi */
+ BITMAPINFOHEADER bmiHeader __attribute__ ((packed));
+ RGBQUAD bmiColors[256] __attribute__ ((packed));
+} BITMAPINFO;
+
+typedef struct tagBITMAPF
+{
+ BITMAPFILEHEADER bmfh __attribute__ ((packed));
+ BITMAPINFO bmfi __attribute__ ((packed));
+} BITMAPF;
+
+#define BI_RGB 0
+#define BI_RLE8 1
+#define BI_RLE4 2
+
+/*
+** all we actually care about the image
+*/
+typedef struct
+{
+ int width,height; /* image dimensions */
+ int swidth,sheight; /* screen dimensions for the current mode */
+ u_char depth; /* image depth (1, 4, 8, 24 bits) */
+ u_char sdepth; /* screen depth (1, 4, 8 bpp) */
+ int ncols; /* number of colours */
+ u_char palette[256][3]; /* raw palette data */
+ u_char format; /* one of the BI_* constants above */
+ u_char *data; /* pointer to the raw data */
+ u_char *index; /* running pointer to the data while drawing */
+ u_char *vidmem; /* video memory allocated for drawing */
+ video_adapter_t *adp;
+ int bank;
+#ifdef PC98
+ u_char prev_val;
+#endif
+} BMP_INFO;
+
+static BMP_INFO bmp_info;
+
+/*
+** bmp_SetPix
+**
+** Given (info), set the pixel at (x),(y) to (val)
+**
+*/
+static void
+bmp_SetPix(BMP_INFO *info, int x, int y, u_char val)
+{
+ int sofs, bofs;
+ int newbank;
+
+ /*
+ * range check to avoid explosions
+ */
+ if ((x < 0) || (x >= info->swidth) || (y < 0) || (y >= info->sheight))
+ return;
+
+ /*
+ * calculate offset into video memory;
+ * because 0,0 is bottom-left for DIB, we have to convert.
+ */
+ sofs = ((info->height - (y+1) + (info->sheight - info->height) / 2)
+ * info->adp->va_line_width);
+ x += (info->swidth - info->width) / 2;
+
+ switch(info->sdepth) {
+#ifdef PC98
+ case 4:
+ sofs += (x >> 3);
+ bofs = x & 0x7; /* offset within byte */
+
+ outb(0x7c, 0x80 | 0x40); /* GRCG on & RMW mode */
+ if (val != info->prev_val) {
+ outb(0x7e, (val & 1) ? 0xff : 0); /* tile B */
+ outb(0x7e, (val & 2) ? 0xff : 0); /* tile R */
+ outb(0x7e, (val & 4) ? 0xff : 0); /* tile G */
+ outb(0x7e, (val & 8) ? 0xff : 0); /* tile I */
+
+ info->prev_val = val;
+ }
+
+ *(info->vidmem+sofs) = (0x80 >> bofs); /* write new bit */
+ outb(0x7c, 0); /* GRCG off */
+ break;
+#else
+ case 4:
+ case 1:
+ /* EGA/VGA planar modes */
+ sofs += (x >> 3);
+ newbank = sofs/info->adp->va_window_size;
+ if (info->bank != newbank) {
+ (*vidsw[info->adp->va_index]->set_win_org)(info->adp, newbank*info->adp->va_window_size);
+ info->bank = newbank;
+ }
+ sofs %= info->adp->va_window_size;
+ bofs = x & 0x7; /* offset within byte */
+ outw(GDCIDX, (0x8000 >> bofs) | 0x08); /* bit mask */
+ outw(GDCIDX, (val << 8) | 0x00); /* set/reset */
+ *(info->vidmem + sofs) ^= 0xff; /* read-modify-write */
+ break;
+#endif
+
+ case 8:
+ sofs += x;
+ newbank = sofs/info->adp->va_window_size;
+ if (info->bank != newbank) {
+ (*vidsw[info->adp->va_index]->set_win_org)(info->adp, newbank*info->adp->va_window_size);
+ info->bank = newbank;
+ }
+ sofs %= info->adp->va_window_size;
+ *(info->vidmem+sofs) = val;
+ break;
+ }
+}
+
+/*
+** bmp_DecodeRLE4
+**
+** Given (data) pointing to a line of RLE4-format data and (line) being the starting
+** line onscreen, decode the line.
+*/
+static void
+bmp_DecodeRLE4(BMP_INFO *info, int line)
+{
+ int count; /* run count */
+ u_char val;
+ int x,y; /* screen position */
+
+ x = 0; /* starting position */
+ y = line;
+
+ /* loop reading data */
+ for (;;) {
+ /*
+ * encoded mode starts with a run length, and then a byte with
+ * two colour indexes to alternate between for the run
+ */
+ if (*info->index) {
+ for (count = 0; count < *info->index; count++, x++) {
+ if (count & 1) { /* odd count, low nybble */
+ bmp_SetPix(info, x, y, *(info->index+1) & 0x0f);
+ } else { /* even count, high nybble */
+ bmp_SetPix(info, x, y, (*(info->index+1) >>4) & 0x0f);
+ }
+ }
+ info->index += 2;
+ /*
+ * A leading zero is an escape; it may signal the end of the
+ * bitmap, a cursor move, or some absolute data.
+ */
+ } else { /* zero tag may be absolute mode or an escape */
+ switch (*(info->index+1)) {
+ case 0: /* end of line */
+ info->index += 2;
+ return;
+ case 1: /* end of bitmap */
+ info->index = NULL;
+ return;
+ case 2: /* move */
+ x += *(info->index + 2); /* new coords */
+ y += *(info->index + 3);
+ info->index += 4;
+ break;
+ default: /* literal bitmap data */
+ for (count = 0; count < *(info->index + 1); count++, x++) {
+ val = *(info->index + 2 + (count / 2)); /* byte with nybbles */
+ if (count & 1) {
+ val &= 0xf; /* get low nybble */
+ } else {
+ val = (val >> 4); /* get high nybble */
+ }
+ bmp_SetPix(info, x, y, val);
+ }
+ /* warning, this depends on integer truncation, do not hand-optimise! */
+ info->index += 2 + ((count + 3) / 4) * 2;
+ break;
+ }
+ }
+ }
+}
+
+/*
+** bmp_DecodeRLE8
+** Given (data) pointing to a line of RLE8-format data and (line) being the starting
+** line onscreen, decode the line.
+*/
+static void
+bmp_DecodeRLE8(BMP_INFO *info, int line)
+{
+ int count; /* run count */
+ int x,y; /* screen position */
+
+ x = 0; /* starting position */
+ y = line;
+
+ /* loop reading data */
+ for(;;) {
+ /*
+ * encoded mode starts with a run length, and then a byte with
+ * two colour indexes to alternate between for the run
+ */
+ if (*info->index) {
+ for (count = 0; count < *info->index; count++, x++)
+ bmp_SetPix(info, x, y, *(info->index+1));
+ info->index += 2;
+ /*
+ * A leading zero is an escape; it may signal the end of the
+ * bitmap, a cursor move, or some absolute data.
+ */
+ } else { /* zero tag may be absolute mode or an escape */
+ switch(*(info->index+1)) {
+ case 0: /* end of line */
+ info->index += 2;
+ return;
+ case 1: /* end of bitmap */
+ info->index = NULL;
+ return;
+ case 2: /* move */
+ x += *(info->index + 2); /* new coords */
+ y += *(info->index + 3);
+ info->index += 4;
+ break;
+ default: /* literal bitmap data */
+ for (count = 0; count < *(info->index + 1); count++, x++)
+ bmp_SetPix(info, x, y, *(info->index + 2 + count));
+ /* must be an even count */
+ info->index += 2 + count + (count & 1);
+ break;
+ }
+ }
+ }
+}
+
+/*
+** bmp_DecodeLine
+**
+** Given (info) pointing to an image being decoded, (line) being the line currently
+** being displayed, decode a line of data.
+*/
+static void
+bmp_DecodeLine(BMP_INFO *info, int line)
+{
+ int x;
+ u_char val, mask, *p;
+
+ switch(info->format) {
+ case BI_RGB:
+ switch(info->depth) {
+ case 8:
+ for (x = 0; x < info->width; x++, info->index++)
+ bmp_SetPix(info, x, line, *info->index);
+ info->index += 3 - (--x % 4);
+ break;
+ case 4:
+ p = info->index;
+ for (x = 0; x < info->width; x++) {
+ if (x & 1) {
+ val = *p & 0xf; /* get low nybble */
+ p++;
+ } else {
+ val = *p >> 4; /* get high nybble */
+ }
+ bmp_SetPix(info, x, line, val);
+ }
+ /* warning, this depends on integer truncation, do not hand-optimise! */
+ info->index += ((x + 7) / 8) * 4;
+ break;
+ case 1:
+ p = info->index;
+ mask = 0x80;
+ for (x = 0; x < info->width; x++) {
+ val = (*p & mask) ? 1 : 0;
+ mask >>= 1;
+ if (mask == 0) {
+ mask = 0x80;
+ p++;
+ }
+ bmp_SetPix(info, x, line, val);
+ }
+ /* warning, this depends on integer truncation, do not hand-optimise! */
+ info->index += ((x + 31) / 32) * 4;
+ break;
+ }
+ break;
+ case BI_RLE4:
+ bmp_DecodeRLE4(info, line);
+ break;
+ case BI_RLE8:
+ bmp_DecodeRLE8(info, line);
+ break;
+ }
+}
+
+/*
+** bmp_Init
+**
+** Given a pointer (data) to the image of a BMP file, fill in bmp_info with what
+** can be learnt from it. Return nonzero if the file isn't usable.
+**
+** Take screen dimensions (swidth), (sheight) and (sdepth) and make sure we
+** can work with these.
+*/
+static int
+bmp_Init(const char *data, int swidth, int sheight, int sdepth)
+{
+ BITMAPF *bmf = (BITMAPF *)data;
+ int pind;
+
+ bmp_info.data = NULL; /* assume setup failed */
+
+ /* check file ID */
+ if (bmf->bmfh.bfType != 0x4d42) {
+ printf("splash_bmp: not a BMP file\n");
+ return(1); /* XXX check word ordering for big-endian ports? */
+ }
+
+ /* do we understand this bitmap format? */
+ if (bmf->bmfi.bmiHeader.biSize > sizeof(bmf->bmfi.bmiHeader)) {
+ printf("splash_bmp: unsupported BMP format (size=%d)\n",
+ bmf->bmfi.bmiHeader.biSize);
+ return(1);
+ }
+
+ /* save what we know about the screen */
+ bmp_info.swidth = swidth;
+ bmp_info.sheight = sheight;
+ bmp_info.sdepth = sdepth;
+
+ /* where's the data? */
+ bmp_info.data = (u_char *)data + bmf->bmfh.bfOffBits;
+
+ /* image parameters */
+ bmp_info.width = bmf->bmfi.bmiHeader.biWidth;
+ bmp_info.height = bmf->bmfi.bmiHeader.biHeight;
+ bmp_info.depth = bmf->bmfi.bmiHeader.biBitCount;
+ bmp_info.format = bmf->bmfi.bmiHeader.biCompression;
+
+ switch(bmp_info.format) { /* check compression format */
+ case BI_RGB:
+ case BI_RLE4:
+ case BI_RLE8:
+ break;
+ default:
+ printf("splash_bmp: unsupported compression format\n");
+ return(1); /* unsupported compression format */
+ }
+
+ /* palette details */
+ bmp_info.ncols = (bmf->bmfi.bmiHeader.biClrUsed);
+ bzero(bmp_info.palette,sizeof(bmp_info.palette));
+ if (bmp_info.ncols == 0) { /* uses all of them */
+ bmp_info.ncols = 1 << bmf->bmfi.bmiHeader.biBitCount;
+ }
+ if ((bmp_info.height > bmp_info.sheight) ||
+ (bmp_info.width > bmp_info.swidth) ||
+ (bmp_info.ncols > (1 << sdepth))) {
+ if (bootverbose)
+ printf("splash_bmp: beyond screen capacity (%dx%d, %d colors)\n",
+ bmp_info.width, bmp_info.height, bmp_info.ncols);
+ return(1);
+ }
+
+ /* read palette */
+ for (pind = 0; pind < bmp_info.ncols; pind++) {
+ bmp_info.palette[pind][0] = bmf->bmfi.bmiColors[pind].rgbRed;
+ bmp_info.palette[pind][1] = bmf->bmfi.bmiColors[pind].rgbGreen;
+ bmp_info.palette[pind][2] = bmf->bmfi.bmiColors[pind].rgbBlue;
+ }
+ return(0);
+}
+
+/*
+** bmp_Draw
+**
+** Render the image. Return nonzero if that's not possible.
+**
+*/
+static int
+bmp_Draw(video_adapter_t *adp)
+{
+ int line;
+ int i;
+
+ if (bmp_info.data == NULL) { /* init failed, do nothing */
+ return(1);
+ }
+
+ /* clear the screen */
+ bmp_info.vidmem = (u_char *)adp->va_window;
+ bmp_info.adp = adp;
+ (*vidsw[adp->va_index]->clear)(adp);
+ (*vidsw[adp->va_index]->set_win_org)(adp, 0);
+ bmp_info.bank = 0;
+
+ /* initialise the info structure for drawing */
+ bmp_info.index = bmp_info.data;
+#ifdef PC98
+ bmp_info.prev_val = 255;
+#endif
+
+ /* set the palette for our image */
+ (*vidsw[adp->va_index]->load_palette)(adp, (u_char *)&bmp_info.palette);
+
+#if 0
+#ifndef PC98
+ /* XXX: this is ugly, but necessary for EGA/VGA 1bpp/4bpp modes */
+ if ((adp->va_type == KD_EGA) || (adp->va_type == KD_VGA)) {
+ inb(adp->va_crtc_addr + 6); /* reset flip-flop */
+ outb(ATC, 0x14);
+ outb(ATC, 0);
+ for (i = 0; i < 16; ++i) {
+ outb(ATC, i);
+ outb(ATC, i);
+ }
+ inb(adp->va_crtc_addr + 6); /* reset flip-flop */
+ outb(ATC, 0x20); /* enable palette */
+
+ outw(GDCIDX, 0x0f01); /* set/reset enable */
+
+ if (bmp_info.sdepth == 1)
+ outw(TSIDX, 0x0102); /* unmask plane #0 */
+ }
+#endif
+#endif
+
+ for (line = 0; (line < bmp_info.height) && bmp_info.index; line++) {
+ bmp_DecodeLine(&bmp_info, line);
+ }
+ return(0);
+}
diff --git a/sys/modules/splash/pcx/Makefile b/sys/modules/splash/pcx/Makefile
new file mode 100644
index 000000000000..a64a61864db2
--- /dev/null
+++ b/sys/modules/splash/pcx/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+KMOD= splash_pcx
+SRCS= splash_pcx.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/splash/pcx/splash_pcx.c b/sys/modules/splash/pcx/splash_pcx.c
new file mode 100644
index 000000000000..544e8c795785
--- /dev/null
+++ b/sys/modules/splash/pcx/splash_pcx.c
@@ -0,0 +1,261 @@
+/*-
+ * Copyright (c) 1999 Michael Smith <msmith@freebsd.org>
+ * Copyright (c) 1999 Kazutaka YOKOTA <yokota@freebsd.org>
+ * Copyright (c) 1999 Dag-Erling Coïdan Smørgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/linker.h>
+#include <sys/fbio.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+
+#define FADE_TIMEOUT 300 /* sec */
+
+static int splash_mode = -1;
+static int splash_on = FALSE;
+
+static int pcx_start(video_adapter_t *adp);
+static int pcx_end(video_adapter_t *adp);
+static int pcx_splash(video_adapter_t *adp, int on);
+static int pcx_init(const char *data, int sdepth);
+static int pcx_draw(video_adapter_t *adp);
+
+static splash_decoder_t pcx_decoder = {
+ "splash_pcx", pcx_start, pcx_end, pcx_splash, SPLASH_IMAGE,
+};
+
+SPLASH_DECODER(splash_pcx, pcx_decoder);
+
+static struct
+{
+ int width, height, bpsl;
+ int bpp, planes, zlen;
+ const u_char *zdata, *palette;
+} pcx_info;
+
+static int
+pcx_start(video_adapter_t *adp)
+{
+ static int modes[] = {
+ M_VGA_CG320,
+ M_VESA_CG640x480,
+ M_VESA_CG800x600,
+ M_VESA_CG1024x768,
+ -1,
+ };
+ video_info_t info;
+ int i;
+
+ if (pcx_decoder.data == NULL
+ || pcx_decoder.data_size <= 0
+ || pcx_init((u_char *)pcx_decoder.data, pcx_decoder.data_size))
+ return ENODEV;
+
+ if (bootverbose)
+ printf("splash_pcx: image good:\n"
+ " width = %d\n"
+ " height = %d\n"
+ " depth = %d\n"
+ " planes = %d\n",
+ pcx_info.width, pcx_info.height,
+ pcx_info.bpp, pcx_info.planes);
+
+ for (i = 0; modes[i] >= 0; ++i) {
+ if (get_mode_info(adp, modes[i], &info) != 0)
+ continue;
+ if (bootverbose)
+ printf("splash_pcx: considering mode %d:\n"
+ " vi_width = %d\n"
+ " vi_height = %d\n"
+ " vi_depth = %d\n"
+ " vi_planes = %d\n",
+ modes[i],
+ info.vi_width, info.vi_height,
+ info.vi_depth, info.vi_planes);
+ if (info.vi_width >= pcx_info.width
+ && info.vi_height >= pcx_info.height
+ && info.vi_depth == pcx_info.bpp
+ && info.vi_planes == pcx_info.planes)
+ break;
+ }
+
+ splash_mode = modes[i];
+ if (splash_mode == -1)
+ return ENODEV;
+ if (bootverbose)
+ printf("pcx_splash: selecting mode %d\n", splash_mode);
+ return 0;
+}
+
+static int
+pcx_end(video_adapter_t *adp)
+{
+ /* nothing to do */
+ return 0;
+}
+
+static int
+pcx_splash(video_adapter_t *adp, int on)
+{
+ if (on) {
+ if (!splash_on) {
+ if (set_video_mode(adp, splash_mode) || pcx_draw(adp))
+ return 1;
+ splash_on = TRUE;
+ }
+ return 0;
+ } else {
+ splash_on = FALSE;
+ return 0;
+ }
+}
+
+struct pcxheader {
+ u_char manufactor;
+ u_char version;
+ u_char encoding;
+ u_char bpp;
+ u_short xmin, ymin, xmax, ymax;
+ u_short hres, vres;
+ u_char colormap[48];
+ u_char rsvd;
+ u_char nplanes;
+ u_short bpsl;
+ u_short palinfo;
+ u_short hsize, vsize;
+};
+
+#define MAXSCANLINE 1024
+
+static int
+pcx_init(const char *data, int size)
+{
+ const struct pcxheader *hdr;
+
+ hdr = (const struct pcxheader *)data;
+
+ if (size < 128 + 1 + 1 + 768
+ || hdr->manufactor != 10
+ || hdr->version != 5
+ || hdr->encoding != 1
+ || hdr->nplanes != 1
+ || hdr->bpp != 8
+ || hdr->bpsl > MAXSCANLINE
+ || data[size-769] != 12) {
+ printf("splash_pcx: invalid PCX image\n");
+ return 1;
+ }
+ pcx_info.width = hdr->xmax - hdr->xmin + 1;
+ pcx_info.height = hdr->ymax - hdr->ymin + 1;
+ pcx_info.bpsl = hdr->bpsl;
+ pcx_info.bpp = hdr->bpp;
+ pcx_info.planes = hdr->nplanes;
+ pcx_info.zlen = size - (128 + 1 + 768);
+ pcx_info.zdata = data + 128;
+ pcx_info.palette = data + size - 768;
+ return 0;
+}
+
+static int
+pcx_draw(video_adapter_t *adp)
+{
+ u_char *vidmem;
+ int swidth, sheight, sbpsl, sdepth, splanes;
+ int banksize, origin;
+ int c, i, j, pos, scan, x, y;
+ u_char line[MAXSCANLINE];
+
+ if (pcx_info.zlen < 1)
+ return 1;
+
+ load_palette(adp, pcx_info.palette);
+
+ vidmem = (u_char *)adp->va_window;
+ swidth = adp->va_info.vi_width;
+ sheight = adp->va_info.vi_height;
+ sbpsl = adp->va_line_width;
+ sdepth = adp->va_info.vi_depth;
+ splanes = adp->va_info.vi_planes;
+ banksize = adp->va_window_size;
+
+ for (origin = 0; origin < sheight*sbpsl; origin += banksize) {
+ set_origin(adp, origin);
+ bzero(vidmem, banksize);
+ }
+
+ x = (swidth - pcx_info.width) / 2;
+ y = (sheight - pcx_info.height) / 2;
+ origin = 0;
+ pos = y * sbpsl + x;
+ while (pos > banksize) {
+ pos -= banksize;
+ origin += banksize;
+ }
+ set_origin(adp, origin);
+
+ for (scan = i = 0; scan < pcx_info.height; ++scan, ++y, pos += sbpsl) {
+ for (j = 0; j < pcx_info.bpsl && i < pcx_info.zlen; ++i) {
+ if ((pcx_info.zdata[i] & 0xc0) == 0xc0) {
+ c = pcx_info.zdata[i++] & 0x3f;
+ if (i >= pcx_info.zlen)
+ return 1;
+ } else {
+ c = 1;
+ }
+ if (j + c > pcx_info.bpsl)
+ return 1;
+ while (c--)
+ line[j++] = pcx_info.zdata[i];
+ }
+
+ if (pos > banksize) {
+ origin += banksize;
+ pos -= banksize;
+ set_origin(adp, origin);
+ }
+
+ if (pos + pcx_info.width > banksize) {
+ /* scanline crosses bank boundary */
+ j = banksize - pos;
+ bcopy(line, vidmem + pos, j);
+ origin += banksize;
+ pos -= banksize;
+ set_origin(adp, origin);
+ bcopy(line + j, vidmem, pcx_info.width - j);
+ } else {
+ bcopy(line, vidmem + pos, pcx_info.width);
+ }
+ }
+
+ return 0;
+}
diff --git a/sys/modules/sppp/Makefile b/sys/modules/sppp/Makefile
new file mode 100644
index 000000000000..7353089d0b8b
--- /dev/null
+++ b/sys/modules/sppp/Makefile
@@ -0,0 +1,27 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../net
+
+KMOD= sppp
+SRCS= if_spppsubr.c slcompress.c
+SRCS+= opt_inet.h opt_inet6.h opt_ipx.h
+
+EXPORT_SYMS= sppp_attach \
+ sppp_detach \
+ sppp_input \
+ sppp_ioctl \
+ sppp_dequeue \
+ sppp_pick \
+ sppp_isempty \
+ sppp_flush
+
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+opt_inet6.h:
+ echo "#define INET6 1" > opt_inet6.h
+
+opt_ipx.h:
+ echo "#define IPX 1" > opt_ipx.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/sr/Makefile b/sys/modules/sr/Makefile
new file mode 100644
index 000000000000..7b173ab26ad1
--- /dev/null
+++ b/sys/modules/sr/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/sr
+KMOD = if_sr
+SRCS = if_sr.c if_sr_isa.c if_sr_pci.c
+SRCS += device_if.h bus_if.h pci_if.h isa_if.h opt_netgraph.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ste/Makefile b/sys/modules/ste/Makefile
new file mode 100644
index 000000000000..85459deef0de
--- /dev/null
+++ b/sys/modules/ste/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_ste
+SRCS = if_ste.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/stg/Makefile b/sys/modules/stg/Makefile
new file mode 100644
index 000000000000..9313b73a3bbb
--- /dev/null
+++ b/sys/modules/stg/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/stg
+
+KMOD= stg
+SRCS= tmc18c30.c tmc18c30_isa.c tmc18c30_pccard.c
+SRCS+= opt_bdg.h device_if.h bus_if.h pci_if.h isa_if.h card_if.h
+SRCS+= opt_cam.h opt_scsi.h opt_ddb.h
+KMODDEPS= scsi_low
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/streams/Makefile b/sys/modules/streams/Makefile
new file mode 100644
index 000000000000..04ed90597d68
--- /dev/null
+++ b/sys/modules/streams/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+MAINTAINER = newton@atdot.dotat.org
+.if defined(DEBUG)
+CFLAGS+= -DDEBUG_SVR4
+.endif
+
+.PATH: ${.CURDIR}/../../dev/streams
+KMOD= streams
+SRCS= streams.c opt_streams.h
+
+NOMAN=
+
+CFLAGS+= -O
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/svr4/Makefile b/sys/modules/svr4/Makefile
new file mode 100644
index 000000000000..c164d9417b62
--- /dev/null
+++ b/sys/modules/svr4/Makefile
@@ -0,0 +1,44 @@
+# $FreeBSD$
+
+MAINTAINER= newton@FreeBSD.org
+
+.PATH: ${.CURDIR}/../../${MACHINE_ARCH}/svr4 ${.CURDIR}/../../svr4
+KMOD= svr4
+SRCS= svr4_sysent.c svr4_sysvec.c opt_compat.h opt_svr4.h opt_vmpage.h \
+ vnode_if.h imgact_svr4.c svr4_signal.c svr4_fcntl.c svr4_misc.c \
+ svr4_ioctl.c svr4_stat.c svr4_filio.c svr4_ttold.c svr4_termios.c \
+ svr4_stream.c svr4_socket.c svr4_sockio.c svr4_machdep.c \
+ svr4_resource.c svr4_ipc.c
+OBJS= svr4_locore.o
+MAN= svr4.8
+
+EXPORT_SYMS=_svr4_mod
+CLEANFILES= svr4_assym.h svr4_genassym.o
+
+svr4_assym.h: svr4_genassym.o
+.if exists(@)
+svr4_assym.h: @/kern/genassym.sh
+.endif
+ sh @/kern/genassym.sh svr4_genassym.o > ${.TARGET}
+
+svr4_locore.o: svr4_locore.s svr4_assym.h
+ ${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
+ ${.IMPSRC} -o ${.TARGET}
+
+svr4_genassym.o: svr4_genassym.c svr4.h @ machine
+ ${CC} -c ${CFLAGS} ${.IMPSRC}
+
+opt_compat.h:
+ echo "#define COMPAT_43 1" > opt_compat.h
+
+opt_svr4.h:
+ touch opt_svr4.h
+.if defined(DEBUG)
+ echo "#define DEBUG_SVR4 1" >> opt_svr4.h
+.endif
+
+afterinstall:
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/svr4.sh ${DESTDIR}/usr/sbin/svr4
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/svr4/README b/sys/modules/svr4/README
new file mode 100644
index 000000000000..0578721e3639
--- /dev/null
+++ b/sys/modules/svr4/README
@@ -0,0 +1,38 @@
+This is a SysVR4 emulator derived from work done as part of the NetBSD
+Project by Christos Zoulas. It has been ported to FreeBSD by Mark Newton.
+
+To use it:
+
+1. Choose one of:
+ a. Add "pseudo-device streams" to your kernel config file and rebuild,
+ reboot; or
+ b. Build and install the streams module in /sys/modules/streams
+
+2. Build and install the svr4 module in /sys/modules/svr4
+
+3. Type "svr4" to start it up.
+
+4. Grab compat_sol26.tar.gz or compat_svr4.tar.gz from
+ http://www.freebsd.org/~newton/freebsd-svr4 and install them in
+ /compat/svr4
+
+5. Run "sh SVR4_MAKEDEV all" in /compat/svr4/dev
+
+6. Mount a Solaris/x86 v2.6 or v7 CD-ROM on /cdrom (also works with
+ v2.4 and v2.5.1, but you need different symlinks in /compat/svr4)
+
+7. Brand any executables you want to run, and/or set the
+ kern.fallback_elf_brand sysctl to 'SVR4' to establish this as the
+ default emulator for unbranded executables.
+
+8. See if your SysVR4 programs work.
+
+It's early days yet, folks -- You'll probably have trouble getting 100%
+functionality out of most things (specifically, poll() on a socket doesn't
+look like it works at the moment, so Netscape doesn't work (among other
+things)). Patches will be appreciated (use send-pr).
+
+ - Mark Newton
+ newton@atdot.dotat.org
+
+$FreeBSD$
diff --git a/sys/modules/svr4/TO-DO b/sys/modules/svr4/TO-DO
new file mode 100644
index 000000000000..078b80d8943a
--- /dev/null
+++ b/sys/modules/svr4/TO-DO
@@ -0,0 +1,15 @@
+TO-DO list
+----------
+
+ * svr4_getdents64() doesn't work properly in 'large' directories.
+
+ * signals are still suspect
+
+ * networking is notworking
+
+ * VM86 and USER_LDT are currently disabled (low-priority)
+
+ * Make SysV emulator use SysV shared memory support (duh)
+
+
+$FreeBSD$
diff --git a/sys/modules/svr4/svr4.8 b/sys/modules/svr4/svr4.8
new file mode 100644
index 000000000000..f3b28e62cde9
--- /dev/null
+++ b/sys/modules/svr4/svr4.8
@@ -0,0 +1,52 @@
+.\"
+.\" Copyright (c) 2000, Alexey Zelkin
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 10, 2000
+.Dt SVR4 8
+.Os
+.Sh NAME
+.Nm svr4
+.Nd load the SystemV emulator module
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+utility loads the SystemV emulator module.
+.Sh FILES
+.Bl -tag -width /modules/svr4.ko
+.It Pa /modules/svr4.ko
+SystemV emulator loadable kernel module.
+.El
+.Sh SEE ALSO
+.Xr kld 4 ,
+.Xr kldload 8 ,
+.Xr kldstat 8 ,
+.Xr kldunload 8
diff --git a/sys/modules/svr4/svr4.sh b/sys/modules/svr4/svr4.sh
new file mode 100644
index 000000000000..4cb76777fdec
--- /dev/null
+++ b/sys/modules/svr4/svr4.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+STREAMS=`kldstat -v | egrep 'streams'`
+SVR4=`kldstat -v | egrep 'svr4elf'`
+
+if [ "x$SVR4" != x ] ; then
+ echo SysVR4 driver already loaded
+ exit 1
+else
+ if [ "x$STREAMS" = x ] ; then
+ kldload streams
+ echo "Loaded SysVR4 STREAMS driver"
+ fi
+ kldload svr4
+ echo "Loaded SysVR4 emulator"
+fi
diff --git a/sys/modules/syscons/Makefile b/sys/modules/syscons/Makefile
new file mode 100644
index 000000000000..7e2f2c5d559f
--- /dev/null
+++ b/sys/modules/syscons/Makefile
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+SUBDIR =
+SUBDIR += blank
+SUBDIR += daemon
+SUBDIR += dragon
+SUBDIR += fade
+SUBDIR += fire
+SUBDIR += green
+SUBDIR += logo
+SUBDIR += rain
+SUBDIR += snake
+SUBDIR += star
+SUBDIR += warp
+
+.if ${MACHINE_ARCH} == "i386"
+SUBDIR += apm
+.endif
+
+.include <bsd.subdir.mk>
diff --git a/sys/modules/syscons/Makefile.inc b/sys/modules/syscons/Makefile.inc
new file mode 100644
index 000000000000..265f86d1ed55
--- /dev/null
+++ b/sys/modules/syscons/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/sys/modules/syscons/apm/Makefile b/sys/modules/syscons/apm/Makefile
new file mode 100644
index 000000000000..00a889f90e97
--- /dev/null
+++ b/sys/modules/syscons/apm/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= apm_saver
+SRCS= apm_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/apm/apm_saver.c b/sys/modules/syscons/apm/apm_saver.c
new file mode 100644
index 000000000000..c0c248001ecc
--- /dev/null
+++ b/sys/modules/syscons/apm/apm_saver.c
@@ -0,0 +1,92 @@
+/*-
+ * Copyright (c) 1999 Nick Sayer (who stole shamelessly from blank_saver)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification, immediately at the beginning of the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+#include <sys/select.h>
+#include <machine/apm_bios.h>
+#include <machine/pc/bios.h>
+#ifdef PC98
+#include <machine/bus.h>
+#include <pc98/apm/apm.h>
+#else
+#include <i386/apm/apm.h>
+#endif
+
+extern int apm_display __P((int newstate));
+
+extern struct apm_softc apm_softc;
+
+static int blanked=0;
+
+static int
+apm_saver(video_adapter_t *adp, int blank)
+{
+ if (!apm_softc.initialized || !apm_softc.active)
+ return 0;
+
+ if (blank==blanked)
+ return 0;
+
+ blanked=blank;
+
+ apm_display(!blanked);
+
+ return 0;
+}
+
+static int
+apm_init(video_adapter_t *adp)
+{
+ if (!apm_softc.initialized || !apm_softc.active)
+ printf("WARNING: apm_saver module requires apm enabled\n");
+ return 0;
+}
+
+static int
+apm_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t apm_module = {
+ "apm_saver", apm_init, apm_term, apm_saver, NULL,
+};
+
+SAVER_MODULE(apm_saver, apm_module);
diff --git a/sys/modules/syscons/blank/Makefile b/sys/modules/syscons/blank/Makefile
new file mode 100644
index 000000000000..e299c924f7a9
--- /dev/null
+++ b/sys/modules/syscons/blank/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= blank_saver
+SRCS= blank_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/blank/blank_saver.c b/sys/modules/syscons/blank/blank_saver.c
new file mode 100644
index 000000000000..960acca5a512
--- /dev/null
+++ b/sys/modules/syscons/blank/blank_saver.c
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (c) 1995-1998 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification, immediately at the beginning of the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+static int
+blank_saver(video_adapter_t *adp, int blank)
+{
+ (*vidsw[adp->va_index]->blank_display)(adp,
+ (blank) ? V_DISPLAY_BLANK
+ : V_DISPLAY_ON);
+ return 0;
+}
+
+static int
+blank_init(video_adapter_t *adp)
+{
+ if ((*vidsw[adp->va_index]->blank_display)(adp, V_DISPLAY_ON) == 0)
+ return 0;
+ return ENODEV;
+}
+
+static int
+blank_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t blank_module = {
+ "blank_saver", blank_init, blank_term, blank_saver, NULL,
+};
+
+SAVER_MODULE(blank_saver, blank_module);
diff --git a/sys/modules/syscons/daemon/Makefile b/sys/modules/syscons/daemon/Makefile
new file mode 100644
index 000000000000..ea3407784191
--- /dev/null
+++ b/sys/modules/syscons/daemon/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= daemon_saver
+SRCS= daemon_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/daemon/daemon_saver.c b/sys/modules/syscons/daemon/daemon_saver.c
new file mode 100644
index 000000000000..3cd58305cde5
--- /dev/null
+++ b/sys/modules/syscons/daemon/daemon_saver.c
@@ -0,0 +1,403 @@
+/*-
+ * Copyright (c) 1997 Sandro Sigala, Brescia, Italy.
+ * Copyright (c) 1997 Chris Shenton
+ * Copyright (c) 1995 S ren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/module.h>
+#include <sys/malloc.h>
+#include <sys/kernel.h>
+#include <sys/sysctl.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <machine/pc/display.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+#ifdef PC98
+#include <pc98/pc98/pc98_machdep.h>
+#endif
+
+#define DAEMON_MAX_WIDTH 32
+#define DAEMON_MAX_HEIGHT 19
+
+static u_char *message;
+static int messagelen;
+static int blanked;
+
+/* Who is the author of this ASCII pic? */
+
+static u_char *daemon_pic[] = {
+ " , ,",
+ " /( )`",
+ " \\ \\___ / |",
+ " /- _ `-/ '",
+ " (/\\/ \\ \\ /\\",
+ " / / | ` \\",
+ " O O ) / |",
+ " `-^--'`< '",
+ " (_.) _ ) /",
+ " `.___/` /",
+ " `-----' /",
+ "<----. __ / __ \\",
+ "<----|====O)))==) \\) /====",
+ "<----' `--' `.__,' \\",
+ " | |",
+ " \\ / /\\",
+ " ______( (_ / \\______/",
+ " ,' ,-----' |",
+ " `--{__________)",
+ NULL
+};
+
+static u_char *daemon_attr[] = {
+ " R R",
+ " RR RR",
+ " R RRRR R R",
+ " RR W RRR R",
+ " RWWW W R RR",
+ " W W W R R",
+ " B B W R R",
+ " WWWWWWRR R",
+ " RRRR R R R",
+ " RRRRRRR R",
+ " RRRRRRR R",
+ "YYYYYY RR R RR R",
+ "YYYYYYYYYYRRRRYYR RR RYYYY",
+ "YYYYYY RRRR RRRRRR R",
+ " R R",
+ " R R RR",
+ " CCCCCCR RR R RRRRRRRR",
+ " CC CCCCCCC C",
+ " CCCCCCCCCCCCCCC",
+ NULL
+};
+
+/*
+ * Reverse a graphics character, or return unaltered if no mirror;
+ * should do alphanumerics too, but I'm too lazy. <cshenton@it.hq.nasa.gov>
+ */
+
+static u_char
+xflip_symbol(u_char symbol)
+{
+ static const u_char lchars[] = "`'(){}[]\\/<>";
+ static const u_char rchars[] = "'`)(}{][/\\><";
+ int pos;
+
+ for (pos = 0; lchars[pos] != '\0'; pos++)
+ if (lchars[pos] == symbol)
+ return rchars[pos];
+
+ return symbol;
+}
+
+static void
+clear_daemon(sc_softc_t *sc, int xpos, int ypos, int dxdir, int xoff, int yoff,
+ int xlen, int ylen)
+{
+ int y;
+
+ if (xlen <= 0)
+ return;
+ for (y = yoff; y < ylen; y++) {
+ sc_vtb_erase(&sc->cur_scp->scr,
+ (ypos + y)*sc->cur_scp->xsize + xpos + xoff,
+ xlen - xoff,
+ sc->scr_map[0x20], (FG_LIGHTGREY | BG_BLACK) << 8);
+ }
+}
+
+static void
+draw_daemon(sc_softc_t *sc, int xpos, int ypos, int dxdir, int xoff, int yoff,
+ int xlen, int ylen)
+{
+ int x, y;
+ int px;
+ int attr;
+
+ for (y = yoff; y < ylen; y++) {
+ if (dxdir < 0)
+ px = xoff;
+ else
+ px = DAEMON_MAX_WIDTH - xlen;
+ if (px >= strlen(daemon_pic[y]))
+ continue;
+ for (x = xoff; (x < xlen) && (daemon_pic[y][px] != '\0'); x++, px++) {
+ switch (daemon_attr[y][px]) {
+#ifndef PC98
+ case 'R': attr = (FG_LIGHTRED|BG_BLACK)<<8; break;
+ case 'Y': attr = (FG_YELLOW|BG_BLACK)<<8; break;
+ case 'B': attr = (FG_LIGHTBLUE|BG_BLACK)<<8; break;
+ case 'W': attr = (FG_LIGHTGREY|BG_BLACK)<<8; break;
+ case 'C': attr = (FG_CYAN|BG_BLACK)<<8; break;
+ default: attr = (FG_WHITE|BG_BLACK)<<8; break;
+#else /* PC98 */
+ case 'R': attr = (FG_RED|BG_BLACK)<<8; break;
+ case 'Y': attr = (FG_BROWN|BG_BLACK)<<8; break;
+ case 'B': attr = (FG_BLUE|BG_BLACK)<<8; break;
+ case 'W': attr = (FG_LIGHTGREY|BG_BLACK)<<8; break;
+ case 'C': attr = (FG_CYAN|BG_BLACK)<<8; break;
+ default: attr = (FG_LIGHTGREY|BG_BLACK)<<8; break;
+#endif /* PC98 */
+ }
+ if (dxdir < 0) { /* Moving left */
+ sc_vtb_putc(&sc->cur_scp->scr,
+ (ypos + y)*sc->cur_scp->xsize
+ + xpos + x,
+ sc->scr_map[daemon_pic[y][px]],
+ attr);
+ } else { /* Moving right */
+ sc_vtb_putc(&sc->cur_scp->scr,
+ (ypos + y)*sc->cur_scp->xsize
+ + xpos + DAEMON_MAX_WIDTH
+ - px - 1,
+ sc->scr_map[xflip_symbol(daemon_pic[y][px])],
+ attr);
+ }
+ }
+ }
+}
+
+static void
+clear_string(sc_softc_t *sc, int xpos, int ypos, int xoff, char *s, int len)
+{
+ if (len <= 0)
+ return;
+ sc_vtb_erase(&sc->cur_scp->scr,
+ ypos*sc->cur_scp->xsize + xpos + xoff, len - xoff,
+ sc->scr_map[0x20], (FG_LIGHTGREY | BG_BLACK) << 8);
+}
+
+static void
+draw_string(sc_softc_t *sc, int xpos, int ypos, int xoff, u_char *s, int len)
+{
+ int x;
+
+ for (x = xoff; x < len; x++) {
+#ifdef PC98
+ sc_vtb_putc(&sc->cur_scp->scr,
+ ypos*sc->cur_scp->xsize + xpos + x,
+ sc->scr_map[s[x]], (FG_GREEN | BG_BLACK) << 8);
+#else
+ sc_vtb_putc(&sc->cur_scp->scr,
+ ypos*sc->cur_scp->xsize + xpos + x,
+ sc->scr_map[s[x]], (FG_LIGHTGREEN | BG_BLACK) << 8);
+#endif
+ }
+}
+
+static int
+daemon_saver(video_adapter_t *adp, int blank)
+{
+ static int txpos = 10, typos = 10;
+ static int txdir = -1, tydir = -1;
+ static int dxpos = 0, dypos = 0;
+ static int dxdir = 1, dydir = 1;
+ static int moved_daemon = 0;
+ static int xoff, yoff, toff;
+ static int xlen, ylen, tlen;
+ sc_softc_t *sc;
+ scr_stat *scp;
+ int min, max;
+
+ sc = sc_find_softc(adp, NULL);
+ if (sc == NULL)
+ return EAGAIN;
+ scp = sc->cur_scp;
+
+ if (blank) {
+ if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
+ return EAGAIN;
+ if (blanked == 0) {
+#ifdef PC98
+ if (epson_machine_id == 0x20) {
+ outb(0x43f, 0x42);
+ outb(0x0c17, inb(0xc17) & ~0x08);
+ outb(0x43f, 0x40);
+ }
+#endif /* PC98 */
+ /* clear the screen and set the border color */
+ sc_vtb_clear(&scp->scr, sc->scr_map[0x20],
+ (FG_LIGHTGREY | BG_BLACK) << 8);
+ (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1);
+ sc_set_border(scp, 0);
+ xlen = ylen = tlen = 0;
+ }
+ if (blanked++ < 2)
+ return 0;
+ blanked = 1;
+
+ clear_daemon(sc, dxpos, dypos, dxdir, xoff, yoff, xlen, ylen);
+ clear_string(sc, txpos, typos, toff, message, tlen);
+
+ if (++moved_daemon) {
+ /*
+ * The daemon picture may be off the screen, if
+ * screen size is chagened while the screen
+ * saver is inactive. Make sure the origin of
+ * the picture is between min and max.
+ */
+ if (scp->xsize <= DAEMON_MAX_WIDTH) {
+ /*
+ * If the screen width is too narrow, we
+ * allow part of the picture go off
+ * the screen so that the daemon won't
+ * flip too often.
+ */
+ min = scp->xsize - DAEMON_MAX_WIDTH - 10;
+ max = 10;
+ } else {
+ min = 0;
+ max = scp->xsize - DAEMON_MAX_WIDTH;
+ }
+ if (dxpos <= min) {
+ dxpos = min;
+ dxdir = 1;
+ } else if (dxpos >= max) {
+ dxpos = max;
+ dxdir = -1;
+ }
+
+ if (scp->ysize <= DAEMON_MAX_HEIGHT) {
+ min = scp->ysize - DAEMON_MAX_HEIGHT - 10;
+ max = 10;
+ } else {
+ min = 0;
+ max = scp->ysize - DAEMON_MAX_HEIGHT;
+ }
+ if (dypos <= min) {
+ dypos = min;
+ dydir = 1;
+ } else if (dypos >= max) {
+ dypos = max;
+ dydir = -1;
+ }
+
+ moved_daemon = -1;
+ dxpos += dxdir; dypos += dydir;
+
+ /* clip the picture */
+ xoff = 0;
+ xlen = DAEMON_MAX_WIDTH;
+ if (dxpos + xlen <= 0)
+ xlen = 0;
+ else if (dxpos < 0)
+ xoff = -dxpos;
+ if (dxpos >= scp->xsize)
+ xlen = 0;
+ else if (dxpos + xlen > scp->xsize)
+ xlen = scp->xsize - dxpos;
+ yoff = 0;
+ ylen = DAEMON_MAX_HEIGHT;
+ if (dypos + ylen <= 0)
+ ylen = 0;
+ else if (dypos < 0)
+ yoff = -dypos;
+ if (dypos >= scp->ysize)
+ ylen = 0;
+ else if (dypos + ylen > scp->ysize)
+ ylen = scp->ysize - dypos;
+ }
+
+ if (scp->xsize <= messagelen) {
+ min = scp->xsize - messagelen - 10;
+ max = 10;
+ } else {
+ min = 0;
+ max = scp->xsize - messagelen;
+ }
+ if (txpos <= min) {
+ txpos = min;
+ txdir = 1;
+ } else if (txpos >= max) {
+ txpos = max;
+ txdir = -1;
+ }
+ if (typos <= 0) {
+ typos = 0;
+ tydir = 1;
+ } else if (typos >= scp->ysize - 1) {
+ typos = scp->ysize - 1;
+ tydir = -1;
+ }
+ txpos += txdir; typos += tydir;
+
+ toff = 0;
+ tlen = messagelen;
+ if (txpos + tlen <= 0)
+ tlen = 0;
+ else if (txpos < 0)
+ toff = -txpos;
+ if (txpos >= scp->xsize)
+ tlen = 0;
+ else if (txpos + tlen > scp->xsize)
+ tlen = scp->xsize - txpos;
+
+ draw_daemon(sc, dxpos, dypos, dxdir, xoff, yoff, xlen, ylen);
+ draw_string(sc, txpos, typos, toff, message, tlen);
+ } else {
+#ifdef PC98
+ if (epson_machine_id == 0x20) {
+ outb(0x43f, 0x42);
+ outb(0x0c17, inb(0xc17) | 0x08);
+ outb(0x43f, 0x40);
+ }
+#endif /* PC98 */
+ blanked = 0;
+ }
+ return 0;
+}
+
+static int
+daemon_init(video_adapter_t *adp)
+{
+ messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 +
+ strlen(osrelease);
+ message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
+ sprintf(message, "%s - %s %s", hostname, ostype, osrelease);
+ blanked = 0;
+ return 0;
+}
+
+static int
+daemon_term(video_adapter_t *adp)
+{
+ free(message, M_DEVBUF);
+ return 0;
+}
+
+static scrn_saver_t daemon_module = {
+ "daemon_saver", daemon_init, daemon_term, daemon_saver, NULL,
+};
+
+SAVER_MODULE(daemon_saver, daemon_module);
diff --git a/sys/modules/syscons/dragon/Makefile b/sys/modules/syscons/dragon/Makefile
new file mode 100644
index 000000000000..349f9033f2ae
--- /dev/null
+++ b/sys/modules/syscons/dragon/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+KMOD= dragon_saver
+SRCS= dragon_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+CWARNFLAGS= -Wall -pedantic
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/dragon/dragon_saver.c b/sys/modules/syscons/dragon/dragon_saver.c
new file mode 100644
index 000000000000..f157e9c79d32
--- /dev/null
+++ b/sys/modules/syscons/dragon/dragon_saver.c
@@ -0,0 +1,275 @@
+/*-
+ * Copyright (c) 2000 Chiharu Shibata
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/syslog.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <sys/random.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+#define SAVER_NAME "dragon_saver"
+
+static u_char *vid;
+static int blanked;
+
+#ifdef PC98
+#define VIDEO_MODE M_PC98_EGC640x400
+#define VIDEO_MODE_NAME "M_PC98_EGC640x400"
+#define SCRW 640
+#define SCRH 400
+#else
+#define VIDEO_MODE M_VGA_CG320
+#define VIDEO_MODE_NAME "M_VGA_CG320"
+#define SCRW 320
+#define SCRH 200
+#endif
+#define ORDER 13
+#define CURVE 3
+#define OUT 100
+
+static int cur_x, cur_y;
+static int curve;
+static u_char dragon_pal[3*256]; /* zero-filled by the compiler */
+
+static __inline int
+gpset(int x, int y, int val)
+{
+ if (x < 0 || y < 0 || SCRW <= x || SCRH <= y) {
+ return 0;
+ }
+#ifdef PC98
+ vid[(x + y * SCRW) >> 3] = (0x80 >> (x & 7)); /* write new dot */
+#else
+ vid[x + y * SCRW] = val;
+#endif
+ return 1;
+}
+
+static int
+gdraw(int dx, int dy, int val)
+{
+ int i;
+ int set = 0;
+
+#ifdef PC98
+ outb(0x7c, 0xcc); /* GRCG on & RMW mode(disable planeI,G) */
+ outb(0x7e, (val & 1) ? 0xff: 0); /* tile B */
+ outb(0x7e, (val & 2) ? 0xff: 0); /* tile R */
+#endif
+ if (dx != 0) {
+ i = cur_x;
+ cur_x += dx;
+ if (dx < 0) {
+ i += dx;
+ dx = -dx;
+ }
+ /* horizontal line */
+ for (; dx >= 0; --dx, ++i) {
+ set |= gpset(i, cur_y, val);
+ }
+ }
+ else { /* dy != 0 */
+ i = cur_y;
+ cur_y += dy;
+ if (dy < 0) {
+ i += dy;
+ dy = -dy;
+ }
+ /* vertical line */
+ for (; dy >= 0; --dy, ++i) {
+ set |= gpset(cur_x, i, val);
+ }
+ }
+#ifdef PC98
+ outb(0x7c, 0); /* GRCG off */
+#endif
+ return set;
+}
+
+static void
+gcls(void)
+{
+#ifdef PC98
+ outb(0x7c, 0x80); /* GRCG on & TDW mode */
+ outb(0x7e, 0); /* tile B */
+ outb(0x7e, 0); /* tile R */
+ outb(0x7e, 0); /* tile G */
+ outb(0x7e, 0); /* tile I */
+
+ fillw(0, vid, 0x8000);
+
+ outb(0x7c, 0); /* GRCG off */
+#else
+ bzero(vid, SCRW*SCRH);
+#endif
+}
+
+static void
+dragon_update(video_adapter_t *adp)
+{
+ static int i, p, q;
+ static int order, mul, out;
+ static int org_x, org_y;
+ static int dx, dy;
+ static unsigned char fold[1 << (ORDER - 3)];
+#define GET_FOLD(x) (fold[(x) >> 3] & (1 << ((x) & 7)))
+#define SET_FOLD(x) (fold[(x) >> 3] |= (1 << ((x) & 7)))
+#define CLR_FOLD(x) (fold[(x) >> 3] &= ~(1 << ((x) & 7)))
+ int tmp;
+
+ if (curve > CURVE) {
+ gcls();
+
+ /* set palette of each curves */
+ for (tmp = 0; tmp < 3*CURVE; ++tmp) {
+ dragon_pal[3+tmp] = (u_char)random();
+ }
+ load_palette(adp, dragon_pal);
+
+ mul = ((random() & 7) + 1) * (SCRW / 320);
+ org_x = random() % SCRW; org_y = random() % SCRH;
+
+ curve = 0;
+ order = ORDER;
+ }
+
+ if (order >= ORDER) {
+ ++curve;
+
+ cur_x = org_x; cur_y = org_y;
+
+ switch (curve) {
+ case 1:
+ dx = 0; dy = mul;
+ break;
+ case 2:
+ dx = mul; dy = 0;
+ break;
+ case 3:
+ dx = 0; dy = -mul;
+ break;
+ }
+ (void)gdraw(dx, dy, curve); out = 0;
+
+ order = 0;
+ q = p = 0; i = q + 1;
+ }
+
+ if (i > q) {
+ SET_FOLD(p); q = p * 2;
+
+ ++order;
+ i = p; p = q + 1;
+ }
+
+ if (GET_FOLD(q-i) != 0) {
+ CLR_FOLD(i);
+ tmp = dx; dx = dy; dy = -tmp; /* turn right */
+ }
+ else {
+ SET_FOLD(i);
+ tmp = dx; dx = -dy; dy = tmp; /* turn left */
+ }
+ if (gdraw(dx, dy, curve)) {
+ out = 0;
+ }
+ else {
+ if (++out > OUT) {
+ order = ORDER; /* force to terminate this curve */
+ }
+ }
+ ++i;
+}
+
+static int
+dragon_saver(video_adapter_t *adp, int blank)
+{
+ int pl;
+
+ if (blank) {
+ /* switch to graphics mode */
+ if (blanked <= 0) {
+ pl = splhigh();
+ set_video_mode(adp, VIDEO_MODE);
+ vid = (u_char *)adp->va_window;
+ curve = CURVE + 1;
+ ++blanked;
+ splx(pl);
+ }
+
+ /* update display */
+ dragon_update(adp);
+ }
+ else {
+ blanked = 0;
+ }
+ return 0;
+}
+
+static int
+dragon_init(video_adapter_t *adp)
+{
+ video_info_t info;
+
+ /* check that the console is capable of running in 320x200x256 */
+ if (get_mode_info(adp, VIDEO_MODE, &info)) {
+ log(LOG_NOTICE,
+ "%s: the console does not support " VIDEO_MODE_NAME "\n",
+ SAVER_NAME);
+ return ENODEV;
+ }
+
+ blanked = 0;
+ return 0;
+}
+
+static int
+dragon_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t dragon_module = {
+ SAVER_NAME,
+ dragon_init,
+ dragon_term,
+ dragon_saver,
+ NULL,
+};
+
+SAVER_MODULE(dragon_saver, dragon_module);
diff --git a/sys/modules/syscons/fade/Makefile b/sys/modules/syscons/fade/Makefile
new file mode 100644
index 000000000000..5fc34ebfe19c
--- /dev/null
+++ b/sys/modules/syscons/fade/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= fade_saver
+SRCS= fade_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/fade/fade_saver.c b/sys/modules/syscons/fade/fade_saver.c
new file mode 100644
index 000000000000..052fa9225908
--- /dev/null
+++ b/sys/modules/syscons/fade/fade_saver.c
@@ -0,0 +1,105 @@
+/*-
+ * Copyright (c) 1995-1998 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification, immediately at the beginning of the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+static u_char palette[256*3];
+static int blanked;
+
+static int
+fade_saver(video_adapter_t *adp, int blank)
+{
+ static int count = 0;
+ u_char pal[256*3];
+ int i;
+
+ if (blank) {
+ blanked = TRUE;
+ if (ISPALAVAIL(adp->va_flags)) {
+ if (count <= 0)
+ save_palette(adp, palette);
+ if (count < 256) {
+ pal[0] = pal[1] = pal[2] = 0;
+ for (i = 3; i < 256*3; i++) {
+ if (palette[i] - count > 60)
+ pal[i] = palette[i] - count;
+ else
+ pal[i] = 60;
+ }
+ load_palette(adp, pal);
+ count++;
+ }
+ } else {
+ (*vidsw[adp->va_index]->blank_display)(adp,
+ V_DISPLAY_BLANK);
+ }
+ } else {
+ if (ISPALAVAIL(adp->va_flags)) {
+ load_palette(adp, palette);
+ count = 0;
+ } else {
+ (*vidsw[adp->va_index]->blank_display)(adp,
+ V_DISPLAY_ON);
+ }
+ blanked = FALSE;
+ }
+ return 0;
+}
+
+static int
+fade_init(video_adapter_t *adp)
+{
+ if (!ISPALAVAIL(adp->va_flags)
+ && (*vidsw[adp->va_index]->blank_display)(adp, V_DISPLAY_ON) != 0)
+ return ENODEV;
+ blanked = FALSE;
+ return 0;
+}
+
+static int
+fade_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t fade_module = {
+ "fade_saver", fade_init, fade_term, fade_saver, NULL,
+};
+
+SAVER_MODULE(fade_saver, fade_module);
diff --git a/sys/modules/syscons/fire/Makefile b/sys/modules/syscons/fire/Makefile
new file mode 100644
index 000000000000..d32eec765fb0
--- /dev/null
+++ b/sys/modules/syscons/fire/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+KMOD= fire_saver
+SRCS= fire_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+CWARNFLAGS= -Wall -pedantic
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/fire/fire_saver.c b/sys/modules/syscons/fire/fire_saver.c
new file mode 100644
index 000000000000..19344922bf1f
--- /dev/null
+++ b/sys/modules/syscons/fire/fire_saver.c
@@ -0,0 +1,135 @@
+/*-
+ * Copyright (c) 1999 Brad Forschinger
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification, immediately at the beginning of the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * brad forschinger, 19990504 <retch@flag.blackened.net>
+ *
+ * written with much help from warp_saver.c
+ *
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/syslog.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+#include <sys/random.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+#define X_SIZE 320
+#define Y_SIZE 200
+
+static int blanked;
+static u_char fire_pal[768];
+static u_char buf[X_SIZE * (Y_SIZE + 1)];
+static u_char *vid;
+
+static int
+fire_saver(video_adapter_t *adp, int blank)
+{
+ int x, y;
+
+ if (blank) {
+ if (blanked <= 0) {
+ int red, green, blue;
+ int palette_index;
+
+ set_video_mode(adp, M_VGA_CG320);
+
+ /* build and load palette */
+ red = green = blue = 0;
+ for (palette_index = 0; palette_index < 256; palette_index++) {
+ red++;
+ if (red > 128)
+ green += 2;
+
+ fire_pal[(palette_index * 3) + 0] = red;
+ fire_pal[(palette_index * 3) + 1] = green;
+ fire_pal[(palette_index * 3) + 2] = blue;
+ }
+ load_palette(adp, fire_pal);
+
+ blanked++;
+ vid = (u_char *) adp->va_window;
+ }
+ /* make a new bottom line */
+ for (x = 0, y = Y_SIZE; x < X_SIZE; x++)
+ buf[x + (y * X_SIZE)] = random() % 160 + 96;
+
+ /* fade the flames out */
+ for (y = 0; y < Y_SIZE; y++) {
+ for (x = 0; x < X_SIZE; x++) {
+ buf[x + (y * X_SIZE)] = (buf[(x + 0) + ((y + 0) * X_SIZE)] +
+ buf[(x - 1) + ((y + 1) * X_SIZE)] +
+ buf[(x + 0) + ((y + 1) * X_SIZE)] +
+ buf[(x + 1) + ((y + 1) * X_SIZE)]) / 4;
+ if (buf[x + (y * X_SIZE)] > 0)
+ buf[x + (y * X_SIZE)]--;
+ }
+ }
+
+ /* blit our buffer into video ram */
+ memcpy(vid, buf, X_SIZE * Y_SIZE);
+ } else {
+ blanked = 0;
+ }
+
+ return 0;
+}
+
+static int
+fire_initialise(video_adapter_t *adp)
+{
+ video_info_t info;
+
+ /* check that the console is capable of running in 320x200x256 */
+ if (get_mode_info(adp, M_VGA_CG320, &info)) {
+ log(LOG_NOTICE, "fire_saver: the console does not support M_VGA_CG320\n");
+ return (ENODEV);
+ }
+ blanked = 0;
+
+ return 0;
+}
+
+static int
+fire_terminate(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t fire_module = {
+ "fire_saver", fire_initialise, fire_terminate, fire_saver, NULL
+};
+
+SAVER_MODULE(fire_saver, fire_module);
diff --git a/sys/modules/syscons/green/Makefile b/sys/modules/syscons/green/Makefile
new file mode 100644
index 000000000000..f62b1f4a2757
--- /dev/null
+++ b/sys/modules/syscons/green/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= green_saver
+SRCS= green_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/green/green_saver.c b/sys/modules/syscons/green/green_saver.c
new file mode 100644
index 000000000000..d6cfe80da689
--- /dev/null
+++ b/sys/modules/syscons/green/green_saver.c
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (c) 1995-1998 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification, immediately at the beginning of the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+static int
+green_saver(video_adapter_t *adp, int blank)
+{
+ (*vidsw[adp->va_index]->blank_display)(adp,
+ (blank) ? V_DISPLAY_STAND_BY
+ : V_DISPLAY_ON);
+ return 0;
+}
+
+static int
+green_init(video_adapter_t *adp)
+{
+ if ((*vidsw[adp->va_index]->blank_display)(adp, V_DISPLAY_ON) == 0)
+ return 0;
+ return ENODEV;
+}
+
+static int
+green_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t green_module = {
+ "green_saver", green_init, green_term, green_saver, NULL,
+};
+
+SAVER_MODULE(green_saver, green_module);
diff --git a/sys/modules/syscons/logo/Makefile b/sys/modules/syscons/logo/Makefile
new file mode 100644
index 000000000000..2a9ede26cce9
--- /dev/null
+++ b/sys/modules/syscons/logo/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= logo_saver
+SRCS= logo_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/logo/logo.c b/sys/modules/syscons/logo/logo.c
new file mode 100644
index 000000000000..0c122ad9012f
--- /dev/null
+++ b/sys/modules/syscons/logo/logo.c
@@ -0,0 +1,354 @@
+/* $FreeBSD$ */
+
+#define logo_w 88
+#define logo_h 88
+
+unsigned char logo_pal[768] = {
+ 0x00, 0x00, 0x00,
+ 0x33, 0x33, 0x33,
+ 0x66, 0x66, 0x66,
+ 0x99, 0x99, 0x99,
+ 0xcc, 0xcc, 0xcc,
+ 0xff, 0xff, 0xff,
+ 0x90, 0x8f, 0x90,
+ 0x56, 0x4b, 0x55,
+ 0xa3, 0xa5, 0xab,
+ 0xfd, 0xfd, 0xfd,
+ 0x6d, 0x6e, 0x74,
+ 0x41, 0x2b, 0x39,
+ 0xcb, 0xc8, 0xcb,
+ 0xcf, 0xbb, 0xba,
+ 0x8e, 0x82, 0x87,
+ 0x5c, 0x5d, 0x60,
+ 0x52, 0x2a, 0x37,
+ 0x7f, 0x76, 0x7d,
+ 0x82, 0x82, 0x85,
+ 0x7a, 0x3e, 0x45,
+ 0x7f, 0x6e, 0x70,
+ 0xef, 0xef, 0xed,
+ 0x53, 0x41, 0x4b,
+ 0x67, 0x2b, 0x35,
+ 0x6a, 0x55, 0x62,
+ 0xe7, 0xe2, 0xe3,
+ 0x64, 0x35, 0x3f,
+ 0xf7, 0xe0, 0xe7,
+ 0xb1, 0xb2, 0xb2,
+ 0x31, 0x2b, 0x35,
+ 0x7a, 0x2d, 0x37,
+ 0x69, 0x4c, 0x56,
+ 0x95, 0x9d, 0xa4,
+ 0x85, 0x61, 0x69,
+ 0x40, 0x34, 0x41,
+ 0x8f, 0x2e, 0x39,
+ 0x7a, 0x50, 0x5a,
+ 0xde, 0xe1, 0xe0,
+ 0x32, 0x33, 0x3d,
+ 0xa0, 0x9b, 0x9c,
+ 0x68, 0x63, 0x67,
+ 0x76, 0x60, 0x67,
+ 0xba, 0xb6, 0xb8,
+ 0x29, 0x24, 0x41,
+ 0x38, 0x21, 0x29,
+ 0x42, 0x21, 0x27,
+ 0xa2, 0x2a, 0x32,
+ 0x56, 0x55, 0x58,
+ 0x55, 0x21, 0x2b,
+ 0x7a, 0x20, 0x2a,
+ 0x37, 0x16, 0x21,
+ 0x4d, 0x18, 0x37,
+ 0x8a, 0x3a, 0x3e,
+ 0xc0, 0xc2, 0xc4,
+ 0x64, 0x23, 0x2c,
+ 0x37, 0x1a, 0x24,
+ 0x42, 0x18, 0x20,
+ 0x4c, 0x21, 0x2b,
+ 0xa0, 0x23, 0x2e,
+ 0x95, 0x6c, 0x76,
+ 0x26, 0x16, 0x1c,
+ 0xa5, 0x18, 0x23,
+ 0x84, 0x20, 0x2b,
+ 0x6d, 0x3f, 0x49,
+ 0xae, 0xa7, 0xac,
+ 0x2a, 0x1f, 0x24,
+ 0x90, 0x21, 0x30,
+ 0xa0, 0x39, 0x3e,
+ 0x95, 0x0f, 0x1c,
+ 0x84, 0x13, 0x1e,
+ 0x4e, 0x17, 0x24,
+ 0x8c, 0x56, 0x5f,
+ 0xe0, 0xc4, 0xcb,
+ 0xa5, 0x7f, 0x8e,
+ 0xff, 0xff, 0xf1,
+ 0x3d, 0x3d, 0x5d,
+ 0x61, 0x19, 0x26,
+ 0xd5, 0xd5, 0xd5,
+ 0xff, 0xf1, 0xed,
+ 0xb6, 0x9c, 0xa5,
+ 0x87, 0x4c, 0x5a,
+ 0xa0, 0x76, 0x76,
+ 0xc8, 0xa0, 0xa0,
+ 0xa2, 0xc1, 0xc8,
+ 0x91, 0xae, 0xb6,
+ 0x52, 0x8b, 0xae,
+ 0xb3, 0xd2, 0xd4,
+ 0x95, 0xb7, 0xc1,
+ 0x54, 0x6e, 0x83,
+ 0x67, 0x90, 0xa6,
+ 0x44, 0x3e, 0x45,
+ 0x23, 0x40, 0x6a,
+ 0x41, 0x6e, 0x97,
+ 0x7e, 0x8e, 0x91,
+ 0x52, 0x33, 0x41,
+ 0x39, 0x49, 0x68,
+ 0x1d, 0x2a, 0x48,
+ 0x17, 0x21, 0x45,
+ 0x90, 0x17, 0x1f,
+ 0x38, 0x54, 0x71,
+ 0x1c, 0x33, 0x58,
+ 0x1c, 0x1e, 0x23,
+ 0x6c, 0x17, 0x21,
+ 0xb0, 0xc5, 0xc1,
+ 0x5d, 0x7f, 0x96,
+ 0xe9, 0xbf, 0xc1,
+ 0x96, 0x06, 0x0f,
+ 0x78, 0x16, 0x1e,
+ 0xab, 0x0e, 0x18,
+ 0xa6, 0x06, 0x0e,
+ 0x4c, 0x4c, 0x54,
+ 0x61, 0x42, 0x4c,
+ 0x48, 0x5f, 0x84,
+ 0xa0, 0xb8, 0xbe,
+ 0x5c, 0x66, 0x7f,
+ 0x7b, 0x9e, 0xa9,
+ 0x6f, 0x75, 0x7f,
+ 0x45, 0x54, 0x74,
+ 0x32, 0x3e, 0x63,
+ 0xb1, 0xb4, 0xb3,
+ 0x66, 0x9d, 0xb4,
+ 0x7a, 0x9f, 0xbb,
+ 0x82, 0xaa, 0xba,
+ 0x13, 0x15, 0x17,
+ 0x0b, 0x0b, 0x0a,
+ 0x37, 0x66, 0x92,
+ 0x4c, 0x7f, 0xa5,
+ 0x24, 0x4c, 0x7b,
+ 0x25, 0x5f, 0x91,
+ 0x40, 0x7d, 0xa5,
+ 0x1d, 0x56, 0x88,
+ 0x2d, 0x6f, 0xa0,
+ 0x70, 0x81, 0x8f,
+ 0x58, 0x97, 0xbd,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00,
+};
+
+unsigned char logo_img[logo_w*logo_h] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x09, 0x0a, 0x0b, 0x07, 0x0c, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0d, 0x0e, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x09, 0x0f, 0x0b, 0x10, 0x11, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x12, 0x13, 0x14, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x16, 0x0b, 0x17, 0x18, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x13, 0x1a, 0x1b, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x1c, 0x1d, 0x10, 0x1e, 0x1f, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x20, 0x0b, 0x1e, 0x21, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x22, 0x0b, 0x17, 0x23, 0x24, 0x15, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x25, 0x26, 0x10, 0x23, 0x27, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x05, 0x05, 0x05, 0x25, 0x27, 0x11, 0x28, 0x29, 0x11, 0x06, 0x0d, 0x09, 0x05, 0x2a, 0x2b, 0x2c, 0x2d, 0x1e, 0x2e, 0x21, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2f, 0x0b, 0x30, 0x31, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x06, 0x16, 0x22, 0x1d, 0x2c, 0x32, 0x33, 0x17, 0x17, 0x17, 0x22, 0x14, 0x16, 0x1d, 0x2c, 0x2d, 0x1e, 0x2e, 0x34, 0x0c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2b, 0x2c, 0x36, 0x36, 0x35, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x27, 0x0b, 0x2c, 0x2c, 0x37, 0x32, 0x38, 0x2c, 0x2d, 0x39, 0x36, 0x17, 0x30, 0x2c, 0x2c, 0x2d, 0x2c, 0x2c, 0x1a, 0x3a, 0x3a, 0x3b, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x2d, 0x2b, 0x33, 0x31, 0x0e, 0x05, 0x05, 0x05, 0x05, 0x09, 0x28, 0x2c, 0x37, 0x3c, 0x32, 0x38, 0x38, 0x37, 0x2c, 0x30, 0x36, 0x36, 0x17, 0x31, 0x36, 0x23, 0x23, 0x17, 0x2c, 0x17, 0x3a, 0x3d, 0x13, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x22, 0x2c, 0x37, 0x33, 0x3e, 0x31, 0x3f, 0x40, 0x19, 0x05, 0x11, 0x2c, 0x2c, 0x32, 0x32, 0x32, 0x38, 0x37, 0x41, 0x30, 0x3a, 0x3a, 0x2e, 0x42, 0x43, 0x17, 0x1a, 0x13, 0x23, 0x31, 0x1a, 0x2e, 0x3d, 0x1a, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0b, 0x37, 0x32, 0x37, 0x33, 0x44, 0x44, 0x45, 0x17, 0x1a, 0x10, 0x2d, 0x37, 0x38, 0x46, 0x33, 0x46, 0x32, 0x2c, 0x23, 0x23, 0x47, 0x21, 0x13, 0x43, 0x34, 0x48, 0x19, 0x49, 0x34, 0x17, 0x1e, 0x3a, 0x13, 0x4a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4b, 0x32, 0x32, 0x32, 0x32, 0x4c, 0x45, 0x44, 0x44, 0x42, 0x36, 0x30, 0x33, 0x46, 0x38, 0x33, 0x46, 0x38, 0x31, 0x23, 0x27, 0x09, 0x4a, 0x4d, 0x47, 0x43, 0x0d, 0x4e, 0x4a, 0x4f, 0x34, 0x1a, 0x2e, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x33, 0x32, 0x32, 0x32, 0x33, 0x4c, 0x31, 0x45, 0x3e, 0x31, 0x36, 0x46, 0x46, 0x33, 0x33, 0x39, 0x30, 0x23, 0x50, 0x4a, 0x4a, 0x4a, 0x4a, 0x4d, 0x47, 0x51, 0x4e, 0x4a, 0x4a, 0x0e, 0x13, 0x1a, 0x27, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2b, 0x32, 0x32, 0x2b, 0x32, 0x33, 0x4c, 0x33, 0x4c, 0x4c, 0x36, 0x30, 0x30, 0x30, 0x30, 0x31, 0x23, 0x3a, 0x49, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4f, 0x50, 0x1b, 0x4e, 0x4a, 0x19, 0x50, 0x16, 0x0c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x32, 0x32, 0x32, 0x32, 0x2b, 0x33, 0x33, 0x30, 0x2d, 0x39, 0x30, 0x30, 0x30, 0x4c, 0x36, 0x42, 0x3a, 0x52, 0x05, 0x4a, 0x4a, 0x4a, 0x4a, 0x09, 0x3b, 0x52, 0x4e, 0x4a, 0x4a, 0x4f, 0x1a, 0x2a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x2b, 0x2b, 0x32, 0x32, 0x32, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x10, 0x30, 0x30, 0x3e, 0x23, 0x3a, 0x0d, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x40, 0x51, 0x4a, 0x4a, 0x25, 0x15, 0x1f, 0x27, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x22, 0x2c, 0x32, 0x32, 0x32, 0x38, 0x2d, 0x2c, 0x41, 0x32, 0x39, 0x46, 0x4c, 0x31, 0x2e, 0x2e, 0x0c, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x25, 0x53, 0x18, 0x4a, 0x54, 0x55, 0x56, 0x51, 0x11, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x22, 0x32, 0x32, 0x32, 0x38, 0x38, 0x32, 0x2c, 0x37, 0x38, 0x30, 0x30, 0x3e, 0x3a, 0x3a, 0x2a, 0x4a, 0x4a, 0x05, 0x4a, 0x57, 0x58, 0x59, 0x5a, 0x35, 0x58, 0x5b, 0x5c, 0x5d, 0x5e, 0x4a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x07, 0x37, 0x32, 0x38, 0x38, 0x32, 0x32, 0x41, 0x38, 0x30, 0x30, 0x3e, 0x3a, 0x3d, 0x27, 0x05, 0x4a, 0x4a, 0x4a, 0x5c, 0x5f, 0x59, 0x1d, 0x29, 0x2f, 0x60, 0x61, 0x26, 0x0b, 0x1c, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4e, 0x0a, 0x2d, 0x38, 0x38, 0x32, 0x37, 0x32, 0x2d, 0x39, 0x36, 0x31, 0x62, 0x3d, 0x0e, 0x4a, 0x4a, 0x4a, 0x09, 0x63, 0x64, 0x64, 0x61, 0x2d, 0x1d, 0x65, 0x61, 0x2b, 0x17, 0x16, 0x4a, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x27, 0x2c, 0x38, 0x38, 0x37, 0x37, 0x38, 0x2d, 0x30, 0x31, 0x42, 0x3a, 0x18, 0x09, 0x05, 0x05, 0x4a, 0x63, 0x60, 0x60, 0x2b, 0x10, 0x2d, 0x41, 0x41, 0x30, 0x42, 0x3e, 0x29, 0x09, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x37, 0x32, 0x38, 0x32, 0x41, 0x38, 0x38, 0x30, 0x66, 0x31, 0x3a, 0x1e, 0x67, 0x4a, 0x4a, 0x05, 0x68, 0x64, 0x61, 0x2b, 0x17, 0x36, 0x10, 0x33, 0x31, 0x42, 0x3d, 0x45, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x1c, 0x2c, 0x32, 0x32, 0x37, 0x41, 0x2c, 0x46, 0x30, 0x36, 0x36, 0x42, 0x42, 0x29, 0x1b, 0x4a, 0x4a, 0x4d, 0x26, 0x60, 0x0b, 0x17, 0x36, 0x44, 0x45, 0x66, 0x3e, 0x44, 0x44, 0x1a, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x2c, 0x32, 0x32, 0x38, 0x37, 0x32, 0x37, 0x30, 0x36, 0x4c, 0x31, 0x1e, 0x10, 0x1f, 0x52, 0x69, 0x52, 0x07, 0x2c, 0x10, 0x36, 0x62, 0x6a, 0x44, 0x6b, 0x3e, 0x44, 0x6c, 0x30, 0x09, 0x05, 0x05, 0x25, 0x54, 0x19, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x25, 0x2c, 0x37, 0x38, 0x37, 0x2c, 0x32, 0x32, 0x46, 0x30, 0x46, 0x4c, 0x31, 0x66, 0x4c, 0x36, 0x1a, 0x1a, 0x17, 0x37, 0x37, 0x10, 0x31, 0x62, 0x45, 0x4c, 0x3e, 0x44, 0x62, 0x30, 0x09, 0x05, 0x0a, 0x70, 0x71, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x22, 0x32, 0x32, 0x38, 0x41, 0x41, 0x38, 0x2d, 0x46, 0x66, 0x44, 0x6c, 0x6c, 0x6c, 0x3d, 0x3a, 0x42, 0x31, 0x32, 0x32, 0x32, 0x33, 0x33, 0x30, 0x36, 0x3e, 0x3e, 0x31, 0x07, 0x05, 0x12, 0x6e, 0x72, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x2d, 0x2c, 0x38, 0x32, 0x41, 0x37, 0x2d, 0x46, 0x66, 0x6a, 0x6c, 0x6d, 0x6d, 0x6c, 0x3d, 0x3d, 0x31, 0x38, 0x38, 0x39, 0x33, 0x39, 0x36, 0x30, 0x30, 0x66, 0x30, 0x40, 0x4d, 0x5f, 0x4d, 0x4d, 0x05, 0x05, 0x05, 0x15, 0x04, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x5a, 0x2d, 0x32, 0x32, 0x37, 0x37, 0x32, 0x38, 0x46, 0x46, 0x66, 0x45, 0x44, 0x62, 0x44, 0x44, 0x3e, 0x31, 0x31, 0x31, 0x31, 0x31, 0x33, 0x37, 0x30, 0x10, 0x06, 0x05, 0x12, 0x0a, 0x05, 0x05, 0x05, 0x08, 0x68, 0x73, 0x05, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x22, 0x32, 0x32, 0x32, 0x3c, 0x37, 0x37, 0x2d, 0x39, 0x39, 0x39, 0x36, 0x36, 0x6b, 0x3e, 0x3e, 0x3e, 0x3e, 0x31, 0x4c, 0x39, 0x2d, 0x10, 0x16, 0x2a, 0x05, 0x05, 0x74, 0x74, 0x05, 0x05, 0x0c, 0x75, 0x5f, 0x1c, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x2c, 0x32, 0x32, 0x32, 0x41, 0x37, 0x41, 0x2c, 0x2c, 0x41, 0x2c, 0x33, 0x36, 0x31, 0x36, 0x31, 0x31, 0x17, 0x46, 0x2c, 0x16, 0x40, 0x05, 0x05, 0x05, 0x05, 0x20, 0x5f, 0x4d, 0x72, 0x76, 0x06, 0x25, 0x4a, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x0b, 0x2d, 0x37, 0x2d, 0x2c, 0x2c, 0x37, 0x37, 0x38, 0x2c, 0x37, 0x2c, 0x10, 0x10, 0x39, 0x30, 0x0b, 0x2c, 0x11, 0x09, 0x05, 0x09, 0x4a, 0x05, 0x05, 0x19, 0x1d, 0x26, 0x76, 0x08, 0x05, 0x05, 0x05, 0x15, 0x25, 0x4d, 0x53, 0x77, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x5a, 0x2c, 0x37, 0x2d, 0x2c, 0x37, 0x37, 0x39, 0x39, 0x33, 0x38, 0x2c, 0x2d, 0x2d, 0x2c, 0x5e, 0x2a, 0x05, 0x15, 0x3b, 0x17, 0x1f, 0x19, 0x05, 0x06, 0x26, 0x60, 0x5f, 0x0c, 0x05, 0x05, 0x05, 0x35, 0x68, 0x78, 0x56, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2c, 0x2c, 0x2c, 0x37, 0x32, 0x37, 0x2c, 0x37, 0x32, 0x46, 0x33, 0x46, 0x39, 0x11, 0x15, 0x05, 0x05, 0x18, 0x31, 0x44, 0x6a, 0x30, 0x6e, 0x2b, 0x4b, 0x11, 0x5f, 0x63, 0x72, 0x54, 0x20, 0x74, 0x58, 0x25, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x15, 0x0b, 0x2c, 0x38, 0x2d, 0x39, 0x39, 0x2d, 0x37, 0x3c, 0x32, 0x37, 0x0b, 0x18, 0x05, 0x05, 0x05, 0x4e, 0x26, 0x32, 0x45, 0x6a, 0x46, 0x2b, 0x72, 0x4e, 0x05, 0x35, 0x0a, 0x75, 0x5f, 0x70, 0x08, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x22, 0x2d, 0x30, 0x6b, 0x6b, 0x66, 0x36, 0x30, 0x36, 0x4c, 0x36, 0x30, 0x18, 0x05, 0x05, 0x05, 0x09, 0x4b, 0x32, 0x46, 0x66, 0x38, 0x0b, 0x09, 0x05, 0x05, 0x05, 0x05, 0x09, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x2c, 0x2c, 0x31, 0x62, 0x62, 0x6b, 0x31, 0x45, 0x44, 0x44, 0x45, 0x31, 0x10, 0x0c, 0x4d, 0x0c, 0x08, 0x0b, 0x3c, 0x32, 0x33, 0x66, 0x17, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x22, 0x2c, 0x2d, 0x31, 0x45, 0x6b, 0x36, 0x31, 0x6b, 0x62, 0x45, 0x6a, 0x66, 0x30, 0x0b, 0x2c, 0x2c, 0x2c, 0x2c, 0x37, 0x46, 0x6b, 0x44, 0x62, 0x5e, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x1d, 0x2c, 0x39, 0x36, 0x4c, 0x30, 0x30, 0x30, 0x36, 0x4c, 0x66, 0x4c, 0x36, 0x30, 0x37, 0x41, 0x2c, 0x2d, 0x2c, 0x3c, 0x33, 0x6b, 0x44, 0x44, 0x39, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x2d, 0x2d, 0x2d, 0x36, 0x39, 0x2d, 0x32, 0x38, 0x38, 0x46, 0x6a, 0x6d, 0x3d, 0x62, 0x46, 0x3c, 0x37, 0x2d, 0x32, 0x32, 0x32, 0x38, 0x4c, 0x30, 0x16, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x37, 0x38, 0x38, 0x39, 0x37, 0x2c, 0x37, 0x37, 0x30, 0x45, 0x6d, 0x6d, 0x62, 0x62, 0x38, 0x3c, 0x3c, 0x32, 0x37, 0x32, 0x32, 0x32, 0x2c, 0x14, 0x15, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x6e, 0x37, 0x38, 0x38, 0x38, 0x37, 0x2c, 0x2d, 0x30, 0x31, 0x62, 0x6a, 0x6d, 0x6a, 0x6a, 0x46, 0x32, 0x32, 0x37, 0x37, 0x32, 0x30, 0x17, 0x29, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4a, 0x0b, 0x38, 0x38, 0x38, 0x2c, 0x2c, 0x0b, 0x2d, 0x39, 0x4c, 0x45, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x38, 0x37, 0x2c, 0x41, 0x18, 0x1c, 0x0c, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x15, 0x0b, 0x2d, 0x38, 0x38, 0x37, 0x2c, 0x2c, 0x2c, 0x37, 0x32, 0x4c, 0x6b, 0x44, 0x44, 0x45, 0x6a, 0x45, 0x38, 0x37, 0x1c, 0x09, 0x05, 0x05, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x1d, 0x38, 0x38, 0x38, 0x38, 0x2c, 0x3c, 0x37, 0x37, 0x32, 0x32, 0x46, 0x36, 0x1e, 0x6b, 0x4c, 0x46, 0x32, 0x22, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x37, 0x32, 0x37, 0x38, 0x38, 0x37, 0x32, 0x3c, 0x32, 0x32, 0x37, 0x38, 0x2d, 0x2d, 0x38, 0x2c, 0x2c, 0x4f, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x3c, 0x37, 0x41, 0x38, 0x2d, 0x37, 0x37, 0x3c, 0x32, 0x3c, 0x32, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x41, 0x3c, 0x3c, 0x38, 0x32, 0x3c, 0x3c, 0x3c, 0x41, 0x32, 0x41, 0x37, 0x2c, 0x2c, 0x41, 0x38, 0x45, 0x18, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x2c, 0x3c, 0x37, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x4c, 0x45, 0x6a, 0x1a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x2c, 0x37, 0x41, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x41, 0x37, 0x37, 0x4c, 0x44, 0x6d, 0x6a, 0x1a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x5a, 0x2c, 0x41, 0x3c, 0x3c, 0x3c, 0x32, 0x2c, 0x32, 0x2c, 0x2c, 0x38, 0x38, 0x36, 0x45, 0x62, 0x44, 0x45, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x2c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x32, 0x37, 0x39, 0x4c, 0x4c, 0x45, 0x62, 0x44, 0x62, 0x30, 0x2a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4a, 0x5a, 0x41, 0x3c, 0x3c, 0x3c, 0x3c, 0x32, 0x3c, 0x37, 0x37, 0x2d, 0x46, 0x4c, 0x6b, 0x6b, 0x45, 0x3e, 0x36, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x27, 0x3c, 0x37, 0x3c, 0x3c, 0x37, 0x37, 0x32, 0x38, 0x37, 0x37, 0x37, 0x38, 0x39, 0x36, 0x4c, 0x30, 0x10, 0x16, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x25, 0x1d, 0x37, 0x37, 0x41, 0x32, 0x3c, 0x32, 0x41, 0x37, 0x32, 0x2c, 0x41, 0x37, 0x2c, 0x32, 0x37, 0x2c, 0x2c, 0x5a, 0x0c, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x05, 0x05, 0x15, 0x5a, 0x37, 0x2c, 0x41, 0x2c, 0x2c, 0x41, 0x37, 0x41, 0x41, 0x3c, 0x2c, 0x41, 0x41, 0x3c, 0x37, 0x2c, 0x39, 0x0b, 0x0b, 0x25, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x2a, 0x22, 0x2d, 0x37, 0x2c, 0x3c, 0x1d, 0x2c, 0x38, 0x2c, 0x41, 0x2c, 0x2c, 0x2d, 0x39, 0x37, 0x3c, 0x37, 0x30, 0x1a, 0x5e, 0x6e, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x2a, 0x6e, 0x0b, 0x2d, 0x38, 0x41, 0x41, 0x6e, 0x5a, 0x2c, 0x41, 0x32, 0x38, 0x32, 0x39, 0x3f, 0x6f, 0x16, 0x37, 0x1a, 0x1f, 0x1f, 0x16, 0x1d, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x40, 0x07, 0x2c, 0x37, 0x2c, 0x2d, 0x2c, 0x1d, 0x0e, 0x09, 0x0b, 0x4b, 0x07, 0x41, 0x38, 0x2d, 0x10, 0x2d, 0x10, 0x0b, 0x2b, 0x33, 0x3f, 0x21, 0x29, 0x07, 0x5e, 0x2f, 0x12, 0x08, 0x2a, 0x0c, 0x25, 0x09, 0x09, 0x09, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x40, 0x28, 0x22, 0x2c, 0x38, 0x32, 0x32, 0x32, 0x1d, 0x0e, 0x19, 0x05, 0x35, 0x2c, 0x4b, 0x70, 0x0b, 0x32, 0x2c, 0x16, 0x16, 0x16, 0x0b, 0x22, 0x26, 0x0b, 0x10, 0x3f, 0x29, 0x1f, 0x47, 0x1f, 0x1f, 0x5e, 0x0b, 0x4b, 0x74, 0x84, 0x74, 0x84, 0x06, 0x35, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x4d, 0x27, 0x0a, 0x22, 0x1d, 0x2c, 0x2c, 0x37, 0x32, 0x41, 0x41, 0x16, 0x27, 0x15, 0x09, 0x4a, 0x09, 0x28, 0x2d, 0x0b, 0x76, 0x2c, 0x37, 0x2d, 0x37, 0x32, 0x37, 0x0b, 0x0b, 0x5e, 0x5a, 0x4b, 0x0b, 0x0b, 0x07, 0x6e, 0x16, 0x5e, 0x10, 0x76, 0x5c, 0x68, 0x79, 0x7a, 0x53, 0x71, 0x54, 0x5d, 0x08, 0x4d, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x25, 0x27, 0x28, 0x0b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x41, 0x41, 0x41, 0x22, 0x11, 0x35, 0x4d, 0x4d, 0x35, 0x1c, 0x06, 0x0a, 0x22, 0x38, 0x38, 0x37, 0x38, 0x38, 0x38, 0x2d, 0x39, 0x39, 0x39, 0x10, 0x39, 0x10, 0x4b, 0x12, 0x08, 0x35, 0x67, 0x2a, 0x08, 0x74, 0x70, 0x81, 0x55, 0x78, 0x79, 0x57, 0x53, 0x71, 0x71, 0x73, 0x84, 0x25, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x05, 0x09, 0x27, 0x16, 0x0b, 0x2c, 0x2d, 0x2c, 0x41, 0x41, 0x1d, 0x22, 0x5a, 0x0f, 0x14, 0x0a, 0x28, 0x0a, 0x28, 0x28, 0x28, 0x6e, 0x5a, 0x65, 0x1d, 0x0b, 0x2d, 0x38, 0x46, 0x38, 0x38, 0x38, 0x39, 0x2d, 0x46, 0x39, 0x30, 0x39, 0x4b, 0x68, 0x79, 0x7a, 0x57, 0x67, 0x67, 0x56, 0x53, 0x71, 0x68, 0x7e, 0x85, 0x59, 0x73, 0x79, 0x54, 0x7a, 0x54, 0x06, 0x1c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x4d, 0x16, 0x0b, 0x10, 0x39, 0x2d, 0x0b, 0x28, 0x06, 0x2a, 0x25, 0x35, 0x06, 0x11, 0x0a, 0x28, 0x07, 0x5a, 0x22, 0x26, 0x5a, 0x41, 0x7b, 0x7c, 0x60, 0x76, 0x22, 0x1d, 0x32, 0x38, 0x46, 0x46, 0x46, 0x38, 0x38, 0x38, 0x38, 0x2b, 0x75, 0x7d, 0x7e, 0x55, 0x78, 0x7a, 0x57, 0x57, 0x57, 0x71, 0x20, 0x68, 0x55, 0x85, 0x7a, 0x57, 0x53, 0x71, 0x57, 0x5d, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x0c, 0x16, 0x0b, 0x30, 0x39, 0x18, 0x2a, 0x09, 0x05, 0x4e, 0x19, 0x25, 0x0c, 0x27, 0x11, 0x0a, 0x0a, 0x2f, 0x5a, 0x5a, 0x26, 0x5a, 0x7b, 0x7c, 0x7c, 0x61, 0x7f, 0x7f, 0x7f, 0x76, 0x22, 0x22, 0x0b, 0x2d, 0x0b, 0x2d, 0x2d, 0x33, 0x0b, 0x5f, 0x80, 0x7d, 0x5c, 0x81, 0x55, 0x59, 0x59, 0x73, 0x73, 0x54, 0x5c, 0x5c, 0x7e, 0x55, 0x59, 0x73, 0x7a, 0x71, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x09, 0x25, 0x08, 0x07, 0x5e, 0x10, 0x22, 0x1c, 0x4a, 0x05, 0x09, 0x05, 0x15, 0x4d, 0x19, 0x19, 0x4d, 0x08, 0x12, 0x74, 0x0f, 0x6e, 0x5a, 0x26, 0x1d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x61, 0x5b, 0x82, 0x82, 0x80, 0x80, 0x82, 0x7f, 0x7f, 0x7f, 0x7f, 0x5b, 0x7f, 0x82, 0x80, 0x7d, 0x5c, 0x7e, 0x79, 0x54, 0x54, 0x7a, 0x73, 0x0f, 0x2a, 0x25, 0x19, 0x09, 0x4a, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x4d, 0x2a, 0x06, 0x74, 0x28, 0x22, 0x22, 0x2d, 0x2c, 0x0e, 0x05, 0x05, 0x05, 0x05, 0x05, 0x3b, 0x07, 0x19, 0x09, 0x25, 0x0c, 0x27, 0x12, 0x0f, 0x2f, 0x26, 0x26, 0x1d, 0x65, 0x65, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7b, 0x60, 0x5b, 0x7f, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x80, 0x80, 0x83, 0x83, 0x81, 0x7e, 0x59, 0x73, 0x73, 0x84, 0x5d, 0x25, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x19, 0x08, 0x12, 0x0a, 0x0f, 0x6e, 0x5a, 0x26, 0x22, 0x2c, 0x2c, 0x0b, 0x27, 0x05, 0x05, 0x05, 0x15, 0x1e, 0x1e, 0x6f, 0x0c, 0x09, 0x15, 0x0c, 0x20, 0x12, 0x0f, 0x6e, 0x5a, 0x26, 0x26, 0x26, 0x65, 0x65, 0x65, 0x65, 0x7b, 0x7c, 0x7b, 0x65, 0x7b, 0x61, 0x61, 0x60, 0x64, 0x64, 0x64, 0x5b, 0x5b, 0x5f, 0x63, 0x70, 0x63, 0x58, 0x5d, 0x2a, 0x15, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x4a, 0x4d, 0x27, 0x11, 0x0a, 0x28, 0x6e, 0x5a, 0x26, 0x65, 0x41, 0x1d, 0x2c, 0x2c, 0x5e, 0x29, 0x0e, 0x14, 0x17, 0x31, 0x6b, 0x30, 0x14, 0x25, 0x09, 0x15, 0x4d, 0x08, 0x74, 0x0a, 0x0f, 0x2f, 0x5a, 0x26, 0x26, 0x1d, 0x1d, 0x1d, 0x2b, 0x65, 0x1d, 0x41, 0x65, 0x65, 0x7b, 0x65, 0x65, 0x1d, 0x6e, 0x74, 0x5d, 0x1c, 0x25, 0x15, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x19, 0x4d, 0x08, 0x06, 0x0a, 0x2f, 0x6e, 0x2f, 0x6e, 0x26, 0x41, 0x7b, 0x65, 0x41, 0x37, 0x33, 0x30, 0x36, 0x36, 0x4c, 0x6b, 0x66, 0x30, 0x14, 0x35, 0x4a, 0x09, 0x15, 0x15, 0x25, 0x25, 0x0c, 0x1c, 0x08, 0x06, 0x5d, 0x5d, 0x5d, 0x0e, 0x06, 0x12, 0x06, 0x08, 0x1c, 0x2a, 0x0c, 0x19, 0x09, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x09, 0x19, 0x35, 0x08, 0x12, 0x28, 0x2f, 0x2f, 0x6e, 0x5a, 0x41, 0x7c, 0x3c, 0x3c, 0x2c, 0x41, 0x2d, 0x2d, 0x39, 0x30, 0x4c, 0x4c, 0x66, 0x66, 0x31, 0x24, 0x20, 0x4a, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x4a, 0x09, 0x4a, 0x09, 0x09, 0x05, 0x09, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x15, 0x0c, 0x1c, 0x12, 0x28, 0x2f, 0x5a, 0x1d, 0x7c, 0x7b, 0x41, 0x7b, 0x3c, 0x7b, 0x3c, 0x41, 0x41, 0x5a, 0x16, 0x28, 0x14, 0x14, 0x14, 0x3b, 0x12, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x4a, 0x09, 0x15, 0x1c, 0x12, 0x12, 0x0a, 0x0f, 0x2f, 0x07, 0x2f, 0x0a, 0x12, 0x27, 0x0c, 0x4d, 0x15, 0x09, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x15, 0x15, 0x15, 0x19, 0x4e, 0x4e, 0x05, 0x4a, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/sys/modules/syscons/logo/logo_saver.c b/sys/modules/syscons/logo/logo_saver.c
new file mode 100644
index 000000000000..2d2c660847ac
--- /dev/null
+++ b/sys/modules/syscons/logo/logo_saver.c
@@ -0,0 +1,157 @@
+/*-
+ * Copyright (c) 1998 Dag-Erling Coïdan Smørgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/syslog.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+static u_char *vid;
+static int banksize, scrmode, bpsl, scrw, scrh;
+static int blanked;
+
+#include "logo.c"
+
+static void
+logo_blit(video_adapter_t *adp, int x, int y)
+{
+ int d, l, o, p;
+
+ for (o = 0, p = y * bpsl + x; p > banksize; p -= banksize)
+ o += banksize;
+ set_origin(adp, o);
+
+ for (d = 0; d < sizeof logo_img; d += logo_w) {
+ if (p + logo_w < banksize) {
+ bcopy(logo_img + d, vid + p, logo_w);
+ p += bpsl;
+ } else if (p < banksize) {
+ l = banksize - p;
+ bcopy(logo_img + d, vid + p, l);
+ set_origin(adp, (o += banksize));
+ bcopy(logo_img + d + l, vid, logo_w - l);
+ p += bpsl - banksize;
+ } else {
+ p -= banksize;
+ set_origin(adp, (o += banksize));
+ bcopy(logo_img + d, vid + p, logo_w);
+ p += bpsl;
+ }
+ }
+}
+
+static void
+logo_update(video_adapter_t *adp)
+{
+ static int xpos = 0, ypos = 0;
+ static int xinc = 1, yinc = 1;
+
+ /* Turn when you hit the edge */
+ if ((xpos + logo_w + xinc > scrw) || (xpos + xinc < 0))
+ xinc = -xinc;
+ if ((ypos + logo_h + yinc > scrh) || (ypos + yinc < 0))
+ yinc = -yinc;
+ xpos += xinc;
+ ypos += yinc;
+
+ /* XXX Relies on margin around logo to erase trail */
+ logo_blit(adp, xpos, ypos);
+}
+
+static int
+logo_saver(video_adapter_t *adp, int blank)
+{
+ int i, pl;
+
+ if (blank) {
+ /* switch to graphics mode */
+ if (blanked <= 0) {
+ pl = splhigh();
+ set_video_mode(adp, scrmode);
+ load_palette(adp, logo_pal);
+#if 0 /* XXX conflict */
+ set_border(adp, 0);
+#endif
+ blanked++;
+ vid = (u_char *)adp->va_window;
+ banksize = adp->va_window_size;
+ bpsl = adp->va_line_width;
+ splx(pl);
+ for (i = 0; i < bpsl*scrh; i += banksize) {
+ set_origin(adp, i);
+ bzero(vid, banksize);
+ }
+ }
+ logo_update(adp);
+ } else {
+ blanked = 0;
+ }
+ return 0;
+}
+
+static int
+logo_init(video_adapter_t *adp)
+{
+ video_info_t info;
+
+ if (!get_mode_info(adp, M_VESA_CG800x600, &info)) {
+ scrmode = M_VESA_CG800x600;
+ } else if (!get_mode_info(adp, M_VGA_CG320, &info)) {
+ scrmode = M_VGA_CG320;
+ } else {
+ log(LOG_NOTICE, "logo_saver: no suitable graphics mode\n");
+ return ENODEV;
+ }
+
+ scrw = info.vi_width;
+ scrh = info.vi_height;
+ blanked = 0;
+
+ return 0;
+}
+
+static int
+logo_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t logo_module = {
+ "logo_saver", logo_init, logo_term, logo_saver, NULL,
+};
+
+SAVER_MODULE(logo_saver, logo_module);
diff --git a/sys/modules/syscons/rain/Makefile b/sys/modules/syscons/rain/Makefile
new file mode 100644
index 000000000000..ecc5ec332581
--- /dev/null
+++ b/sys/modules/syscons/rain/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+KMOD= rain_saver
+SRCS= rain_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+CWARNFLAGS= -Wall -pedantic
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/rain/rain_saver.c b/sys/modules/syscons/rain/rain_saver.c
new file mode 100644
index 000000000000..7bb9ebb4117e
--- /dev/null
+++ b/sys/modules/syscons/rain/rain_saver.c
@@ -0,0 +1,130 @@
+/*-
+ * Copyright (c) 1998 Dag-Erling Coïdan Smørgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/syslog.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+#include <sys/random.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+static u_char *vid;
+
+#define SCRW 320
+#define SCRH 200
+#define MAX 63
+
+static u_char rain_pal[768];
+static int blanked;
+
+static void
+rain_update(video_adapter_t *adp)
+{
+ int i, t;
+
+ t = rain_pal[(MAX*3+2)];
+ for (i = (MAX*3+2); i > 5; i -= 3)
+ rain_pal[i] = rain_pal[i-3];
+ rain_pal[5] = t;
+ load_palette(adp, rain_pal);
+}
+
+static int
+rain_saver(video_adapter_t *adp, int blank)
+{
+ int i, j, k, pl;
+
+ if (blank) {
+ /* switch to graphics mode */
+ if (blanked <= 0) {
+ pl = splhigh();
+ set_video_mode(adp, M_VGA_CG320);
+ load_palette(adp, rain_pal);
+#if 0 /* XXX conflict */
+ set_border(adp, 0);
+#endif
+ blanked++;
+ vid = (u_char *)adp->va_window;
+ splx(pl);
+ bzero(vid, SCRW*SCRH);
+ for (i = 0; i < SCRW; i += 2)
+ vid[i] = 1 + (random() % MAX);
+ for (j = 1, k = SCRW; j < SCRH; j++)
+ for (i = 0; i < SCRW; i += 2, k += 2)
+ vid[k] = (vid[k-SCRW] < MAX) ? 1 + vid[k-SCRW] : 1;
+ }
+
+ /* update display */
+ rain_update(adp);
+
+ } else {
+ blanked = 0;
+ }
+ return 0;
+}
+
+static int
+rain_init(video_adapter_t *adp)
+{
+ video_info_t info;
+ int i;
+
+ /* check that the console is capable of running in 320x200x256 */
+ if (get_mode_info(adp, M_VGA_CG320, &info)) {
+ log(LOG_NOTICE, "rain_saver: the console does not support M_VGA_CG320\n");
+ return ENODEV;
+ }
+
+ /* intialize the palette */
+ for (i = 3; i < (MAX+1)*3; i += 3)
+ rain_pal[i+2] = rain_pal[i-1] + 4;
+
+ blanked = 0;
+
+ return 0;
+}
+
+static int
+rain_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t rain_module = {
+ "rain_saver", rain_init, rain_term, rain_saver, NULL,
+};
+
+SAVER_MODULE(rain_saver, rain_module);
diff --git a/sys/modules/syscons/snake/Makefile b/sys/modules/syscons/snake/Makefile
new file mode 100644
index 000000000000..6dab3edc9ac2
--- /dev/null
+++ b/sys/modules/syscons/snake/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= snake_saver
+SRCS= snake_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/snake/snake_saver.c b/sys/modules/syscons/snake/snake_saver.c
new file mode 100644
index 000000000000..ea5651fee2f6
--- /dev/null
+++ b/sys/modules/syscons/snake/snake_saver.c
@@ -0,0 +1,152 @@
+/*-
+ * Copyright (c) 1995-1998 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification, immediately at the beginning of the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/module.h>
+#include <sys/malloc.h>
+#include <sys/kernel.h>
+#include <sys/sysctl.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <machine/pc/display.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+#ifdef PC98
+#include <pc98/pc98/pc98_machdep.h>
+#endif
+
+static u_char *message;
+static int *messagep;
+static int messagelen;
+static int blanked;
+
+static int
+snake_saver(video_adapter_t *adp, int blank)
+{
+ static int dirx, diry;
+ int f;
+ sc_softc_t *sc;
+ scr_stat *scp;
+
+/* XXX hack for minimal changes. */
+#define save message
+#define savs messagep
+
+ sc = sc_find_softc(adp, NULL);
+ if (sc == NULL)
+ return EAGAIN;
+ scp = sc->cur_scp;
+
+ if (blank) {
+ if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
+ return EAGAIN;
+ if (blanked <= 0) {
+#ifdef PC98
+ if (epson_machine_id == 0x20) {
+ outb(0x43f, 0x42);
+ outb(0x0c17, inb(0xc17) & ~0x08);
+ outb(0x43f, 0x40);
+ }
+#endif /* PC98 */
+ sc_vtb_clear(&scp->scr, sc->scr_map[0x20],
+ (FG_LIGHTGREY | BG_BLACK) << 8);
+ (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1);
+ sc_set_border(scp, 0);
+ dirx = (scp->xpos ? 1 : -1);
+ diry = (scp->ypos ?
+ scp->xsize : -scp->xsize);
+ for (f=0; f< messagelen; f++)
+ savs[f] = scp->xpos + scp->ypos*scp->xsize;
+ sc_vtb_putc(&scp->scr, savs[0], sc->scr_map[*save],
+ (FG_LIGHTGREY | BG_BLACK) << 8);
+ blanked = 1;
+ }
+ if (blanked++ < 4)
+ return 0;
+ blanked = 1;
+ sc_vtb_putc(&scp->scr, savs[messagelen - 1], sc->scr_map[0x20],
+ (FG_LIGHTGREY | BG_BLACK) << 8);
+ for (f=messagelen-1; f > 0; f--)
+ savs[f] = savs[f-1];
+ f = savs[0];
+ if ((f % scp->xsize) == 0 ||
+ (f % scp->xsize) == scp->xsize - 1 ||
+ (random() % 50) == 0)
+ dirx = -dirx;
+ if ((f / scp->xsize) == 0 ||
+ (f / scp->xsize) == scp->ysize - 1 ||
+ (random() % 20) == 0)
+ diry = -diry;
+ savs[0] += dirx + diry;
+ for (f=messagelen-1; f>=0; f--)
+ sc_vtb_putc(&scp->scr, savs[f], sc->scr_map[save[f]],
+ (FG_LIGHTGREY | BG_BLACK) << 8);
+ }
+ else {
+#ifdef PC98
+ if (epson_machine_id == 0x20) {
+ outb(0x43f, 0x42);
+ outb(0x0c17, inb(0xc17) | 0x08);
+ outb(0x43f, 0x40);
+ }
+#endif /* PC98 */
+ blanked = 0;
+ }
+ return 0;
+}
+
+static int
+snake_init(video_adapter_t *adp)
+{
+ messagelen = strlen(ostype) + 1 + strlen(osrelease);
+ message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
+ sprintf(message, "%s %s", ostype, osrelease);
+ messagep = malloc(messagelen * sizeof *messagep, M_DEVBUF, M_WAITOK);
+ return 0;
+}
+
+static int
+snake_term(video_adapter_t *adp)
+{
+ free(message, M_DEVBUF);
+ free(messagep, M_DEVBUF);
+ return 0;
+}
+
+static scrn_saver_t snake_module = {
+ "snake_saver", snake_init, snake_term, snake_saver, NULL,
+};
+
+SAVER_MODULE(snake_saver, snake_module);
diff --git a/sys/modules/syscons/star/Makefile b/sys/modules/syscons/star/Makefile
new file mode 100644
index 000000000000..7ae11d782852
--- /dev/null
+++ b/sys/modules/syscons/star/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+KMOD= star_saver
+SRCS= star_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/star/star_saver.c b/sys/modules/syscons/star/star_saver.c
new file mode 100644
index 000000000000..a1f24b89fcc1
--- /dev/null
+++ b/sys/modules/syscons/star/star_saver.c
@@ -0,0 +1,139 @@
+/*-
+ * Copyright (c) 1995-1998 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification, immediately at the beginning of the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <machine/pc/display.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+#ifdef PC98
+#include <pc98/pc98/pc98_machdep.h>
+#endif
+
+#define NUM_STARS 50
+
+static int blanked;
+
+/*
+ * Alternate saver that got its inspiration from a well known utility
+ * package for an inferior^H^H^H^H^H^Hfamous OS.
+ */
+static int
+star_saver(video_adapter_t *adp, int blank)
+{
+ sc_softc_t *sc;
+ scr_stat *scp;
+ int cell, i;
+ static u_char pattern[] = {"...........++++*** "};
+#ifndef PC98
+ static char colors[] = {FG_DARKGREY, FG_LIGHTGREY,
+ FG_WHITE, FG_LIGHTCYAN};
+#else
+ static char colors[] = {FG_BLUE, FG_LIGHTGREY,
+ FG_LIGHTGREY, FG_CYAN};
+#endif /* PC98 */
+ static u_short stars[NUM_STARS][2];
+
+ sc = sc_find_softc(adp, NULL);
+ if (sc == NULL)
+ return EAGAIN;
+ scp = sc->cur_scp;
+
+ if (blank) {
+ if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
+ return EAGAIN;
+ if (!blanked) {
+#ifdef PC98
+ if (epson_machine_id == 0x20) {
+ outb(0x43f, 0x42);
+ outb(0x0c17, inb(0xc17) & ~0x08);
+ outb(0x43f, 0x40);
+ }
+#endif /* PC98 */
+ /* clear the screen and set the border color */
+ sc_vtb_clear(&scp->scr, sc->scr_map[0x20],
+ (FG_LIGHTGREY | BG_BLACK) << 8);
+ (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1);
+ sc_set_border(scp, 0);
+ blanked = TRUE;
+ for(i=0; i<NUM_STARS; i++) {
+ stars[i][0] =
+ random() % (scp->xsize*scp->ysize);
+ stars[i][1] = 0;
+ }
+ }
+ cell = random() % NUM_STARS;
+ sc_vtb_putc(&scp->scr, stars[cell][0],
+ sc->scr_map[pattern[stars[cell][1]]],
+ colors[random()%sizeof(colors)] << 8);
+ if ((stars[cell][1]+=(random()%4)) >= sizeof(pattern)-1) {
+ stars[cell][0] = random() % (scp->xsize*scp->ysize);
+ stars[cell][1] = 0;
+ }
+ }
+ else {
+#ifdef PC98
+ if (epson_machine_id == 0x20) {
+ outb(0x43f, 0x42);
+ outb(0x0c17, inb(0xc17) | 0x08);
+ outb(0x43f, 0x40);
+ }
+#endif /* PC98 */
+ blanked = FALSE;
+ }
+ return 0;
+}
+
+static int
+star_init(video_adapter_t *adp)
+{
+ blanked = FALSE;
+ return 0;
+}
+
+static int
+star_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t star_module = {
+ "star_saver", star_init, star_term, star_saver, NULL,
+};
+
+SAVER_MODULE(star_saver, star_module);
diff --git a/sys/modules/syscons/warp/Makefile b/sys/modules/syscons/warp/Makefile
new file mode 100644
index 000000000000..45a3af9ecb23
--- /dev/null
+++ b/sys/modules/syscons/warp/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+KMOD= warp_saver
+SRCS= warp_saver.c
+
+NOMAN=
+CFLAGS+= -I${.CURDIR}/..
+CWARNFLAGS= -Wall -pedantic
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/syscons/warp/warp_saver.c b/sys/modules/syscons/warp/warp_saver.c
new file mode 100644
index 000000000000..ba868f121f4a
--- /dev/null
+++ b/sys/modules/syscons/warp/warp_saver.c
@@ -0,0 +1,138 @@
+/*-
+ * Copyright (c) 1998 Dag-Erling Coïdan Smørgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/syslog.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+#include <sys/random.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+static u_char *vid;
+static int blanked;
+
+#define SCRW 320
+#define SCRH 200
+#define SPP 15
+#define STARS (SPP*(1+2+4+8))
+
+static int star[STARS];
+static u_char warp_pal[768] = {
+ 0x00, 0x00, 0x00,
+ 0x66, 0x66, 0x66,
+ 0x99, 0x99, 0x99,
+ 0xcc, 0xcc, 0xcc,
+ 0xff, 0xff, 0xff
+ /* the rest is zero-filled by the compiler */
+};
+
+static void
+warp_update(void)
+{
+ int i, j, k, n;
+
+ for (i = 1, k = 0, n = SPP*8; i < 5; i++, n /= 2)
+ for (j = 0; j < n; j++, k++) {
+ vid[star[k]] = 0;
+ star[k] += i;
+ if (star[k] > SCRW*SCRH)
+ star[k] -= SCRW*SCRH;
+ vid[star[k]] = i;
+ }
+}
+
+static int
+warp_saver(video_adapter_t *adp, int blank)
+{
+ int pl;
+
+ if (blank) {
+ /* switch to graphics mode */
+ if (blanked <= 0) {
+ pl = splhigh();
+ set_video_mode(adp, M_VGA_CG320);
+ load_palette(adp, warp_pal);
+#if 0 /* XXX conflict */
+ set_border(adp, 0);
+#endif
+ blanked++;
+ vid = (u_char *)adp->va_window;
+ splx(pl);
+ bzero(vid, SCRW*SCRH);
+ }
+
+ /* update display */
+ warp_update();
+
+ } else {
+ blanked = 0;
+ }
+ return 0;
+}
+
+static int
+warp_init(video_adapter_t *adp)
+{
+ video_info_t info;
+ int i;
+
+ /* check that the console is capable of running in 320x200x256 */
+ if (get_mode_info(adp, M_VGA_CG320, &info)) {
+ log(LOG_NOTICE, "warp_saver: the console does not support M_VGA_CG320\n");
+ return ENODEV;
+ }
+
+ /* randomize the star field */
+ for (i = 0; i < STARS; i++) {
+ star[i] = random() % (SCRW*SCRH);
+ }
+
+ blanked = 0;
+
+ return 0;
+}
+
+static int
+warp_term(video_adapter_t *adp)
+{
+ return 0;
+}
+
+static scrn_saver_t warp_module = {
+ "warp_saver", warp_init, warp_term, warp_saver, NULL,
+};
+
+SAVER_MODULE(warp_saver, warp_module);
diff --git a/sys/modules/ti/Makefile b/sys/modules/ti/Makefile
new file mode 100644
index 000000000000..dc5e4dcd8f26
--- /dev/null
+++ b/sys/modules/ti/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_ti
+SRCS = if_ti.c opt_bdg.h device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/tl/Makefile b/sys/modules/tl/Makefile
new file mode 100644
index 000000000000..6e1170649b95
--- /dev/null
+++ b/sys/modules/tl/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_tl
+SRCS = if_tl.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/trm/Makefile b/sys/modules/trm/Makefile
new file mode 100644
index 000000000000..f984794b3070
--- /dev/null
+++ b/sys/modules/trm/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/trm
+
+KMOD= trm
+SRCS= trm.c trm.h opt_cam.h device_if.h bus_if.h \
+ opt_scsi.h pci_if.h
+
+opt_scsi.h:
+ echo "#define SCSI_DELAY 15000" > opt_scsi.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/twa/Makefile b/sys/modules/twa/Makefile
new file mode 100644
index 000000000000..36456e53f785
--- /dev/null
+++ b/sys/modules/twa/Makefile
@@ -0,0 +1,25 @@
+# $FreeBSD$
+
+#
+# In the line following this comment, a value of 0 on the right hand
+# side will not cause firmware to be bundled. Change this value to 1
+# to bundle the firmware with the driver, which may be flashed onto
+# the controller, if the firmware on the controller is older than the
+# one bundled, and needs to be upgraded. The size of the driver will
+# increase significantly (to over 500kB) if this option is selected.
+#
+TWA_FLASH_FIRMWARE?=0
+
+KMOD = twa
+.PATH: ${.CURDIR}/../../dev/${KMOD}
+SRCS = twa_freebsd.c twa_cam.c twa.c twa_globals.c \
+ bus_if.h device_if.h pci_if.h opt_scsi.h opt_cam.h opt_twa.h
+
+.if $(TWA_FLASH_FIRMWARE) != 0
+CFLAGS+=-DTWA_FLASH_FIRMWARE
+SRCS += twa_fwimg.c
+.endif
+
+#CFLAGS+=-DTWA_DEBUG=0
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/twe/Makefile b/sys/modules/twe/Makefile
new file mode 100644
index 000000000000..2d0639bcd4e8
--- /dev/null
+++ b/sys/modules/twe/Makefile
@@ -0,0 +1,32 @@
+# $FreeBSD$
+
+#
+# The 3ware controller offers a choice of options related to handling of
+# mirror consistency in shutdown situations.
+#
+# If TWE_SHUTDOWN_NOTIFICATION is defined, the driver will inform the
+# controller on clean shutdown. On reboot after an unclean shutdown, the
+# controller will perform a complete mirror rebuild. This is the most
+# "safe" configuration, but it imposes a severe performance penalty in the
+# event of an unexpected reboot.
+#
+# In the alternate configuration, the controller assumes that all writes to
+# a mirror complete successfully. In the case of an unclean shutdown,
+# mirror corruption may occur if the controller is reset or power is lost
+# during a disk write. This configuration is more suitable if the system
+# has reliable power, but may be unstable for other reasons.
+#
+CFLAGS+=-DTWE_SHUTDOWN_NOTIFICATION
+
+#
+# The module can be built to override a compiled-in driver
+#
+#CFLAGS+=-DTWE_OVERRIDE
+
+.PATH: ${.CURDIR}/../../dev/twe
+KMOD= twe
+SRCS= bus_if.h device_if.h pci_if.h twe.c twe_freebsd.c
+
+#CFLAGS+=-DTWE_DEBUG=0
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/tx/Makefile b/sys/modules/tx/Makefile
new file mode 100644
index 000000000000..e6e06a02073b
--- /dev/null
+++ b/sys/modules/tx/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/tx
+KMOD = if_tx
+SRCS = if_tx.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/txp/Makefile b/sys/modules/txp/Makefile
new file mode 100644
index 000000000000..7e1f500e85c5
--- /dev/null
+++ b/sys/modules/txp/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/txp
+
+KMOD= if_txp
+SRCS= if_txp.c opt_bdg.h device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ubsa/Makefile b/sys/modules/ubsa/Makefile
new file mode 100644
index 000000000000..10b772f4ed05
--- /dev/null
+++ b/sys/modules/ubsa/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= ubsa
+SRCS= ubsa.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h
+NOMAN=
+KMODDEPS= ucom
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ubsec/Makefile b/sys/modules/ubsec/Makefile
new file mode 100644
index 000000000000..4c9f58cf14b1
--- /dev/null
+++ b/sys/modules/ubsec/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ubsec
+KMOD = ubsec
+SRCS = ubsec.c opt_ubsec.h
+SRCS += device_if.h bus_if.h pci_if.h
+SRCS += opt_bdg.h opt_bus.h crypto_if.h
+
+opt_ubsec.h:
+ echo "#define UBSEC_DEBUG 1" > opt_ubsec.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ucom/Makefile b/sys/modules/ucom/Makefile
new file mode 100644
index 000000000000..b3cfc72613f9
--- /dev/null
+++ b/sys/modules/ucom/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= ucom
+SRCS= ucom.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ufm/Makefile b/sys/modules/ufm/Makefile
new file mode 100644
index 000000000000..3a19febf465a
--- /dev/null
+++ b/sys/modules/ufm/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/usb
+KMOD= ufm
+SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h ufm.c dsbr100io.h
+NOMAN= YES
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/uftdi/Makefile b/sys/modules/uftdi/Makefile
new file mode 100644
index 000000000000..e6574d1437cd
--- /dev/null
+++ b/sys/modules/uftdi/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= uftdi
+SRCS= uftdi.c uftdireg.h opt_usb.h device_if.h bus_if.h vnode_if.h
+NOMAN=
+KMODDEPS= ucom
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ugen/Makefile b/sys/modules/ugen/Makefile
new file mode 100644
index 000000000000..777b04b10163
--- /dev/null
+++ b/sys/modules/ugen/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= ugen
+SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h ugen.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/uhid/Makefile b/sys/modules/uhid/Makefile
new file mode 100644
index 000000000000..7475f82da703
--- /dev/null
+++ b/sys/modules/uhid/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= uhid
+SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h uhid.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ukbd/Makefile b/sys/modules/ukbd/Makefile
new file mode 100644
index 000000000000..d6ca0487494d
--- /dev/null
+++ b/sys/modules/ukbd/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= ukbd
+SRCS= bus_if.h device_if.h vnode_if.h \
+ opt_usb.h opt_kbd.h opt_ukbd.h \
+ ukbd.c
+
+opt_kbd.h:
+ echo '#define KBD_INSTALL_CDEV 1' > opt_kbd.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ulpt/Makefile b/sys/modules/ulpt/Makefile
new file mode 100644
index 000000000000..aa0f091400c8
--- /dev/null
+++ b/sys/modules/ulpt/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= ulpt
+SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h ulpt.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/umapfs/Makefile b/sys/modules/umapfs/Makefile
new file mode 100644
index 000000000000..488590ff1bb6
--- /dev/null
+++ b/sys/modules/umapfs/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../miscfs/umapfs
+KMOD= umap
+SRCS= vnode_if.h \
+ umap_subr.c umap_vfsops.c umap_vnops.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/umass/Makefile b/sys/modules/umass/Makefile
new file mode 100644
index 000000000000..94922ac0a178
--- /dev/null
+++ b/sys/modules/umass/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= umass
+SRCS= bus_if.h device_if.h \
+ opt_usb.h opt_cam.h opt_scsi.h \
+ umass.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/umct/Makefile b/sys/modules/umct/Makefile
new file mode 100644
index 000000000000..f4086041808e
--- /dev/null
+++ b/sys/modules/umct/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= umct
+SRCS= umct.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h
+NOMAN=
+KMODDEPS= ucom
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/umodem/Makefile b/sys/modules/umodem/Makefile
new file mode 100644
index 000000000000..e3c395f2b054
--- /dev/null
+++ b/sys/modules/umodem/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= umodem
+SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h umodem.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ums/Makefile b/sys/modules/ums/Makefile
new file mode 100644
index 000000000000..f5163312e788
--- /dev/null
+++ b/sys/modules/ums/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= ums
+SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h ums.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/union/Makefile b/sys/modules/union/Makefile
new file mode 100644
index 000000000000..6825a6376d91
--- /dev/null
+++ b/sys/modules/union/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../miscfs/union
+KMOD= union
+SRCS= vnode_if.h \
+ union_subr.c union_vfsops.c union_vnops.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/uplcom/Makefile b/sys/modules/uplcom/Makefile
new file mode 100644
index 000000000000..5380bb596c26
--- /dev/null
+++ b/sys/modules/uplcom/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= uplcom
+SRCS= uplcom.c ucomvar.h opt_usb.h opt_uplcom.h \
+ device_if.h bus_if.h vnode_if.h
+NOMAN=
+KMODDEPS= ucom
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/usb/Makefile b/sys/modules/usb/Makefile
new file mode 100644
index 000000000000..daffaa86e010
--- /dev/null
+++ b/sys/modules/usb/Makefile
@@ -0,0 +1,29 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+S= ${.CURDIR}/../..
+
+.PATH: $S/dev/usb $S/pci
+
+KMOD= usb
+SRCS= bus_if.h device_if.h usb_if.h usb_if.c \
+ vnode_if.h \
+ opt_usb.h \
+ hid.c hid.h usbhid.h \
+ uhub.c \
+ usb.c usb.h \
+ usb_mem.c usb_mem.h \
+ usb_port.h \
+ usb_quirks.c usb_quirks.h \
+ usb_subr.c \
+ usbdevs.h usbdevs_data.h \
+ usbdi.c usbdi.h usbdivar.h \
+ usbdi_util.c usbdi_util.h \
+ usb_ethersubr.c
+
+SRCS+= uhci_pci.c uhci.c uhcireg.h uhcivar.h
+SRCS+= ohci_pci.c ohci.c ohcireg.h ohcivar.h
+SRCS+= opt_bus.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/uscanner/Makefile b/sys/modules/uscanner/Makefile
new file mode 100644
index 000000000000..d6abda3370ad
--- /dev/null
+++ b/sys/modules/uscanner/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+MAINTAINER= n_hibma@freebsd.org
+
+.PATH: ${.CURDIR}/../../dev/usb
+
+KMOD= uscanner
+SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h uscanner.c
+
+CFLAGS+= -g
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/uvisor/Makefile b/sys/modules/uvisor/Makefile
new file mode 100644
index 000000000000..a875c8fbd1f1
--- /dev/null
+++ b/sys/modules/uvisor/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= uvisor
+SRCS= uvisor.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h
+NOMAN=
+KMODDEPS= ucom
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/uvscom/Makefile b/sys/modules/uvscom/Makefile
new file mode 100644
index 000000000000..b539b85cf1d1
--- /dev/null
+++ b/sys/modules/uvscom/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+S= ${.CURDIR}/../..
+.PATH: $S/dev/usb
+
+KMOD= uvscom
+SRCS= uvscom.c ucomvar.h opt_usb.h opt_uvscom.h \
+ device_if.h bus_if.h vnode_if.h
+NOMAN=
+KMODDEPS= ucom
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/vesa/Makefile b/sys/modules/vesa/Makefile
new file mode 100644
index 000000000000..e2da541a3fd5
--- /dev/null
+++ b/sys/modules/vesa/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/syscons ${.CURDIR}/../../i386/isa
+KMOD = vesa
+SRCS = vesa.c scvesactl.c opt_vga.h
+NOMAN =
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/vinum/.gdbinit.crash b/sys/modules/vinum/.gdbinit.crash
new file mode 100644
index 000000000000..f3e643671cb8
--- /dev/null
+++ b/sys/modules/vinum/.gdbinit.crash
@@ -0,0 +1,4 @@
+source .gdbinit.kernel
+source .gdbinit.vinum.paths
+source .gdbinit.vinum
+asf
diff --git a/sys/modules/vinum/.gdbinit.kernel b/sys/modules/vinum/.gdbinit.kernel
new file mode 100644
index 000000000000..c814d7f1d56a
--- /dev/null
+++ b/sys/modules/vinum/.gdbinit.kernel
@@ -0,0 +1,645 @@
+set remotebaud 38400
+set remotetimeout 1
+set complaints 1
+set print pretty
+define xi
+x/10i $eip
+end
+define xs
+x/12x $esp
+end
+define xb
+x/12x $ebp
+end
+define z
+ni
+x/1i $eip
+end
+define zs
+si
+x/1i $eip
+end
+define xp
+printf " esp: "
+output/x $esp
+echo (
+output (((int)$ebp)-(int)$esp)/4-4
+printf " words on stack)\n ebp: "
+output/x $ebp
+printf "\n eip: "
+x/1i $eip
+printf "Saved ebp: "
+output/x *(int*)$ebp
+printf " (maximum of "
+output ((*(int*)$ebp)-(int)$ebp)/4-4
+printf " parameters possible)\nSaved eip: "
+x/1i *(int*)($ebp+4)
+printf "\nParm 1 at "
+output/x (int) ($ebp+8)
+printf ": "
+output (char*) *(int*)($ebp+8)
+printf "\nParm 2 at "
+output/x (int) ($ebp+12)
+printf ": "
+output (char*) *(int*)($ebp+12)
+printf "\nParm 3 at "
+output/x (int) ($ebp+16)
+printf ": "
+output (char*) *(int*)($ebp+16)
+printf "\nParm 4 at "
+output/x (int) ($ebp+20)
+printf ": "
+output (char*) *(int*)($ebp+20)
+echo \n
+end
+document xp
+Show the register contents and the first four parameter
+words of the current frame.
+end
+define xxp
+printf " esp: "
+output/x $esp
+printf "\n ebp: "
+output/x $ebp
+printf "\n eip: "
+x/1i $eip
+printf "Saved ebp: "
+output/x *(int*)$ebp
+printf " (maximum of "
+output ((*(int*)$ebp)-(int)$ebp)/4-4
+printf " parameters possible)\nSaved eip: "
+x/1i *(int*)($ebp+4)
+printf "\nParm 1 at "
+output/x (int) ($ebp+8)
+printf ": "
+output (char*) *(int*)($ebp+8)
+printf "\nParm 2 at "
+output/x (int) ($ebp+12)
+printf ": "
+output (char*) *(int*)($ebp+12)
+printf "\nParm 3 at "
+output/x (int) ($ebp+16)
+printf ": "
+output (char*) *(int*)($ebp+16)
+printf "\nParm 4 at "
+output/x (int) ($ebp+20)
+printf ": "
+output (char*) *(int*)($ebp+20)
+printf "\nParm 5 at "
+output/x (int) ($ebp+24)
+printf ": "
+output (char*) *(int*)($ebp+24)
+printf "\nParm 6 at "
+output/x (int) ($ebp+28)
+printf ": "
+output (char*) *(int*)($ebp+28)
+printf "\nParm 7 at "
+output/x (int) ($ebp+32)
+printf ": "
+output (char*) *(int*)($ebp+32)
+printf "\nParm 8 at "
+output/x (int) ($ebp+36)
+printf ": "
+output (char*) *(int*)($ebp+36)
+printf "\nParm 9 at "
+output/x (int) ($ebp+40)
+printf ": "
+output (char*) *(int*)($ebp+40)
+printf "\nParm 10 at "
+output/x (int) ($ebp+44)
+printf ": "
+output (char*) *(int*)($ebp+44)
+echo \n
+end
+document xxp
+Show the register contents and the first ten parameter
+words of the current frame.
+end
+define xp0
+x/12x *(int*)$esp
+p *(int*)$esp
+p (char*)*$esp
+end
+define xp1
+x/12x *(int*)($ebp+4)
+p *(int*)($ebp+4)
+p (char**)($ebp+4)
+end
+define xp2
+x/12x *(int*)($ebp+8)
+p *(int*)($ebp+8)
+p *(char**)($ebp+8)
+end
+define xp3
+x/12x *(int*)($ebp+12)
+p *(int*)($ebp+12)
+p (char**)($ebp+12)
+end
+define xp4
+x/12x *(int*)($ebp+16)
+p *(int*)($ebp+16)
+p (char**)($ebp+16)
+end
+document xp0
+Show the first parameter of current stack frame in various formats
+end
+document xp1
+Show the second parameter of current stack frame in various formats
+end
+document xp2
+Show the third parameter of current stack frame in various formats
+end
+document xp3
+Show the fourth parameter of current stack frame in various formats
+end
+document xp4
+Show the fifth parameter of current stack frame in various formats
+end
+define f0
+f 0
+xp
+end
+define f1
+f 1
+xp
+end
+define f2
+f 2
+xp
+end
+define f3
+f 3
+xp
+end
+define f4
+f 4
+xp
+end
+define f5
+f 5
+xp
+end
+document f0
+Select stack frame 0 and show assembler-level details
+end
+document f1
+Select stack frame 1 and show assembler-level details
+end
+document f2
+Select stack frame 2 and show assembler-level details
+end
+document f3
+Select stack frame 3 and show assembler-level details
+end
+document f4
+Select stack frame 4 and show assembler-level details
+end
+document f5
+Select stack frame 5 and show assembler-level details
+end
+document z
+Single step 1 instruction (over calls) and show next instruction.
+end
+document zs
+Single step 1 instruction (through calls) and show next instruction.
+end
+document xi
+List the next 10 instructions from the current IP value
+end
+document xs
+Show the last 12 words on stack in hex
+end
+document xb
+Show 12 words starting at current BP value in hex
+end
+define tr
+target remote /dev/cuaa1
+end
+document tr
+Attach to a remote kernel via /dev/cuaa0
+end
+set output-radix 16
+define pname
+p (char *)curproc->p_comm
+end
+document pname
+Print the command name of the current process
+end
+define bpp
+set $bp = (struct buf *) $arg0
+ if $bp->b_dev
+ printf " Buffer at 0x%x: dev 0x%x data 0x%x bcount 0x%x blkno 0x%x resid 0x%x\n", \
+ $bp, \
+ $bp->b_dev->si_udev, \
+ $bp->b_data, \
+ $bp->b_bcount, \
+ $bp->b_blkno, \
+ $bp->b_resid
+ else
+ printf " Buffer at 0x%x: dev (none) data 0x%x bcount 0x%x blkno 0x%x resid 0x%x\n", \
+ $bp, \
+ $bp->b_data, \
+ $bp->b_bcount, \
+ $bp->b_blkno, \
+ $bp->b_resid
+ end
+ printf " flags 0x%x: ", $bp->b_flags
+ if $bp->b_flags & 0x10
+ printf "busy "
+ end
+ if $bp->b_flags & 0x40
+ printf "call "
+ end
+ if $bp->b_flags & 0x200
+ printf "done "
+ end
+ if $bp->b_flags & 0x800
+ printf "error "
+ end
+ if $bp->b_flags & 0x40000
+ printf "phys "
+ end
+ if $bp->b_flags & 0x100000
+ printf "read "
+ end
+ printf "\n"
+end
+define bpl
+set $bp = (struct buf *) $arg0
+printf "b_proc: "
+output $bp->b_proc
+printf "\nb_flags: "
+output $bp->b_flags
+printf "\nb_qindex: "
+output $bp->b_qindex
+printf "\nb_usecount: "
+output $bp->b_usecount
+printf "\nb_error: "
+output $bp->b_error
+printf "\nb_bufsize: "
+output $bp->b_bufsize
+printf "\nb_bcount: "
+output $bp->b_bcount
+printf "\nb_resid: "
+output $bp->b_resid
+printf "\nb_dev: "
+output $bp->b_dev
+printf "\nb_data: "
+output $bp->b_data
+printf "\nb_kvasize: "
+output $bp->b_kvasize
+printf "\nb_lblkno: "
+output $bp->b_lblkno
+printf "\nb_blkno: "
+output $bp->b_blkno
+printf "\nb_iodone: "
+output $bp->b_iodone
+printf "\nb_vp: "
+output $bp->b_vp
+printf "\nb_dirtyoff: "
+output $bp->b_dirtyoff
+printf "\nb_dirtyend: "
+output $bp->b_dirtyend
+printf "\nb_generation: "
+output $bp->b_generation
+printf "\nb_rcred: "
+output $bp->b_rcred
+printf "\nb_wcred: "
+output $bp->b_wcred
+printf "\nb_validoff: "
+output $bp->b_validoff
+printf "\nb_validend: "
+output $bp->b_validend
+printf "\nb_pblkno: "
+output $bp->b_pblkno
+printf "\nb_saveaddr: "
+output $bp->b_saveaddr
+printf "\nb_savekva: "
+output $bp->b_savekva
+printf "\nb_driver1: "
+output $bp->b_driver1
+printf "\nb_driver2: "
+output $bp->b_driver2
+printf "\nb_spc: "
+output $bp->b_spc
+printf "\nb_npages: "
+output $bp->b_npages
+printf "\n"
+end
+define bp
+bpp bp
+end
+define bpd
+ printf "Buffer data:\n%s", (char *) bp->b_data
+end
+document bpd
+Show the contents (char*) of bp->data in the current frame.
+end
+document bp
+Show information about the buffer header pointed to by the
+variable bp in the current frame.
+end
+document bpp
+Show summary information about the buffer header (struct bp) pointed
+at by the parameter.
+end
+document bpl
+Show detailled information about the buffer header (struct bp) pointed
+at by the parameter.
+end
+document bpl
+Show detailled information about the buffer header (struct bp) pointed
+at by the local variable bp.
+end
+define bx
+printf "\n b_vnbufs "
+output/x bp->b_vnbufs
+printf "\n b_freelist "
+output/x bp->b_freelist
+printf "\n b_act "
+output/x bp->b_act
+printf "\n b_flags "
+output/x bp->b_flags
+printf "\n b_qindex "
+output/x bp->b_qindex
+printf "\n b_usecount "
+output/x bp->b_usecount
+printf "\n b_error "
+output/x bp->b_error
+printf "\n b_bufsize "
+output/x bp->b_bufsize
+printf "\n b_bcount "
+output/x bp->b_bcount
+printf "\n b_resid "
+output/x bp->b_resid
+printf "\n b_dev "
+output/x bp->b_dev
+printf "\n b_data "
+output/x bp->b_data
+printf "\n b_kvasize "
+output/x bp->b_kvasize
+printf "\n b_blkno "
+output/x bp->b_blkno
+printf "\n b_iodone_chain "
+output/x bp->b_iodone_chain
+printf "\n b_vp "
+output/x bp->b_vp
+printf "\n b_dirtyoff "
+output/x bp->b_dirtyoff
+printf "\n b_validoff "
+output/x bp->b_validoff
+echo \n
+end
+define ddb
+set boothowto=0x80000000
+s
+end
+document ddb
+Switch back to ddb.
+end
+define ps
+ set $nproc = nprocs
+ set $aproc = allproc.lh_first
+ set $proc = allproc.lh_first
+ printf " pid proc addr uid ppid pgrp flag stat comm wchan\n"
+ while (--$nproc >= 0)
+ set $pptr = $proc.p_pptr
+ if ($pptr == 0)
+ set $pptr = $proc
+ end
+ if ($proc.p_stat)
+ printf "%5d %08x %08x %4d %5d %5d %06x %d %-10s ", \
+ $proc.p_pid, $aproc, \
+ $proc.p_addr, $proc.p_cred->p_ruid, $pptr->p_pid, \
+ $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
+ &$proc.p_comm[0]
+ if ($proc.p_wchan)
+ if ($proc.p_wmesg)
+ printf "%s ", $proc.p_wmesg
+ end
+ printf "%x", $proc.p_wchan
+ end
+ printf "\n"
+ end
+ set $aproc = $proc.p_list.le_next
+ if ($aproc == 0 && $nproc > 0)
+ set $aproc = zombproc
+ end
+ set $proc = $aproc
+ end
+end
+document ps
+"ps" -- when kernel debugging, type out a ps-like listing of active processes.
+end
+define pcb
+ set $nproc = nprocs
+ set $aproc = allproc.lh_first
+ set $proc = allproc.lh_first
+ while (--$nproc >= 0)
+ set $pptr = $proc.p_pptr
+ if ($proc->p_pid == $arg0)
+ set $pcba = $pptr->p_addr->u_pcb
+ printf "ip: %08x sp: %08x bp: %08x bx: %08x\n", $pcba->pcb_eip, $pcba->pcb_esp, $pcba->pcb_ebp, $pcba->pcb_ebx
+ x/1i $pcba->pcb_eip
+ set $nproc = 0
+ end
+ set $aproc = $proc.p_list.le_next
+ if ($aproc == 0 && $nproc > 0)
+ set $aproc = zombproc
+ end
+ set $proc = $aproc
+ end
+end
+document pcb
+Show some pcb contents of process whose pid is specified.
+end
+define btr
+set $frame = $arg0
+set $fno = 0
+while (*(int *) $frame > 0xc0000000)
+ set $myebp = *(int *) $frame
+ set $myeip = *(int *) ($frame + 4)
+ printf " frame %d at %p: ebp %8x, eip ", $fno, $frame, $myebp
+ x/1i $myeip
+ set $frame = $myebp
+ set $fno = $fno + 1
+end
+end
+document btr
+Show a backtrace from the ebp address specified. This can be used to
+get a backtrace from any stack resident in memory.
+end
+define btp
+ set $nproc = nprocs
+ set $aproc = allproc.lh_first
+ set $proc = allproc.lh_first
+ while (--$nproc >= 0)
+ if ($proc->p_pid == $arg0)
+ btr $proc->p_addr->u_pcb->pcb_ebp
+ set $nproc = 0
+ else
+ set $aproc = $proc.p_list.le_next
+ if ($aproc == 0 && $nproc > 0)
+ set $aproc = zombproc
+ end
+ set $proc = $aproc
+ end
+ end
+end
+document btp
+Show a backtrace for the process whose pid is specified as a parameter.
+end
+define btpa
+ set $nproc = nprocs
+ set $aproc = allproc.lh_first
+ set $proc = allproc.lh_first
+ printf " pid proc addr uid ppid pgrp flag stat comm wchan\n"
+ while (--$nproc >= 0)
+ set $pptr = $proc.p_pptr
+ if ($pptr == 0)
+ set $pptr = $proc
+ end
+ if ($proc.p_stat)
+ printf "%5d %08x %08x %4d %5d %5d %06x %d %-10s ", \
+ $proc.p_pid, $aproc, \
+ $proc.p_addr, $proc.p_cred->p_ruid, $pptr->p_pid, \
+ $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
+ &$proc.p_comm[0]
+ if ($proc.p_wchan)
+ if ($proc.p_wmesg)
+ printf "%s ", $proc.p_wmesg
+ end
+ printf "%x", $proc.p_wchan
+ end
+ printf "\n"
+ if ($proc->p_flag & 4)
+ btr $proc->p_addr->u_pcb->pcb_ebp
+ else
+ echo (not loaded)\n
+ end
+ end
+ set $aproc = $proc.p_list.le_next
+ if ($aproc == 0 && $nproc > 0)
+ set $aproc = zombproc
+ end
+ set $proc = $aproc
+ end
+end
+document btpa
+Show backtraces for all processes in the system.
+end
+define btpp
+ if ($myvectorproc->p_flag & 4)
+ btr $myvectorproc->p_addr->u_pcb->pcb_ebp
+ else
+ echo (not loaded)\n
+ end
+end
+document btpp
+Show a backtrace for the process previously selected with 'defproc'.
+end
+define defproc
+ set $nproc = nprocs
+ set $aproc = allproc.lh_first
+ set $proc = allproc.lh_first
+ while (--$nproc >= 0)
+ if ($proc->p_pid == $arg0)
+ set $pptr = $proc.p_pptr
+ if ($pptr == 0)
+ set $pptr = $proc
+ end
+ set $myvectorproc = $proc
+ if ($proc.p_stat)
+ printf "%5d %08x %08x %4d %5d %5d %06x %d %-10s ", \
+ $proc.p_pid, $aproc, \
+ $proc.p_addr, $proc.p_cred->p_ruid, $pptr->p_pid, \
+ $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
+ &$proc.p_comm[0]
+ if ($proc.p_wchan)
+ if ($proc.p_wmesg)
+ printf "%s ", $proc.p_wmesg
+ end
+ printf "%x", $proc.p_wchan
+ end
+ printf "\n"
+ end
+ btpp
+ set $nproc = 0
+ else
+ set $proc = $proc.p_list.le_next
+ end
+ end
+end
+document defproc
+Specify a process for btpp and fr commands.
+end
+define fr
+set $fno = 0
+set $searching = 1
+if ($myvectorproc->p_flag & 4)
+ set $frame = $myvectorproc->p_addr->u_pcb->pcb_ebp
+ while (($searching == 1) && (*(int *) $frame > 0xc0000000))
+ set $myebp = *(int *) $frame
+ set $myeip = *(int *) ($frame + 4)
+ if ($fno == $arg0)
+ printf " frame %d at %p: ebp %8x, eip ", $fno, $frame, $myebp
+ x/1i $myeip
+ printf "Called from %8x, stack frame at %8x\n", *(int *) ($myebp+4), *(int *) $myebp
+ printf "last 20 local variables:\n"
+ x/20x ($myebp-80)
+ printf "call parameters:\n"
+ x/8x ($myebp+8)
+ set $searching = 0
+ else
+ set $frame = $myebp
+ set $fno = $fno + 1
+ end
+ end
+ if ($searching == 1)
+ echo frame not found\n
+ end
+else
+ printf "process %d is not loaded in memory\n", $myvectorproc->p_pid
+end
+end
+document fr
+Show the frame of the stack of the process previously selected with 'defproc'.
+end
+set height 70
+set width 120
+define vdev
+if (vp->v_type == VBLK)
+ p *vp->v_un.vu_spec.vu_specinfo
+ printf "numoutput: %d\n", vp->v_numoutput
+else
+ echo "Not a block device"
+end
+end
+document vdev
+Show some information of the vnode pointed to by the local variable vp.
+end
+define y
+echo Check your .gdbinit, it contains a y command\n
+end
+define kldstat
+ set $file = files.tqh_first
+ printf "Id Refs Address Size Name\n"
+ while ($file != 0)
+ printf "%2d %4d 0x%8x %8x %s\n", \
+ $file->id, \
+ $file->refs, \
+ $file->address, \
+ $file->size, \
+ $file->filename
+ set $file = $file->link.tqe_next
+ end
+end
+document kldstat
+Equivalent of the kldstat(9) command, without options.
+end
+define msgbuf
+printf "%s", msgbufp->msg_ptr
+end
+document msgbuf
+Print the system message buffer (dmesg). This can take a long time due to the time it takes to transmit the data across a serial line.
+end
diff --git a/sys/modules/vinum/.gdbinit.serial b/sys/modules/vinum/.gdbinit.serial
new file mode 100644
index 000000000000..d302f8aff479
--- /dev/null
+++ b/sys/modules/vinum/.gdbinit.serial
@@ -0,0 +1,5 @@
+source .gdbinit.kernel
+source .gdbinit.vinum.paths
+source .gdbinit.vinum
+tr
+asf
diff --git a/sys/modules/vinum/.gdbinit.vinum b/sys/modules/vinum/.gdbinit.vinum
new file mode 100644
index 000000000000..d494be39afaf
--- /dev/null
+++ b/sys/modules/vinum/.gdbinit.vinum
@@ -0,0 +1,299 @@
+define rq
+rqq rq
+end
+document rq
+Show information about the request pointed to by the variable rq in the current frame.
+end
+define rqq
+set $rq = (struct request *) $arg0
+printf "Request: \n"
+output/x *$rq
+printf "\n"
+bpp $rq->bp
+set $rqg = $rq->rqg
+while ($rqg != 0)
+ printf "\nRequest group at %x:\n", $rqg
+ output/x *$rqg
+ printf "\n"
+ set $rqno = 0
+ while ($rqno < $rqg->count)
+ printf "rqg->rqe [%d]: ", $rqno
+ rrqe &$rqg->rqe[$rqno]
+ set $rqno = $rqno + 1
+ end
+ set $rqg = $rqg->next
+ end
+end
+document rqq
+Show information about the request (struct rq) pointed at by the parameter
+end
+define rqe
+rrqe rqe
+end
+define rrqe
+set $rqe = (struct rqelement *) $arg0
+ printf "sdoffset 0x%x, useroffset 0x%x, dataoffset 0x%x, datalen 0x%x, groupoffset 0x%x, grouplen 0x%x, buflen 0x%x\n", \
+ $rqe->sdoffset, \
+ $rqe->useroffset, \
+ $rqe->dataoffset, \
+ $rqe->datalen, \
+ $rqe->groupoffset, \
+ $rqe->grouplen, \
+ $rqe->buflen
+ printf " Flags 0x%x, Subdisk %d Drive %d\n", \
+ $rqe->flags, \
+ $rqe->sdno, \
+ $rqe->driveno
+ bpp &$rqe->b
+end
+document rqe
+Show information about the request element pointed to by the variable rqe in the current frame.
+end
+document rrqe
+Show information about the request element (struct rqe) pointed at by the parameter.
+end
+define rqq0
+printf "rq->prq [0].rqe[0].sdno: "
+output/x rq->prq[0].rqe[0].sdno
+printf "\nBuffer: device: "
+output/x rq->prq[0].rqe[0].b.b_dev
+printf " data: "
+output/x rq->prq[0].rqe[0].b.b_data
+printf " length: "
+output/x rq->prq[0].rqe[0].b.b_bcount
+printf " drive offset: "
+output/x rq->prq[0].rqe[0].b.b_blkno
+printf " subdisk offset: "
+output/x rq->prq[0].rqe[0].sdoffset
+printf "\nFlags: "
+if (rq->prq[0].rqe[0].b.b_flags & 0x10)
+printf "busy "
+end
+if (rq->prq[0].rqe[0].b.b_flags & 0x200)
+printf "done "
+end
+if (rq->prq[0].rqe[0].b.b_flags & 0x800)
+printf "error "
+end
+if (rq->prq[0].rqe[0].b.b_flags & 0x100000)
+printf "read "
+end
+output/x rq->prq[0].rqe[0].b.b_flags
+printf "\nrq->prq [0].rqe[1].sdno: "
+output/x rq->prq[0].rqe[1].sdno
+printf "\nBuffer: device: "
+output/x rq->prq[0].rqe[1].b.b_dev
+printf " data: "
+output/x rq->prq[0].rqe[1].b.b_data
+printf " length: "
+output/x rq->prq[0].rqe[1].b.b_bcount
+printf " drive offset: "
+output/x rq->prq[0].rqe[1].b.b_blkno
+printf " subdisk offset: "
+output/x rq->prq[0].rqe[1].sdoffset
+printf "\nFlags: "
+output/x rq->prq[0].rqe[1].b.b_flags
+echo \n
+end
+define rqq1
+printf "\nrq->prq [1].rqe[0].sdno: "
+output/x rq->prq[1].rqe[0].sdno
+printf "\nBuffer: device: "
+output/x rq->prq[1].rqe[0].b.b_dev
+printf " data: "
+output/x rq->prq[1].rqe[0].b.b_data
+printf " length: "
+output/x rq->prq[1].rqe[0].b.b_bcount
+printf " drive offset: "
+output/x rq->prq[1].rqe[0].b.b_blkno
+printf " subdisk offset: "
+output/x rq->prq[1].rqe[0].sdoffset
+printf "\nFlags: "
+output/x rq->prq[1].rqe[0].b.b_flags
+printf "\nrq->prq [1].rqe[1].sdno: "
+output/x rq->prq[1].rqe[1].sdno
+printf "\nBuffer: device: "
+output/x rq->prq[1].rqe[1].b.b_dev
+printf " data: 0x%x length 0x%x drive offset 0x%x sd offset 0x%x\n" rq->prq[1].rqe[1].b.b_data,
+ rq->prq[1].rqe[1].b.b_bcount,
+ rq->prq[1].rqe[1].b.b_blkno,
+ rq->prq[1].rqe[1].sdoffset
+printf "\nFlags: "
+output/x rq->prq[1].rqe[1].b.b_flags
+echo \n
+end
+define xy
+bpp
+echo stripeoffset
+p stripeoffset
+echo stripebase
+p stripebase
+echo sdno
+p sdno
+echo sdoffset
+p sdoffset
+echo rqe->sectors
+p rqe->sectors
+echo rqe->sdoffset
+p rqe->sdoffset
+end
+# kernel equivalent of 'info -V'
+define rqi
+ set $rqipe = rqip
+ set $rqip = $rqipe + 1
+ set $rqend = rqinfo + 128
+ if ($rqip == $rqend)
+ set $rqip = rqinfo
+ end
+ set $done = 0
+ while ($done == 0)
+ if ($rqip->bp != 0)
+ printf "%X:\t%d.%06d\tUBP: %x\t", $rqip, $rqip->timestamp.tv_sec, $rqip->timestamp.tv_usec, $rqip->bp
+ p $rqip->type
+ printf " user "
+ bpp $rqip->bp
+ if ($rqip->type < loginfo_rqe)
+ printf " copied"
+ bpp &$rqip->info
+ else
+ rrqe &$rqip->info
+ end
+ end
+ set $rqip = $rqip + 1
+ if ($rqip == $rqipe)
+ set $done = 1
+ end
+ if ($rqip == $rqend)
+ set $rqip = rqinfo
+ end
+ end
+end
+define rqinfo
+ set $rqipe = rqip
+ set $rqip = $rqipe + 1
+ set $rqend = rqinfo + 128
+ if ($rqip == $rqend)
+ set $rqip = rqinfo
+ end
+ set $done = 0
+ printf "\nTime\t\t\t Event\t\t Buf\tDev\t Offset\tBytes\tSD\tSDoff\tDoffset\tGoffset\n\n"
+ while ($done == 0)
+ if ($rqip->bp != 0)
+ printf "%d.%06d\t", $rqip->timestamp.tv_sec, $rqip->timestamp.tv_usec
+ if ($rqip->type == loginfo_user_bp)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "1VS Read"
+ else
+ printf "1VS Write"
+ end
+ printf "\t%p\t%d.%d\t0x%-9x\t%ld\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount
+ end
+
+ if ($rqip->type == loginfo_user_bpl)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "2LR Read"
+ else
+ printf "2LR Write"
+ end
+ printf "\t%p\t%d.%d\t0x%-9x\t%ld\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount
+ end
+
+ if ($rqip->type == loginfo_rqe)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "3RQ Read"
+ else
+ printf "3RQ Write"
+ end
+ printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
+ end
+
+ if ($rqip->type == loginfo_iodone)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "4DN Read"
+ else
+ printf "4DN Write"
+ end
+ printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
+ end
+
+ if ($rqip->type == loginfo_raid5_data)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "5RD Read"
+ else
+ printf "5RD Write"
+ end
+ printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
+ end
+
+ if ($rqip->type == loginfo_raid5_parity)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "6RP Read"
+ else
+ printf "6RP Write"
+ end
+ printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
+ end
+
+ if ($rqip->type == loginfo_sdio)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "7VS Read"
+ else
+ printf "7VS Write"
+ end
+ printf "\t%p\t\t 0x%-9x\t%ld\t%d\n", $rqip->bp, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount, $rqip->devminor & 0xff
+ end
+
+ if ($rqip->type == loginfo_sdiol)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "8LR Read"
+ else
+ printf "8LR Write"
+ end
+ printf "\t%p\t%d.%d\t0x%-9x\t%ld\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount
+ end
+
+ if ($rqip->type == loginfo_lockwait)
+ printf "Lockwait %p\t%d\t 0x%x\n", $rqip->bp, $rqip->info.lockinfo.plexno, $rqip->info.lockinfo.stripe
+ end
+
+ if ($rqip->type == loginfo_lock)
+ printf "Lock \t%p\t%d\t 0x%x\n", $rqip->bp, $rqip->info.lockinfo.plexno, $rqip->info.lockinfo.stripe
+ end
+
+ if ($rqip->type == loginfo_unlock)
+ printf "Unlock \t%p\t%d\t 0x%x\n", $rqip->bp, $rqip->info.lockinfo.plexno, $rqip->info.lockinfo.stripe
+ end
+
+ if ($rqip->type == loginfo_sdiodone)
+ if ($rqip->info.b.b_flags & 0x00100000)
+ printf "9DN Read"
+ else
+ printf "9DN Write"
+ end
+ printf "\t%p\t\t 0x%-9x\t%ld\t%d\n", $rqip->bp, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount, $rqip->devminor
+ end
+
+ end
+ set $rqip = $rqip + 1
+ if ($rqip == $rqipe)
+ set $done = 1
+ end
+ if ($rqip == $rqend)
+ set $rqip = rqinfo
+ end
+ end
+end
+document rqinfo
+Show the Vinum request log buffer, like 'vinum info -V'
+end
+define meminfo
+printf "Block\tSequence\t size\t address\t line\t\tfile\n"
+set $i = 0
+while $i < malloccount
+ printf "%6d\t%6d\t\t%6d\t0x%08x\t%6d\t\t%s\n", $i, malloced [$i].seq, malloced[$i].size, malloced[$i].address, malloced[$i].line, &malloced[$i].file
+ set $i = $i + 1
+end
+end
+document meminfo
+Equivalent of 'vinum info -v' command
+end
diff --git a/sys/modules/vinum/.gdbinit.vinum.paths b/sys/modules/vinum/.gdbinit.vinum.paths
new file mode 100644
index 000000000000..104ffec1c5fc
--- /dev/null
+++ b/sys/modules/vinum/.gdbinit.vinum.paths
@@ -0,0 +1,19 @@
+dir /usr/src/sys/modules/vinum
+dir /usr/src/sys/i386/conf
+dir /usr/src/sys
+define asf
+ set $file = linker_files.tqh_first
+ set $found = 0
+ while ($found == 0)
+ if (*$file->filename == 'v')
+ set $found = 1
+ else
+ set $file = $file->link.tqe_next
+ end
+ end
+ shell /usr/bin/objdump --section-headers /modules/vinum.ko | grep ' .text' | awk '{print "add-symbol-file /modules/vinum.ko \$file->address+0x" $4}' > .asf
+ source .asf
+end
+document asf
+Find the load address of Vinum in the kernel and add the symbols at this address
+end
diff --git a/sys/modules/vinum/Makefile b/sys/modules/vinum/Makefile
new file mode 100644
index 000000000000..568c82d3b3e0
--- /dev/null
+++ b/sys/modules/vinum/Makefile
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+MAINTAINER= grog@FreeBSD.org
+
+.PATH: ${.CURDIR}/../../dev/vinum
+KMOD= vinum
+
+SRCS= opt_vinum.h request.h vinum.c vinumconfig.c vinumdaemon.c \
+ vinumext.h vinumhdr.h vinuminterrupt.c vinumio.c vinumio.h \
+ vinumioctl.c vinumkw.h vinumlock.c vinummemory.c vinumparser.c \
+ vinumraid5.c vinumrequest.c vinumrevive.c vinumstate.c \
+ vinumstate.h vinumutil.c vinumvar.h vnode_if.h
+
+NOMAN=
+
+# If you remove -DVINUMDEBUG here, you must also do it in src/sbin/Makefile.
+# Otherwise a number of ioctls will fail.
+CFLAGS+= -DVINUMDEBUG -g -O
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/vn/Makefile b/sys/modules/vn/Makefile
new file mode 100644
index 000000000000..e9117dc3e568
--- /dev/null
+++ b/sys/modules/vn/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/vn
+KMOD= vn
+SRCS= vn.c vnode_if.h
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/vpo/Makefile b/sys/modules/vpo/Makefile
new file mode 100644
index 000000000000..3934e031c9d3
--- /dev/null
+++ b/sys/modules/vpo/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ppbus
+KMOD= vpo
+SRCS= bus_if.h device_if.h ppbus_if.h \
+ opt_cam.h opt_scsi.h opt_vpo.h \
+ immio.c vpo.c vpoio.c
+NOMAN=
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/vr/Makefile b/sys/modules/vr/Makefile
new file mode 100644
index 000000000000..55f8298c8132
--- /dev/null
+++ b/sys/modules/vr/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_vr
+SRCS = if_vr.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/wb/Makefile b/sys/modules/wb/Makefile
new file mode 100644
index 000000000000..b2a8ced7fa47
--- /dev/null
+++ b/sys/modules/wb/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_wb
+SRCS = if_wb.c opt_bdg.h device_if.h
+SRCS += bus_if.h miibus_if.h pci_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/wi/Makefile b/sys/modules/wi/Makefile
new file mode 100644
index 000000000000..e031b34fd5af
--- /dev/null
+++ b/sys/modules/wi/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/wi
+
+KMOD= if_wi
+SRCS= if_wi.c if_wi_pccard.c if_wi_pci.c wi_hostap.c \
+ card_if.h device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/wx/Makefile b/sys/modules/wx/Makefile
new file mode 100644
index 000000000000..63ed60cefaa8
--- /dev/null
+++ b/sys/modules/wx/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_wx
+SRCS = if_wx.c opt_bdg.h device_if.h bus_if.h pci_if.h miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/xe/Makefile b/sys/modules/xe/Makefile
new file mode 100644
index 000000000000..3dce82cbcf97
--- /dev/null
+++ b/sys/modules/xe/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/xe
+KMOD = if_xe
+SRCS = if_xe.c opt_bdg.h device_if.h card_if.h bus_if.h pci_if.h
+SRCS += if_xevar.h if_xereg.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/xl/Makefile b/sys/modules/xl/Makefile
new file mode 100644
index 000000000000..82931cf84e92
--- /dev/null
+++ b/sys/modules/xl/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_xl
+SRCS = if_xl.c opt_bdg.h device_if.h bus_if.h pci_if.h
+SRCS += miibus_if.h
+KMODDEPS = miibus
+
+.include <bsd.kmod.mk>