commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnumach] 50/56: Imported Upstream version 1.4


From: Samuel Thibault
Subject: [gnumach] 50/56: Imported Upstream version 1.4
Date: Sat, 28 Sep 2013 12:43:20 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch master
in repository gnumach.

commit 3a767fcfe5b1d9b8dda4214e9a35f04687989af0
Author: Samuel Thibault <address@hidden>
Date:   Sat Sep 28 10:23:38 2013 +0000

    Imported Upstream version 1.4
---
 .gitignore                             |   39 -
 =announce-1.0                          |   40 -
 =announce-1.1                          |   34 -
 =announce-1.1.1                        |   36 -
 =announce-1.2                          |   27 -
 =announce-1.3                          |   47 -
 ChangeLog                              |10072 +++++++++++++++++++++++-
 ChangeLog.0                            |  721 ++
 ChangeLog.00                           |  858 +++
 INSTALL                                |  370 +
 Makefile.in                            | 7947 +++++++++++++++++++
 README                                 |    2 +-
 aclocal.m4                             | 1091 +++
 build-aux/compile                      |  347 +
 build-aux/config.guess                 | 1558 ++++
 build-aux/config.sub                   | 1791 +++++
 build-aux/depcomp                      |  791 ++
 build-aux/install-sh                   |  527 ++
 build-aux/mdate-sh                     |  224 +
 build-aux/missing                      |  215 +
 build-aux/test-driver                  |  127 +
 build-aux/texinfo.tex                  |10079 ++++++++++++++++++++++++
 config.h.in                            |  576 ++
 configure                              |13055 ++++++++++++++++++++++++++++++++
 ddb/db_write_cmd.h                     |   16 -
 device/dev_forward.defs                |   44 -
 doc/.gitignore                         |    4 -
 doc/mach.info                          |  163 +
 doc/mach.info-1                        | 6735 ++++++++++++++++
 doc/mach.info-2                        | 1700 +++++
 doc/stamp-vti                          |    4 +
 doc/version.texi                       |    4 +
 gitlog-to-changelog                    |  432 --
 i386/i386/.gitignore                   |    1 -
 ipc/ipc_print.h                        |   20 -
 kern/server_loop.ch                    |  104 -
 linux/src/arch/i386/kernel/irq.c       |  582 --
 linux/src/drivers/block/floppy.c       | 4284 -----------
 linux/src/drivers/block/genhd.c        |  761 --
 linux/src/drivers/net/Space.c          |  541 --
 linux/src/drivers/net/auto_irq.c       |  123 -
 linux/src/drivers/net/cb_shim.c        |  296 -
 linux/src/drivers/net/iow.h            |    6 -
 linux/src/drivers/net/net_init.c       |  439 --
 linux/src/drivers/net/smc9194.c        | 1779 -----
 linux/src/drivers/net/smc9194.h        |  240 -
 linux/src/drivers/net/wavelan.p.h      |  635 --
 linux/src/drivers/scsi/FlashPoint.c    |12156 -----------------------------
 linux/src/drivers/scsi/aic7xxx_proc.c  |  384 -
 linux/src/drivers/scsi/aic7xxx_seq.c   |  769 --
 linux/src/drivers/scsi/eata_dma.c      | 1603 ----
 linux/src/drivers/scsi/eata_dma_proc.c |  493 --
 linux/src/drivers/scsi/eata_pio_proc.c |  135 -
 linux/src/drivers/scsi/g_NCR5380.c     |  729 --
 linux/src/drivers/scsi/gdth_proc.c     |  656 --
 linux/src/drivers/scsi/scripts.h       | 1357 ----
 linux/src/drivers/scsi/scsiio.c        | 1537 ----
 linux/src/drivers/scsi/scsiiom.c       | 1540 ----
 linux/src/init/main.c                  | 1135 ---
 linux/src/init/version.c               |   30 -
 linux/src/kernel/dma.c                 |   99 -
 linux/src/kernel/printk.c              |  253 -
 linux/src/kernel/resource.c            |  129 -
 linux/src/kernel/sched.c               | 1747 -----
 linux/src/kernel/softirq.c             |   54 -
 linux/src/lib/vsprintf.c               |  306 -
 linux/src/net/core/dev.c               | 1629 ----
 tests/.gitignore                       |    1 -
 vm/vm_print.h                          |   22 -
 69 files changed, 58950 insertions(+), 37301 deletions(-)

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 4488bc2..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,39 +0,0 @@
-*~
-
-.deps/
-.dirstamp
-*.o
-*.a
-/gnumach
-/gnumach-undef
-/gnumach-undef-bad
-/gnumach.msgids
-
-# Makerules.am
-*.gz
-*.stripped
-
-# Makerules.mig.am
-*.user.*
-*.server.*
-
-autom4te.cache/
-build-aux/
-/INSTALL
-/Makefile
-/Makefile.in
-/aclocal.m4
-/config.h
-/config.h.in
-/config.log
-/config.status
-/config.status.orig
-/configure
-/stamp-h1
-/version.c
-
-# Ignore arch symlinks
-/machine
-/mach/machine
-/linux/src/include/asm
-/linux/dev/include/asm
diff --git a/=announce-1.0 b/=announce-1.0
deleted file mode 100644
index 673dc99..0000000
--- a/=announce-1.0
+++ /dev/null
@@ -1,40 +0,0 @@
-I am pleased to announce version 1.0 of the GNU distribution of the
-Mach kernel.  It may be found in the file (about 2.54 MB compressed)
-ftp://prep.ai.mit.edu/pub/gnu/gnumach-1.0.tar.gz.
-
-This distribution was prepared in order to install some bug fixes and
-minor improvements (not worth noting here) to the Utah microkernel,
-and to make the package conform to the GNU coding standards, at least
-minimally, as regards configuration.  This was based upon the UK22
-distribution, with some modifications made at Utah as well.
-
-This kernel will be in the forthcoming complete binary distribution of
-GNU.  The release is being made now, in the hopes that any serious
-problems we didn't notice might be found in advance of that
-distribution.  Volunteers who are interested in compiling this release
-should do so, and please report any problems asap.
-
-All the non-kernel pieces of the Utah distribution are not present in
-this distribution, except for the MiG interface generator which is
-still supplied.  These other pieces were never used for GNU, and are
-not really part of the kernel at all.  We may separate MiG into a
-separate distribution for convenience at some later date.
-
-This distribution is only for i386, i486, i586 (pentium), and i686
-(sexium [pentium pro]) processors on PC-AT compatible machines.
-Volunteers interested in ports to other architectures are eagerly
-sought.
-
-Most ethernet cards and disk controllers are supported by this kernel;
-ones for which Linux drivers exist can be ported easily.  Non-network
-devices for which BSD drivers exist can be ported with a little
-effort, but not much.
-
-Bug reports relating to this distribution should be sent to
address@hidden  Requests for assistance should be made on
address@hidden 
-
-The md5sum checksum for gnumach-1.0.tar.gz is:
-
-62ac22cbe695a058243673427a264745  gnumach-1.0.tar.gz
-
diff --git a/=announce-1.1 b/=announce-1.1
deleted file mode 100644
index ef5fa0b..0000000
--- a/=announce-1.1
+++ /dev/null
@@ -1,34 +0,0 @@
-I am pleased to announce version 1.1 of the GNU distribution of the
-Mach kernel.  It may be found in the file (about 254 MB compressed)
-ftp://prep.ai.mit.edu/pub/gnu/gnumach-1.1.tar.gz.
-
-Diffs from version 1.0 of this distribution are avaiable at
-ftp://prep.ai.mit.edu/pub/gnu/gnumach-1.0-1.1.diff (42 KB
-uncompressed). 
-
-This is a bug-fixing release; the only new feature over version 1.0 is
-the --enable-kdb configure option which has been added to turn on
-kernel debugging support.
-
-Several bugs have been fixed in this distribution, particularly
-relating to cross-compilation support.  
-
-This distribution is only for i386, i486, i586 (pentium), and i686
-(sexium [pentium pro]) processors on PC-AT compatible machines.
-Volunteers interested in ports to other architectures are eagerly
-sought.
-
-Most ethernet cards and disk controllers are supported by this kernel;
-ones for which Linux drivers exist can be ported easily.  Non-network
-devices for which BSD drivers exist can be ported with a little
-effort, but not much.
-
-Bug reports relating to this distribution should be sent to
address@hidden  Requests for assistance should be made on
address@hidden 
-
-The md5sum checksums for the files mentioned in this message are:
-
-6bb809d81198fd28078c8ac9ccb55965  gnumach-1.1.tar.gz
-089b95de887c69c9f1f28b1b1dcb00f7  gnumach-1.0-1.1.diff
-
diff --git a/=announce-1.1.1 b/=announce-1.1.1
deleted file mode 100644
index 244141d..0000000
--- a/=announce-1.1.1
+++ /dev/null
@@ -1,36 +0,0 @@
-I am pleased to announce version 1.1.1 of the GNU distribution of the
-Mach kernel.  It may be found in the file (about 254 MB compressed)
-ftp://prep.ai.mit.edu/pub/gnu/gnumach-1.1.1.tar.gz.
-
-Diffs from version 1.0 of this distribution are avaiable at
-ftp://prep.ai.mit.edu/pub/gnu/gnumach-1.0-1.1.1.diff.gz (about 169 MB
-compressed). 
-
-Version 1.1 had some minor accidental problems and is being removed in
-favor of this minor update.
-
-This is a bug-fixing release; the only new feature over version 1.0 is
-the --enable-kdb configure option which has been added to turn on
-kernel debugging support.
-
-Several bugs have been fixed in this distribution, particularly
-relating to cross-compilation support.  
-
-This distribution is only for i386, i486, i586 (pentium), and i686
-(sexium [pentium pro]) processors on PC-AT compatible machines.
-Volunteers interested in ports to other architectures are eagerly
-sought.
-
-Most ethernet cards and disk controllers are supported by this kernel;
-ones for which Linux drivers exist can be ported easily.  Non-network
-devices for which BSD drivers exist can be ported with a little
-effort, but not much.
-
-Bug reports relating to this distribution should be sent to
address@hidden  Requests for assistance should be made on
address@hidden 
-
-The md5sum checksums for the files mentioned in this message are:
-
-45147839691e40b2e67412579e0fcc5d  gnumach-1.1.1.tar.gz
-35e69cedb4d23b4058be26bd58345a02  gnumach-1.0-1.1.1.diff.Z
diff --git a/=announce-1.2 b/=announce-1.2
deleted file mode 100644
index 6fc987f..0000000
--- a/=announce-1.2
+++ /dev/null
@@ -1,27 +0,0 @@
-I am pleased to announce version 1.2 of the GNU distribution of the
-Mach kernel.  It may be found in the file (about 3.64 MB compressed)
-ftp://ftp.gnu.org/gnu/gnumach/gnumach-1.2.tar.gz.
-
-Because of extensive source reorganization, it is not profitable to
-provide diffs against previous versions.
-
-Most notably, this release updates the Linux-derived device drivers to
-those found in Linux version 2.0.36.
-
-This distribution is only for i386, i486, i586 (pentium), and i686
-(sexium [pentium pro]) processors on PC-AT compatible machines.
-Volunteers interested in ports to other architectures are eagerly
-sought.
-
-MiG (the Mach Interface Generator) is no longer in this distribution;
-it is now distributed separately.  You will need MiG in order to be
-able to compile this release.
-
-Bug reports relating to this distribution should be sent to
address@hidden  Requests for assistance should be made on
address@hidden 
-
-The md5sum checksums for this distibution is
-
-85e898a1753270e63a1cc69028043c68  gnumach-1.2.tar.gz
-
diff --git a/=announce-1.3 b/=announce-1.3
deleted file mode 100644
index 2f7edd0..0000000
--- a/=announce-1.3
+++ /dev/null
@@ -1,47 +0,0 @@
-We are pleased to announce version 1.3 of the GNU distribution of the
-Mach kernel.  It may be found in the file (about 3.6 MB compressed)
-ftp://ftp.gnu.org/gnu/gnumach/gnumach-1.3.tar.gz;
-unidiffs from version 1.2 (about 310 KB compressed) are in
-ftp://ftp.gnu.org/gnu/gnumach/gnumach-1.2-1.3.diff.gz.
-
-This distribution is only for x86 PC machines.
-Volunteers interested in ports to other architectures are eagerly sought.
-
-We are no longer actively developing version 1.x of GNU Mach.  We plan to
-make only necessary bug fixes or trivial enhancements in the 1.x line,
-and make further 1.x releases only as necessary for those purposes.
-New development efforts have been underway for some time on a new version
-of GNU Mach using the OSKit from the University of Utah for hardware
-support.  Those efforts previously called OSKit-Mach are now working
-towards the future version 2.0 of GNU Mach.
-
-Aside from bug fixes, major changes from 1.2 (from the NEWS file) are:
-
-The kernel now directly supports "boot scripts" in the form of multiboot
-module names with the same syntax as the Hurd's `serverboot' program.
-That is, instead of telling GRUB "module /boot/serverboot", you can give
-GRUB a series of command like "module /hurd/ext2fs ${...}" where the
-syntax after "module" is the same as in boot scripts for Hurd's `serverboot'.
-
-The kernel message device `kmsg' is now enabled by default.
---disable-kmsg turns it off.
-
-Large disks (>= 10GB) are now correctly supported, the new get_status
-call DEV_GET_RECORDS can return the number of records of a device.
-
-Lots of tweaks have been done to the virtual memory management to make
-it perform better on today's machines.
-
-The console supports ANSI escape sequences for colors and attributes.
-
-Support for the terminal speeds B57600 and B115200 has been added.
-
-
-Bug reports relating to this distribution should be sent to
address@hidden  Requests for assistance should be made on
address@hidden
-
-The md5sum checksums for this distribution are:
-
-61e90803889b079a380e30056b21d076  gnumach-1.3.tar.gz
-56ca6aa9040c4d4c4ef7a9757bb0509c  gnumach-1.2-1.3.diff.gz
diff --git a/ChangeLog b/ChangeLog
index 9ed3b47..3e23dae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,10068 @@
-e227045b06d62ee7d2fbab9d5ade9030ff43170b is the last commit imported from CVS.
-All commits after that one have valid author and committer information.
+2013-09-27  Thomas Schwinge  <address@hidden>
 
-Use this to examine the change log for earlier changes:
+       GNU Mach 1.4.
+       * version.m4 (AC_PACKAGE_VERSION): Set to 1.4.
+       * NEWS: Finalize changes for 1.4.
+       * README: Update.
 
-    $ git show e227045b06d62ee7d2fbab9d5ade9030ff43170b:ChangeLog
-    $ git show e227045b06d62ee7d2fbab9d5ade9030ff43170b:ChangeLog.0
-    $ git show e227045b06d62ee7d2fbab9d5ade9030ff43170b:ChangeLog.00
+       * configure.ac (AM_INIT_AUTOMAKE): Add dist-bzip2.
+
+       Generate ChangeLog files for distributions.
+       * gitlog-to-changelog: New file; import from gnulib's
+       9fc81090f6c5590bd1b0e0fa5087577a2ee43a3e:build-aux/gitlog-to-changelog.
+       * Makefile.am (gen-ChangeLog): New target.
+       (dist-hook): Depend on it.
+
+       dist-hook extensibility.
+       * Makefile.am (dist-hook): Rename to...
+       (dist-rm-CVS): ... this new target.
+       (dist-hook): Depend on it.
+
+       * README: Simplify build instructions.
+       Follow-up to commit 471e5b080f7790c2cf95e3069d9fed1173c9ec17.
+
+2013-09-26  Samuel Thibault  <address@hidden>
+
+       Fix gpl.texi build
+       texinfo does not support @heading/@center in the middle of an enumerate.
+
+       * doc/gpl.texi: Move "NO WARRANTY" to item heading.
+
+2013-09-26  Samuel Thibault  <address@hidden>
+
+       Really update README
+       * README: Network drivers are actually enabled by default.
+
+       Update README
+       * README: Update default drivers notice.  Mention cross-compilation 
flags
+       for 64bit systems.
+
+2013-09-24  Samuel Thibault  <address@hidden>
+
+       Drop Invariant, Front-Cover and Back-Cover references
+       The referenced Invariant sections does not exist, and the front and back
+       covers do not hold much information.
+
+2013-09-22  Marin Ramesa  <address@hidden>
+
+       device: remove unused file dk_label.c
+       * device/dk_label.c: Remove file.
+
+2013-09-21  Marin Ramesa  <address@hidden>
+
+       add comments after endifs
+       * device/ds_routines.c [CONFIG_PCMCIA, CONFIG_INET, LINUX_DEV, 
MACH_HYP]: Add comments after endifs.
+
+       remove lint code
+       * device/ds_routines.c [lint]: Remove ifdefs and associated code.
+
+       remove register qualifiers
+       * device/ds_routines.c: Remove register qualifiers.
+
+       remove lint code
+       * device/dev_pager.c [lint]: Remove ifdefs and associated code.
+
+       Coding style trivial fixes
+
+       remove register qualifiers
+       * device/dev_pager.c: Remove register qualifiers.
+
+2013-09-16  Marin Ramesa  <address@hidden>
+
+       another small change in style for consistency
+       * device/dev_name.c: Change in coding style.
+
+2013-09-16  Marin Ramesa  <address@hidden>
+
+       use boolean_t instead of an int
+       Variable 'found' already receives values TRUE and FALSE, so why not make
+       it a boolean.
+
+       * device/dev_name.c: Use boolean_t instead of an int.
+
+2013-09-16  Marin Ramesa  <address@hidden>
+
+       remove preprocessor comments
+       The first one is a message that name lookup has been called, which
+       I think is safe to remove, or maybe add #if DEBUG. Second one is a
+       alternate calculation that I doubt it will ever be used, so I think
+       it's safe to remove it.
+
+       * device/dev_name.c: Remove preprocessor comments.
+
+2013-09-16  Marin Ramesa  <address@hidden>
+
+       another small change in style for consistency
+       * device/dev_name.c: Change in coding style.
+
+       small style changes for consistency
+       * device/dev_name: Changes in coding style.
+
+       remove register qualifiers
+       * device/dev_name.c: Remove register qualifiers.
+
+2013-09-15  Marin Ramesa  <address@hidden>
+
+       remove definition of NDEVICES
+       NDEVICES is never used. Judging by the position and the comments
+       it was once used in initialization, but it's not anymore. I think
+       it's safe to remove it.
+
+       * device/dev_lookup.c (NDEVICES): Remove definition.
+
+2013-09-15  Marin Ramesa  <address@hidden>
+
+       remove register qualifiers
+       * device/dev_lookup.c: Remove register qualifiers.
+
+2013-09-11  Marin Ramesa  <address@hidden>
+
+       remove register qualifiers.
+       * device/cirbuf.c: Remove register qualifiers.
+
+2013-09-11  Marin Ramesa  <address@hidden>
+
+       track the console init with a boolean instead of an int
+       A variable that keeps track if the console init has been called. It 
should
+       never receive values other than 0 and 1, so constrain it's possible 
range of
+       values to a boolean.
+
+       * device/cons.c (cn_inited): Use boolean_t instead of an int.
+
+2013-09-11  Marin Ramesa  <address@hidden>
+
+       track the console buffer usage with a boolean instead of an int
+       A variable that keeps track of the console buffer usage should never 
receive
+       values other than 0 and 1, so constrain it's value range to boolean. 
Plus, it's
+       more readable this way.
+
+       * device/cons.c (consbufused): Use boolean_t instead of an int.
+
+2013-09-11  Marin Ramesa  <address@hidden>
+
+       drop unused CONSMAJOR
+       CONSMAJOR is never used. I'm guessing that in the past it was
+       a part of some problematic code. I don't see a reason to keep
+       it's definition.
+
+       * device/cons.h (CONSMAJOR): Remove definition.
+
+2013-09-09  Marin Ramesa  <address@hidden>
+
+       Remove register qualifiers
+       * device/chario.c: Remove register qualifiers.
+
+       Add const qualifiers.
+       * device/chario.c (tty_inq_size, tty_outq_size): Qualify constants as 
const.
+
+       Drop useless forward declaration
+       * device/chario.c (tty_flush): Remove forward declaration (prototype is 
in tty.h).
+
+       Drop luna88k bits
+       * device/tty.h [luna88k]: Remove ifdef and include for nonexistent 
header files.
+       * kern/debug.c: Remove check for luna88k.
+
+2013-08-28  Samuel Thibault  <address@hidden>
+
+       Drop FXSR initialization message
+       * i386/i386/fpu.c (init_fpu): Drop FXSR initialization message
+
+2013-07-18  Marin Ramesa  <address@hidden>
+
+       kern: add missing prototype
+       * kern/lock.h (db_show_all_slocks): Add prototype.
+
+       ipc: organize ipc print function prototypes
+       * ipc/ipc_print.h: New file.
+       [MACH_KDB] Include <mach/mach_types.h>.
+       [MACH_KDB] Include <mach/message.h>.
+       [MACH_KDB] Include <ipc/ipc_types.h>.
+       (ipc_port_print): Add prototype.
+       (ipc_pset_print): Likewise.
+       (ipc_kmsg_print): Likewise.
+       (ipc_msg_print): Likewise.
+       * ipc/ipc_port.h (ipc_port_print): Remove prototype.
+       * ipc/ipc_port.c [MACH_KDB]: Include <ipc/ipc_print.h>.
+       * ipc/ipc_pset.h (ipc_pset_print): Remove prototype.
+       * ipc/ipc_pset.c [MACH_KDB]: Include <ipc/ipc_print.h>.
+       * ipc/ipc_kmsg.c [MACH_KDB]: Include <ipc/ipc_print.h>.
+
+       vm: organize vm print function prototypes
+       * vm/vm_print.h: New file.
+       Include <vm/vm_map.h>.
+       Include <machine/db_machdep.h>.
+       (vm_map_print): Add prototype.
+       (vm_map_copy_print): Likewise.
+       (vm_object_print): Likewise.
+       (vm_page_print): Likewise.
+       Include <vm/vm_object.h>.
+       Include <vm/vm_page.h>
+       * vm/vm_map.h (vm_map_print): Remove prototype.
+       * vm/vm_map.c [MACH_KDB]: Include <vm/vm_print.h>.
+       * vm/vm_object.h (vm_object_print): Remove prototype.
+       * vm/vm_object.c [MACH_KDB]: Include <vm/vm_print.h>.
+       * vm/vm_resident.c [MACH_KDB]: Include <vm/vm_print.h>.
+
+       ddb: cleanup db_command.c
+       * ddb/db_command.c (_longjmp): Remove prototype.
+       (vm_map_print): Likewise.
+       (vm_object_print): Likewise.
+       (vm_page_print): Likewise.
+       (vm_map_copy_print): Likewise.
+       (ipc_port_print): Likewise.
+       (ipc_pset_print): Likewise.
+       (db_show_all_slocks): Likewise.
+       (ipc_kmsg_print): Likewise.
+       (ipc_msg_print): Likewise.
+       Include <vm/vm_print.h>.
+       Include <ipc/ipc_print.h>.
+       Include <kern/lock.h>.
+       * i386/i386/setjmp.h [__GNUC__] (_longjmp): Add prototype.
+
+2013-07-07  Marin Ramesa  <address@hidden>
+
+       fix implicit declarations
+       * ddb/db_trap.c: Include <machine/setjmp.h>.
+       * i386/i386/setjmp.h (_setjmp): Add prototype.
+
+2013-07-07  Samuel Thibault  <address@hidden>
+
+       Restore db_help_cmd
+       * ddb/db_command.c (db_help_cmd): Restore function.
+
+2013-07-06  Marin Ramesa  <address@hidden>
+
+       ddb: cleanup db_command.c
+       * ddb/db_write_cmd.h: New file.
+       (db_write_cmd): Add prototype.
+       Include <mach/boolean.h>.
+       Include <machine/db_machdep.h>.
+       * ddb/db_break.h (db_listbreak_cmd): Add prototype.
+       (db_delete_cmd): Likewise.
+       (db_breakpoint_cmd): Likewise.
+       * ddb/db_watch.h (db_listwatch_cmd): Likewise.
+       (db_deletewatch_cmd): Likewise.
+       (db_watchpoint_cmd): Likewise.
+       * ddb/db_print.h (db_show_one_thread): Likewise.
+       (db_show_all_threads): Likewise.
+       * ddb/db_examine.h (db_print_cmd): Likewise.
+       (db_examine_forward): Likewise.
+       (db_examine_backward): Likewise.
+       (db_search_cmd): Likewise.
+       * ddb/db_variables.h (db_set_cmd): Likewise.
+       * ddb/db_run.h (db_trace_until_call_cmd): Likewise.
+       (db_trace_until_matching_cmd): Likewise.
+       (db_continue_cmd): Likewise.
+       * ddb/db_command.h (db_fncall): Likewise.
+       * ddb/db_command.c: Include <ddb/db_break.h>.
+       Include <ddb/db_watch.h>.
+       Include <ddb/db_variables.h>.
+       Include <ddb/db_write_cmd.h>.
+       Include <ddb/db_run.h>.
+       Include <ddb/db_cond.h>.
+       (db_listbreak_cmd): Remove prototype.
+       (db_listwatch_cmd): Likewise.
+       (db_show_one_thread): Likewise.
+       (db_show_all_threads): Likewise.
+       (db_show_macro): Likewise.
+       (db_show_help): Likewise.
+       (db_print_cmd): Likewise.
+       (db_examine_cmd): Likewise.
+       (db_set_cmd): Likewise.
+       (db_examine_forward): Likewise.
+       (db_examine_backward): Likewise.
+       (db_search_cmd): Likewise.
+       (db_write_cmd): Likewise.
+       (db_delete_cmd): Likewise.
+       (db_breakpoint_cmd): Likewise.
+       (db_deletewatch_cmd): Likewise.
+       (db_watchpoint_cmd): Likewise.
+       (db_single_step_cmd): Likewise.
+       (db_trace_until_call_cmd): Likewise.
+       (db_trace_until_matching_cmd): Likewise.
+       (db_continue_cmd): Likewise.
+       (db_cond_cmd): Likewise.
+       (db_help_cmd): Likewise.
+       (db_def_macro_cmd): Likewise.
+       (db_del_macro_cmd): Likewise.
+       (db_fncall): Likewise.
+
+2013-07-05  Marin Ramesa  <address@hidden>
+
+       ddb: use and cleanup db_print.h
+       * ddb/db_command.c: Include db_print.h.
+       Remove extern db_show_regs().
+       Remove extern db_show_one_task().
+       Remove extern db_show_port_id().
+       * ddb/db_print.c: Include db_print.h
+       * ddb/db_print.h (db_show_all_acts): Remove prototype.
+       (db_show_one_act): Likewise.
+       (db_show_shuttle): Likewise.
+       (db_show_one_task_vm): Likewise.
+       (db_show_all_task_vm): Likewise.
+       (db_show_one_space): Likewise.
+       (db_show_all_spaces): Likewise.
+       (db_sys): Likewise.
+       (db_port_kmsg_count): Likewise.
+       (db_show_one_simple_lock): Likewise.
+       (db_show_one_mutex): Likewise.
+       (db_show_subsystem): Likewise.
+       (db_show_runq): Likewise.
+
+2013-07-04  Marin Ramesa  <address@hidden>
+
+       ddb: fix implicit declarations
+       * ddb/db_break.c: Include ddb/db_access.h.
+       * ddb/db_examine.h (db_xcdump): Add prototype.
+       * ddb/db_ext_symtab.c: Include vm/vm_user.h.
+       * ddb/db_input.c: Include device/cons.h.
+       * ddb/db_output.c: Likewise.
+
+2013-06-29  Marin Ramesa  <address@hidden>
+
+       (slab_info): fix format warnings
+       * kern/slab.c (slab_info): Fix format for vm_size_t.
+
+       Add device_pager_setup prototype
+       * device/ds_routines.h (device_pager_setup): Add prototype.
+
+       Add [nh]to[hn][ls] prototypes
+       * device/net_io.h (ntohl, htonl, ntohs, htons): Add prototypes.
+
+2013-06-29  Samuel Thibault  <address@hidden>
+
+       Fix int/long discrepancy
+       * device/net_io.c (bpf_match): Make the `keys' parameter a pointer to
+       unsigned int instead of unsigned long.
+       (bpf_do_filter): Make `A', `B' and `mem' unsigned ints instead of 
unsigned
+       longs. Also turn long casts into int casts.
+
+2013-06-24  Samuel Thibault  <address@hidden>
+
+       Add partitioning reload support to ahci
+       * linux/dev/drivers/block/ahci.c (port): Add `gd' field.
+       (ahci_ioctl): New function.
+       (ahci_fops): Fill `ioctl' field with `ahci_ioctl'.
+       (ahci_probe_pci): Fill `gd' field with `gd'.
+
+       Fix printing ahci PCI dev and fun
+       * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Compute `dev' and 
`fun'
+       earlier so they can be printed.
+
+2013-06-10  Samuel Thibault  <address@hidden>
+
+       Add missing 4KiB memory
+       * i386/i386at/model_dep.c (init_alloc_aligned): Let allocated area last
+       until end of memory map.
+
+       Add non-contiguous mmap support
+       * i386/include/mach/i386/multiboot.h (multiboot_mmap): New structure
+       * i386/i386at/model_dep.c (mem_size_init): Parse boot_info.mmap_addr if
+       available.
+       (init_alloc_aligned): Likewise.
+
+2013-06-09  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+2013-06-09  Samuel Thibault  <address@hidden>
+
+       Do not skip AHCI controller without HOST_CAP_ONLY
+       We rather rely on the announced PCI type to determine whether to use 
IDE or
+       AHCI.
+
+       * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Do not skip AHCI
+       controller without HOST_CAP_ONLY.
+
+2013-06-09  Samuel Thibault  <address@hidden>
+
+       Add timeout to ahci IDENTIFY
+       * linux/dev/drivers/block/ahci.c (identify_timeout): New function.
+       (identify_timer): New variable.
+       (ahci_probe_port): Add timer to abandon identify command.
+
+       Fix printf format
+       * linux/dev/drivers/block/ahci.c (ahci_do_request): Cast capacity into 
unsigned
+       long and use %lu format.
+       (ahci_probe_port): Cast size into unsigned and use %u format.
+
+       Fix format
+
+2013-06-09  Richard Braun  <address@hidden>
+
+       Fix object construction in the slab allocator
+       There is currently no actual use of constructors, which is why this bug 
has
+       been long overlooked.
+
+       * kern/slab.c (kmem_cpu_pool_fill): Call constructor on buffers unless
+       verification is enabled for the cache, or the constructor is NULL.
+
+2013-06-04  Marin Ramesa  <address@hidden>
+
+       Comment unused variable
+       * kern/ipc_mig.c (syscall_device_write_request): Comment unused 
variable.
+
+2013-06-04  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+2013-06-04  Miguel Figueiredo  <address@hidden>
+
+       Fix format warnings
+       * vm/vm_resident.c (pmap_startup): Fix printf format.
+       * xen/block.c (hyp_block_init, device_write): Likewise.
+       * xen/net.c (hyp_net_init): Likewise.
+
+2013-06-02  Miguel Figueiredo  <address@hidden>
+
+       Remove unused variable
+       * kern/act.c (act_create): Remove unused variable.
+
+2013-06-02  Richard Braun  <address@hidden>
+
+       Fix yet another locking error in the slab allocator
+       * kern/slab.c (kmem_cache_free): Relock cache before retrying releasing
+       an object to the CPU pool layer.
+
+2013-06-02  Miguel Figueiredo  <address@hidden>
+
+       Remove unused variable
+       * ipc/mach_port.c (mach_port_set_syscall_right): Remove unused variable.
+
+2013-05-30  Samuel Thibault  <address@hidden>
+
+       Add LBA48 support to AHCI driver
+       * linux/dev/drivers/block/ahci.c (port): Extend `capacity' field type to
+       unsigned long long. Add `lba48' field. Make `identify' field unsigned.
+       (ahci_do_port_request): When `lba48' is true, use WIN_READDMA_EXT and
+       WIN_WRITEDMA_EXT commands.
+       (ahci_probe_port): Test lba48 flag, read capacity and set `lba48'
+       accordingly. Display size in GiB above 10GiB.
+       * linux/src/include/linux/hdreg.h (WIN_READDMA_EXT, WIN_WRITEDMA_EXT): 
New
+       macros
+       (hd_driveid): Add `command_set_2' and lba_capacity_2' fields.
+
+2013-05-27  Miguel Figueiredo  <address@hidden>
+
+       Remove old elevator algorithm function
+       * device/blkio.c (disksort): remove unused function
+
+2013-05-19  Miguel Figueiredo  <address@hidden>
+
+       Remove unneeded variable initialization
+       * kern/thread.c (thread_force_terminate): Remove unneeded variable
+       initialization.
+
+2013-05-19  Samuel Thibault  <address@hidden>
+
+       Remove duplicate line
+       Reported by Miguel Figueiredo
+
+       * kern/thread.c (thread_create): Remove duplicate reset of
+       new_thread->pc_sample.buffer to 0.
+
+2013-05-16  Richard Braun  <address@hidden>
+
+       Reduce fragmentation in the slab allocator
+       This reverts a change brought when reworking slab lists handling that 
made
+       the allocator store slabs in LIFO order, whatever their reference count.
+       While it's fine for free slabs, it actually increased fragmentation for
+       partial slabs.
+
+       * kern/slab.c (kmem_cache_alloc_from_slab): Insert slabs that become 
partial
+       at the end of the partial slabs list.
+
+2013-05-16  Richard Braun  <address@hidden>
+
+       Rename list_insert to list_insert_head
+       This change increases clarity.
+
+       * kern/list.h (list_insert): Rename to ...
+       (list_insert_head): ... this.
+       * kern/slab.c: Update calls to list_insert.
+
+2013-05-15  Richard Braun  <address@hidden>
+
+       Fix itemization errors in the texinfo documentation
+       * doc/mach.texi: Replace @itemx with @item for --enable-tulip and
+       --enable-epic100.
+
+2013-05-13  Miguel Figueiredo  <address@hidden>
+
+       Drop unused variables
+       * kern/slab.c (kalloc_init): Remove unused variables.
+
+2013-05-11  Samuel Thibault  <address@hidden>
+
+       Add missing parameters to printf
+       * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Add missing 
parameters to
+       printf.
+
+2013-05-10  Samuel Thibault  <address@hidden>
+
+       Fix ahci.h path
+       * linux/Makefrag.am (liblinux_a_SOURCES): Fix path to ahci.h
+
+       Add AHCI driver
+       * linux/dev/glue/kmem.c (vmtophys): New function.
+       * linux/dev/include/linux/mm.h (vmtophys): New prototype.
+       * linux/src/include/linux/pci.h (PCI_CLASS_STORAGE_SATA,
+       PCI_CLASS_STORAGE_SATA_AHCI): New macros.
+       * linux/dev/drivers/block/ahci.c: New file.
+       * linux/dev/include/ahci.h: New file.
+       * linux/Makefrag.am (liblinux_a_SOURCES): Add 
linux/dev/drivers/block/ahci.c
+       and linux/dev/drivers/block/ahci.h.
+       * linux/src/drivers/block/ide.c: Include <ahci.h>.
+       (probe_for_hwifs): Call ahci_probe_pci.
+
+2013-05-02  Samuel Thibault  <address@hidden>
+
+       Fix non-block-aligned-offset reads
+       This fixes grave issues when device_read is called with 
non-block-aligned
+       offset, e.g. when using grub-probe with a non-block-aligned partition 
table.
+
+       * linux/dev/glue/block.c (rdwr_full): Use current position instead of 
base
+       buffer position to check for alignment.
+
+2013-05-01  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+       Fix macro name
+       * linux/dev/glue/block.c (device_get_status): Use
+       DEV_GET_RECORDS_RECORD_SIZE for DEV_GET_RECORDS instead of
+       DEV_GET_SIZE_RECORD_SIZE.
+
+2013-04-21  Richard Braun  <address@hidden>
+
+       Optimize slab reaping
+       Instead of walking the list of free slabs while holding the cache lock,
+       detach the list from the cache and directly compute the final count 
values,
+       and destroy slabs after releasing the cache lock.
+
+       * kern/slab.c (kmem_cache_reap): Optimize.
+
+2013-04-21  Richard Braun  <address@hidden>
+
+       Rework slab lists handling
+       Don't enforce strong ordering of partial slabs. Separating partial slabs
+       from free slabs is already effective against fragmentation, and sorting
+       would sometimes cause pathological scalability issues. In addition, 
store
+       new slabs (whether free or partial) in LIFO order for better cache 
usage.
+
+       * kern/slab.c (kmem_cache_grow): Insert new slab at the head of the 
slabs list.
+       (kmem_cache_alloc_from_slab): Likewise. In addition, don't sort partial 
slabs.
+       (kmem_cache_free_to_slab): Likewise.
+       * kern/slab.h: Remove comment about partial slabs sorting.
+
+2013-04-21  Richard Braun  <address@hidden>
+
+       Fix locking error in the slab allocator
+       * kern/slab.c (kmem_cache_free): Lock cache before releasing an object 
to
+       the slab layer.
+
+2013-04-08  Samuel Thibault  <address@hidden>
+
+       Add -fno-optimize-sibling-calls option for better kdb traces
+       * Makefrag.am (AM_CFLAGS) [enable_kdb]: Add -fno-optimize-sibling-calls
+       option.
+
+2013-03-11  Samuel Thibault  <address@hidden>
+
+       Update BASEPRI_USER
+       * kern/sched.h (BASEPRI_USER): Increase to 25.
+
+       Fix build without kdb
+       * i386/i386/db_interface.h [! MACH_KBD] (db_set_hw_watchpoint,
+       db_clear_hw_watchpoint, db_dr): Do not declare functions.
+
+2013-03-06  Samuel Thibault  <address@hidden>
+
+       Increase number of priorities
+       * kern/sched.h (NRQS): Increase to 50.
+
+2013-03-05  Samuel Thibault  <address@hidden>
+
+       Do not hardcode maximum priority value
+       * kern/sched_prim.c (do_priority_computation): Replace 31 with NRQS - 1.
+       idle_thread: Likewise.
+
+2013-02-04  Samuel Thibault  <address@hidden>
+
+       Include machine/db_interface instead of hardcoding function prototypes
+       * ddb/db_access.c: Include <machine/db_interface.h>.
+       (db_read_bytes, db_write_bytes): Remove functions prototypes.
+       (db_get_task_value): Fix calling db_read_bytes.
+       (db_put_task_value): Fix calling db_write_bytes.
+       * ddb/db_watch.c: Include <machine/db_interface.h>.
+       (db_set_hw_watchpoint, db_clear_hw_watchpoint): Remove functions 
prototypes.
+
+2013-02-04  Samuel Thibault  <address@hidden>
+
+       Plug hw debug register support into kdb
+       Make the `watch' command use hw debug registers whenever possible.
+
+       * ddb/db_watch.c (db_set_hw_watchpoint, db_clear_hw_watchpoint): Add
+       functions prototypes.
+       (db_set_watchpoints): Try to call db_set_hw_watchpoint.
+       (db_clear_watchpoints): Call db_clear_hw_watchpoint.
+       * i386/i386/db_interface.c: Include <ddb/db_watch.h>
+       (db_set_hw_watchpoint): Take a db_watchpoint_t WATCH parameter instead 
of
+       its content. Remove support for clearing a debug register.
+       (db_clear_hw_watchpoint): Add function.
+       * i386/i386/db_interface.h: Include <ddb/db_watch.h>.
+       (db_set_hw_watchpoint): Fix function prototype.
+       (db_clear_hw_watchpoint): Add function prototype.
+       * i386/i386/db_machdep.h: Do not include <machine/db_interface.h>
+
+2013-02-04  Samuel Thibault  <address@hidden>
+
+       Document dwatch
+       * doc/mach.texi: Add dwatch documentation.
+
+2013-02-04  Samuel Thibault  <address@hidden>
+
+       Add x86 hardware debugging register support
+       This adds using the x86 hardware debugging registers, either from the 
kernel
+       through db_set_hw_watchpoint, or from userland through i386_DEBUG_STATE.
+       While the kernel is using the registers, the userland values are 
ignored.
+
+       * i386/i386/db_interface.c (kernel_dr, ids): New variables.
+       (db_load_context, db_get_debug_state, db_set_debug_state, db_dr,
+       db_set_hw_watchpoint): New functions.
+       (kdb_trap): Use get_dr* instead of dr_addr[].
+       * i386/i386/db_interface.h (db_user_to_kernel_address, 
db_set_hw_watchpoint)
+       (db_dr, db_get_debug_state, db_set_debug_state, db_load_context): Add 
functions
+       prototypes.
+       (dr0, dr1, dr2, dr3): Remove functions prototypes.
+       * i386/i386/locore.S (dr6, dr0, dr1, dr2, dr3): Remove functions.
+       (dr_msk, dr_addr): Remove variables.
+       * i386/include/mach/i386/thread_status.h (i386_DEBUG_STATE): Add macro.
+       (i386_debug_state): Add structure.
+       (i386_DEBUG_STATE_COUNT): Add macro.
+       * i386/i386/thread.h: Include <mach/machine/thread_status.h>.
+       (i386_machine_state): Add `struct i386_debug_state ids' field.
+       * i386/i386/pcb.c: Include <i386/db_interface.h>.
+       (switch_ktss): Call db_load_context.
+       (thread_setstatus, thread_getstatus): Add I386_DEBUG_STATE case.
+       * i386/i386/proc_reg.h (get_dr0, set_dr0, get_dr1, set_dr1, get_dr2,
+       set_dr2, get_dr3, set_dr3, get_dr6, set_dr6, get_dr7, set_dr7): Add 
macros.
+
+2013-02-03  Samuel Thibault  <address@hidden>
+
+       Prevent the kernel from making any FPU use
+       * i386/Makefrag.am (AM_CFLAGS): Add -mno-3dnow -mno-mmx -mno-sse 
-mno-sse2.
+
+2013-01-31  Samuel Thibault  <address@hidden>
+
+       Implement pmap_map_mfn for the PVH case
+       * i386/intel/pmap.c (pmap_map_mfn) [MACH_XEN && !MACH_PV_PAGETABLES]:
+       Implement.
+
+       Make the PVH variant get sure that the support is available in the 
hypervisor
+       * i386/xen/xen_boothdr.S (FEATURES): Mark PVH features as required.
+
+2013-01-30  Samuel Thibault  <address@hidden>
+
+       Add comment for TODO
+
+       Do not use 4gb segment assistance in PVH
+       * i386/i386/gdt.c (gdt_init) [MACH_PV_DESCRIPTORS && 
!MACH_PV_PAGETABLES]:
+       Do not enable VMASST_TYPE_4gb_segments.
+       * i386/i386/trap.c (user_trap): Do not handle trap 15, 4gb segment
+       assist notification.
+
+       Drop spurious inclusion
+       * i386/i386/vm_param.h [MACH_XEN && !MACH_PV_PAGETABLES]: Do not include
+       <xen/public/xen.h>.
+
+       Increase VM_MAX_KERNEL_ADDRESS for PVH case
+       * i386/i386/vm_param.h (VM_MAX_KERNEL_ADDRESS) [MACH_XEN &&
+       !MACH_PV_PAGETABLES]: Remove hypervisor area from VM_MAX_KERNEL_ADDRESS
+       restriction.
+
+2013-01-28  Samuel Thibault  <address@hidden>
+
+       More ifdef fixes for ring1 support and pv descriptors support
+       * i386/i386/idt_inittab.S: Turn MACH_XEN test into MACH_PV_DESCRIPTORS 
test.
+       * i386/i386/fpu.c: Turn appropriate MACH_HYP/XEN tests into MACH_RING1 
tests.
+       * i386/i386/ktss.c: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/mp_desc.c: Likewise.
+       * i386/i386/pcb.c: Likewise.
+       * i386/i386/proc_reg.h: Likewise.
+       * i386/i386/trap.c: Likewise.
+
+       Add initial code for disabling PV pagetables
+       * xen/configfrag.ac (--disable-pv-pagetables): Add option.
+       * i386/xen/xen_boothdr.S (XEN_ELFNOTE_FEATURES) [!MACH_PV_PAGETABLES]: 
Add
+       writable_page_tables.
+       * i386/i386/gdt.c: Turn appropriate MACH_XEN/MACH_HYP tests into
+       MACH_PV_PAGETABLES tests.
+       * i386/i386/i386asm.sym: Likewise
+       * i386/i386/ldt.c: Likewise
+       * i386/i386/locore.S: Likewise
+       * i386/i386/proc_reg.h: Likewise
+       * i386/i386/user_ldt.c: Likewise
+       * i386/i386/vm_param.h: Likewise
+       * i386/i386/xen.h: Likewise
+       * i386/i386at/model_dep.c: Likewise
+       * i386/intel/pmap.h: Likewise
+       * include/mach/xen.h: Likewise
+       * xen/console.c: Likewise
+       * xen/store.c: Likewise
+       * i386/intel/pmap.c: Likewise. Define pmap_map_mfn as TODO stub.
+
+       Fix comments
+
+       Fix build with --disable-pseudo-phys
+       * i386/i386/i386asm.sym (PFN_LIST) [!MACH_PSEUDO_PHYS]: Do not define.
+
+       Add initial code for disabling ring1 xen execution
+       * xen/configfrag.ac (--disable-ring1): Add option.
+       * i386/xen/xen_boothdr.S (XEN_ELFNOTE_FEATURES) [!MACH_RING1]: Add
+       supervisor_mode_kernel.
+       * i386/i386/seg.h (KERNEL_RING) [!MACH_RING1]: Set macro to 0.
+
+       Add initial code for disabling PV descriptors
+       * xen/configfrag.ac (--disable-pv-descriptors): Add option
+       * i386/xen/xen_boothdr.S (XEN_ELFNOTE_FEATURES) [!MACH_PV_DESCRIPTORS]: 
Add
+       writable_descriptor_tables.
+       * i386/i386/gdt.c: Turn appropriate MACH_XEN/MACH_HYP tests into
+       MACH_PV_DESCRIPTORS tests.
+       * i386/i386/gdt.h: Likewise.
+       * i386/i386/i386asm.sym: Likewise.
+       * i386/i386/idt.c: Likewise.
+       * i386/i386/idt_inittab.S: Likewise.
+       * i386/i386/ldt.c: Likewise.
+       * i386/i386/pcb.c: Likewise.
+       * i386/i386/seg.h: Likewise.
+       * i386/i386/user_ldt.c: Likewise.
+       * i386/i386/user_ldt.h: Likewise.
+
+2013-01-22  Richard Braun  <address@hidden>
+
+       Add the mach_print debugging system call
+       The purpose of this system call is to help debugging in situations where
+       it's desirable to bypass the mach_msg call entirely.
+
+       * include/mach/syscall_sw.h (mach_print): Generate system call code.
+       * kern/syscall_subr.c: Include <kern/printf.h>.
+       [MACH_KDB] (mach_print): New function.
+       * kern/syscall_subr.h (mach_print): New prototype.
+       * kern/syscall_sw.c [MACH_KDB] (mach_trap_table): Declare mach_print
+       system call.
+
+2013-01-13  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+       Fix task stats incrementations
+       * vm/vm_fault.c (vm_fault_page): Properly increment
+       current_task()->zero_fills and cow_faults.
+
+2013-01-13  David Höppner  <address@hidden>
+
+       Add statistics for task_events_info
+       * ipc/ipc_mqueue.c (ipc_mqueue_send, ipc_mqueue_receive): Increment
+       counters for message sent and received.
+       * kern/ipc_kobject.c (ipc_kobject_server): Increment sent and received
+       counters for the kernel task.
+       * kern/task.c (task_create): Zero statistics.
+       * kern/task.c (task_info): Add task_events_info call.
+       * kern/task.h: Add statistics.
+       * vm/vm_fault.c (vm_fault_page): Increment zero_fills, pageins,
+       reactivations and cow_faults counters.
+       * vm/vm_fault.c (vm_fault_wire_fast): Increment faults counters.
+       * vm/vm_pageout.c (vm_pageout_scan): Increment reactivations counter.
+
+2013-01-08  Richard Braun  <address@hidden>
+
+       Fix slab cache list locking
+       This problem was overlooked because of simple locks being no-ops.
+
+       * kern/slab.c (slab_collect): Fix lock name to kmem_cache_list_lock.
+       (host_slab_info): Likewise.
+
+2013-01-08  Richard Braun  <address@hidden>
+
+       Add function to dump a raw summary of the slab allocator state
+       The purpose of this function is to allow kernel code to display the 
state
+       of the slab caches in situations where the host_slab_info RPC wouldn't 
be
+       available, e.g. before a panic.
+
+       * kern/slab.c (slab_info): New function.
+       * kern/slab.h: Add declaration for slab_info.
+
+2013-01-06  Samuel Thibault  <address@hidden>
+
+       Double KENTRY_DATA_SIZE
+       * vm/vm_map.h (KENTRY_DATA_SIZE): Bump from 32 pages to 64 pages.
+
+2013-01-04  David Höppner  <address@hidden>
+
+       Fix compilation warning implicit function declaration kdbprintf
+       When kernel debugger support is requested ipc and vm need
+       the prototype for the debugger function kdbprintf.
+
+       * ddb/db_output.h: Add prototype for kdbprintf.
+       * ipc/ipc_object.c: Add include file ddb/db_output.h
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_pset.c: Likewise.
+       * vm/vm_map.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_resident.c: Likewise.
+
+2012-12-27  Samuel Thibault  <address@hidden>
+
+       Fix slow boot in virtualbox
+       By disabling some of the most slow drivers by default, and giving 
progress
+       feedback to the user.
+
+       * linux/configfrag.ac (CONFIG_SCSI_NCR53C7xx, CONFIG_SCSI_AIC7XXX,
+       CONFIG_SCSI_GDTH): Disable by default
+       * linux/src/drivers/scsi/eata.c (__initfunc): Don't feed line in probe
+       message.
+       * linux/src/drivers/scsi/hosts.c (scsi_init): Print SCSI probe progress.
+
+2012-12-27  Samuel Thibault  <address@hidden>
+
+       Fix spurious error on accessing fd1
+       Cherry picked from Linux kernel commit 
76c25284e0d845bff4ee1031721556148af4db1c
+
+       * linux/dev/drivers/block/floppy.c (config_types): Clear from
+       `allowed_drive_mask' floppy drives whose cmos type is 0.
+
+2012-12-23  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+2012-12-23  Samuel Thibault  <address@hidden>
+
+       Make thread_suspend wait for !TH_UNINT
+       0a55db5 made thread_suspend return KERN_FAILURE when the target thread 
is in
+       TH_UNINT state. That however is not currently handled by libc, and it's 
more
+       useful to just wait for the thread to get interruptible.
+
+       * kern/sched_prim.c (thread_invoke): Wake NEW_THREAD->STATE for 
thread_suspend.
+       * kern/thread.c (thread_suspend): Wait on NEW_THREAD->STATE as long as 
THREAD
+       has TH_UNINT.
+
+2012-12-21  David S. Miller  <address@hidden>
+
+       ide: Increase WAIT_DRQ to accomodate some CF cards and SSD drives.
+       Based upon a patch by Philippe De Muyter, and feedback from Mark
+       Lord and Robert Hancock.
+
+       As noted by Mark Lord, the outdated ATA1 spec specifies a 20msec
+       timeout for setting DRQ but lots of common devices overshoot this.
+
+       (cherry picked from Linux kernel commit 
602da297e293eb2cbd28dcdbbe247593a46a853a)
+
+       * linux/src/drivers/block/ide.h (WAIT_DRQ): Increase to 1 s.
+
+2012-12-21  Thomas Schwinge  <address@hidden>
+
+       IDE disk drives with unusual C/H/S.
+       * linux/src/drivers/block/ide.c: Partially update to Linux 2.0.40 code.
+
+2012-12-05  Richard Braun  <address@hidden>
+
+       Fix kernel task creation time
+       The mapable_time_init function is called before machine_init, but the
+       latter sets the system boot time. Fix their calling order.
+
+       * kern/startup.c (setup_main): Call machine_init before 
mapable_time_init.
+
+2012-12-04  Richard Braun  <address@hidden>
+
+       Strongly reduce risks of name capture in rbtree macros
+       * kern/rbtree.h (rbtree_lookup): Prefix local variable names with three
+       underscores.
+       (rbtree_lookup_nearest): Likewise.
+       (rbtree_insert): Likewise.
+       (rbtree_lookup_slot): Likewise.
+       (rbtree_insert_slot): Rewrite as an inline function.
+
+2012-11-21  Richard Braun  <address@hidden>
+
+       Fix calls to vm_map when size is 0
+       * vm/vm_map.c (vm_map_enter): return KERN_INVALID_ARGUMENT if size is 0.
+       * vm/vm_user.c (vm_map): Likewise.
+
+2012-11-19  Matthew Leach  <address@hidden>
+
+       Fix compilation error with older versions of GCC
+       Some versions of GCC will error if you define a type twice (even if
+       the definition is the same). The NCR53C8XX SCSI driver defines
+       'vm_offset_t', this is also defined in vm_types.h and will therefore
+       cause a compilation error depending on the GCC version.
+
+       * linux/src/drivers/scsi/ncr53c8xx.c [!MACH] (vm_offset_t, vm_size_t): 
Don't
+       define types.
+
+2012-09-23  Samuel Thibault  <address@hidden>
+
+       Fix gnumach_server_routine prototype
+       * kern/ipc_kobject.c (ipc_kobject_server): Set gnumach_server_routine
+       prototype to mig_routine_t.
+
+2012-09-23  Richard Braun  <address@hidden>
+
+       Add missing file for page statistics
+       * kern/gnumach.srv: New file.
+
+       Add missing file for page statistics
+       * include/mach/vm_cache_statistics.h: New file
+
+2012-09-23  Gianluca Guida  <address@hidden>
+
+       Fix panic on irq >= 16
+       * linux/src/drivers/net/pci-scan.c (pci_drv_register): Skip device
+       if we are getting an invalid IRQ >= 16 and different from 255 (it
+       happens in some motherboard).
+
+2012-09-23  Sergio Lopez  <address@hidden>
+
+       Update DMA auto-enabling, make forcing DMA an option
+       * linux/configfrag.ac (--enable-ide-forcedma): Add option.
+       * linux/src/drivers/block/ide.c (ide_probe_promise_20246): Do not call
+       ide_init_promise.
+       (probe_for_hwifs): Add SI, VIA, AL PCI probing.
+       * linux/src/drivers/block/ide.h (hwif_chipset_t): Add hpt343, udma and
+       ultra66 chipsets.
+       * linux/src/drivers/block/triton.c: Update to upstream 1.14 version.
+       * linux/src/include/linux/hdreg.h (HDIO_GET_IDENTITY): Rename to ...
+       (HDIO_OBSOLETE_IDENTITY): ... new macro.
+       (HDIO_GET_IDENTITY): New macro.
+       (hd_driveid): Add fields for extended identification.
+
+2012-09-23  Alexey Dejneka  <address@hidden>
+
+       Fix CDROM door unlock on closure without device_close
+       * linux/dev/glue/block.c
+       (device_open): Properly return devp on multiple opens.
+       (device_close_forced): Renamed from device_close, when force parameter 
is 1, do
+       not wait for open_count to become 0 before closing.
+       (device_close): New function.
+       (device_no_senders): New function.
+       linux_block_emulation_ops: Use (device_no_senders).
+
+2012-09-23  Richard Braun  <address@hidden>
+
+       Provide basic page cache statistics
+       * Makefrag.am (EXTRA_DIST): Add kern/gnumach.srv.
+       (include_mach_HEADERS): Add include/mach/gnumach.defs and
+       include/mach/vm_cache_statistics.h
+       (nodist_libkernel_a_SOURCES): Add kern/gnumach.server.defs.c,
+       kern/gnumach.server.h, kern/gnumach.server.c, 
kern/gnumach.server.msgids,
+       kern/gnumach.server.defs.
+       * include/mach/mach_types.h: Add #include <mach/vm_cache_statistics.h>.
+       * kern/ipc_kobject.c (ipc_kobject_server): Declare and call
+       gnumach_server_routine.
+       * vm/vm_object.c (vm_object_cached_pages): New variable.
+       (vm_object_cached_pages_lock_data): Likewise.
+       (vm_object_deallocate): Update number of cached pages.
+       (vm_object_lookup): Likewise.
+       (vm_object_lookup_name): Likewise.
+       (vm_object_destroy): Likewise.
+       (vm_object_enter): Likewise.
+       * vm/vm_object.h (ref_count): Declare as int.
+       (resident_page_count): Likewise.
+       (vm_object_cached_count): Add extern declaration.
+       (vm_object_cached_pages): Likewise.
+       (vm_object_cached_pages_lock_data): Likewise.
+       (vm_object_cached_pages_update): New macro.
+       * vm/vm_resident.c (vm_page_insert): Assert resident page count doesn't
+       overflow, update number of cached pages as appropriate.
+       (vm_page_replace): Likewise.
+       (vm_page_remove): Update number of cached pages as appropriate.
+       * vm/vm_user.c: Add #include <mach/vm_cache_statistics.h>.
+       (vm_cache_statistics): New function.
+       * vm/vm_user.h: Add #include <mach/mach_types.h>.
+       (vm_cache_statistics): New declaration.
+       * include/mach/gnumach.defs: New file.
+
+2012-08-24  Richard Braun  <address@hidden>
+
+       Store threads waiting on a message queue in LIFO order
+       * ipc/ipc_thread.h (ipc_thread_enqueue_macro): Insert thread at the
+       head of the list instead of the tail.
+
+2012-07-14  Samuel Thibault  <address@hidden>
+
+       Fix Xen boot at linear address 0xC0000000
+       * i386/intel/pmap.c (pmap_bootstrap): Interate over linear addresses 
and compute
+       l3 and l2 offsets from it instead of assuming nul l3 offset.
+
+2012-07-08  Richard Braun  <address@hidden>
+
+       Fix slab collection timing
+       The slab garbage collector uses sched_tick as its time reference, which
+       is increased every seconds, while the interval is expressed in clock
+       ticks. Use the proper time reference instead.
+
+       * kern/slab.c (kmem_gc_last_tick): Declare as unsigned long.
+       (slab_collect): Use elapsed_ticks instead of sched_tick.
+
+2012-07-08  Richard Braun  <address@hidden>
+
+       Increase the slab collection interval
+       * kern/slab.c (KMEM_GC_INTERVAL): Increase to 5 seconds.
+
+2012-07-07  Richard Braun  <address@hidden>
+
+       Allocate kernel thread stacks out of kmem_map
+       The kernel submaps eat most of the available kernel space. Using the
+       main kernel map for thread stacks sometimes lead to exhaustion when many
+       threads are created. Use kmem_map instead to increase this limit.
+
+       * kern/thread.c (stack_alloc): Use kmem_map instead of kernel_map for
+       stack allocation.
+       (stack_collect): Likewise for release.
+
+2012-07-07  Richard Braun  <address@hidden>
+
+       Merge kalloc_map into kmem_map
+       * ipc/ipc_table.c: Add #include <kern/slab.h>.
+       (ipc_table_alloc): Use kmem_map instead of kalloc_map when allocating
+       a table.
+       (ipc_table_realloc): Likewise for reallocation.
+       (ipc_table_free): Likewise for release.
+       * kern/kalloc.h (kalloc_map): Remove declaration.
+       * kern/slab.c (KMEM_MAP_SIZE): Increase to 128 MiB.
+       (KALLOC_MAP_SIZE): Remove macro.
+       (kalloc_map_store): Remove variable.
+       (kalloc_map): Likewise.
+       (kalloc_pagealloc): Use kmem_map instead of kalloc_map for general
+       purpose allocations.
+       (kalloc_pagefree): Likewise.
+       (kalloc_init): Remove the creation of kalloc_map.
+
+2012-06-10  Samuel Thibault  <address@hidden>
+
+       Permit to select/deselect whole driver groups
+       * linux/configfrag.ac (AC_OPTION_Linux_group): New function
+       (AC_OPTION_Linux_ix86_at): Do not enable driver by default if the group 
was
+       explicitly disabled.
+       (scsi, net, pcmcia, wireless): Define groups.
+
+2012-05-17  Samuel Thibault  <address@hidden>
+
+       Offset bios32 entry
+       * linux/src/arch/i386/kernel/bios32.c (check_pcibios, pcibios_init): 
Convert
+       physical bios32 entry address to kernel virtual address.
+
+2012-05-17  Samuel Thibault  <address@hidden>
+
+       Clear direction flag after bios32 call
+       Linux does this, there are probably wild BIOSes out there.
+
+       * linux/src/arch/i386/kernel/bios32.c (bios32_service, check_pcibios,
+       pci_bios_find_class, pci_bios_find_device, pci_bios_read_config_byte,
+       pci_bios_read_config_word, pci_bios_read_config_dword,
+       pci_bios_write_config_byte, pci_bios_write_config_word,
+       pci_bios_write_config_dword): Clear direction flag after lcall to 
bios32.
+
+2012-05-05  Samuel Thibault  <address@hidden>
+
+       Offset kernel addresses by 3GiB
+       This permits better trace support in kdb.
+
+       * i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS): Set to 0xC0000000
+       * i386/Makefrag.am (_START): Set to 0xC0100000.
+
+2012-05-05  Samuel Thibault  <address@hidden>
+
+       Document how to offset the kernel to get better debugging
+       * i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS): Document that it can be
+       changed, but _START has to be offset too.
+       (INIT_VM_MIN_KERNEL_ADDRESS): Document that it should remain 0.
+
+2012-04-27  Richard Braun  <address@hidden>
+
+       Augment VM maps with a red-black tree
+       * vm/vm_map.c: Add #include <kern/rbtree.h>.
+       (vm_map_setup): Initialize the map red-black tree.
+       (vm_map_entry_cmp_lookup): New function.
+       (vm_map_entry_cmp_insert): Likewise.
+       (_vm_map_entry_link): Insert map entry in the red-black tree.
+       (_vm_map_entry_unlink): Remove map entry from the red-black tree.
+       (vm_map_lookup_entry): Rework the way the VM map hint is used, and
+       replace the linear search with a binary search tree lookup.
+       (vm_map_copy_insert): Move map entries from the map copy tree to the
+       destination map tree.
+       (vm_map_copyin): Initialize the map copy red-black tree.
+       * vm/vm_map.h: Add #include <kern/rbtree.h>.
+       (vm_map_entry): Add `tree_node' member.
+       (vm_map_header): Add `tree' member.
+
+2012-04-22  Richard Braun  <address@hidden>
+
+       Update comments.
+       Literature about red-black trees vary concerning the cases numbering,
+       and the implementation doesn't make all of them clearly appear. Remove
+       cases numbering references to avoid confusion.
+
+2012-04-22  Richard Braun  <address@hidden>
+
+       Fix copyright assignment
+       Maksym and I have assigned copyright to the Free Software Foundation.
+       In addition, restore the original upstream copyrights for correctness.
+
+       * kern/list.h: Fix copyright assignment.
+       * kern/rbtree.c: Likewise.
+       * kern/rbtree.h: Likewise.
+       * kern/rbtree_i.h: Likewise.
+       * kern/slab.c: Likewise.
+       * kern/slab.h: Likewise.
+
+2012-04-06  Samuel Thibault  <address@hidden>
+
+       Check hyp_stack_switch return
+       * i386/i386/pcb.c (switch_ktss): Check value returned by 
hyp_stack_switch.
+
+       Fix integer type
+       * kern/thread.c (host_stack_usage): Set `total' type to natural_t.
+
+2012-04-06  Samuel Thibault  <address@hidden>
+
+       Do not take address of va_list variable
+       This breaks on x86_64, where it is an array and thus gets bogus results.
+
+       * ddb/db_output.c (db_printf, kdbprintf): Pass copy of va_list variable 
instead
+       of its address.
+       * kern/debug.c (panic, log): Likewise.
+       * kern/printf.c (vprintf, iprintf, sprintf, vsnprintf): Likewise.
+       (_doprnt): Take va_list instead of va_list *, fix usage and comment 
accordingly.
+       * kern/printf.h (_doprnt): Take va_list instead of va_list *.
+
+2012-03-24  Samuel Thibault  <address@hidden>
+
+       Fix Xen boot after c74adfe
+       * i386/Makefrag.am (_START_MAP): Define symbol to 0x100000.
+       * i386/xen/Makefrag.am (_START_MAP): Define symbol to 0xC0000000.
+       * i386/ldscript: Use _START_MAP instead of hardcoding 0x100000.
+
+2012-03-24  Samuel Thibault  <address@hidden>
+
+       Relocate kernel at bootup
+       Grub is not able to map us at high addresses. We can however make it 
load us at
+       low addresses (through the linker script mapping), then use 
segmentation to move
+       ourselves to high addresses, and switch to C which uses high addresses
+       (through _START definition).
+
+       * i386/ldscript: Force mapping kernel at 0x100000, regardless of the 
value
+       of _START.
+       * i386/i386at/boothdr.S (boot_entry): Set up initial segments to 
project the
+       bootstrap linear space to high addresses.
+
+2012-03-24  Samuel Thibault  <address@hidden>
+
+       Make sure BIOS area is mapped in kernel threads
+       * i386/i386at/model_dep.c (i386at_init): Map BIOS memory at 0.
+       * i386/intel/pmap.c (pmap_create): Do not map BIOS memory in user tasks.
+
+2012-03-24  Samuel Thibault  <address@hidden>
+
+       Separate INIT_VM_MIN_KERNEL_ADDRESS from VM_MIN_KERNEL_ADDRESS
+       The former is the initial value set by the bootloader. It may not be the
+       same as what Mach will set up.
+
+       * i386/i386/vm_param.h (INIT_VM_MIN_KERNEL_ADDRESS): New macro.
+       * i386/i386at/model_dep.c (i386at_init): Use INIT_VM_MIN_KERNEL_ADDRESS
+       instead of VM_MIN_KERNEL_ADDRESS.
+
+2012-03-24  Samuel Thibault  <address@hidden>
+
+       Add missing phystokv/kvtophys calls
+       * i386/i386/vm_param.h [!MACH_XEN]: Do not include <xen/public/xen.h>.
+       * i386/i386at/model_dep.c (init_alloc_aligned): Use phystokv to compare 
physical
+       memory addresses with kernel start, end, and symbol table.
+       * i386/intel/pmap.c (pmap_enter): Use kvtophys to convert ptp pointer 
to pte
+       entry.
+       * linux/dev/init/main.c (alloc_contig_mem, linux_init): Use phystokv to 
convert
+       allocated pages to virtual pointer.
+       * linux/src/include/asm-i386/io.h: Include <machine/vm_param.h>.
+       (virt_to_phys): Call _kvtophys.
+       (phys_to_virt): Call phystokv.
+       * linux/src/include/linux/compatmac.h: Include <asm/io.h>.
+       (ioremap): Use phys_to_virt to convert physical address to virtual 
pointer.
+       (my_iounmap): Likewise.
+       * linux/dev/include/asm-i386/page.h: Include <mach/vm_param.h>.
+       (PAGE_SHIFT, PAGE_SIZE, PAGE_MASK): Remove macros.
+       * linux/src/drivers/scsi/ncr53c8xx.c (vm_size_t): Remove type.
+       * linux/dev/glue/net.c: Include <machine/vm_param.h>
+       (device_write): Call phystokv to convert from physical page address to
+       virtual pointer.
+       * linux/dev/glue/block.c (alloc_buffer, free_buffer, rdwr_full): 
Likewise.
+
+       Fix issig crash at boot
+       * linux/dev/glue/misc.c (issig): Return 0 if current_thread() is NULL.
+
+       Fix wrap-around in pmap bootstrap
+       * i386/intel/pmap.c (pmap_bootstrap): Check against `va' wrap around
+       0xffffffff.
+
+2012-03-23  Samuel Thibault  <address@hidden>
+
+       Fix boot with big values of _start
+       When _start is not close to 0, just using init_alloc_aligned() is not 
enough
+       to know how much should be duplicated between linear and virtual 
mappings.
+       Just mapping everything that can be is not very costly and should just 
work
+       when it can work.
+
+       * i386/i386at/model_dep.c (i386at_init) [VM_MIN_KERNEL_ADDRESS !=
+       LINEAR_MIN_KERNEL_ADDRESS]: Extend `nb_direct' to VM_MIN_KERNEL_ADDRESS 
-
+       LINEAR_MIN_KERNEL_ADDRESS.
+
+2012-03-22  Ludovic Courtès  <address@hidden>
+
+       Refer to `PFN_LIST' on Xen only.
+       * i386/i386/i386asm.sym (PFN_LIST): Enclose in #ifdef MACH_XEN.  Thanks
+         to Samuel Thibault for the suggestion.
+
+2012-03-20  Samuel Thibault  <address@hidden>
+
+       Use long types
+       * ddb/db_examine.c (db_xcdump): Do not cast addr before passing to
+       db_read_bytes.
+       * ddb/db_macro.c (db_arg_variable): Return long.
+       * ddb/db_macro.h (db_arg_variable): Likewise.
+       * ddb/db_sym.c (db_maxoff): Set type to unsigned long.
+       * ddb/db_task_thread.c (db_set_default_thread, db_get_task_thread): 
Return
+       long.
+       * ddb/db_variables.h (db_variable): Make fcn function field to return 
long.
+       (FCN_NULL): Make function type return long.
+       * i386/i386/db_interface.c (int_regs): Set field sizes to long.
+       * i386/i386/db_machdep.h (db_expr_t): Set type to long.
+       * i386/i386/db_trace.c (db_i386_reg_value): Return long. Use long types.
+       (i386_frame, i386_kregs, interrupt_frame, db_nextframe): Set field 
sizes to
+       long.
+       (db_regs, i386_kregs): Use long * pointers.
+       (db_lookup_i386_kreg): Return long *.
+       (db_numargs, db_nextframe, db_stack_trace_cmd, db_i386_stack_trace): 
Use long
+       types.
+       * i386/i386/debug_i386.c (dump_ss): Fix format.
+       * i386/i386/ktss.c (ktss_init): Use long type.
+       * i386/i386/pcb.c (set_user_regs): Likewise.
+       * i386/i386/thread.h (i386_saved_state, v86_segs, i386_kernel_state,
+       i386_interrupt_state): Set field sizes to long.
+       * i386/i386/trap.c (kernel_trap, user_trap): Fix formats.
+       * kern/ast.h (ast_t): Set type to long.
+       * kern/boot_script.c (create_task, resume_task, prompt_resume_task,
+       boot_script_set_variable): Use long types.
+       * kern/boot_script.h (boot_script_set_variable): Use long type.
+       * kern/bootstrap.c (bootstrap_create): Pass long type.
+       * kern/lock.c (simple_lock, simple_lock_try): Use long type.
+       * linux/dev/kernel/softirq.c (linux_soft_intr): Fix format.
+
+       Complain about Xen console smash only once at a time
+       * xen/console.c (hypputc): Warning only once per console write about 
console
+       ring smash.
+
+       Make xchgl arch-neutral
+       * i386/i386/xen.h (xchgl): Use xchg instruction instead of xchgl, so the
+       assembler can detect unsigned long size.
+
+2012-03-20  Guillem Jover  <address@hidden>
+
+       Use compiler defined __i386__ symbol instead of use defined i386
+       * i386/configfrag.ac (i386): Remove definition.
+       * i386/intel/pmap.c (pmap_update_interrupt): Rename i386 to __i386__.
+       * i386/intel/pmap.h: Likewise.
+       * kern/debug.c (Debugger): Likewise.
+       * kern/lock.c (simple_lock, simple_lock_try, db_show_all_slocks): 
Likewise.
+
+2012-03-20  Guillem Jover  <address@hidden>
+
+       Change types holding cpu flags from int to long
+       On amd64 the cpu flags is a 64-bit word, and long on 32-bit systems is
+       32-bit wide anyway.
+
+       * linux/dev/glue/kmem.c (linux_kmalloc, linux_kfree, __get_free_pages,
+       free_pages): Use unsigned long instead of unsigned.
+       * linux/dev/include/asm-i386/system.h (__save_flags, __restore_flags):
+       Likewise.
+       * linux/dev/kernel/printk.c (printk): Likewise.
+       * linux/src/drivers/scsi/advansys.c (DvcEnterCritical, DvcLeaveCritical,
+       advansys_queuecommand, advansys_abort, advansys_reset, 
advansys_interrupt,
+       interrupts_enabled, AdvISR): Likewise.
+       * linux/src/drivers/scsi/aha152x.c (aha152x_intr): Likewise.
+       * linux/src/drivers/scsi/aha1542.c (aha1542_intr_handle): Likewise.
+       * linux/src/drivers/scsi/aic7xxx.c (aic7xxx_done_cmds_complete): 
Likewise.
+       * linux/src/drivers/scsi/ultrastor.c (log_ultrastor_abort,
+       ultrastor_queuecommand, ultrastor_abort): Likewise.
+
+2012-03-20  Guillem Jover  <address@hidden>
+
+       Match type for count with tty_get_status and tty_set_status
+       * i386/i386at/com.c (comgetstat): Use natural_t instead of `unsigned 
int'.
+       (comsetstat): Likewise.
+       * i386/i386at/kd.c (kdgetstat, kdsetstat): Likewise.
+       * i386/i386at/lpr.c (lprgetstat, lprsetstat): Likewise.
+
+2012-03-19  Samuel Thibault  <address@hidden>
+
+       Use unsigned int for ELF 32bit values
+       * i386/include/mach/i386/exec/elf.h (Elf32_Addr, Elf32_Off, Elf32_Sword,
+       Elf32_Word): Use int type instead of long.
+
+2012-03-18  Samuel Thibault  <address@hidden>
+
+       Fix assembly snippet portability
+       * xen/evt.c (hyp_c_callback): Do not set assembly instruction suffixes,
+       using 1UL constant instead.
+
+       Use unsigned long types for addresses
+       * i386/include/mach/i386/vm_param.h (i386_btop, i386_ptob, 
i386_round_page,
+       i386_trunc_page): Cast to unsigned long.
+
+       Use unsigned long for registers
+       * i386/i386/proc_reg.h (get_eflags, get_esp, get_eflags, get_cr0, 
get_cr2,
+       get_cr3, get_cr4): Return unsigned long type.
+       (set_eflags, set_cr0, set_cr3, set_cr4): Take unsigned long type.
+
+       Do not hardcode structure offset
+       * i386/i386/i386asm.sym (R_EDI): Define macro.
+       * i386/i386/locore.S (t_page_fault): Use R_CR2-R_EDI instead of 
hardcoded
+       12.
+
+2012-03-18  Samuel Thibault  <address@hidden>
+
+       Set Xen kernel virtual address to 0xC0000000
+       That makes the virtual addressing equal to linear addressing, thus 
optimizing
+       some computations away.
+
+       * i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS) [MACH_XEN]: Set to
+       0xC0000000UL.
+       * i386/xen/Makefrag.am (gnumach_LINKFLAGS): Set _START to 0xC0000000.
+       * i386/xen/xen_boothdr.S (VIRT_BASE, ELF_PADDR_OFFSET): Set to 
0xC0000000.
+
+2012-03-18  Samuel Thibault  <address@hidden>
+
+       Fix access above 4GiB in bootstrap page table
+       * i386/intel/pmap.c (pmap_set_page_readonly_init) [PAE]: Access the 
bootstrap
+       dirbase with PTEMASK (1 page) instead of PDEMASK (4 pages) through 
pmap_pde.
+
+2012-03-15  Thomas Schwinge  <address@hidden>
+
+       Fix build error introduced in 5f701793f63f16d111db3e3d2e91134fcc179c5b.
+       * linux/src/include/linux/interrupt.h (intr_count): Declare as unsigned 
int.
+
+2012-03-14  Samuel Thibault  <address@hidden>
+
+       Simplify splx
+       * i386/i386/spl.S (splx): Use S_ARG0 instead of reimplementing it.
+
+       Fix variable types according to assembly use
+       * linux/dev/arch/i386/kernel/irq.c (intr_count): Set to int type.
+       * linux/dev/kernel/softirq.c (bh_active, bh_mask): Likewise.
+       (linux_soft_intr: active, mask, left): Likewise
+       * linux/src/include/linux/interrupt.h (bh_active, bh_mask): Likewise.
+       * linux/src/kernel/softirq.c (intr_count, bh_active, bh_mask): Likewise.
+       (do_bottom_half: active, mask, left): Likewise
+
+       Stick to binutils ELF scripts
+       * i386/ldscript: Reformat to follow binutils version
+
+       Fix PAE page frame number mask.
+       * i386/intel/pmap.h (INTEL_PTE_PFN): Keep only 47bits, others are not 
usable.
+
+       Fix Xen bootstrap at virtual address above 1GiB
+       * i386/intel/pmap.h (lin2pdpnum): New macro.
+       * i386/intel/pmap.c (pmap_set_page_readonly_init): Use lin2pdpnum macro
+       instead of hardcoding 0.
+
+       Simplify i386at_init
+       * i386/i386at/model_dep.c (i386at_init): Do not copy linear into 
virtual kernel
+       mapping when they are equal, and do not drop the former either. Use the
+       function `i' variable.
+
+       Simplify kvtophys
+       * i386/i386/phys.c (kvtophys): Use pte_to_pa macro instead of 
reimplementing
+       it.
+
+2012-03-09  Samuel Thibault  <address@hidden>
+
+       Use unsigned long for addresses and sizes
+       TODO: remonter formats
+
+       * i386/include/mach/i386/vm_types.h (vm_offset_t): Define to unsigned 
long.
+       (signed32_t): Define to signed int.
+       (unsigned32_t): Define to unsigned int.
+       * i386/include/mach/sa/stdarg.h (__va_size): Use sizeof(unsigned long)-1
+       instead of 3.
+       * include/mach/port.h (mach_port_t): Define to vm_offset_t instead of
+       natural_t.
+       * include/sys/types.h (size_t): Define to unsigned long instead of
+       natural_t.
+       * linux/src/include/asm-i386/posix_types.h (__kernel_size_t): Define to
+       unsigned long.
+       (__kernel_ssize_t): Define to long.
+       * linux/src/include/linux/stddef.h (size_t): Define to unsigned long.
+
+       * device/dev_pager.c (dev_pager_hash): Cast port to vm_offset_t insted 
of
+       natural_t.
+       (device_pager_data_request): Fix format.
+
+       * device/ds_routines.c (ds_no_senders): Fix format.
+       * i386/i386/io_map.c (io_map): Likewise.
+       * i386/i386at/autoconf.c (take_dev_irq): Likewise.
+       * i386/i386at/com.c (comattach): Likewise.
+       * i386/i386at/lpr.c (lprattach): Likewise.
+       * i386/i386at/model_dep.c (mem_size_init, mem_size_init, c_boot_entry):
+       Likewise.
+       * i386/intel/pmap.c (pmap_enter): Likewise.
+       * ipc/ipc_notify.c (ipc_notify_port_deleted, ipc_notify_msg_accepted,
+       ipc_notify_dead_name): Likewise.
+       * ipc/mach_port.c (mach_port_destroy, mach_port_deallocate): Likewise.
+       * kern/ipc_kobject.c (ipc_kobject_destroy): Likewise.
+       * kern/slab.c (kalloc_init): Likewise.
+       * vm/vm_fault.c (vm_fault_page): Likewise.
+       * vm/vm_map.c (vm_map_pmap_enter): Likewise.
+       * xen/block.c (device_read): Likewise.
+
+       * device/net_io.c (bpf_match): Take unsigned long * instead of unsigned 
int
+       *.
+       (bpf_do_filter): Make mem unsigned long instead of long.
+       * i386/i386/ktss.c (ktss_init): Cast pointer to unsigned long instead of
+       unsigned.
+       * i386/i386/pcb.c (stack_attach, switch_ktss): Cast pointers to long 
instead of
+       int.
+       * i386/i386/trap.c (dump_ss): Likewise.
+       * ipc/ipc_hash.c (IH_LOCAL_HASH): Cast object to vm_offset_t.
+       * ipc/mach_msg.c (mach_msg_receive, mach_msg_receive_continue): Cast 
kmsg to
+       vm_offset_t instead of natural_t.
+       * kern/pc_sample.c (take_pc_sample): Cast to vm_offset_t instead of
+       natural_t.
+       * kern/boot_script.c (sym, arg): Set type of `val' field to long 
instead of int.
+       (create_task, builtin_symbols, boot_script_parse_line,
+       boot_script_define_function): Cast to long instead of int.
+       * kern/bootstrap.c (bootstrap_create): Likewise.
+       * kern/sched_prim.c (decl_simple_lock_data): Likewise.
+       * kern/printf.c (vsnprintf): Set size type to size_t.
+       * kern/printf.h (vsnprintf): Likewise.
+       * vm/vm_map.h (kentry_data_size): Fix type to vm_size_t.
+       * vm/vm_object.c (vm_object_pmap_protect_by_page): Fix size parameter 
type
+       to vm_size_t.
+
+2012-03-08  Samuel Thibault  <address@hidden>
+
+       Move kentry_data_size initial value to header
+       * vm/vm_map.h (KENTRY_DATA_SIZE): Define macro.
+       * vm/vm_map.c (kentry_data_size): Initialize to KENTRY_DATA_SIZE.
+
+2012-03-03  Gabriele Giacone  <address@hidden>
+
+       Set default serial parameters to 8N1 instead of 7E1
+       * i386/i386at/com.c (comcninit): Set LINE_CTL register to i8BITS 
instead of
+       i7BITS|iPEN.
+
+2012-02-19  Samuel Thibault  <address@hidden>
+
+       Fix format for string print
+       * linux/src/drivers/net/3c505.c (elp_sense): Use %s format for printing 
a mere
+       string, not the string.
+
+       Fix format for string print
+       * linux/src/drivers/net/8390.c: Use %s format for printing a mere 
string, not
+       the string.
+
+       Fix format for string print
+       * linux/src/drivers/net/3c503.c (el2_probe1): Use %s format for 
printing a mere
+       string, not the string.
+
+       Fix format for string print
+       * linux/src/drivers/scsi/aha1542.c (aha1542_setup): Use %s format for 
printing a
+       mere string, not the string.
+
+       Fix format for string print
+       * linux/src/drivers/scsi/advansys.c (asc_prt_line): Use %s format for
+       printing a mere string, not the string.
+
+       Fix format for string print
+       * i386/i386at/model_dep.c (c_boot_entry): Use %s format for printing a 
mere
+       string, not the string.
+
+2012-01-28  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' into master-slab
+
+2012-01-22  Samuel Thibault  <address@hidden>
+
+       Fix build on 64bit host
+       When stealing the memset function from the 32bit host libc on a 64bit 
host
+       system, glibc tends to bring unwanted references to _Unwind_Resume,
+       __gcc_personality_v0, etc. So let's stop stealing memset.
+
+       * kern/strings.c (memset): New function.
+       * Makefile.am (clib_routines): Remove memset.
+
+2012-01-09  Richard Braun  <address@hidden>
+
+       Improve ipc hash/marequest init readability
+       Use macros instead of raw numeric values.
+
+       * ipc/ipc_hash.h (IPC_HASH_GLOBAL_SIZE): New macro.
+       * ipc/ipc_hash.c (ipc_hash_init): Directly set the global hash table
+       size to IPC_HASH_GLOBAL_SIZE.
+       * ipc/ipc_marequest.h (IPC_MAREQUEST_SIZE): New macro.
+       * ipc/ipc_marequest.c (ipc_marequest_init): Directly set the marequest
+       hash table size to IPC_MAREQUEST_SIZE.
+
+2011-12-30  Samuel Thibault  <address@hidden>
+
+       Cope with dom0s which do not respect feature-no-csum-offload
+       Event with feature-no-csum-offload=1, some dom0s (such as Debian 
Squeeze's
+       2.6.32) send packets with a blank checksum. Recompute them before givin 
the
+       packet to pfinet.
+
+       * xen/net.c (recompute_checksum): New function.
+       (hyp_net_intr): Call recompute_checksum when the checksum is blank but 
the
+       data is validated.
+
+2011-12-29  Samuel Thibault  <address@hidden>
+
+       Fix typo
+
+       Upgrade number of event queues
+       * kern/sched_prim.c (NUMQUEUES): Increase to 1031
+
+2011-12-17  Richard Braun  <address@hidden>
+
+       Remove arbitrary limits used by the zone system
+       The zone allocator could limit the size of its zones to an arbitrary
+       value set at zinit() time. There is no such parameter with the slab
+       module. As a result of removing those limits, the kern/mach_param.h
+       header becomes empty, and is simply removed altogether.
+
+       * Makefrag.am (libkernel_a_SOURCES): Remove kern/mach_param.h.
+       * i386/i386/fpu.c: Remove #include <kern/mach_param.h>.
+       * i386/i386/machine_task.c: Likewise.
+       * i386/i386/pcb.c: Likewise.
+       * ipc/ipc_init.c: Likewise.
+       (ipc_space_max): Remove variable.
+       (ipc_tree_entry_max): Likewise.
+       (ipc_port_max): Likewise.
+       (ipc_pset_max): Likewise.
+       * ipc/ipc_init.h (IPC_ZONE_TYPE): Remove macro.
+       (ipc_space_max): Remove extern declaration.
+       (ipc_tree_entry_max): Likewise.
+       (ipc_port_max): Likewise.
+       (ipc_pset_max): Likewise.
+       * ipc/ipc_hash.c (ipc_hash_init): Don't use ipc_tree_entry_max to
+       compute ipc_hash_global_size.
+       * ipc/ipc_marequest.c: Remove #include <kern/mach_param.h>.
+       (ipc_marequest_max): Remove variable.
+       (ipc_marequest_init): Don't use ipc_marequest_max to compute
+       ipc_marequest_size.
+       (ipc_marequest_info): Return (unsigned int)-1 in maxp.
+       * kern/act.c: Remove #include <kern/mach_param.h>.
+       * kern/mach_clock.c: Likewise.
+       * kern/priority.c: Likewise.
+       * kern/task.c: Likewise.
+       * kern/thread.c: Likewise.
+       * vm/memory_object_proxy.c: Likewise.
+       * vm/vm_fault.c: Likewise.
+
+2011-12-17  Richard Braun  <address@hidden>
+
+       Remove the defunct kernel_task_create() function
+       The kmem_suballoc() function, which has been replaced with
+       kmem_submap(), is called by kernel_task_create(). Rather than update it,
+       remove this now unused function.
+
+       * kern/task.c (kernel_task_create): Remove function.
+       * kern/task.h (kernel_task_create): Remove prototype.
+
+2011-12-17  Richard Braun  <address@hidden>
+
+       Fix kern/kalloc.h includes
+       * device/dev_pager.c: Remove #include <kern/kalloc.h>.
+       * i386/i386/io_perm.c: Add #include <kern/kalloc.h>.
+       * kern/bootstrap.c: Likewise.
+       * kern/ipc_tt.c: Likewise.
+       * kern/pc_sample.c: Likewise.
+       * kern/processor.c: Likewise.
+       * kern/server_loop.ch: Likewise.
+       * kern/thread.c: Likewise.
+       * linux/dev/glue/block.c: Likewise.
+       * linux/dev/glue/net.c: Likewise.
+       * vm/vm_map.c: Likewise.
+       * xen/block.c: Likewise.
+       * xen/net.c: Likewise.
+       * xen/store.c: Likewise.
+
+2011-12-17  Richard Braun  <address@hidden>
+
+       Adjust VM initialization
+       Unlike the zone allocator, the slab code can't be fed with an initial
+       chunk of memory. Some VM objects used early during startup now have to
+       be statically allocated, and kernel map entries need a special path
+       to avoid recursion when being allocated.
+
+       * vm/vm_map.c (vm_submap_object_store): New variable.
+       (vm_submap_object): Point to vm_submap_object_store.
+       (kentry_data_size): Initialize to arbitrary value.
+       (kentry_count): Remove variable.
+       (kentry_pagealloc): New function.
+       (vm_map_setup): Likewise.
+       (vm_map_create): Replace initialization with a call to vm_map_setup().
+       * vm/vm_map.h (vm_map_setup): New prototype.
+       * vm/vm_kern.c (kernel_map_store): New variable.
+       (kernel_map): Point to kernel_map_store.
+       (kmem_suballoc): Remove function. Replaced with...
+       (kmem_submap): New function.
+       (kmem_init): Call vm_map_setup() instead of vm_map_create().
+       * vm/vm_kern.h (kmem_suballoc): Remove prototype.
+       (kmem_submap): New prototype.
+       * vm/vm_object.c (kernel_object_store): New variable.
+       (kernel_object): Point to kernel_object_store.
+       (vm_object_template): Change type from vm_object_t to struct vm_object.
+       (_vm_object_setup): New function.
+       (_vm_object_allocate): Replace initialization with a call to
+       _vm_object_setup().
+       (vm_object_bootstrap): Don't allocate vm_object_template, and use it as
+       a structure instead of a pointer. Initialize kernel_object and
+       vm_submap_object with _vm_object_setup() instead of
+       _vm_object_allocate().
+       * vm/vm_resident.c (vm_page_bootstrap): Don't initialize
+       kentry_data_size.
+       * device/ds_routines.c (device_io_map_store): New variable.
+       (device_io_map): Point to device_io_map_store.
+       (mach_device_init): Call kmem_submap() instead of kmem_suballoc().
+       * ipc/ipc_init.c (ipc_kernel_map_store): New variable.
+       (ipc_kernel_map): Point to ipc_kernel_map_store.
+
+2011-12-17  Richard Braun  <address@hidden>
+
+       Adjust the kernel to use the slab allocator
+       * device/dev_lookup.c: Replace zalloc header, types and function calls
+       with their slab counterparts.
+       * device/dev_pager.c: Likewise.
+       * device/ds_routines.c: Likewise.
+       * device/io_req.h: Likewise.
+       * device/net_io.c: Likewise.
+       * i386/i386/fpu.c: Likewise.
+       * i386/i386/io_perm.c: Likewise.
+       * i386/i386/machine_task.c: Likewise.
+       * i386/i386/pcb.c: Likewise.
+       * i386/i386/task.h: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * i386/intel/pmap.h: Remove #include <kernel/zalloc.h>.
+       * include/mach_debug/mach_debug.defs (host_zone_info): Replace
+       routine declaration with skip directive.
+       (host_slab_info): New routine declaration.
+       * include/mach_debug/mach_debug_types.defs (zone_name_t)
+       (zone_name_array_t, zone_info_t, zone_info_array_t): Remove types.
+       (cache_info_t, cache_info_array_t): New types.
+       * include/mach_debug/mach_debug_types.h: Replace #include
+       <mach_debug/zone_info.h> with <mach_debug/slab_info.h>.
+       * ipc/ipc_entry.c: Replace zalloc header, types and function calls with
+       their slab counterparts.
+       * ipc/ipc_entry.h: Likewise.
+       * ipc/ipc_init.c: Likewise.
+       * ipc/ipc_marequest.c: Likewise.
+       * ipc/ipc_object.c: Likewise.
+       * ipc/ipc_object.h: Likewise.
+       * ipc/ipc_space.c: Likewise.
+       * ipc/ipc_space.h: Likewise.
+       * ipc/ipc_table.c (kalloc_map): Remove extern declaration.
+       * kern/act.c: Replace zalloc header, types and function calls with their
+       slab counterparts.
+       * kern/kalloc.h: Add #include <vm/vm_types.h>.
+       (MINSIZE): Remove definition.
+       (kalloc_map): Add extern declaration.
+       (kget): Remove prototype.
+       * kern/mach_clock.c: Adjust comment.
+       * kern/processor.c: Replace zalloc header, types and function calls with
+       their slab counterparts.
+       * kern/startup.c: Remove #include <kernel/zalloc.h>.
+       * kern/task.c: Replace zalloc header, types and function calls with
+       their slab counterparts.
+       * kern/thread.c: Likewise.
+       * vm/memory_object_proxy.c: Likewise.
+       * vm/vm_external.c: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_init.c: Likewise.
+       * vm/vm_map.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_page.h: Remove #include <kernel/zalloc.h>.
+       * vm/vm_pageout.c: Replace zalloc header, types and function calls with
+       their slab counterparts.
+       * vm/vm_resident.c: Likewise.
+       (zdata, zdata_size): Remove declarations.
+       (vm_page_bootstrap): Don't steal memory for the zone system.
+
+2011-12-17  Richard Braun  <address@hidden>
+
+       Import the slab allocator
+       As it is intended to completely replace the zone allocator, remove it on
+       the way. So long to the venerable code !
+
+       * Makefrag.am (libkernel_a_SOURCES): Add kern/slab.{c,h}, remove 
kern/kalloc.c
+       and kern/zalloc.{c,h}.
+       * configfrag.ac (SLAB_VERIFY, SLAB_USE_CPU_POOLS): Add defines.
+       * i386/Makefrag.am (libkernel_a_SOURCES): Remove i386/i386/zalloc.h.
+       * i386/configfrag.ac (CPU_L1_SHIFT): Remove define.
+       * include/mach_debug/slab_info.h: New file.
+       * kern/slab.c: Likewise.
+       * kern/slab.h: Likewise.
+       * i386/i386/zalloc.h: Remove file.
+       * include/mach_debug/zone_info.h: Likewise.
+       * kern/kalloc.c: Likewise.
+       * kern/zalloc.c: Likewise.
+       * kern/zalloc.h: Likewise.
+
+2011-12-17  Richard Braun  <address@hidden>
+
+       Import utility files
+       * Makefrag.am (libkernel_a_SOURCES): Add kern/list.h, kern/rbtree.c,
+       kern/rbtree.h and kern/rbtree_i.h.
+       * kern/list.h: New file.
+       * kern/rbtree.c: Likewise.
+       * kern/rbtree.h: Likewise.
+       * kern/rbtree_i.h: Likewise.
+       * kern/macro_help.h (MACRO_BEGIN): Use GNU C compound statement
+       enclosed in parentheses.
+       (MACRO_END): Likewise.
+
+2011-11-27  Samuel Thibault  <address@hidden>
+
+       Keep frame pointer when debugger is enabled
+       * Makefrag.am (AM_CFLAGS) [enable_kdb]: Add -fno-omit-frame-pointer.
+
+2011-10-16  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of callisto:gnumach
+
+2011-10-16  Samuel Thibault  <address@hidden>
+
+       Do not map xen driver pages
+       * xen/block.c (hyp_block_init): Use vm_page_grab_phys_addr instead of
+       kmem_alloc_wired to allocate driver pages.
+       * xen/net.c (hyp_net_init): Likewise.
+
+2011-10-16  Samuel Thibault  <address@hidden>
+
+       Increase kmem area for the Xen case.
+       Kernel tacks are 4 pages in the Xen case, so we need more kmem space.
+
+       * i386/i386/vm_param.h (VM_KERNEL_MAP_SIZE) [MACH_XEN]: Increase to 
224MiB.
+
+2011-10-10  Samuel Thibault  <address@hidden>
+
+       Raise block device interrupt level to SPL6
+       * linux/dev/drivers/block/genhd.c (device_setup): Set linux_intr_pri to
+       SPL6.
+       * linux/dev/glue/block.c (init_partition, device_open): Likewise.
+
+       Raise Linux kmem memory size
+       * linux/dev/glue/kmem.c (MEM_CHUNKS): Increase to 32.
+
+2011-10-10  Samuel Thibault  <address@hidden>
+
+       Leave interrupts enabled in sym53c8xx driver
+       The driver can work with them, and request_irq works fine with them.
+
+       * linux/src/drivers/scsi/sym53c8xx.c (ncr_attach): Do not pass 
SA_INTERRUPT to
+       request_irq().
+
+2011-10-09  Samuel Thibault  <address@hidden>
+
+       Define BITS_PER_LONG for Linux code
+       * linux/src/include/asm-i386/types.h (BITS_PER_LONG): Define to 32.
+
+2011-10-08  Samuel Thibault  <address@hidden>
+
+       Add sym53c8xx driver from linux 2.2
+       This driver supports qemu's SCSI host device.
+       Unfortunately it seems to be breaking the network device, so test with 
care.
+
+       * linux/Makefrag.am (liblinux_a_SOURCES): Add
+       linux/src/drivers/scsi/sym53c8xx{.c,_comm.h,.h,_defs.h}
+       * linux/configfrag.ac: Add AC_Linux_DRIVER([sym53c8xx] to enable
+       CONFIG_SCSI_SYM53C8XX.
+       * linux/dev/glue/kmem.c (MEM_CHUNKS): Increase to 16.
+       * linux/src/drivers/scsi/hosts.c [CONFIG_SCSI_SYM53C8XX]: Include 
"sym53c8xx.h".
+       (builtin_scsi_hosts): include SYM53C8XX.
+
+2011-09-28  Sergio Lopez  <address@hidden>
+
+       fix copy out-of-line data when length >= 512MB
+       * ipc/ipc_kmsg.c (ipc_kmsg_copyin_body): Change length type to
+       unsigned64_t. Cast number to unsigned64_t.
+       (ipc_kmsg_copyout_body): Likewise.
+
+2011-09-28  Sergio López  <address@hidden>
+
+       Make thread_suspend honor the TH_UNINT flag
+       Interrupting a thread without a continuation, puts it in a
+       inconsistent state. This is the cause for the bug described in
+       https://lists.gnu.org/archive/html/bug-hurd/2011-09/msg00148.html
+
+       * kern/thread.c (thread_suspend): Fail with KERN_FAILURE if thread is
+       uninterruptible.
+
+2011-09-12  Guillem Jover  <address@hidden>
+
+       Remove unused [!MACH_KERNEL] driver code
+       Use «unifdef -DMACK_KERNEL=1» as a starting point, but only remove
+       the code not exposed on public headers, the rest is needed to build
+       properly from userland.
+
+       * device/cons.c [!MACH_KERNEL]: Remove includes.
+       [!MACH_KERNEL] (constty): Remove variable.
+       (cninit, cnmaygetc) [MACH_KERNEL]: Remove preprocessor conditionals.
+       [!MACH_KERNEL] (cnopen, cnclose, cnread, cnwrite, cnioctl, cnselect)
+       (cncontrol): Remove functions.
+       * device/cons.h (struct consdev) [MACH_KERNEL]: Remove preprocessor
+       conditional.
+       * device/kmsg.h [MACH_KERNEL]: Likewise.
+       * i386/i386at/autoconf.c [!MACH_KERNEL]: Remove includes.
+       * i386/i386at/kd_event.c [!MACH_KERNEL]: Likewise.
+       [!MACH_KERNEL] (kbd_sel, kbdpgrp, kbdflag): Remove variables.
+       [!MACH_KERNEL] (KBD_COLL, KBD_ASYNC, KBD_NBIO): Remove macros.
+       (kbdopen, kbdclose, kbd_enqueue) [!MACH_KERNEL]: Remove code.
+       [!MACH_KERNEL] (kbdioctl, kbdselect, kbdread): Remove functions.
+       [!MACH_KERNEL] (X_kdb_enter_init, X_kdb_exit_init: Likewise.
+       * i386/i386at/kd_mouse.c [!MACH_KERNEL]: Remove includes.
+       [!MACH_KERNEL] (mouse_sel, mousepgrp, mouseflag): Remove variables.
+       [!MACH_KERNEL] (MOUSE_COLL, MOUSE_ASYNC, MOUSE_NBIO): Remove macros.
+       (mouseopen, mouseclose, kd_mouse_read, mouse_enqueue) [!MACH_KERNEL]: 
Remove
+       code.
+       [!MACH_KERNEL] (mouseioctl, mouseselect, mouseread): Remove functions.
+       * i386/i386at/lpr.c [!MACH_KERNEL]: Remove includes.
+       (lpropen) [MACH_KERNEL]: Remove preprocessor conditionals.
+       (lpropen, lprclose, lprstart) [!MACH_KERNEL]: Remove code.
+       [!MACH_KERNEL] (lprwrite, lprioctl, lprstop): Remove functions.
+       * i386/i386at/rtc.c (readtodc, writetodc) [!MACH_KERNEL]: Remove code.
+       * kern/mach_factor.c [MACH_KERNEL]: Remove preprocessor conditional.
+       * xen/time.c (readtodc) [!MACH_KERNEL]: Remove code.
+
+2011-09-09  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+2011-09-09  Guillem Jover  <address@hidden>
+
+       Do not take unused strpbrk() from libc
+       * Makefile.am (clib_routines): Remove strpbrk.
+
+2011-09-06  Thomas Schwinge  <address@hidden>
+
+       * .gitignore: Tighten some rules, and distribute others to... * 
doc/.gitignore: ... here; * i386/i386/.gitignore: ... here; * tests/.gitignore: 
..., and here.
+
+       * i386/i386/pcb.h (stack_attach): Parameterize the continuation 
parameter's parameter list. * i386/i386/pcb.c (stack_attach): Likewise.
+
+       Move i386/i386/locore.S declarations.
+       * i386/i386/trap.c (recover_table, recover_table_end, retry_table)
+       (retry_table_end): Move declarations to...
+       * i386/i386/locore.h: ... here.
+
+2011-09-06  Thomas Schwinge  <address@hidden>
+
+       Further prototyping work for memory_object_proxy.c functions.
+       * vm/memory_object_proxy.h: Add #includes.
+       (memory_object_proxy_lookup): New declaration.
+       * vm/memory_object_proxy.c: #include <vm/memory_object_proxy.h>.
+       * vm/vm_user.c: Likewise.
+       (memory_object_proxy_lookup): Drop declaration.
+
+       Parts based on a patch by Fridolín Pokorný <address@hidden>.
+
+2011-09-05  Samuel Thibault  <address@hidden>
+
+       Drop module memory free verbosity
+       * kern/bootstrap.c (bootstrap_create): Do not show freed module memory.
+
+       Free memory used by boot modules
+       * vm/vm_resident.c (pmap_startup): Warn when some pages could not be 
included
+       in the allocator due to bad estimation.
+       * kern/bootstrap.c: Include <vm/pmap.h>.
+       (bootstrap_create): Call vm_page_create on bootstrap modules content.
+
+2011-09-03  Fridolín Pokorný  <address@hidden>
+
+       Add prototypes for memory_object_proxy.c functions
+       * vm/memory_object_proxy.h: Add file.
+       * vm/vm_init.c: Include <vm/memory_object_proxy.h>.
+       * kern/ipc_kobject.c: Likewise.
+       * Makefile.am (libkernel_a_SOURCES): Add vm/memory_object_proxy.h.
+
+2011-09-03  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+2011-09-02  Guillem Jover  <address@hidden>
+
+       Remove long obsolete RPC routines
+       * kern/compat_xxx_defs.h: Remove file.
+       * Makefrag.am (libkernel_a_SOURCES): Remove `kern/compat_xxx_defs.h'.
+
+       * include/mach/mach_types.defs (xxx_emulation_vector_t): Remove type.
+
+       * device/device.srv: Do not simport <kern/compat_xxx_defs.h>.
+       * kern/mach.srv: Likewise.
+       * kern/mach_host.srv: Likewise.
+
+       * include/device/device.defs [MACH_KERNEL]: Do not simport
+       <kern/compat_xxx_defs.h>.
+       (xxx_device_set_status, xxx_device_get_status)
+       (xxx_device_set_filter): Replace routine declarations with skip
+       directives.
+       * include/mach/mach.defs [MACH_KERNEL]: Do not simport
+       <kern/compat_xxx_defs.h>.
+       (xxx_memory_object_lock_request, xxx_task_get_emulation_vector)
+       (xxx_task_set_emulation_vector, xxx_host_info, xxx_slot_info)
+       (xxx_cpu_control, xxx_task_info, xxx_thread_get_state)
+       (xxx_thread_set_state, xxx_thread_info): Replace routine declarations
+       with skip directive.
+       * include/mach/mach_host.defs [MACH_KERNEL]: Do not simport
+       <kern/compat_xxx_defs.h>.
+       (yyy_host_info, yyy_processor_info, yyy_processor_control)
+       (xxx_processor_set_default_priv, yyy_processor_set_info): Replace
+       routine declarations with skip directive.
+
+       * kern/ipc_host.c (xxx_processor_set_default_priv): Remove function.
+       * kern/machine.c (xxx_host_info, xxx_slot_info)
+       (xxx_cpu_control): Likewise.
+       * kern/syscall_emulation.c (xxx_task_set_emulation_vector)
+       (xxx_task_get_emulation_vector): Likewise.
+       * vm/memory_object.c (xxx_memory_object_lock_request): Likewise.
+
+2011-09-02  Guillem Jover  <address@hidden>
+
+       Do not remap errno codes from E* to LINUX_E*
+       Mach no longer uses any of the old and clashing errno E* codes, so
+       it's safe to use them now w/o namespacing. This also means one less
+       modification needed to the Linux code.
+
+       * linux/dev/include/asm-i386/errno.h: Remove file.
+       * linux/dev/kernel/dma.c (notifier_chain_unregister) [MACH_INCLUDE]: 
Remove
+       code.
+       * linux/dev/include/linux/notifier.h: Likewise.
+       * linux/dev/arch/i386/kernel/irq.c (setup_x86_irq): Rename LINUX_EBUSY
+       to EBUSY.
+       (request_irq): Rename LINUX_EINVAL to EINVAL.
+       * linux/dev/glue/block.c (register_blkdev): Rename LINUX_EBUSY to EBUSY
+       and LINUX_EINVAL to EINVAL.
+       (unregister_blkdev): Rename LINUX_EINVAL to EINVAL.
+       (rdwr_partial) Rename LINUX_ENOMEM to ENOMEM and LINUX_EIO to EIO.
+       * linux/dev/glue/misc.c (linux_to_mach_error): Rename LINUX_EPERM to
+       EPERM, LINUX_EIO to EIO, LINUX_ENXIO to ENXIO, LINUX_EACCES to EACCES,
+       LINUX_EFAULT to EFAULT, LINUX_EBUSY to EBUSY, LINUX_EINVAL to EINVAL,
+       LINUX_EROFS to EROFS, LINUX_EWOULDBLOCK to EWOULDBLOCK and LINUX_ENOMEM
+       to ENOMEM.
+       (verify_area): Rename LINUX_EFAULT to EFAULT.
+       * linux/dev/kernel/resource.c (check_region): Rename LINUX_EBUSY to
+       EBUSY.
+       * linux/dev/kernel/sched.c (__do_down): Rename LINUX_EINTR to EINTR.
+
+2011-09-02  Guillem Jover  <address@hidden>
+
+       Use Mach native error codes instead of POSIX errno E* ones
+       * device/errno.h: Remove file.
+       * Makefrag.am (libkernel_a_SOURCES): Remove `device/errno.h'.
+       * i386/i386at/com.c: Include <device/device_types.h> instead of
+       <device/errno.h>.
+       (comopen): Replace ENXIO with D_NO_SUCH_DEVICE.
+       * i386/i386at/kd_event.c: Include <device/device_types.h> instead of
+       <device/errno.h>.
+       * i386/i386at/kd_mouse.c: Likewise.
+       (mouseopen): Replace ENODEV with D_NO_SUCH_DEVICE and EBUSY with
+       D_ALREADY_OPEN.
+       * i386/i386at/lpr.c: Include <device/device_types.h> instead of
+       <device/errno.h>.
+       (lpropen): Replace ENXIO with D_NO_SUCH_DEVICE and EBUSY with
+       D_ALREADY_OPEN.
+
+2011-09-02  Guillem Jover  <address@hidden>
+
+       Change argument name to match function body usage
+       Otherwise the function wrongly uses the global symbol.
+
+       * linux/src/drivers/scsi/ppa.c (ppa_nibble_in): Rename `str_p' argument
+       to `base'.
+
+2011-09-02  Guillem Jover  <address@hidden>
+
+       Disable set but unused variable
+       * linux/src/drivers/scsi/gdth.c (gdth_detect): Conditionalize `b' on
+       [LINUX_VERSION_CODE < 0x020000]. Do not preset it to 0, it's initialized
+       later on when needed.
+
+       Remove set but unused variables
+       * linux/dev/drivers/block/floppy.c (setup_rw_floppy): Remove `dflags'.
+       (floppy_eject): Remove `dummy'.
+       * linux/src/drivers/net/8390.c (ethdev_init): Remove `ei_local'.
+       * linux/src/drivers/scsi/ppa.c (ppa_detect): Remove `ppb'.
+
+       Cast addr argument to vm_offset_t
+       * linux/dev/glue/kmem.c (vfree): Cast `addr' argument on kfree_mem
+       function to vm_offset_t.
+
+       Add vsnprintf prototype
+       * kern/printf.h (vsnprintf): New prototype.
+
+       Add missing headers
+       * linux/dev/init/main.c: Include <linux/pci.h>.
+       * linux/dev/kernel/printk.c: Include <kern/printf.h>.
+
+2011-09-01  Ludovic Courtès  <address@hidden>
+
+       Add missing header file to the distribution.
+       * linux/Makefrag.am (liblinux_a_SOURCES): Add `linux/dev/glue/glue.h',
+         which appeared in commit 2b4bff9914d57bff600ac70194b8b1aab3485bee
+         ("Fix declarations").
+
+2011-09-01  Samuel Thibault  <address@hidden>
+
+       Fix documentation
+
+       Close kernel stacks.
+       * i386/i386/pcb.c (stack_attach): Initialize ebp to 0.
+
+2011-09-01  Samuel Thibault  <address@hidden>
+
+       Fix PC sampling
+       interrupt.S now saves the IRQ on the stack to acknowledge it later.
+
+       * i386/i386/hardclock.c (hardclock): Add irq parameter.
+       * i386/i386at/kd.c (kdintr, kdcheckmagic): Remove regs parameter.
+       * i386/i386at/kd.h (kdintr): Likewise.
+
+2011-08-31  Guillem Jover  <address@hidden>
+
+       Add silent rules support if available and disable it by default
+       * configure.ac (AM_SILENT_RULES): Add silent rules support if available,
+       and disable it by default.
+       * Makefile.am (AWK_V, AWK_V_, AWK_V_0): New variables.
+       (NM_V, NM_V_, NM_V_0): Likewise.
+       (GZIP_V, GZIP_V_, GZIP_V_0): Likewise.
+       (MIGCOM_V, MIGCOM_V_, MIGCOM_V_0): Likewise.
+       (gnumach-undef): Use NM_V in front of NM.
+       (gnumach-undef-bad): Use AM_V_GEN in front of sed.
+       (clib-routines.o): Use AM_V_at in fron of undefined symbols check.
+       Use AM_V_CCLD in front of CCLD.
+       * Makefrag.am (gnumach.msgids): Use AM_V_GEN in front of cat.
+       * Makerules.am (%.symc): Use AWK_V in front of AWK.
+       (%.symc.o): Use AM_V_CC in front of COMPILE.
+       (%.h): Use AM_V_GEN in front of sed.
+       (%.gz): Use GZIP_V in front of GZIP.
+       * Makerules.mig.am (%.user.defs.c): Use AM_V_GEN in front of command.
+       (%.server.defs.c): Likewise.
+       (%.user.h %.user.c %.user.msgids): Use MIGCOM_V in front of MIGCOM.
+       (%.server.h %.server.c %.server.msgids): Likewise.
+
+2011-08-31  Samuel Thibault  <address@hidden>
+
+       Optimize copyout path
+       * i386/i386/locore.S (copyout): Remove RETRY() use from >=i486 variant. 
Move
+       copyout_ret and copyout_fail.
+
+       Fix copyout retry on lazy allocation on >= i486
+       * i386/i386/locore.S (copyout): Add a >=i486 variant of copyout which 
uses
+       no loop, but simply retries rep mov.
+
+       Disable global page while writing in kernel space
+       * i386/i386/db_interface.c (db_write_bytes): If CPU has PGE feature, 
disable
+       CR4_PGE before enabling kernel page write access, and re-enable the 
former after
+       disabling the latter.
+
+2011-08-31  Samuel Thibault  <address@hidden>
+
+       Protect set_cr3 against compiler assignment optimizations
+       This fixes the kdb `break' command.
+
+       i386/i386/proc_reg.h (set_cr3): Add "memory" clobber.
+
+2011-08-31  Guillem Jover  <address@hidden>
+
+       Fix undefined operation on assigning self pre-incremented variable
+       * linux/src/drivers/scsi/wd7000.c (mail_out): Add `1' instead of
+       pre-incrementing self assigned variable.
+       * linux/src/drivers/net/de4x5.c (de4x5_sw_reset, de4x5_queue_pkt, 
de4x5_rx)
+       (de4x5_tx, de4x5_rx_ovfc, set_multicast_list, ping_media, mii_get_phy)
+       (de4x5_ioctl): Likewise.
+       * linux/src/drivers/net/depca.c (depca_rx, depca_tx, load_packet): 
Likewise.
+
+       Honour type promotion on variable argument handling
+       * linux/dev/lib/vsprintf.c (linux_vsprintf): Use `int' when retrieving
+       a `short' through `va_arg'.
+
+       Correct MiG Mach types to fix compilation warnings
+       * include/mach/mach_types.defs (thread_info_t): Change from array of
+       natural_t to integer_t.
+       (task_info_t): Likewise.
+       (host_info_t): Likewise.
+       (processor_info_t): Likewise.
+       (processor_set_info_t): Likewise.
+
+       Denote __exit symbols as used
+       * linux/src/include/linux/init.h: Include <linux/compiler.h>.
+       (__exitused): New macro.
+       (__exit): Define to ` __exitused __cold notrace'.
+       * linux/src/include/linux/kcomp.h (__exit): Remove.
+
+       Move <linux/init.h> from linux/pcmcia-cs to linux/src
+       * linux/pcmcia-cs/include/linux/init.h: Move to ...
+       * linux/src/include/linux/init.h: ... here.
+
+       Import Linux 3.1 compiler definitions
+       * linux/src/include/linux/compiler.h: New file.
+       * linux/src/include/linux/compiler-gcc.h: Likewise.
+       * linux/src/include/linux/compiler-gcc3.h: Likewise.
+       * linux/src/include/linux/compiler-gcc4.h: Likewise.
+       * linux/dev/include/linux/kernel.h (barrier): Remove definition and
+       include <linux/compiler.h> instead.
+
+       Import Linux 3.1 ctype code
+       * linux/src/include/linux/ctype.h: Update file.
+       * linux/src/lib/ctype.c: Likewise.
+
+       Remove unused and non-functional string specialization header
+       * linux/src/include/asm-i386/string-486.h: Remove.
+
+       Fix memcmp prototype
+       * include/string.h (memcmp): Remove bogus `*' from return type.
+
+2011-08-31  Samuel Thibault  <address@hidden>
+
+       Fix declarations
+       * device/ds_routines.h (io_done_list): Add variable declaration.
+       (device_io_map): Keep variable declaration and move definition to...
+       * device/ds_routines.c: ... here.
+       * i386/i386/fpu.c: Include <i386/pic.h>
+       (curr_ipl): Remove declaration.
+       (fpintr): Add int unit parameter.
+       * linux/dev/glue/glue.h: New header.
+       * i386/i386/fpu.h (fpintr): Add function prototype.
+       * i386/i386/hardclock.c (clock_interrupt, linux_timer_intr): Remove 
prototypes.
+       [LINUX_DEV]: Include <linux/dev/glue/glue.h>
+       * i386/i386/ipl.h (curr_ipl): Add declaration.
+       * i386/i386/pic.h (curr_pic_mask, pic_mask, prtnull, intnull): Add
+       declarations.
+       * i386/i386at/kd.h (kdintr): Add declaration.
+       * i386/i386at/pic_isa.c: Include <i386/fpu.h> and <i386at/kd.h>
+       (intnull, fpintr, hardclock, kdintr, prtnull): Remove prototypes.
+       * i386/xen/xen.c: Include <kern/mach_clock.h>
+       (clock_interrupt): Remove prototype.
+       * linux/dev/arch/i386/kernel/irq.c: Include <linux/dev/glue/glue.h> and
+       <machine/machspl.h>
+       (linux_timer_intr, splhigh, spl0, curr_ipl, curr_pic_mask, pic_mask,
+       get_options): Remove declarations.
+       * linux/dev/drivers/block/floppy.c: Include <linux/dev/glue/glue.h>
+       (issig, get_options): Remove declarations.
+       * linux/dev/drivers/block/genhd.c: Include <linux/dev/glue/glue.h>
+       (linux_intr_pri): Remove declaration.
+       * linux/dev/glue/block.c: Include <devices/ds_routines.h> and
+       <linux/dev/glue/glue.h>.
+       (device_io_map, blksize_size): Remove declarations.
+       * linux/dev/glue/kmem.c: Include <kern/printf.h> and 
<linux/dev/glue/glue.h>
+       (alloc_contig_mem, printf): Remove declarations.
+       * linux/dev/glue/misc.c: Include <printf.h> and <linux/dev/glue/glue.h>
+       (vm_map_lookup_entry, printf): Remove prototypes.
+       * linux/dev/glue/net.c: Include <kern/printf.h>, <device/ds_routines.h> 
and
+       <linux/dev/glue/glue.h>.
+       (linux_intr_pri, io_done_list): Remove declarations.
+       * linux/dev/init/main.c: Include <machine/model_dep.h> and
+       <linux/dev/glue/glue.h>.
+       (phys_last_addr, alloc_contig_mem, free_contig_mem, init_IRQ,
+       restore_IRQ, startrtclock, linux_version_init, linux_kmem_init, 
pci_init,
+       linux_net_emulation_init, device_setup, linux_printk, linux_timer_intr, 
spl0,
+       splhigh, form_pic_mask, linux_bad_intr, prtnull, intnull, 
linux_sched_init,
+       pcmcia_init): Remove declarations.
+       * linux/dev/kernel/sched.c: Include <kern/printf.h>, 
<machine/machspl.h> and
+       <linux/dev/glue/glue.h>.
+       (alloc_contig_mem, free_contig_mem, splhigh, splx, linux_soft_intr, 
issig,
+       printf, linux_auto_config): Remove prototypes.
+       * linux/dev/kernel/softirq.c: Include <linux/dev/glue/glue.h>.
+       * linux/src/drivers/block/floppy.c: Include <linux/dev/glue/glue.h>.
+       (get_options): Remove prototype.
+       * linux/src/init/main.c: Include <linux/dev/glue/glue.h>
+       (init_IRQ): Remove prototype.
+
+2011-08-30  Guillem Jover  <address@hidden>
+
+       Add linux_timer_intr function declaration
+       * i386/i386/hardclock.c [LINUX_DEV] (linux_timer_intr): New prototype.
+
+       Add missing headers
+       * device/dev_pager.c: Include <device/memory_object_reply.user.h>.
+       * linux/pcmcia-cs/glue/wireless_glue.h: Include <kern/debug.h>.
+
+       Remove unused variable
+       * i386/i386at/rtc.c (rtc): Remove variable.
+
+       Cast host_get_time() arguments to fix warnings
+       * linux/dev/glue/misc.c (do_gettimeofday): Cast arguments to
+       `host_get_time'.
+
+       Cast function timeout() argument to fix a warning
+       * kern/mach_clock.h (timer_func_t): New function type.
+       (struct timer_elt): Change fcn type to timer_func_t.
+       * i386/i386at/com.c (comstart): Cast `ttrstrt' to `timer_funct_t *' in
+       `timeout' call.
+       * i386/i386at/lpr.c (lprstart): Likewise,
+
+       Return a value on non-void function
+       * i386/i386at/com.c (comcnprobe, comcninit, comcnputc): Return 0.
+
+2011-08-30  Samuel Thibault  <address@hidden>
+
+       Fix copyright assignment
+       I have assigned copyright to the Free Software Foundation.
+
+       * i386/i386/xen.h: Fix copyright assignment
+       * i386/xen/xen.c: Likewise.
+       * i386/xen/xen_boothdr.S: Likewise.
+       * i386/xen/xen_locore.S: Likewise.
+       * include/mach/xen.h: Likewise.
+       * xen/block.c: Likewise.
+       * xen/block.h: Likewise.
+       * xen/console.c: Likewise.
+       * xen/console.h: Likewise.
+       * xen/evt.c: Likewise.
+       * xen/evt.h: Likewise.
+       * xen/grant.c: Likewise.
+       * xen/grant.h: Likewise.
+       * xen/net.c: Likewise.
+       * xen/net.h: Likewise.
+       * xen/ring.c: Likewise.
+       * xen/ring.h: Likewise.
+       * xen/store.c: Likewise.
+       * xen/store.h: Likewise.
+       * xen/time.c: Likewise.
+       * xen/time.h: Likewise.
+       * xen/xen.c: Likewise.
+       * xen/xen.h: Likewise.
+
+2011-08-30  Samuel Thibault  <address@hidden>
+
+       Console declaration cleanup
+       * device/cons.h: Add multiple inclusion _DEVICE_CONS_H macro protector.
+       (struct consdev): Add function members prototypes.
+       * i386/i386/xen.h: Include <mach/xen.h>.
+       * i386/i386at/com.c (comcnprobe, comcninit, comcngetc, comcnputc): Move
+       prototypes...
+       * i386/i386at/com.h: ... here.  Include <device/cons.h>.
+       * i386/i386at/cons_conf.c [MACH_HYP]: Include <xen/console.h>.
+       [!MACH_HYP]: Include "kd.h".
+       [!MACH_HYP && NCOM > 0]: Include "com.h".
+       (hypcnprobe, hypcninit, hypcngetc, hypcnputc, kdcnprobe, kdcninit, 
kdcngetc,
+       kdcnputc comcnprobe, comcninit, comcngetc, comcnputc): Remove 
prototypes.
+       * i386/i386at/kd.c (kdcnputc): Make it return int, -1 on error, 0 on
+       success.
+       (kdcnprobe, kdcninit, kdcngetc, kdcnputc): Move prototypes...
+       * i386/i386at/kd.h: ... here.  Include <device/cons.h>.
+       * xen/console.c (hypcnprobe): Remove unused `my_console' local variable.
+       * xen/console.h: Include <device/cons.h>
+       (hypcnputc, hypcngetc, hypcnprobe, hypcninit): Add prototypes.
+
+2011-08-30  Guillem Jover  <address@hidden>
+
+       Move Linux module macros to their original header
+       * linux/pcmcia-cs/glue/wireless_glue.h (EXPORT_SYMBOL)
+       (SET_MODULE_OWNER): Move to ...
+       * linux/src/include/linux/module.h [!MODULE]: ... here.
+
+       Move cdrom_sleep() definition to its original source file
+       * linux/dev/kernel/sched.c (cdrom_sleep): Move to ...
+       * linux/src/drivers/block/ide-cd.c [MACH]: ... here, make it static.
+       Include <kern/sched_prim.h>.
+
+2011-08-29  Samuel Thibault  <address@hidden>
+
+       Make copyout run in 1 loop on >= i486
+       * i386/i386/locore.S (copyout): On >= i486, skip WP-check loop split 
and just
+       use byte count.
+
+2011-08-28  Samuel Thibault  <address@hidden>
+
+       Skip kernel WP check on i486 and above
+       * i386/i386/i386asm.sym (machine_slot.sub_type): Define.
+       * i386/i386/locore.S (copyout_retry): Skip if machine_slot[0].cpu_type 
> 3.
+
+       Enable >4GiB cr3
+       * i386/xen/xen_boothdr.S (__xen_guest): Add [extended-cr3] to PAE
+       (XEN_ELFNOTE_PAE_MODE): Likewise.
+
+2011-08-28  Samuel Thibault  <address@hidden>
+
+       Disable (<i486)-only WP workaround on Xen & PAE
+       i386 didn't support PAE anyway.
+
+       * i386/i386/locore.S (copyout_retry) [MACH_HYP || PAE]: Remove.
+       * xen/xen.c (hyp_invalidate_pte): Remove function.
+       * xen/xen.h (hyp_invalidate_pte): Remove prototype.
+
+2011-08-28  Samuel Thibault  <address@hidden>
+
+       Fix pmap_clear_bootstrap_pagetable with >4G mfns
+       * i386/intel/pmap.c (pmap_clear_bootstrap_pagetable): Use pte_to_pa 
instead
+       of atop.
+
+       Rework memory mapping reservation
+       * i386/i386/vm_param.h (VM_KERNEL_MAP_SIZE): Define to 192MiB.
+       * i386/i386at/model_dep.c (mem_size_init): Use VM_KERNEL_MAP_SIZE 
instead of
+       1/6 factor.
+       * i386/intel/pmap.c (morevm): Remove.
+       (pmap_bootstrap): Use VM_KERNEL_MAP_SIZE instead of morevm.
+
+       Move free_skbuffs declaration to the top
+       * device/ds_routines.c (free_skbuffs): Move declaration to the top.
+
+2011-08-27  Guillem Jover  <address@hidden>
+
+       Initialize the new map entry when it's a projected buffer
+       * vm/vm_map.c (vm_map_fork): Call vm_map_entry_create for projected_on
+       buffers too.
+
+       Fix initialization from incompatible pointer type
+       * linux/dev/glue/block.c (device_get_status): Cast `hg' to `unsigned 
long'
+       in ioctl call.
+
+       Match signedness of char pointer comparisons and assignments
+       * linux/dev/drivers/block/genhd.c (msdos_partition): Cast `data' 
assignment
+       to `unsigned char *'.
+       * linux/src/drivers/block/ide-cd.c (cdrom_queue_request_sense): Cast
+       `buffer' assignment to `unsigned char *'.
+       (cdrom_transfer_packet_command): Change `cmd_buf' argument type to
+       `unsigned char *'.
+       (cdrom_read_capacity): Cast `pc.buffer' assignments to `unsigned char 
*'.
+       Use temporary `model' and `fw_rev' `const char *' variables to compare
+       against literal strings and characters.
+       * linux/src/drivers/block/ide.c (execute_drive_cmd): Cast `args'
+       assignment to `byte *'.
+       (ide_open): Cast `rq.buffer' assignment to `char *'.
+       (ide_release): Likewise.
+       (ide_ioctl): Likewise.
+       (do_identify): Cast variables being compared against literal string to
+       `char *'.
+       (probe_for_drive): Likewise.
+       * linux/src/drivers/block/ide.h (struct packet_command): Change `buffer'
+       type to `unsigned char *'.
+
+       Always initialize A and X variables in BPF code
+       * device/net_io.c (bpf_do_filter): Remove lint conditional.
+
+       Disable unused variables
+       * i386/i386at/com.c (comstart): Disable `i' variable.
+       * linux/src/drivers/net/at1700.c (net_close): Disable `lp' variable.
+       * linux/dev/include/linux/blk.h (end_request): Disable `nsect' variable
+       on MACH.
+
+       Remove unused variables
+       * vm/memory_object_proxy.c (memory_object_create_proxy): Remove unused
+       `kr' variable.
+       * linux/dev/glue/block.c (free_buffer): Remove unused `i' variable.
+       (register_blkdev): Remove unused `err' variable.
+       (unregister_blkdev): Likewise.
+       (bread): Likewise.
+       (init_partition): Likewise.
+       * linux/dev/glue/net.c (device_write): Likewise.
+
+       Remove ident tags producing preprocessor warnings
+       * linux/src/drivers/scsi/FlashPoint.c: Remove #ident tags.
+
+       Add header for printf prototype
+       * vm/memory_object_proxy.c: Include <kern/printf.h>.
+
+       Add prototype for free_skbuffs function
+       * device/ds_routines.c [LINUX_DEV && CONFIG_INET] (free_skbuffs): Add
+       prototype.
+
+       Add prototype for log function
+       * kern/debug.h (log): New prototype.
+
+2011-08-27  Samuel Thibault  <address@hidden>
+
+       * Makefile.am (AM_CFLAGS): Add -fno-builtin-log.
+
+2011-08-27  Guillem Jover  <address@hidden>
+
+       Add prototypes for locore functions
+       * i386/i386at/model_dep.c (discover_x86_cpu_type): Move ...
+       * i386/i386/locore.h: ... here.
+       (inst_fetch, cpu_shutdown): New prototypes.
+       * i386/i386at/kd.c: Include <i386/locore.h>.
+
+       Do not take obsolete and unused bcopy and bzero from libc
+       * Makefile.am (clib_routines): Remove bcopy and bzero.
+
+       Use AC_LANG_SOURCE inside AC_LANG_CONFTEST to fix autoconf warning
+       * configure.ac (AC_LANG_CONFTEST): Wrap the source into a AC_LANG_SOURCE
+       call.
+
+       Add a .gitignore file
+       * .gitignore: New file.
+
+2011-08-22  Samuel Thibault  <address@hidden>
+
+       Make ipc_space_zone not exhaustible
+       Users of ipc_space_create() actually assume that it succeeds.
+
+       * ipc/ipc_init.c (ipc_bootstrap): Create ipc_space_zone without 
EXHAUSTIBLE
+       flag.
+
+2011-08-22  Samuel Thibault  <address@hidden>
+
+       Add more details to "zone exhausted" panics.
+       * kern/zalloc (zalloc): Add more details to "zone exhausted" panics.
+
+2011-08-21  Samuel Thibault  <address@hidden>
+
+       Add 8byte breakpoint macro
+       * i386/i386/db_interface.h (I386_DB_LEN_8): Define macro.
+
+2011-08-18  Samuel Thibault  <address@hidden>
+
+       Add compiler barrier to update_mapped_time
+       * kern/mach_clock.c (update_mapped_time): Add compiler barriers between
+       writes to shared memory. Update comment: on SMP, write barriers are
+       required.
+
+2011-08-10  Samuel Thibault  <address@hidden>
+
+       Do not warn for cross-space spurious port deallocation
+       These are harmless (the target is stopped) and difficult to fix anyway.
+
+       * ipc/mach_port.c (mach_port_destroy): Do not warn about spurious port
+       deallocation when SPACE is not equal to current_space().
+       (mach_port_deallocate): Likewise.
+
+2011-08-10  Samuel Thibault  <address@hidden>
+
+       Add more spurious deallocation debugging
+       * ipc/mach_port.c (mach_port_destroy): Print the current space and the
+       target space on spurious deallocation.
+       (mach_port_deallocate): Likewise.
+
+2011-07-21  Samuel Thibault  <address@hidden>
+
+       Whitelist QEMU Hard-Drive for DMA.
+       PIO has become very slow in Linux 2.6.35+, so we do not really have the
+       choice any more.
+
+       * linux/src/drivers/block/triton.c (good_dma_drives): Re-whitelist QEMU 
hard
+       drive.
+
+2011-05-19  Samuel Thibault  <address@hidden>
+
+       Fix gcc 4.6 build
+       * linux/dev/include/linux/skbuff.h (skb_put, skb_push): Do not print the
+       address of a local label, gcc 4.6 does not build this and the debugger 
can
+       output it anyway.
+       * linux/src/include/linux/skbuff.h (skb_put, skb_push): Likewise.
+
+2011-05-18  Samuel Thibault  <address@hidden>
+
+       Merge two asm constraints
+       * linux/src/drivers/scsi/ultrastor.c (find_and_clear_bit_16): Use + 
modifier
+       instead of using both a read and a write constraint.
+
+2011-05-09  Samuel Thibault  <address@hidden>
+
+       Do not warn on vm_map_enter with fixed address failing
+       * vm/vm_map.c (vm_map_enter): Warn about missing room in map only if
+       anywhere is set.
+
+2011-04-24  Samuel Thibault  <address@hidden>
+
+       Update constants to nowadays standards
+       Follow-up to fa6c711d
+
+       * ipc/ipc_init.c (ipc_kernel_map_size): Increase to 8MiB.
+
+2011-04-23  Samuel Thibault  <address@hidden>
+
+       Enable all caches
+       * i386/i386at/model_dep.c (i386at_init): Set CR0_CD and CR0_NW in CR0
+       register.
+
+       Drop spurious warning
+       * ipc/ipc_entry.c (ipc_entry_get): Do not warn when ipc_entry_get 
returns
+       KERN_NO_SPACE.
+
+2011-04-22  Samuel Thibault  <address@hidden>
+
+       Warn once when part of the kernel is lacking space
+       * ipc/ipc_entry.c (ipc_entry_get, ipc_entry_grow_table): Warn when 
returning
+       KERN_NO_SPACE.
+       * vm/vm_map.c (vm_map_find_entry, vm_map_enter, vm_map_copyout,
+       vm_map_copyout_page_list): Warn when returning KERN_NO_SPACE.
+
+2011-04-22  Samuel Thibault  <address@hidden>
+
+       Update constants to nowadays standards
+       Follow-up to fa6c711d
+
+       * vm/vm_object.c (DEVICE_IO_MAP_SIZE): Increase to 16MiB.
+       * kern/kalloc.c (kalloc_map_size): Increase to 64MiB.
+       * i386/intel/pmap.c (morevm): Increase to 128MiB.
+
+2011-04-20  Samuel Thibault  <address@hidden>
+
+       Warn once when part of the kernel is lacking memory
+       * kern/printf.h (printf_once): New macro.
+       * ipc/mach_port.c (mach_port_names, mach_port_get_set_status): Warn when
+       returning KERN_RESOURCE_SHORTAGE.
+       * vm/vm_kern.c: Include printf.h.
+       (kmem_alloc, kmem_realloc, kmem_alloc_wired, kmem_alloc_aligned,
+       kmem_alloc_pageable): Warn when failing.
+       * vm/vm_resident.c (vm_page_grab_contiguous_pages): Warn when returning
+       KERN_RESOURCE_SHORTAGE.
+
+2011-04-19  Samuel Thibault  <address@hidden>
+
+       Close call stack on continuation
+       * i386/i386/locore.S (call_continuation): Push dummy return address 
instead
+       of letting the callee get a random one.
+
+2011-04-18  Arne Babenhauserheide  <address@hidden>
+
+       Removed deprecated LINTLIBRARY #ifdefs
+           mach/mach_traps.h: Removed LINTLIBRARY #ifdefs.
+           mach/message.h: Removed LINTLIBRARY #ifdefs.
+
+2011-04-03  Samuel Thibault  <address@hidden>
+
+       Fix build with kdb from make dist-generated tarball
+       * Makefrag.am (libkernel_a_SOURCES): Add ddb/db_cond.h, 
ddb/db_examine.h,
+       ddb/db_input.h, ddb/db_macro.h, ddb/db_trap.h.
+       * i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386/db_interface.h
+
+2011-03-21  Samuel Thibault  <address@hidden>
+
+       Fix typo
+       * i386/i386at/kd.c (key_map): Fix K_PERIOD typo.
+
+2011-03-20  Samuel Thibault  <address@hidden>
+
+       Clean kd.[ch]
+       * i386/i386at/kd.h (NUMSTATES): Fix comment about NORM_STATE.
+       * i386/i386at/kd.c (key_map): Use K_* macros instead of numeric values.
+
+2011-03-14  Samuel Thibault  <address@hidden>
+
+       Also warn about mach_port_destroy on invalid ports
+       * ipc/mach_port.c (mach_port_destroy): Warn (and possibly call 
debugger) when
+       ipc_right_lookup_write didn't find the port name.
+
+2011-03-11  Samuel Thibault  <address@hidden>
+
+       Fix continuation after keyboard debugger invocation
+       According to stack layout change in 5da1aea7
+
+       * i386/i386/locore.S [!MACH_XEN] (RET_OFFSET): Define to 12 instead of 
8.
+
+2011-03-06  Samuel Thibault  <address@hidden>
+
+       Enable global pages after enabling paging
+       * i386/i386at/model_dep.c (i386at_init): Enable CR4_PGE after enabling
+       CR0_PG.
+
+2011-03-05  Samuel Thibault  <address@hidden>
+
+       Fix temporary direct mapping during page table enabling
+       * i386/i386at/model_dep.c (i386at_init): Count the number of actually
+       needed temporary L1 direct mapping by getting the last used address from
+       init_alloc_aligned(), instead of hardcoding it to 1 or 3, and then use 
a for
+       loop.
+
+2011-03-03  Samuel Thibault  <address@hidden>
+
+       Keep supplementary L1 pages read-only
+       * i386/intel/pmap.c (pmap_bootstrap): Fix loop which keeps 
supplementary L1
+       pages read-only: break as soon as one of the L1 supplementary pages has 
been
+       recognized, so that its pte does not get rewritten read-write.
+
+2011-02-27  Samuel Thibault  <address@hidden>
+
+       Refuse to share IRQs at different interrupt levels
+       * linux/dev/arch/i386/kernel/irq.c (setup_x86_irq): Return -LINUX_EBUSY 
when
+       trying to share an IRQ between two different interrupt levels.
+
+2011-02-27  Samuel Thibault  <address@hidden>
+
+       Re-enable updating pvlist for kernel_pmap
+       This partially reverts 0744feb6
+
+       * i386/intel/pmap.c (pmap_remove_range): Update pvlist for kernel_pmap 
too.
+
+2011-02-27  Samuel Thibault  <address@hidden>
+
+       Acknoledge interrupt after handler call
+       This fixes interrupt overflows when software interrupts processing gets 
slower
+       than hardware.
+
+       * i386/i386at/interrupt.S (interrupt): Issue EOI to PICs after having 
called
+       the interrupt handler and disabled interrupts through cli.
+
+2011-02-27  Samuel Thibault  <address@hidden>
+
+       Detect interrupt overflow
+       * i386/i386/locore.S (int_from_instack): Check %esp against _intstack, 
issue
+       ud2 on stack overflow.
+
+       Add x86 debug register Xen support
+       * i386/xen/xen_boothdr.S: Add global visibility to __hyp_* symbols.
+       * i386/i386/locore.S [MACH_XEN] (dr6,dr0,dr1,dr2,dr3): Make 
get_debugreg and
+       set_debugreg hypercalls to manipulate debug registers.
+       (dr0,dr1,dr2,dr3): Fix dr7 field shift.
+       * i386/i386/xen.h (hyp_set_debugreg, hyp_get_debugreg): New prototypes.
+
+       Add prototypes for x86 debug registers
+       * i386/i386/db_interface.h (I386_DB_TYPE_X, I386_DB_TYPE_W, 
I386_DB_TYPE_RW,
+       I386_DB_LEN_1, I386_DB_LEN_2, I386_DB_LEN_4, I386_DB_LOCAL,
+       I386_DB_GLOBAL): New macros.
+       (dr0, dr1, dr2, dr3): New function prototypes.
+
+       Fix for kdb watch command
+       * i386/intel/pmap.c (pmap_remove_range): Do not update pvlist for
+       kernel_map.
+       [MACH_KBD] (pmap_enter): Allow physical memory remapping.
+
+2011-02-26  Samuel Thibault  <address@hidden>
+
+       Add console=comN boot option to enable serial console
+       * i386/configfrag.ac (RCLINE, RCADDR): Remove defines.
+       * i386/i386at/com.c: Include <string.h> and <util/atoi.h>
+       [!RCLINE] (RCBAUD, comcndev, comcnprobe, comcninit, comcngetc, 
comcnputc):
+       Declare and define macro, variable, and functions.
+       (rcline): New variable.
+       (kernel_cmdline): New declaration.
+       (comcnprobe): Detect "console=comN" option and set rcline accordingly, 
use
+       rcline instead of RCLINE for serial console selection.
+       * i386/i386at/cons_conf.c [NCOM>0 && !RCLINE] (comcnprobe, comcninit,
+       comcngetc, comcnputc): Declare functions.
+       [NCOM>0 && !RCLINE] (constab): Enable "com" console.
+       * i386/i386at/kd_event.c (kbdopen): Call kdinit function, for when the
+       VGA+pckbd console was not initialized.
+
+2011-02-09  Samuel Thibault  <address@hidden>
+
+       xen block: Add more legacy hd* name support
+       * xen/block.c (hyp_block_init): Add IDE 3-10 device number recognition. 
Skip
+         unknown block device numbers.
+
+2011-02-07  Samuel Thibault  <address@hidden>
+
+       Defer Xen device initialization to device_service_create
+       * device/device_init.c (device_service_create) [MACH_HYP]: Call
+       hyp_dev_init.
+       * xen/xen.c (hyp_init): Do not call hyp_block_init and hyp_net_init, now
+       called in ...
+       (hyp_dev_init): New function.
+       * xen/xen.h (hyp_dev_init): New declaration.
+
+       Add rx-copy support to netfront
+       * xen/net.c (net_data): Add rx_copy field.
+       (enqueue_rx_buf): When rx_copy != 0, give grant on buffer to domD 
instead of
+       issuing a transfer from domD.
+       (hyp_net_intr): When rx_copy != 0, take back grant on buffer instead of
+       finishing transfer. Do not panic on packet error, free kmsg on error.
+       (hyp_net_init): Check for feature-rx-copy in backend, write 1 to
+       request-rx-copy in such case. Wait for Connected state before 
continuing.
+       Only unmap buffer when rx_copy is 0.
+
+2011-01-31  Diego Nieto Cid  <address@hidden>
+
+       * doc/mach.texi (device_set_filter): Document filter header.
+       Acked-by: Richard Braun <address@hidden>
+
+2011-01-31  Samuel Thibault  <address@hidden>
+
+       Enable pae_extended_cr3 in pmap_bootstrap
+       * i386/i386/gdt.c (gdt_init): Do not enable 
VMASST_TYPE_pae_extended_cr3.
+       * i386/intel/pmap.c (pmap_bootstrap): Enable 
VMASST_TYPE_pae_extended_cr3.
+
+       Enable Xen >4GiB physical memory support
+       * i386/i386/gdt.c (gdt_init): Enable VMASST_TYPE_pae_extended_cr3.
+       * i386/i386/xen.h: Drop actually-unneeded comment.
+       * i386/xen/xen_boothdr.S (FEATURES) [MACH_PSEUDO_PHYS]: Add 
pae_pgdir_above_4gb.
+       (XEN_ELFNOTE_FEATURES) [MACH_PSEUDO_PHYS]: Add pae_pgdir_above_4gb.
+
+       Drop kbd device on xen
+       * i386/Makefrag.am (libkernel_a_SOURCES): Move 
i386/i386at/kd_event.[ch] and
+       i386/i386at/kd_queue.[ch] to [PLATFORM_at].
+       * i386/i386at/conf.c (dev_name_list): Move kbd device to [!MACH_HYP].
+
+2011-01-15  Samuel Thibault  <address@hidden>
+
+       Avoid dropping kd_intr when RCLINE is >= 0
+       * i386/i386at/kd.c (kdintr): Return immediately if !kd_initialized.
+       * i386/i386at/pic_isa.c (ivect) [RCLINE >= 0]: Enable kdintr in that 
case
+       too.
+
+2011-01-15  Samuel Thibault  <address@hidden>
+
+       Move -d and -H parse to kern/startup.c
+       The code is arch-independant, and reboot_on_panic, used by kern/debug.c
+       would be undefined on non-i386.
+
+       * i386/i386at/model_dep.c (reboot_on_panic, c_boot_entry): Move -d and 
-H parse
+       to...
+       * kern/startup.c (reboot_on_panic,setup_main): ... here.  Include 
<string.h>
+
+2010-12-09  Samuel Thibault  <address@hidden>
+
+       memcpy operands are not supposed to overlap
+       * include/string.h (memmove): Add prototype.
+       * i386/i386at/immc.c (immc_cnputc): Replace memcpy with memmove.
+
+2010-10-24  Samuel Thibault  <address@hidden>
+
+       Avoid harmless warning
+       * i386/i386at/kd.c (kd_setleds1): Only display unexpected state warning 
when
+       debugging is enabled.
+
+2010-10-23  Samuel Thibault  <address@hidden>
+
+       Add prototype for strstr
+       * include/string.h (strstr): Add prototype.
+
+       Add prototype for discover_x86_cpu_type
+       * i386/i386at/model_dep.c (discover_x86_cpu_type): Add prototype.
+
+       Warn on unknown CPU family
+       * i386/i386at/model_dep.c (c_boot_entry): Warn in the default case for
+       cpu_type.
+
+       Recognize P4 and Opteron-like as pentium pro
+       * i386/i386at/model_dep.c (c_boot_entry): Treat cpu_type 15 as Pentium 
pro.
+
+2010-09-19  Samuel Thibault  <address@hidden>
+
+       Fix device_get/set_status ABI for NET_FLAGS
+       * linux/dev/glue/net.c (device_get_status): Compare count with 1 instead
+       of sizeof(short).  Access *status instead of *(short *) status.
+       (device_set_status): Likewise.
+
+2010-09-14  Thomas Schwinge  <address@hidden>
+
+       Merge branch 'typo-print'
+
+2010-09-14  Thomas Schwinge  <address@hidden>
+
+       Typo fix.
+       * i386/i386/trap.c (user_trap): Call printf, not print.
+
+2010-09-14  Samuel Thibault  <address@hidden>
+
+       Fix ifunc entries
+       * i386/ldscript: Update to the version from binutils 2.20.51.20100617.
+       Remove SEARCH_DIR calls.
+       * Makefile.am (clib_routines): Accept undefined __rel_iplt_start and
+       __rel_iplt_end as these come from the ldscript.
+       * i386/i386at/boothdr.S (boot_entry): Call ifunc hooks at boot.
+       * i386/xen/xen_boothdr.S (start): Likewise.
+
+2010-09-08  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+       Fix non-contiguous PCI functions
+       * linux/src/drivers/pci/pci.c (scan_bus): Do not set `is_multi' to 0
+       when a hole is encountered. Detect 0000:ffff and ffff:0000 vendor ID as
+       holes too.
+
+2010-08-27  Guillem Jover  <address@hidden>
+
+       Fix "make dist"
+       * Makefile.am (EXTRA_DIST): Remove ChangeLog.0, ChangeLog.00 and
+       Makefile.correct_output_files_for_.S_files.patch.
+       * Makefrag.am (libkernel_a_SOURCES): Add ipc/mach_port.h,
+       kern/ipc_mig.h, kern/machine.h, util/putchar.h, util/atoi.h,
+       vm/vm_resident.h, vm/vm_types.h and device/subrs.h.
+       Remove kern/time_out.h.
+       * i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386at/autoconf.h,
+       i386/i386at/com.h, i386/i386at/int_init.h, i386/i386/loose_ends.h,
+       i386/i386/model_dep.h, i386/intel/read_fault.h and i386/i386/xen.h.
+       Remove i386/i386/timer.h.
+       * linux/Makefrag.am (liblinux_a_SOURCES): Add
+       linux/src/drivers/net/sis900.h.
+       * xen/Makefrag.am (libkernel_a_SOURCES): Add xen/public/arch-x86_32.h
+       xen/public/arch-x86_64.h, xen/public/arch-x86/xen.h,
+       xen/public/arch-x86/xen-mca.h, xen/public/arch-x86/xen-x86_32.h,
+       xen/public/arch-x86/xen-x86_64.h, xen/public/callback.h, 
xen/public/COPYING,
+       xen/public/dom0_ops.h, xen/public/domctl.h, xen/public/elfnote.h,
+       xen/public/elfstructs.h, xen/public/event_channel.h, 
xen/public/features.h,
+       xen/public/grant_table.h, xen/public/io/blkif.h, 
xen/public/io/console.h,
+       xen/public/io/fbif.h, xen/public/io/fsif.h, xen/public/io/kbdif.h,
+       xen/public/io/netif.h, xen/public/io/pciif.h, xen/public/io/protocols.h,
+       xen/public/io/ring.h, xen/public/io/tpmif.h, xen/public/io/xenbus.h,
+       xen/public/io/xs_wire.h, xen/public/kexec.h, xen/public/libelf.h,
+       xen/public/memory.h, xen/public/nmi.h, xen/public/physdev.h,
+       xen/public/platform.h, xen/public/sched.h, xen/public/sysctl.h,
+       xen/public/trace.h, xen/public/vcpu.h, xen/public/version.h,
+       xen/public/xencomm.h, xen/public/xen-compat.h, xen/public/xen.h,
+       xen/public/xenoprof.h, xen/block.h, xen/console.h, xen/evt.h,
+       xen/grant.h, xen/net.h, xen/ring.h, xen/store.h, xen/time.h and 
xen/xen.h.
+
+2010-08-26  Samuel Thibault  <address@hidden>
+
+       Do not advice to install libc0.3-xen on 4gb_segment trap
+       ext2fs.static will trigger some anyway.  Instead, provide an easy way to
+       track how many traps happen.
+
+       * i386/i386/gdt.c [MACH_XEN] (gdt_init): Disable enabling
+       VMASST_TYPE_4gb_segments_notify.
+       * i386/i386/trap.c [MACH_XEN] (user_trap): Remove printing libc0.3-xen
+       installation advice on 4gb_segments trap.  Instead, print a count every 
10000
+       traps, and disable them on the 1000000th.
+
+2010-08-22  Samuel Thibault  <address@hidden>
+
+       Disable 4gb segment emulation notification on first notification
+       i386/i386/trap.c [MACH_XEN] (user_trap): Disable
+       VMASST_TYPE_4gb_segments_notify on trap 15.
+
+       Report Xen 4gb segment emulation
+       * i386/i386/gdt.c [MACH_XEN] (gdt_init): Enable 
VMASST_TYPE_4gb_segments_notify.
+       * i386/i386/idt_inittab.S [MACH_XEN]: Set trap 15 as pushing an error
+       code.
+       * i386/i386/trap.c [MACH_XEN]: Print trap 15 first occurrence.
+
+2010-08-01  Samuel Thibault  <address@hidden>
+
+       Fix unexpected irq + irq timeout on write
+       * linux/src/drivers/block/ide.c (do_rw_disk): Set IRQ handler before
+       issuing write command.
+
+       Move read-only sections to after text section
+
+2010-07-31  Samuel Thibault  <address@hidden>
+
+       Un-whitelist the QEMU harddisk for DMA support
+       * linux/src/drivers/block/triton.c (good_dma_drives): Remove "QEMU 
HARDDISK".
+
+       Put a name on the 16MiB magic number
+       * linux/dev/glue/kmem.c (MEM_DMA_LIMIT): New macro
+       (linux_kmem_init): Replace 16 * 1024 * 1024 occurrences with
+       MEM_DMA_LIMIT.
+
+2010-06-25  Jeremie Koenig  <address@hidden>
+
+       Route BLKRRPART to partitions layer
+       * linux/dev/glue/block.c (device_set_status): New function
+       (linux_block_emulation_ops): Set set_status field to device_set_status.
+
+2010-04-16  Samuel Thibault  <address@hidden>
+
+       Add memory clobbers to segment selector loaders
+       * i386/i386/seg.h (lldt): Add memory clobber to lldt asm
+       snippet.
+       * i386/i386/tss.h (ltr): Add memory clobber to ltr asm
+       snippet.
+
+2010-04-08  Samuel Thibault  <address@hidden>
+
+       Fix bootstrap additional mapping
+       * i386/intel/pmap.c (pmap_bootstrap): Use pt_entry_t type
+       instead of vm_offset_t to map additional kernel space.
+
+       Extend machine addresses to 64bit for PAE
+       * i386/i386/pcb.c (switch_ktss): Use uint64_t for descriptor
+       type instead of unsigned long long.
+       * i386/i386/seg.h (fill_descriptor): Use uint64_t for descriptor
+       type instead of unsigned long long. Cast result of kv_to_ma()
+       into vm_offset_t before printing.
+       * i386/i386/xen.h (hyp_mmu_update_pte): Use pt_entry_t type
+       instead of unsigned long long, make pte parameter a pt_entry_t
+       too.
+               (hyp_mmu_update_pte): Compute pte address just using pt_entry_t
+               integers.
+       (hyp_high): New macro to fix 32bit right shifting.
+               (hyp_do_update_descriptor): Use pt_entry_t type for machine
+               address instead of unsigned long. Split it in 32bit parts. Use 
uint64_t
+               for descriptor type instead of unsigned long long.
+       (update_va_mapping): Use pt_entry_t type instead of unsigned
+       long long. Use hyp_high macro.
+       (hyp_invlpg): Use uint64_t for time type instead of unsigned
+       long long.
+       * i386/intel/pmap.c (pmap_bootstrap): Use ptetokv instead of
+       pte_to_pa + phystokv. Cast machine addresses into vm_offset_t
+       before printing.
+               (pmap_set_page_readwrite): Likewise.
+       (pmap_set_page_readonly): Likewise
+       (pmap_set_page_readonly_init): Likewise
+       (pmap_clear_bootstrap_pagetable): Likewise
+       (pmap_destroy): Likewise
+       (pmap_map_mfn): Use pt_entry_t type for machine addresses. Cast
+       machine addresses into vm_offset_t before printing.
+       * i386/intel/pmap.h [PAE] (INTEL_PTE_PFN): Set macro to
+       0xfffffffffffff000ULL.
+       * include/mach/xen.h [PAE] (pa_to_ma, ma_to_pa): Use pt_entry_t
+       type for machine addresses.
+       [!PAE] (pa_to_ma): Remove cast to vm_offset_t.
+       (mfn_to_kv): Use mfn_to_pfn + ptoa instead of ptoa + ma_to_pa.
+               * xen/xen.c (hyp_invalidate_pte): Cast machine addresses into
+               vm_offset_t before printing.
+
+2010-04-06  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+       Fix crash on Xen when no module is provided
+       * kern/bootstrap.c (bootstrap_create): Iterate over bmods only
+       if is not NULL.
+
+2010-03-15  Thomas Schwinge  <address@hidden>
+
+       Require GNU Automake 1.10.2.
+       9ff49d9648debffbe42d18863c739d37bcdb50b4's config.status.dep.patch is 
fit for
+       1.10.2 (released in November 2008) and later, and is no longer suitable 
for
+       1.10.1.
+
+       * configure.ac (AM_INIT_AUTOMAKE): Require 1.10.2.
+
+2010-03-14  Samuel Thibault  <address@hidden>
+
+       Fix Xen build without kdb
+       * xen/console.c (hypcnintr): Use #if MACH_KDB instead of #ifdef
+       MACH_KDB.
+
+       Add mem device
+       * i386/Makefrag.am (libkernel_a_SOURCES): Add
+       i386/i386at/iopl.c.
+       * i386/i386at/conf.c [!MACH_HYP] (memmmap): Declare function.
+       (memname): Add macro.
+       (dev_name_list): Add mem device.
+       * i386/i386at/mem.c: New file.
+
+2010-03-02  Samuel Thibault  <address@hidden>
+
+       whitelist the QEMU harddisk for DMA support
+       * linux/src/drivers/block/triton.c (good_dma_drives): Add
+       "QEMU HARDDISK".
+
+2010-01-04  Samuel Thibault  <address@hidden>
+
+       ignore bogus FDPT information from BIOS
+
+2009-12-22  Samuel Thibault  <address@hidden>
+
+       Align mach_port_deallocate debug flag with usage
+       * ipc/mach_port.c (debug_mach_port_deallocate): Rename to...
+       (mach_port_deallocate_debug): ... new name, and set volatile
+       to permit live changes from ddb.
+
+       Do not systematically debug buggy port deallocation
+       * ipc/mach_port.c (debug_mach_port_deallocation): New variable,
+       set to 0.
+       (mach_port_deallocate): Only call SoftDebugger if
+       debug_mach_port_deallocation is not 0.
+
+       Merge branch 'master' of debhurd0:xen/gnumach
+
+2009-12-22  root  <address@hidden>
+
+       Fix debugger trigger
+       * i386/i386/locore.S [MACH_XEN] (RET_OFFSET): Define to 8
+       * xen/console.c (hypcnintr): On pound sign, call kdb_kintr instead of
+               panicing.
+
+2009-12-21  Samuel Thibault  <address@hidden>
+
+       Invoke debugger on duplicate port deallocation
+       * ipc/mach_port.c (mach_port_deallocate): Call SoftDebugger if
+       ipc_right_lookup_write was not succcessful and `name' is not
+       MACH_PORT_NULL or MACH_PORT_DEAD.
+
+       Add a SoftDebugger function
+       * kern/debug.h (SoftDebugger): Add prototype.
+       * kern/debug.c (Debugger): Move code invoking debugging trap
+       to...
+       (SoftDebugger): ... new function.  Print the passed message.
+       * kern/lock_mon.c (decl_simple_lock_data, retry_bit_lock): Call
+       SoftDebugger instead of Debugger.
+       * device/ds_routines.c (ds_device_open, device_read,
+       device_read_inband): Call SoftDebugger instead of Debugger.
+       * i386/i386at/model_dep.c (c_boot_entry): Call SoftDebugger
+       instead of Debugger.
+       * kern/syscall_sw.c (null_port, kern_invalid): Call SoftDebugger
+       instead of Debugger.
+       * vm/vm_object.c (vm_object_collapse): Call SoftDebugger instead
+       of Debugger.
+
+2009-12-19  Samuel Thibault  <address@hidden>
+
+       Document kdb_kintr stack manipulation
+       * i386/i386/locore.S: Document kdb_kintr stack manipulation.
+
+2009-12-19  root  <address@hidden>
+
+       Fix debugger trigger
+       * i386/i386/locore.S [MACH_XEN] (RET_OFFSET): Define to 8
+       * xen/console.c (hypcnintr): On pound sign, call kdb_kintr instead of
+               panicing.
+
+2009-12-18  Guillem Jover  <address@hidden>
+
+       Add missing casts
+       * vm/vm_resident.c (vm_page_grab_contiguous_pages): Cast `prevmemp'
+       assignement to vm_page_t.
+
+       Add missing function prototypes
+       * i386/i386/pcb.c (Load_context): New prototype.
+       * i386/i386at/lpr.c (lprpr_addr): Likewise.
+
+       Use `unsigned char *' for byte buffers
+       * linux/src/drivers/net/apricot.c (struct i596_tbd): Change `data'
+       member type to `unsigned char *'.
+       (struct i596_rfd): Change `data' member type to `unsigned char'.
+       (print_eth): Change argument type to `unsigned char'. Remove
+       unneeded casts.
+       (set_multicast_list): Change cast for print_eth to `unsigned char *'.
+
+       Mark macro arguments as used
+       * i386/intel/pmap.c [!NCPUS > 1] (INVALIDATE_TLB): Mark `pmap', `s'
+       and `e' arguments as used.
+       * i386/intel/pmap.h [!NCPUS > 1] (PMAP_ACTIVATE_KERNEL): Mark `my_cpu'
+       argument as used.
+       (PMAP_DEACTIVATE_KERNEL): Likewise.
+       (PMAP_ACTIVATE_USER): Likewise. Mark `th' argument as used.
+       (PMAP_DEACTIVATE_USER): Mark `thread' and `cpu' arguments as used.
+
+       Missing `*' in assembler indirect lcall
+       * linux/src/arch/i386/kernel/bios32.c (bios32_service): Add `*'
+       in indirect lcall.
+       (check_pcibios, pci_bios_find_class, pci_bios_find_device): Likewise.
+       (pci_bios_read_config_byte, pci_bios_read_config_word): Likewise.
+       (pci_bios_read_config_dword, pci_bios_write_config_byte): Likewise.
+       (pci_bios_write_config_word, pci_bios_write_config_dword): Likewise.
+
+       Interrupt handlers do not return any value
+       * i386/i386at/kd_mouse.c (kd_mouse_open): Change kdintr return type
+       to `void'.
+       (oldvect): Change return type to `void'.
+       * linux/dev/arch/i386/kernel/irq.c (linux_timer_intr): Likewise.
+       (intnull, prtnull, linux_intr, linux_bad_intr): Likewise.
+       (old_clock_handler): Likewise.
+
+       Use selector definitions from Mach for Linux code
+       * linux/src/include/asm-i386/segment.h [MACH]: Include <machine/gdt.h>
+       and <machine/ldt.h>.
+       [MACH && MACH_HYP] (KERNEL_CS, KERNEL_DS): Remove macros.
+       [MACH && !MACH_HYP] (KERNEL_CS, KERNEL_DS): Likewise.
+       [MACH] (USER_CS, USER_DS): Likewise.
+
+       Move linux/dev/include/asm-i386/segment.h to src tree
+       * linux/dev/include/asm-i386/segment.h: Move to ...
+       * linux/src/include/asm-i386/segment.h: ... here.
+
+       Match function types with `struct tty' member functions
+       * i386/i386at/com.c (comstart): Change return type to `void'.
+       * i386/i386at/lpr.c (lprstop): Likewise.
+
+       Use explicit type int when defining register variables
+       * linux/src/drivers/scsi/aha1542.c (WAIT, WAITd): Define variables
+       with explicit type `register int' and not just `register'.
+
+2009-12-16  Samuel Thibault  <address@hidden>
+
+       Add Xen support
+       2009-03-11  Samuel Thibault  <address@hidden>
+
+       * i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS) [MACH_XEN]: Set to
+       0x20000000.
+       * i386/i386/i386asm.sym (pfn_list) [VM_MIN_KERNEL_ADDRESS ==
+       LINEAR_MIN_KERNEL_ADDRESS]: Define to constant PFN_LIST.
+
+       2009-02-27  Samuel Thibault  <address@hidden>
+
+       * i386/intel/pmap.c [MACH_HYP] (INVALIDATE_TLB): Call hyp_invlpg
+       instead of flush_tlb when e - s is compile-time known to be
+       PAGE_SIZE.
+
+       2008-11-27  Samuel Thibault  <address@hidden>
+
+       * i386/configfrag.ac (enable_pae): Enable by default on the Xen
+       platform.
+
+       2007-11-14  Samuel Thibault  <address@hidden>
+
+       * i386/i386at/model_dep.c (machine_relax): New function.
+       (c_boot_entry): Refuse to boot as dom0.
+
+       2007-10-17  Samuel Thibault  <address@hidden>
+
+       * i386/i386/fpu.c [MACH_XEN]: Disable unused fpintr().
+
+       2007-08-12  Samuel Thibault  <address@hidden>
+
+       * Makefile.am (clib_routines): Add _START.
+       * i386/xen/xen_boothdr: Use _START for VIRT_BASE and PADDR_OFFSET. Add
+       GUEST_VERSION and XEN_ELFNOTE_FEATURES.
+
+       2007-06-13  Samuel Thibault  <address@hidden>
+
+       * i386/i386/user_ldt.h (user_ldt) [MACH_XEN]: Add alloc field.
+       * i386/i386/user_ldt.c (i386_set_ldt) [MACH_XEN]: Round allocation of
+       LDT to a page, set back LDT pages read/write before freeing them.
+       (user_ldt_free) [MACH_XEN]: Likewise.
+
+       2007-04-18  Samuel Thibault  <address@hidden>
+
+       * device/ds_routines.c [MACH_HYP]: Add hypervisor block and net devices.
+
+       2007-02-19  Thomas Schwinge  <address@hidden>
+
+       * i386/xen/Makefrag.am [PLATFORM_xen] (gnumach_LINKFLAGS): Define.
+
+       * Makefrag.am: Include `xen/Makefrag.am'.
+       * configure.ac: Include `xen/configfrag.ac'.
+       (--enable-platform): Support the `xen' platform.
+       * i386/configfrag.ac: Likewise.
+       * i386/Makefrag.am [PLATFORM_xen]: Include `i386/xen/Makefrag.am'.
+
+       2007-02-19  Samuel Thibault  <address@hidden>
+           Thomas Schwinge  <address@hidden>
+
+       * i386/xen/Makefrag.am: New file.
+       * xen/Makefrag.am: Likewise.
+       * xen/configfrag.ac: Likewise.
+
+       2007-02-11 (and later dates)  Samuel Thibault  <address@hidden>
+
+       Xen support
+       * Makefile.am (clib_routines): Add _start.
+       * Makefrag.am (include_mach_HEADERS): Add include/mach/xen.h.
+       * device/cons.c (cnputc): Call hyp_console_write.
+       * i386/Makefrag.am (libkernel_a_SOURCES): Move non-Xen source to
+       [PLATFORM_at].
+       * i386/i386/debug_trace.S: Include <i386/xen.h>
+       * i386/i386/fpu.c [MACH_HYP] (init_fpu): Call set_ts() and clear_ts(),
+       do not enable CR0_EM.
+       * i386/i386/gdt.c: Include <mach/xen.h> and <intel/pmap.h>.
+       [MACH_XEN]: Make gdt array extern.
+       [MACH_XEN] (gdt_init): Register gdt with hypervisor.  Request 4gb
+       segments assist.  Shift la_shift.
+       [MACH_PSEUDO_PHYS] (gdt_init): Shift pfn_list.
+       * i386/i386/gdt.h [MACH_XEN]: Don't define KERNEL_LDT and LINEAR_DS.
+       * i386/i386/i386asm.sym: Include <i386/xen.h>.
+       [MACH_XEN]: Remove KERNEL_LDT, Add shared_info's CPU_CLI, CPU_PENDING,
+       CPU_PENDING_SEL, PENDING, EVTMASK and CR2.
+       * i386/i386/idt.c [MACH_HYP] (idt_init): Register trap table with
+       hypervisor.
+       * i386/i386/idt_inittab.S: Include <i386/i386asm.h>.
+       [MACH_XEN]: Set IDT_ENTRY() for hypervisor. Set trap table terminator.
+       * i386/i386/ktss.c [MACH_XEN] (ktss_init): Request exception task switch
+       from hypervisor.
+       * i386/i386/ldt.c: Include <mach/xen.h> and <intel/pmap.h>
+       [MACH_XEN]: Make ldt array extern.
+       [MACH_XEN] (ldt_init): Set ldt readwrite.
+       [MACH_HYP] (ldt_init): Register ldt with hypervisor.
+       * i386/i386/locore.S: Include <i386/xen.h>. Handle KERNEL_RING == 1
+       case.
+       [MACH_XEN]: Read hyp_shared_info's CR2 instead of %cr2.
+       [MACH_PSEUDO_PHYS]: Add mfn_to_pfn computation.
+       [MACH_HYP]: Drop Cyrix I/O-based detection.  Read cr3 instead of %cr3.
+       Make hypervisor call for pte invalidation.
+       * i386/i386/mp_desc.c: Include <mach/xen.h>.
+       [MACH_HYP] (mp_desc_init): Panic.
+       * i386/i386/pcb.c: Include <mach/xen.h>.
+       [MACH_XEN] (switch_ktss): Request stack switch from hypervisor.
+       [MACH_HYP] (switch_ktss): Request ldt and gdt switch from hypervisor.
+       * i386/i386/phys.c: Include <mach/xen.h>
+       [MACH_PSEUDO_PHYS] (kvtophys): Do page translation.
+       * i386/i386/proc_reg.h [MACH_HYP] (cr3): New declaration.
+       (set_cr3, get_cr3, set_ts, clear_ts): Implement macros.
+       * i386/i386/seg.h [MACH_HYP]: Define KERNEL_RING macro.  Include
+       <mach/xen.h>
+       [MACH_XEN] (fill_descriptor): Register descriptor with hypervisor.
+       * i386/i386/spl.S: Include <i386/xen.h> and <i386/i386/asm.h>
+       [MACH_XEN] (pic_mask): #define to int_mask.
+       [MACH_XEN] (SETMASK): Implement.
+       * i386/i386/vm_param.h [MACH_XEN] (HYP_VIRT_START): New macro.
+       [MACH_XEN]: Set VM_MAX_KERNEL_ADDRESS to HYP_VIRT_START-
+       LINEAR_MIN_KERNEL_ADDRESS + VM_MIN_KERNEL_ADDRESS.  Increase
+       KERNEL_STACK_SIZE and INTSTACK_SIZE to 4 pages.
+       * i386/i386at/conf.c [MACH_HYP]: Remove hardware devices, add hypervisor
+       console device.
+       * i386/i386at/cons_conf.c [MACH_HYP]: Add hypervisor console device.
+       * i386/i386at/model_dep.c: Include <sys/types.h>, <mach/xen.h>.
+       [MACH_XEN] Include <xen/console.h>, <xen/store.h>, <xen/evt.h>,
+       <xen/xen.h>.
+       [MACH_PSEUDO_PHYS]: New boot_info, mfn_list, pfn_list variables.
+       [MACH_XEN]: New la_shift variable.
+       [MACH_HYP] (avail_next, mem_size_init): Drop BIOS skipping mecanism.
+       [MACH_HYP] (machine_init): Call hyp_init(), drop hardware
+       initialization.
+       [MACH_HYP] (machine_idle): Call hyp_idle().
+       [MACH_HYP] (halt_cpu): Call hyp_halt().
+       [MACH_HYP] (halt_all_cpus): Call hyp_reboot() or hyp_halt().
+       [MACH_HYP] (i386at_init): Initialize with hypervisor.
+       [MACH_XEN] (c_boot_entry): Add Xen-specific initialization.
+       [MACH_HYP] (init_alloc_aligned, pmap_valid_page): Drop zones skipping
+       mecanism.
+       * i386/intel/pmap.c: Include <mach/xen.h>.
+       [MACH_PSEUDO_PHYS] (WRITE_PTE): Do page translation.
+       [MACH_HYP] (INVALIDATE_TLB): Request invalidation from hypervisor.
+       [MACH_XEN] (pmap_map_bd, pmap_create, pmap_destroy, pmap_remove_range)
+       (pmap_page_protect, pmap_protect, pmap_enter, pmap_change_wiring)
+       (pmap_attribute_clear, pmap_unmap_page_zero, pmap_collect): Request MMU
+       update from hypervisor.
+       [MACH_XEN] (pmap_bootstrap): Request pagetable initialization from
+       hypervisor.
+       [MACH_XEN] (pmap_set_page_readwrite, pmap_set_page_readonly)
+       (pmap_set_page_readonly_init, pmap_clear_bootstrap_pagetable)
+       (pmap_map_mfn): New functions.
+       * i386/intel/pmap.h [MACH_XEN] (INTEL_PTE_GLOBAL): Disable global page
+       support.
+       [MACH_PSEUDO_PHYS] (pte_to_pa): Do page translation.
+       [MACH_XEN] (pmap_set_page_readwrite, pmap_set_page_readonly)
+       (pmap_set_page_readonly_init, pmap_clear_bootstrap_pagetable)
+       (pmap_map_mfn): Declare functions.
+       * i386/i386/xen.h: New file.
+       * i386/xen/xen.c: New file.
+       * i386/xen/xen_boothdr.S: New file.
+       * i386/xen/xen_locore.S: New file.
+       * include/mach/xen.h: New file.
+       * kern/bootstrap.c [MACH_XEN] (boot_info): Declare variable.
+       [MACH_XEN] (bootstrap_create): Rebase multiboot header.
+       * kern/debug.c: Include <mach/xen.h>.
+       [MACH_HYP] (panic): Call hyp_crash() without delay.
+       * linux/dev/include/asm-i386/segment.h [MACH_HYP] (KERNEL_CS)
+       (KERNEL_DS): Use ring 1.
+       * xen/block.c: New file.
+       * xen/block.h: Likewise.
+       * xen/console.c: Likewise.
+       * xen/console.h: Likewise.
+       * xen/evt.c: Likewise.
+       * xen/evt.h: Likewise.
+       * xen/grant.c: Likewise.
+       * xen/grant.h: Likewise.
+       * xen/net.c: Likewise.
+       * xen/net.h: Likewise.
+       * xen/ring.c: Likewise.
+       * xen/ring.h: Likewise.
+       * xen/store.c: Likewise.
+       * xen/store.h: Likewise.
+       * xen/time.c: Likewise.
+       * xen/time.h: Likewise.
+       * xen/xen.c: Likewise.
+       * xen/xen.h: Likewise.
+       * xen/public/COPYING: Import file from Xen.
+       * xen/public/callback.h: Likewise.
+       * xen/public/dom0_ops.h: Likewise.
+       * xen/public/domctl.h: Likewise.
+       * xen/public/elfnote.h: Likewise.
+       * xen/public/elfstructs.h: Likewise.
+       * xen/public/event_channel.h: Likewise.
+       * xen/public/features.h: Likewise.
+       * xen/public/grant_table.h: Likewise.
+       * xen/public/kexec.h: Likewise.
+       * xen/public/libelf.h: Likewise.
+       * xen/public/memory.h: Likewise.
+       * xen/public/nmi.h: Likewise.
+       * xen/public/physdev.h: Likewise.
+       * xen/public/platform.h: Likewise.
+       * xen/public/sched.h: Likewise.
+       * xen/public/sysctl.h: Likewise.
+       * xen/public/trace.h: Likewise.
+       * xen/public/vcpu.h: Likewise.
+       * xen/public/version.h: Likewise.
+       * xen/public/xen-compat.h: Likewise.
+       * xen/public/xen.h: Likewise.
+       * xen/public/xencomm.h: Likewise.
+       * xen/public/xenoprof.h: Likewise.
+       * xen/public/arch-x86/xen-mca.h: Likewise.
+       * xen/public/arch-x86/xen-x86_32.h: Likewise.
+       * xen/public/arch-x86/xen-x86_64.h: Likewise.
+       * xen/public/arch-x86/xen.h: Likewise.
+       * xen/public/arch-x86_32.h: Likewise.
+       * xen/public/arch-x86_64.h: Likewise.
+       * xen/public/io/blkif.h: Likewise.
+       * xen/public/io/console.h: Likewise.
+       * xen/public/io/fbif.h: Likewise.
+       * xen/public/io/fsif.h: Likewise.
+       * xen/public/io/kbdif.h: Likewise.
+       * xen/public/io/netif.h: Likewise.
+       * xen/public/io/pciif.h: Likewise.
+       * xen/public/io/protocols.h: Likewise.
+       * xen/public/io/ring.h: Likewise.
+       * xen/public/io/tpmif.h: Likewise.
+       * xen/public/io/xenbus.h: Likewise.
+       * xen/public/io/xs_wire.h: Likewise.
+
+2009-11-30  Samuel Thibault  <address@hidden>
+
+       Add stack-protector support
+       * kern/debug.c (__stack_chk_guard): New variable
+       (__stack_chk_fail): New function.
+
+       Use gcc builtins for stdarg.h when available
+       * i386/include/mach/sa/stdarg.h [__GNUC__ >= 3] (va_list):
+       Typedef to __builtin_va_list.
+       (va_start): define to __builtin_va_start.
+       (va_end): define to __builtin_va_end.
+       (va_arg): define to __builtin_va_arg.
+
+2009-11-28  Samuel Thibault  <address@hidden>
+
+       Fix commit d088a062
+       * vm/memory_object_proxy.c: New file.
+
+2009-11-28  Samuel Thibault  <address@hidden>
+
+       Add memory object proxies
+       Memory object proxies permit to replicate objects with different 
parameters,
+       like reduced privileged, different offset, etc.  They are e.g. 
essential for
+       properly managing memory access permissions.
+
+       2005-06-06  Marcus Brinkmann  <address@hidden>
+
+       * include/mach/mach4.defs: Add memory_object_create_proxy
+       interface.
+       * Makefile.in (vm-cfiles): Add memory_object_proxy.c.
+       * i386/include/mach/i386/vm_types.h (vm_offset_array_t): New type.
+       * include/mach/memory_object.h (memory_object_array_t): New type.
+       * vm/memory_object_proxy.c: New file.
+       * kern/ipc_kobject.h: New macro IKOT_PAGER_PROXY.  Bump up macros
+       IKOT_UNKNOWN and IKOT_MAX_TYPE.
+       * kern/ipc_kobject.c (ipc_kobject_notify): Call
+       memory_object_proxy_notify for IKOT_PAGER_PROXY.
+       * vm/vm_init.c (vm_mem_init): Call memory_object_proxy_init.
+       * vm/vm_user.c (vm_map): Implement support for proxy memory
+       objects.
+
+2009-11-28  Samuel Thibault  <address@hidden>
+
+       Add -H option to halt on panic
+       2005-12-29  Soeren D. Schulze  <address@hidden>
+
+       * i386/i386at/model_dep.c (reboot_on_panic) [!MACH_KBD]: New variable.
+       (c_boot_entry) [!MACH_KBD]: Set reboot_on_panic to 0 if kernel_cmdline
+       contains '-H'.
+       * kern/debug.c (panic): Call halt_all_cpus with reboot_on_panic as
+       argument.
+
+2009-11-28  Samuel Thibault  <address@hidden>
+
+       Add sis900 driver
+       2005-05-01  Andreas B. Mundt  <address@hidden>
+
+       * i386/README-Drivers: Likewise.
+       * i386/linux/Makefile.in (linux-net-files): Added 'sis900'.
+       * i386/linux/configure.ac (sis900): New driver.
+       * linux/dev/drivers/net/Space.c: Add conditional probes 'sis900'
+       driver.
+       * linux/src/drivers/net/sis900.c: New file.
+       * linux/src/drivers/net/sis900.h: Likewise.
+
+2009-11-28  Samuel Thibault  <address@hidden>
+
+       Add XMM FPU registers save/restore support.
+       * i386/include/mach/i386/fp_reg.h (struct i386_fp_regs): Invert array
+       indices.
+       (struct i386_xfp_save): New structure.
+       (FP_387X): New macro.
+       * i386/i386/thread.h (struct i386_fpsave_state): Add xfp_save_state
+       member, keep existing fp_save_state and fp_regs members in an unnamed
+       union member.  Move fp_valid member to the end of the structure.
+       * i386/i386/fpu.h (fxsave, fxrstor): New macros.
+       (fpu_save_context): Use fxsave() when FPU is FXSR-capable.
+       * i386/i386/fpu.c: Include <i386/locore.h>
+       (mxcsr_feature_mask): New variable.
+       (fp_save, fp_load): Add declaration.
+       (init_fpu): Add FXSR-capable FPU detection.
+       (fpu_module_init): Request 16-byte alignment to zinit() for
+       i386_fpsave_state structures.
+       (twd_i387_to_fxsr, twd_fxsr_to_i387): New functions.
+       (fpu_set_state): Convert FPU state when FPU is FXSR-capable.
+       (fpu_get_state): Convert FPU state when FPU is FXSR-capable.
+               (fpexterrflt): Pass to i386_exception either xfp_save_state or
+               fp_save_state according to FPU type.
+       (fpastintr): Likewise.
+       (fp_load): Likewise.  Use fxrstor() when FPU is FXSR-capable.
+       (fp_save): Use fxsave() when FPU is FXSR-capable.
+       (fp_state_alloc): Add FXSR-aware initialization.
+
+       Fix debugging message
+       * i386/i386/fpu.c (fphandleerr): Fix debugging message.
+
+       Add native FPU error support
+       * i386/i386/fpu.c (init_fpu): Enable CR0_NE when processor is at
+       least i486.
+       (fpintr): Move code handling the FPU state to...
+       (fphandleerr): New function.
+       (fpexterrflt): Rename into...
+       (fpastintr): New function.
+       (fpexterrflt): Reintroduce function, calls fphandleerr then
+       raises exception.
+       * i386/i386/fpu.h (fpastintr): Add prototype.
+       * i386/i386/trap.c (i386_astintr): Call fpastintr instead of
+       fpexterrflt.
+
+       Panic when no FPU is available
+       * i386/i386/fpu.c (init_fpu): Panic if no FPU is available.
+
+       Initialize FPU in MS-DOS compatibility mode
+       * i386/i386/fpu.c (init_fpu): Make sure CR0_NE is dropped.
+
+2009-11-22  Samuel Thibault  <address@hidden>
+
+       Declare memcmp function
+       * include/string.h (memcmp): New prototype.
+
+       Do not fail if no PTE maps virtual address 0
+               * i386/intel/pmap.c (pmap_unmap_page_zero): Do not fail if no 
PTE maps
+               virtual address 0.
+
+       Remove (vm_offset_t) casts from constants
+               * i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS, 
VM_MAX_KERNEL_ADDRESS,
+               LINEAR_MIN_KERNEL_ADDRESS, LINEAR_MAX_KERNEL_ADDRESS): Remove
+               (vm_offset_t) cast, use UL suffix instead.
+       * i386/include/mach/i386/vm_param.h (VM_MIN_ADDRESS,
+       VM_MAX_ADDRESS): Remove (vm_offset_t) cast, use UL suffix instead.
+
+       Really call startrtclock() with an active thread.
+       * kern/startup.c (cpu_launch_first_thread): Call startrtclock
+       really after starting at least one thread.
+
+       Add pmap parameter to INVALIDATE_TLB
+       * i386/intel/pmap.c (INVALIDATE_TLB): Add pmap parameter.
+       (PMAP_UPDATE_TLBS): Pass pmap parameter.
+       (process_pmap_updates): Likewise.
+       (pmap_unmap_page_zero): Use INVALIDATE_TLB instead of hardcoding
+       it.
+
+       Add phys_first_addr and phys_last_addr declaration
+       * i386/i386/model_dep.h (phys_first_addr, phys_last_addr): New
+       declarations.
+       * i386/i386/trap.c: Include <i386/model_dep.h>
+       (user_trap): Remove extern declaration of phys_last_addr.
+       * i386/intel/pmap.c: Include <i386/model_dep.h>
+       (phys_first_addr, phys_last_addr): Remove extern declaration.
+
+       Use typeof(boot_info)
+       * i386/i386at/model_dep.c (i386at_init): Use typeof(boot_info)
+       instead of hardcoding struct multiboot_info*.
+
+       Fix early interrupt crash
+       * i386/i386at/model_dep.c (i386at_init): Move int_stack_high
+       assignation to before setting up interrupts.
+
+       Add missing phystokv/kvtophys conversions
+       * i386/i386/mp_desc.c (interrupt_stack_alloc): Apply phystokv to
+       stack_start.
+       * i386/i386at/model_dep.c (i386at_init): Apply phystokv to
+       memory allocated to duplicate multiboot information.  Apply
+       _kvtophys before calling set_cr3.  Apply phystokv to
+       phys_last_addr before assigning to int_stack_high.
+       * i386/intel/pmap.c (pmap_bootstrap): Apply phystokv to
+       phys_last_addr, use kernel_virtual_start instead of
+       phys_last_addr.  Apply phystokv to allocated bootstrap page
+       table pages.  Apply _kvtophys to page table pointers before
+       writing into page table.
+       (pmap_enter): Apply phystokv to allocated page table page, apply
+       kvtophys to deallocated page table page.
+
+       Show command lines in task list
+       * Makefile.am (clib_routines): Add memcmp.
+       * i386/i386/db_machdep.h (DB_GNUMACH_TASK_NAME): New macro.
+       * i386/i386/db_interface.c (GNU): New macro.
+       [GNU] (looks_like_command): New function.
+       (db_task_name): When task map is kernel_pmap, return
+       DB_GNUMACH_TASK_NAME.
+       [GNU] (db_task_name): Use a GNU/Hurd-specific heuristic to get
+       argv[] of a task.
+
+       Replace phys_mem_va with VM_MIN_KERNEL_ADDRESS
+       * i386/i386/vm_param.h (phystokv): Use VM_MIN_KERNEL_ADDRESS
+       instead of phys_mem_va.
+       (_kvtophys): New macro.
+       * i386/i386at/model_dep.c (phys_mem_va): Remove variable.
+
+       Avoid confusion between global and local ldt vars
+       * i386/i386/pcb.c (switch_ktss): Rename ldt variable into tldt.
+
+       Do not assume that VM_MIN_KERNEL_ADDRESS is 0
+       * i386/i386/vm_param.h (VM_MAX_KERNEL_ADDRESS): Add
+       VM_MIN_KERNEL_ADDRESS.
+       (kvtolin): Subtract VM_MIN_KERNEL_ADDRESS.
+       (lintokv): Add VM_MIN_KERNEL_ADDRESS.
+       * i386/i386at/model_dep.c (mem_size_init): Subtract
+       VM_MIN_KERNEL_ADDRESS in computation of phys_last_addr.
+       (i386at_init): Use VM_MIN_KERNEL_ADDRESS instead of 0 as
+       argument of lin2pdenum.
+
+       Rewamp spl.h
+       * i386/i386/spl.h (splnet, splbio, spl7, splx_cli): Add
+       prototypes.
+
+       Do not assume that VM_MIN_KERNEL_ADDRESS is 0
+       * i386/i386/gdt.c (gdt_init): Subtract VM_MIN_KERNEL_ADDRESS
+       from LINEAR_MIN_KERNEL_ADDRESS to avoid assuming the former
+       being 0.
+
+       Fix db_search_null loop
+       * i386/i386/db_interface.c (db_search_null): Do not decrease
+       vaddr twice.
+
+       Introduce KERNEL_RING
+       * i386/i386/seg.h (KERNEL_RING): New macro, set to 0.
+               (ACC_PL_K, SEL_PL_K): Use KERNEL_RING instead of assuming 0.
+               * i386/i386/gdt.h (KERNEL_CS, KERNEL_DS): Likewise.
+               * i386/i386/db_interface.c (kdb_trap, kdb_kentry): Likewise.
+               * i386/i386/kttd_interface.c (kttd_trap, kttd_netentry): 
Likewise.
+       * i386/i386/i386asm.sym: Add KERNEL_RING expression.
+
+       Rename kd_atoi into mach_atoi
+       * i386/i386at/kd.c: Include <util/atoi.h>
+       (DEFAULT): Remove, replaced by MACH_ATOI_DEFAULT.
+               (kd_parserest): Use mach_atoi instead of kd_atoi and 
MACH_ATOI_DEFAULT
+               instead of DEFAULT.
+       (kd_atoi): Move and rename function to...
+       * util/atoi.c: ... mach_atoi in new file.
+       * i386/i386at/kd.h (kd_atoi): Move and rename declaration to...
+       * util/atoi.h: ... mach_atoi in new file.
+       * Makefrag.am (libkernel_a_SOURCES): Add util/atoi.c
+
+2009-11-16  Guillem Jover  <address@hidden>
+
+       Update dependency patch for Automake 1.10.2, 1.11, and thereabouts.
+       * config.status.dep.patch: Refresh.
+
+2009-11-11  Zheng Da  <address@hidden>
+
+       Fix a bug in vm_page_grab_contiguous_pages.
+       * vm/vm_resident.c (vm_page_grab_contiguous_pages): Maintain the free 
vm page queue correctly.
+
+2009-11-01  Samuel Thibault  <address@hidden>
+
+       Show EATA probing progression
+       * linux/src/drivers/scsi/eata.c (port_detect): Print the port being
+       probed.
+
+2009-10-26  Samuel Thibault  <address@hidden>
+
+       Fix VM_MAX_ADDRESS default
+       * i386/include/mach/i386/vm_param.h (VM_MAX_ADDRESS): Set back to 
0xc0000000 by
+       default.
+
+       Make tuning VM_MAX_ADDRESS trivial
+       * i386/i386/vm_param.h (LINEAR_MIN_KERNEL_ADDRESS): Set to
+       VM_MAX_ADDRESS instead of hardcoding to 0xc0000000.
+       (VM_MAX_KERNEL_ADDRESS): Set to LINEAR_MAX_KERNEL_ADDRESS -
+       LINEAR_MIN_KERNEL_ADDRESS instead of hardcoding to 0x40000000.
+       * i386/include/mach/i386/vm_param.h: Document how it may be tuned.
+
+       Fix build
+       * i386/i386at/com.h (comtimer): Fix prototype of comtimer.
+
+2009-10-25  Samuel Thibault  <address@hidden>
+
+       Fix warning
+       * i386/i386at/autoconf.c: Include <i386/pic.h> even when [!LINUX_DEV].
+
+       Fix warning
+       * i386/i386/trap.h: Include <mach/mach_types.h>
+
+       Fix warning
+       * i386/i386/pcb.c (thread_setstatus): Comment out state variable
+       declaration.
+
+       Fix warning
+       * device/net_io.c (net_set_filter): Cast filter into bpf_insn_t for
+       bpf_eq call.
+
+       Fix warning
+       * i386/i386/locore.S (TIME_INT_ENTRY): Fix comment.
+
+       Fix warning
+       * i386/intel/pmap.c (i): Declare only when [NCPUS > 1].
+
+2009-10-20  Samuel Thibault  <address@hidden>
+
+       Fix warnings
+       * devices/io_reqs.h (io_req): Set type of io_alloc_size field to
+       vm_size_t.
+       * device/ds_routines.c (device_write_dealloc): Remove cast of
+       io_alloc_size field.
+       * device/subrs.c (brelse): Likewise.
+
+       Fix warnings
+       * device/chario.c (ttypush): Set parameter type to void * instead of
+       struct tty *, and implicitly cast the former into the latter instead.
+       * i386/i386at/com.c: Include <kern/mach_clock.h>.
+       (timeout, ttrstrt): Remove declarations.
+       (comtimer): Add unused void * parameter.
+       (comopen): Pass NULL to comtimer function.
+       * i386/i386at/kd.h (kd_belloff): Add unused void * parameter.
+       * i386/i386at/kd.c (timeout): Remove declaration.
+       (kd_belloff): Add unused void * parameter.
+       (feep, kdsetbell): Pass NULL to kd_belloff function.
+       * i386/i386at/lpr.c: Include <mach_clock.h>.
+       (timeout, ttrstrt): Remove declarations.
+       * kern/mach_clock.c (softclock, timeout, untimeout): Set parameter
+       type of fcn function pointer to void * instead of char *. Set type
+       of param to void * instead of char *.
+       * kern/mach_clock.h (timer_elt): Set parameter type of fcn member
+       to void * instead of char *. Set time of param member to void * instead
+       of char *.
+       (timeout): Set parameter type of fcn function pointer parameter to void
+       * instead of char *.
+       (untimeout): Likewise, set type of param parameter to void * instead of
+       char *.
+       * kern/sched_prim.c (sched_init): Remove cast of recompute_priorities.
+       Replace (char *)0 with NULL.
+       (thread_timeout): Set parameter type to void * instead of thread_t, and
+       implicitly cast the former into the latter instead.
+       (thread_timeout_setup): Remove cast of thread_timeout, cast
+       thread_depress_timeout into (void (*) (void*)). Remove cast of thread.
+       (thread_recompute_priorities): Add unused void * parameter.
+
+       Fix warnings
+       * device/tty.h (tty): Set type of t_ispeed and t_ospeed members to
+       unsigned char instead of (potentially signed) char.
+
+       Fix warnings
+       * vm/vm_resident.c (vm_page_grab_contiguous_pages): Remove unused
+       count_zeroes and not_found_em labels.
+
+       Fix warning
+       * vm/vm_pageout.c (vm_pageout_scan): Remove unused Restart label.
+
+       Fix warning
+       * vm/vm_map.c (vm_map_lookup): Add braces to fix readability.
+
+       Fix warning
+       * kern/thread.c (_s_): Remove unused variable.
+
+       Fix warnings
+       * kern/bootstrap.c (task_insert_send_right): Remove spurious cast of
+       port into ipc_object_t.
+       (load_protect_text, load_fault_in_text, boot_map,
+       load_bootstrap_symbols): Comment out unused variables and function.
+       (read_exec): Comment out unused user_map variable.
+
+       Fix boot from grub2 with more than 800MiB memory
+       * i386/i386at/model_dep.c (init_alloc_aligned): Add declaration.
+       (i386at_init): Use init_alloc_aligned to allocate memory to save the
+       content pointed by boot_info: cmdline, mods_addr, mod_start, and string.
+       Set kernel_cmdline to the newly allocated string.
+       (c_boot_entry): Do not set kernel_cmdline.
+
+       Better estimate avail_remaining
+       * i386/i386at/model_dep.c (mem_size_init): Move avail_remaining 
computation to
+       after all phys_last_addr corrections.
+
+2009-10-18  Samuel Thibault  <address@hidden>
+
+       Revert "Fix multiboot compliancy concerning x86 D flag"
+       This reverts commit de00e82b8c4491a4ff3320c0ddd80ac91ed0977b.
+
+       Flags already get cleared using push/pop a few instructions later.
+
+2009-10-17  Samuel Thibault  <address@hidden>
+
+       Fix multiboot compliancy concerning x86 D flag
+       i386/i386at/boothdr.S (boot_entry): Clear D flag.
+
+2009-10-14  Samuel Thibault  <address@hidden>
+
+       Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
+
+       Update constants to nowadays standards
+       kern/zalloc.c (zone_map_size): Increase to 64MiB.
+       i386/i386at/model_dep.c (mem_size_init): Reduce cap to 1/6 of memory
+       space to save room for zalloc area.
+       linux/src/drivers/block/ide.h (INITIAL_MULT_COUNT): Set to 16.
+       vm/vm_map.h (VM_MAP_COPY_PAGE_LIST_MAX): Set to 64.
+       vm/vm_object.c (vm_object_cached_max): Set to 4000.
+
+2009-10-14  Thomas Schwinge  <address@hidden>
+
+       Merge branch 'master-zhengda'
+
+2009-10-14  Zheng Da  <address@hidden>
+
+       Apply patch #6851: fix a bug in BPF * net_io.c (net_filter): Correct 
the amount of data of a packet accepted by BPF.
+
+2009-10-14  Samuel Thibault  <address@hidden>
+
+       Fix yet more allocation failures during gc
+       kern/zalloc.c (zone_gc): Allocate and free two vm_map_kentry_zone 
elements to
+       make sure the gc will be able to allocate two in vm_map_delete.
+
+       Revert spurious part of 909c941d
+
+       Fix db kernel memory access
+       i386/i386/db_interface.c (db_read_bytes): Also check addr against
+       VM_MAX_KERNEL_ADDRESS.
+
+       Fix macro escapes
+       i386/intel/pmap.c (INVALIDATE_TLB): Fix macro escapes
+
+       Fix allocation failure during gc
+       kern/zalloc.c (zone_gc): Allocate and free a vm_map_kentry_zone element 
to make
+       sure the gc will be able to allocate one for vm_map_delete.
+
+       More restrictive requirements on zone alignment
+       kern/zalloc.c (zinit): Panic if requested alignment doesn't match page
+       size and list elements.
+
+       Fix return with lock held
+       vm/vm_map.c (vm_map_copy_overwrite): Unlock dst_map before returning.
+
+       Fix return with lock held
+       vm/vm_map.c (vm_map_enter): Use RETURN instead of return to unlock the
+       map before returning.
+
+       Make local variable static
+       kern/lock.c (lock_wait_time): Add static qualifier.
+
+       Advertise memory size truncations
+       i386/i386at/model_dep.c (mem_size_init): Advertise memory size
+       truncations.
+
+2009-09-27  Samuel Thibault  <address@hidden>
+
+       Disable CMD-640 support
+       It messes too much with probing and brings hang issue.
+
+       * i386/linux/dev/include/linux/autoconf.h
+       (CONFIG_BLK_DEV_CMD640, CONFIG_BLK_DEV_CMD640_ENHANCED):
+       Undefine macros.
+
+2009-07-11  Thomas Schwinge  <address@hidden>
+
+       Switch to the new ChangeLog style.
+       * ChangeLog: Wipe out content, and add instructions about how to get it 
back.
+       * ChangeLog.0: Remove file.
+       * ChangeLog.00: Likewise.
+
+2009-02-26  Samuel Thibault  <address@hidden>
+
+       * i386/i386/prog_reg.h (invlpg_linear): Rename macro into...
+       (invlpg_linear_range): ... this.
+       (invlpg_linear): New macro.
+       * i386/intel/pmap.c (INVALIDATE_TLB): Call invlpg_linear instead
+       of flush_tlb when e - S is compile-time known to be PAGE_SIZE,
+       instead of run-time known to be less than 32 * PAGE_SIZE.
+
+2009-01-05  Samuel Thibault  <address@hidden>
+
+       * i386/i386/gdt.h (LINEAR_DS): New macro.
+       * i386/i386/gdt.c (gdt_init): Initialize LINEAR_DS descriptor.
+       * i386/i386/proc_reg.h (invlpg_user): Rename macro into...
+       (invlpg_linear): ... this.  Use movw instead of movl to set KERNEL_DS
+       selector.  Use LINEAR_DS selector instead of USER_DS selector.
+       * i386/intel/pmap.c (INVALIDATE_TLB): Call invlpg_linear instead of
+       invlpg_user.  For now, disable use of invlpg.
+
+2008-12-30  Samuel Thibault  <address@hidden>
+
+       * i386/i386/proc_reg.h [__ASSEMBLER__ && __GNUC__]: Include
+       <i386/gdt.h> and <i386/ldt.h>
+       (invlpg_user): New macro.
+       * i386/intel/pmap.c (INVALIDATE_TLB): Call invlpg_user instead
+       of invlpg.
+       (pmap_remove, pmap_page_protect, pmap_protect, pmap_enter,
+       pmap_collect, phys_attribute_clear): Call PMAP_UPDATE_TLBS
+       after pde update instead of before.
+
+2008-12-29  Samuel Thibault  <address@hidden>
+
+       * i386/intel/pmap.c (pmap_bootstrap): Extend kernel virtual memory to
+       at least the size of the physical memory.
+
+2008-12-05  Samuel Thibault  <address@hidden>
+
+       * vm/vm_fault.c (vm_fault_page): Print value returned
+       memory_object_data_request as %x instead of %d.
+
+2008-11-15  Shakthi Kannan  <address@hidden>
+
+       * device/ds_routines.h (device_reference, device_deallocate): Add
+       function prototypes.
+       * kern/task.c (task_create): Moved unused i variable inside FAST_TAS.  
+       * vm/vm_map.h (vm_map_copy_page_discard): Add function prototype.
+       * vm/vm_kern.c (projected_buffer_deallocate): Give &map->hdr
+       instead of map to _vm_map_clip_start and _vm_map_clip_end functions.
+
+2008-12-01  Samuel Thibault  <address@hidden>
+
+       * device/device_emul.h (device_emulation_ops): Turn back reference,
+       dealloc, dev_to_port, write_trap and writev_trap into taking a void*,
+       as they do not always take a mach_device_t.
+       * device/ds_routines.c (mach_device_emulation_ops): Cast
+       mach_device_reference, mach_device_deallocate,
+       mach_convert_device_to_port, device_write_trap and device_writev_trap
+       to (void*) to make them accept a void* argument.
+       * linux/pcmcia-cs/glue/ds.c (device_deallocate): Rename function
+       into...
+       (ds_device_deallocate): ... this.
+       (dev_to_port): Call ds_device_deallocate instead of device_deallocate.
+       (linux_pcmcia_emulation_ops): Use ds_device_deallocate instead of
+       device_deallocate, cast mach_device_reference to (void*) to make it
+       accept a void* argument.
+
+2008-11-28  Thomas Schwinge  <address@hidden>
+
+       * doc/Makefrag.am: Only advertize updating the web pages on
+       gnumach-1-branch.
+
+2008-11-27  Samuel Thibault  <address@hidden>
+
+       * i386/i386/proc_reg.h (invlpg): New macro.
+       * i386/intel/pmap.c (INVALIDATE_TLB): If portion to be flushed is less
+       than 32 pages, use calls to invlpg instead of flush_tlb.
+
+2008-11-23  Samuel Thibault  <address@hidden>
+
+       * i386/i386/proc_reg.h (get_cr0, get_cr2, get_cr3, get_cr4, get_tr,
+       get_ldt): Add volatile qualifier to asm statement to prevent gcc from
+       optimizing it away since there seems to be no way to clobber these
+       properly in the set_* macros.
+
+2008-11-17  Thomas Schwinge  <address@hidden>
+
+       * Makefile.am (install_sh, INSTALL): Point to `build-aux/install-sh'.
+       Make use of its `-C' option.
+
+       * configure.ac: Require GNU Automake 1.10.1.
+       * Makefile.am: Adapt.
+       * Makefile.correct_output_files_for_.S_files.patch: Remove.
+
+2008-07-19  Barry deFreese  <address@hidden>
+
+       * device/device_emul.h (struct device_emulation_ops): Make members
+       reference, dealloc, dev_to_port, write_trap, and writev_trap take
+       mach_device_t parameter instead of void *.
+       * i386/i386at/autoconf.c: Make forward declarations for comintr()
+       and lprintr() match prototype. Add brackets around initialization
+       members for bus_ctlr and bus_device structs.
+       * i386/i386at/conf.c (dev_name_list): Pass nomap instead of nulldev
+       for map field.
+       * i386/i386at/pic_isa.c (intnull, fpintr, hardclock, kdintr,
+       prtnull): Declare the type of the value returned by functions to void.
+
+2008-11-13  Thomas Schwinge  <address@hidden>
+
+       [task #8135 -- PAE for GNU Mach]
+       * i386/configfrag.ac (enable_pae): Add checks: this is ix86-only.
+       * doc/mach.texi (Configuration): Document the new option.
+
+2008-11-11  Shakthi Kannan  <address@hidden>
+
+       * kern/eventcount.c (evc_wait_clear): Remove unused variable 'ret'.
+
+2008-11-10  Samuel Thibault  <address@hidden>
+
+       [task #8135 -- PAE for GNU Mach]
+       * i386/configfrag.ac: Add --enable-pae option, which defines PAE.
+       * i386/i386/i386asm.sym (PDPSHIFT, PDEMASK, PTE_SIZE): New assembly
+       macros.
+       * i386/i386/locore.S (copyout_retry) [PAE]: Use page directory pointer
+       bits, take PTE_SIZE into account.
+       * i386/i386at/model_dep.c (i386at_init) [PAE]: Set second initial 2MB
+       page.  Enable PAE bit.  Set cr3 to page directory pointer table instead
+       of page directory.
+       * i386/intel/pmap.c (pmap_bootstrap, pmap_create) [PAE]: Allocate 4
+       pages for dirbase.  Setup pdpbase.
+       (pmap_destroy) [PAE]: Free 4 pages from dirbase.  Free pdpbase.
+       * i386/intel/pmap.h (pt_entry_t) [PAE]: Typedef to unsigned long long.
+       (PDPSHIFT, PDPNUM, PDPMASK) [PAE]: New macros.
+       (PDESHIFT, PDEMASK, PTEMASK) [PAE]: Set to PAE values.
+       (lin2pdenum, NPDES) [PAE]: Make them take the page directory pointer
+       index into account too.
+       (struct pmap) [PAE]: Add `pdpbase' member.
+       (set_dirbase): Remove macro, replaced by...
+       (set_pmap): New macro, taking a pmap instead of the dirbase.
+       (PMAP_ACTIVATE_USER): Use set_pmap instead of set_dirbase.
+
+2008-11-05  Shakthi Kannan  <address@hidden>
+
+       * ipc/mach_port.c (mach_port_insert_right): Cast poly into
+       (ipc_object_t) to fix compiler warning when calling
+       ipc_object_copyout_name.
+
+2008-08-31  Samuel Thibault  <address@hidden>
+
+       * i386/i386/trap.c (user_trap): On page fault, raise exception instead
+       of asserting that cr2 is below LINEAR_MIN_KERNEL_ADDRESS.
+
+2008-07-29  Zheng Da  <address@hidden>
+            Manuel Menal <address@hidden>
+
+       * include/device/net_status.h (NET_FLAGS): New macro.
+       * linux/dev/glue/net.c (device_get_status): Handle NET_FLAGS case.
+       (device_set_status): Likewise, calls dev_change_flags.
+       * linux/dev/include/linux/netdevice.h (dev_change_flags): Declare
+       function.
+       * linux/dev/net/core/dev.c (dev_change_flags): Add function.
+
+2008-08-03  Samuel Thibault  <address@hidden>
+
+       * i386/i386/lock.h (_simple_lock_xchg_, bit_lock, bit_unlock): Add
+       memory clobbers.
+       * i386/include/mach/i386/cthreads.h (spin_unlock, spin_try_lock): Add
+       memory clobbers.
+
+2008-07-23  Barry deFreese  <address@hidden>
+
+       * device/chario.c (ttyinput_many): Change chars param to char *.
+       * device/tty.h (ttyinput_many): Likewise.
+       * i386/i386/pcb.h: Include <mach/exec/exec.h>.
+       * i386/i386at/autoconf.h: Include <chips/busses.h>.
+       * i386/i386at/model_dep.c (inittodr): Cast &new_time.seconds to u_int *.
+       * ipc/mach_port.c (mach_port_insert_right): Cast poly to ipc_object_t.
+       * ipc/mach_debug.c (host_ipc_hash_info): Initialize size to 0 to make
+       the compiler believe that there is no bug.
+       * ipc/mach_debug.c (mach_port_space_info): Likewise for tree_size and 
+       table_size.
+       * i386/i386at/com.c (commctl): Likewise for b.
+       * i386/i386/trap.c (user_trap): Likewise for exc.
+       * i386/i386/user_ldt.c (i386_set_ldt): Likewise for old_copy_object.
+       * i386/i386at/com.c (comintr): Check line_stat&iOR instead of line&iOR.
+
+2008-07-23  Barry deFreese  <address@hidden>
+
+       * i386/i386/locore.h (copyinmsg, copyoutmsg): 
+       Make parameters const void* and void* instead of vm_offset_t.
+       * i386/i386at/com.c (comportdeath): Cast port as ipc_port_t in 
+       tty_portdeath call.
+       * i386/i386at/kd.c (kdportdeath): Likewise.
+       * i386/i386at/lpr.c (lprportdeath): Likewise.
+       * i386/i386at/kd_mouse.c (mouse_handle_byte): Cast param to wakeup() as 
+       vm_offset_t.
+       * i386/intel/pmap.c (pmap_destroy): Cast arg 2 of kmem_free() to 
+       vm_offset_t.
+       * i386/intel/pmap.h: Cast all arg 1 params to kvtophy() to vm_offset_t.
+       * ipc/ipc_kmsg.c: Remove casts from params to copyinmsg and 
+       copyoutmsg calls.
+       * ipc/mach_msg.c: Likewise.
+       * kern/exceptions.c: Likewise.
+       * ipc/mach_msg.c: Remove casts from params to copyout calls.
+       * ipc/bootstrap.c: Likewise.
+       * kern/ipc_tt.c (mach_ports_register): Cast memory[i] as ipc_port_t in 
+       assignment.
+
+2008-07-19  Barry deFreese  <address@hidden>
+
+       * chips/busses.h (bus_ctlr, bus_device): Make intr return void instead
+       of int.
+       * device/tty.h (tty): Make t_start and t_stop return void instead of
+       int.
+       * i386/i386/ipl.h (ivect[]): return void instead of int.
+       * i386/i386at/pic_isa.h (ivect[]): Likewise.
+       * i386/i386at/kd_mouse.c (mouseintr): Likewise.
+       * i386/i386at/com.c (comintr, comstop): Likewise.
+       * i386/i386at/kd.c (kdcnputc, kdstart, kdstop, kdintr): Likewise.
+       * i386/i386/trap.c (exception, thread_exception_return, i386_exception):
+        Add __attribute__ ((noreturn)).
+       * i386/i386at/kd.c (kdcnprobe): Return 0 at end of function.
+       * i386/i386at/lpr.c (lprintr, lprstart): Return void instead of int.
+       (lprstart): Don't return numeric values any longer.
+       * kern/eventcount.c (evc_wait_clear): Return a value.
+       * kern/exceptions.c (exception, exception_try_task, 
exception_no_server, 
+       exception_raise, exception_raise_continue, 
exception_raise_continue_slow, 
+       exception_raise_continue_fast): Add __attribute__ ((noreturn)).
+       (exception, exceptio_try_task, exception_raise, 
+       exception_raise_continue_slow, exception_raise_continue_fast): 
+       Remove spurious returns.
+       (exception_no_server): Add panic() on return from thread_halt_self().
+
+2008-07-20  Samuel Thibault  <address@hidden>
+
+       * linux/pcmcia-cs/glue/wireless_glue.h (schedule_task): Add parameter
+       to Debugger() call.
+       * kern/lock_mon.c (retry_simple_lock, retry_bit_lock): Likewise.
+       * kern/machine.c (Debugger): Remove declaration.
+       * device/net_io.c (net_deliver): Fix parenthesis to really round up.
+       * kern/mach_clock.c (timeout): Make the `fcn' parameter take a void *
+       instead of char *.
+       * kern/mach_clock.h (timeout): Likewise.
+       * device/net_io.c (net_set_filter): Reference the proper member
+       instead of casting pointers.
+       * device/subrs.c (ether_sprintf): Set type of `i' to `int'.
+       * i386/i386/trap.c (kernel_trap): Pass page fault address to printf.
+       * i386/i386at/rtc.c (rtcget): Fix parenthesis to really test the bit.
+       * linux/src/include/linux/tqueue.h (queue_task_irq,
+       queue_task_irq_off, queue_task, run_task_queue): Turn into static
+       inlines.
+
+2008-07-19  Barry deFreese  <address@hidden>
+
+       * device/dev_hdr.h (dev_name_lookup, dev_set_indirection): Add
+       prototypes.
+       * device/dev_pager.c: Include <vm/vm_user.h>.
+       * device/ds_routines.c: Likewise.
+       * device/subrs.c: Likewise.
+       * device/device_init.c: Include <device/tty.h>.
+       * device/ds_routines.h (iowait): Add prototype.
+       * device/net_io.h (net_kmsg_collect): Add prototype.
+       * device/net_io.c (hash_ent_remove, net_free_dead_infp,
+       net_free_dead_entp, bpf_validate, bpf_eq, net_add_q_info,
+       bpf_match): Add forward declarations.
+       * device/subrs.h: New header.
+       * i386/i386/fpu.h: Include <sys/types.h>.
+       Change <i386/thread.h> include to <kern/thread.h>.
+       (fp_save, fp_load, fp_free, fpu_module_init, fpu_set_state, 
+       fpu_get_state, fpnoextflt, fpextovrflt, fpexterrflt, init_fpu):
+       Add prototypes.
+       * i386/i386/gdt.h (gdt_init): Add prototype.
+       * i386/i386/io_map.c: Include <vm/pmap.h>.
+       * vm/vm_kern.c: Likewise.
+       * i386/i386/ktss.h (ktss_init): Add prototype.
+       * i386/i386/ldt.h (ldt_init): Add prototype.
+       * i386/i386/loose_ends.h: New header.
+       * i386/i386/loose_ends.c (delay): Complete prototype.
+       * i386/i386/model_dep.h (startrtclock): Add prototype.
+       * i386/i386/pcb.h (load_context, stack_attach, stack_detach, 
+       switch_ktss): Add prototypes.
+       * i386/i386/pic.h (form_pic_mask, picinit): Add prototypes.
+       * i386/i386/pit.c: Include <i386/pic.h>.
+       * i386/i386at/kd_mouse.c: Likewise.
+       * i386/i386/pit.h (clkstart): Add prototype.
+       * i386/i386/trap.c: Include <i386/fpu.h>, <intel/read_fault.h>,
+       <vm/vm_fault.h>.
+       * i386/i386/trap.h (interrupted_pc): Add prototype.
+       * i386/i386/user_ldt.c: Include <i386/pcb.h>.
+       * i386/i386at/autoconf.h: New header.
+       * i386/i386at/com.h: New header.
+       * i386/i386at/com.c: Include <i386at/autoconf.h>, <i386at/com.h>.
+       * i386/i386at/idt.h (idt_init): Add prototype.
+       * i386/i386at/int_init.h: New header.
+       * i386/i386at/kd.c: Include <i386/loose_ends.h>.
+       * kern/debug.c: Likewise.
+       * i386/i386at/kd_event.c: Include <device/ds_routines.h>.
+       * i386/i386at/kd_mouse.c: Likewise.
+       * i386/i386at/kd_mouse.c: Include <device/subrs.h>, <i386at/com.h>.
+       * i386/i386at/lpr.c: Include <i386at/autoconf.h>
+       * i386/i386at/model_dep.c: Include: <i386/fpu.h>, <i386/gdt.h>, 
+       <i386/ktss.h>, <i386/ldt.h>, <i386/pic.h>, <i386/pit.h>, 
+       <i386at/autoconf.h>, <i386at/idt.h>, <i386at/int_init.h>, 
+       <i386at/kd.h>, <i386at/rtc.h>.
+       * i386/i386at/rtc.h (readtodc, writetodc): Add prototypes.
+       * i386/intel/pmap.h: Include <mach/vm_prot.h>.
+       (pmap_bootstrap, pmap_unmap_page_zero, pmap_zero_page, pmap_copy_page,
+       kvtophys): Add prototypes.
+       * i386/intel/read_fault.h: New header.
+       * kern/ast.h (ast_init, ast_check): Add prototypes.
+       * kern/debug.c (Debugger): Move prototype to...
+       * kern/debug.h (Debugger): ... here.
+       * kern/eventcount.h (evc_notify_abort): Add prototype.
+       * kern/ipc_mig.c: Include <kern/syscall_subr.h>, <kern/ipc_tt.h>, 
+       <device/ds_routines.h>
+       * kern/ipc_mig.h: New header.
+       * kern/ipc_tt.h (mach_reply_port): Add prototype.
+       * kern/machine.h: New header.
+       * kern/processor.h (pset_sys_bootstrap): Move prototype outside of
+       MACH_HOST check.
+       * kern/sched_prim.h (thread_bind, compute_priority,
+       thread_timeout_setup): Add prototypes.
+       * kern/startup.c: Include <kern/machine.h>, <machine/pcb.h>.
+       * kern/syscall_subr.c: Include <kern/syscall_subr.h>.
+       (thread_depress_abort): Remove prototype.
+       * kern/syscall_subr.h: Include <sys/types.h>, <mach/mach_types.h>
+       (thread_depress_abort): Add prototype.
+       * kern/syscall_sw.c: Include: <kern/debug.h>.
+       * kern/task.h (consider_task_collect): Add prototype.
+       * kern/thread.c: Include <kern/eventcount.h>, <kern/ipc_mig.h>, 
+       <kern/syscall_subr.h>.
+       * kern/thread.h (stack_collect): Add prototype.
+       * linux/pcmcia-cs/glue/pcmcia_glue.h (Debugger): Remove prototype.
+       * util/putchar.c: Include <device/cons.h>.
+       * util/putchar.h: New header.
+       * util/puts.c: Include <device/cons.h>, <util/putchar.h>.
+       * vm/memory_object.c: Include <vm/vm_map.h>.
+       (memory_object_data_provided): Move function below
+       memory_object_data_supply definition.
+       * vm/vm_init.c: Include <vm/vm_fault.h>.
+       * vm/vm_kern.h (projected_buffer_in_range): Add prototype.
+       * vm/vm_map.c: Include <vm/pmap.h>, <vm/vm_resident.h>.
+       (vm_map_delete, vm_map_copyout_page_list, vm_map_copy_page_discard):
+       Add forward declaration.
+       * vm/vm_map.h (vm_map_copyin_object, vm_map_submap,
+       _vm_map_clip_start, _vm_map_clip_end): Add prototypes.
+       * vm/vm_pageout.c: Include <device/net_io.h>, <kern/task.h>, 
+       <machine/locore.h>.
+       * vm/vm_resident.h: New header.
+       * vm/vm_user.c: Include <vm/vm_kern.h>.
+       * vm/pmap.h (pmap_pageable, pmap_map_bd): Add prototype.
+
+2008-07-18  Andrei Barbu  <address@hidden>
+
+       * i386/i386/db_disasm.c (Iba): New macro.
+       (db_inst_table): Use Iba for aam and aad instructions.
+       (db_disasm): Decode operands for Iba case.
+       * i386/i386/db_interface.c (db_read_bytes): Do not increment the
+       address before printing it.
+       * include/sys/types.h (int8_t, uint8_t, u_int8_t, int16_t, uint16_t,
+       u_int16_t, int32_t, uint32_t, u_int32_t, int64_t, uint64_t,
+       u_int64_t): New types.
+       * ddb/db_sym.c (db_task_printsym): Do not print empty symbols.
+       * ddb/db_break.c (db_set_breakpoint): Add db_breakpoint_t return type,
+       return the breakpoint in non-ddb case.
+       * ddb/db_break.h (BKPT_EXTERNAL): New macro.
+       (db_set_breakpoint): Add declaration.
+       * (ddb/db_sym.h): Add _DDB_DB_SYM_H_ header protection.
+       (db_find_sym_and_offset, db_find_xtrn_sym_and_offset,
+       db_find_task_sym_and_offset, db_find_xtrn_task_sym_and_offset): Call
+       db_free_symbol.
+       (db_free_symbol): New declaration.
+       (db_sym_switch): New `free_symbol' member.
+       (X_db_free_symbol): New macro.
+       * ddb/db_sym.c (db_value_of_name, db_lookup, db_name_is_ambiguous,
+       db_search_task_symbol, db_search_in_task_symbol, db_task_printsym):
+       Call db_free_symbol.
+       (db_free_symbol): New function.
+       (dummy_db_free_symbol): New empty function.
+       (x_db): Initialize `free_symbol' memberi with dummy_db_free_symbol.
+       * i386/i386/db_trace.c (db_i386_stack_trace): Call db_free_symbol.
+       * kern/lock_mon.c (print_lock_info): Likewise.
+       * include/sys/types.h (quad): Remove type.
+
+2008-07-15  Barry deFreese  <address@hidden>
+
+       * device/cons.c (cnputc): Turn parameter `c' into a char.
+       * device/cons.h (cninit, cngetc, cnmaygetc, cnputc): Add prototypes.
+       * i386/i386at/model_dep.c: Include <device/cons.h>
+       * kern/printf.c: Include <device/cons.h>
+       (cnputc): Remove prototype.
+       (vprintf, iprintf): Explicitely cast cnputc into the type _doprnt
+       expects.
+       * linux/dev/kernel/printk.c: Include <device/cons.h>
+       (cnputc): Remove prototype.
+       * device/ds_routines.c: Include <machine/locore.h>
+       * ipc/ipc_kmsg.c: Likewise.
+       * kern/bootstrap.c: Likewise.
+       * kern/exception.c: Likewise.
+       * kern/ipc_mig.c: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/time_stamp.c: Likewise.
+       * vm/vm_kern.c: Likewise.
+       * device/ds_routine.h (ds_notify): Add prototype.
+       * kern/ipc_kobject.c: Include <device/ds_routines.h>
+       * device/net_io.h (net_ast): Add prototype.
+       * ipc/ipc_kmsg.c: Include <device/net_io.h>
+       * kern/ast.c: Include <device/net_io.h>
+       * i386/i386at/kd.h (kd_isupper, kd_islower, kd_senddata, kd_sendcmd,
+       kd_cmdreg_write, kd_mouse_drain, set_kd_state, kd_setleds1, kd_setleds2,
+       cnsetleds, kdreboot, kd_putc, kd_parseesc, kd_down, kd_up, kd_cr,
+       kd_tab, kd_left, kd_right, kd_scrollup, kd_scrolldn, kd_cls, kd_home,
+       kd_atoi, kd_insch, kd_cltobcur, kd_cltopcur, kd_cltoecur, kd_clfrbcur,
+       kd_eraseln, kd_insln, kd_delln, kd_delch, kd_erase, kd_bellon,
+       kd_belloff, kdinit, kdsetkbent, kdgetkbent, kdsetbell, kd_resend,
+       kd_handle_ack, kd_kbd_magic, kdstate2idx, kd_parserest, kdcnmaygetc,
+       kd_slmwd, kd_slmscu, kd_slmscd): Add prototypes.
+       * i386/i386at/kd.c (do_modifier): Add prototype.
+       * kern/ipc_kobject.c: Include <vm/vm_object.h>
+       * vm/vm_object.h: Include <sys/types.h> and <ipc/ipc_types.h>.
+       (vm_object_coalesce, vm_object_pager_wakeup): Add prototypes.
+       * kern/priority.c: Include <kern/sched_prim.h>.
+       * kern/sched_prim.c (recompute_priorities, update_priority): Remove
+       prototypes.
+       * kern/sched_prim.h (update_priority, compute_my_priority): Add
+       prototypes.
+       * kern/time_stamp.h (timestamp_init): Add prototype.
+       * kern/startup.c: Include <kern/time_stamp.h>.
+       * ipc/ipc_kmsg.c: Include <vm/vm_user.h> and <ipc/ipc_hash.h>.
+       * ipc/ipc_mqueue (ipc_mqueue_copyin): Add prototype.
+       * kern/bootstrap.c: Include <vm/vm_user.h>.
+       * kern/exceptions.c: Include <ipc/ipc_notify.h>.
+       * kern/ipc_kobject.h (ipc_kobject_notify): Add prototype.
+       * kern/ipc_mig.c: Include <device/dev_hdr.h>.
+       * kern/pc_sample.c: Include <machine/trap.h>.
+       * kern/printf.h (safe_gets): Add prototype.
+       * kern/processor.c: Include <kern/ipc_tt.h>.
+       * kern/queue.h (insque): Add prototype.
+       * kern/startup.c: Include <kern/mach_factor.h> and <kern/xpr.h>.
+       * kern/thread.h (thread_start, kernel_thread, thread_priority,
+       thread_set_own_priority, thread_max_priority, thread_policy,
+       consider_thread_collect, stack_privilege): Add prototypes.
+       * kern/timer.h (timer_normalize, timer_init, init_timers): Add
+       prototypes.
+       * vm/vm_map.h (vm_map_lookup_entry, vm_map_entry_delete): Add
+       prototypes.
+       * device/chario.c: Include <vm/vm_user.h>
+       * device/device_init.c (chario_init): Remove prototype.
+       * device/tty.h (ttyinput_many, tty_cts, tty_get_status,
+       tty_set_status, tty_flush, ttrstrt, ttstart, ttyclose, tty_portdeath,
+       chario_init): Add prototypes.
+       * i386/i386/model_dep.h: New header.
+       * i386/i386at/model_dep.c: Include <i386/model_dep.h>.
+       * kern/debug.c: Include <machine/model_dep.h>.
+       * kern/mach_clock.c: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/startup.c: Likewise.
+       * kern/machine.c: Likewise.
+       (halt_cpu): Remove prototype.
+       * vm/pmap.h (pmap_grab_page): Add prototype.
+       * ipc/mach_port.h: New header.
+       * ipc/mach_port.c: Include <ipc/mach_port.h>.
+       (mach_port_get_receive_status): Add forward declaration.
+       * kern/bootstrap.c: Include <ipc/mach_port.h>.
+       * kern/ipc_mig.c: Likewise.
+       * kern/syscall_sw.c: Likewise.
+       * device/dev_pager.c (device_pager_data_request,
+       device_pager_data_request_done, device_pager_init_pager): Fix printf
+       formats.
+       * i386/i386/debug_i386.c (dump_ss): Likewise.
+       * i386/i386/trap.c (user_trap): Likewise.
+       * i386/i386at/com.c (comtimer): Likewise.
+       * ipc/ipc_notify (ipc_notify_port_deleted, ipc_notify_msg_accepted,
+       ipc_notify_port_destroyed, ipc_notify_no_senders,
+       ipc_notify_send_once, ipc_notify_dead_name): Likewise.
+       * kern/ipc_kobject.c (ipc_kobject_destroy): Likewise.
+       * kern/sched_prim.c (do_runq_scan): Likewise.
+       * linux/pcmcia-cs/clients/smc91c92_cs.c (smc_start_xmit): Likewise.
+       * linux/src/drivers/net/sundance.c (start_tx): Likewise.
+       * vm/vm_fault.c (vm_fault_page): Likewise.
+       * vm/vm_map.c (vm_map_pmap_enter): Likewise.
+       * vm/vm_object.c (vm_object_collapse): Likewise.
+
+2008-07-04  Samuel Thibault  <address@hidden>
+
+       * linux/src/drivers/net/rtl8139.c (rtl8129_open): Move IRQ
+       initialization after ring initialization.
+
+2008-07-02  Samuel Thibault  <address@hidden>
+
+       * linux/dev/include/asm/segment.h (__put_user, __get_user): Add
+       always_inline attribute.
+
+2008-06-29  Samuel Thibault  <address@hidden>
+
+       * i386/i386/fpu.c (fpintr): Do not panic if the we receive the
+       interrupt twice in the same thread.
+
+2008-05-28  Thomas Schwinge  <address@hidden>
+
+       [bug #23417, patch #6508 -- Building with -g3]
+       * Makefile.am (MIGCOM): Revert the 2008-05-19 change.
+
+2008-05-25  Andrei Barbu <address@hidden>
+
+       * ddb/db_aout.c (aout_db_symbol_values): Add stab parameter.
+       * ddb/db_sym.h (db_sym_switch): Add stab parameter to symbol_values
+       member.
+       (X_db_symbol_values): Pass stab parameter to symbole_values function.
+
+2008-05-19  Thomas Schwinge  <address@hidden>
+
+       [patch #6508 -- Building with -g3]
+       * Makefile.am (MIGCOM): Let it filter through CPP again.
+       Suggested by Andrei Barbu <address@hidden>.
+
+2008-05-09  Andrei Barbu  <address@hidden>
+
+       * i386/i386/loose_ends.c (DELAY): Use volatile qualifier instead of
+       register to prevent optimization.
+
+2008-03-10  Samuel Thibault  <address@hidden>
+
+       * doc/Makefrag.am: Fix typo.
+
+2008-03-07  Samuel Thibault  <address@hidden>
+
+       * i386/i386/locore.S (syscall): Clear direction flag at entry.
+
+2008-02-06  Samuel Thibault  <address@hidden>
+
+       * linux/src/drivers/block/triton.c (ide_init_triton): Enable Bus
+       Mastering if not enabled by BIOS.
+
+2007-12-30  Samuel Thibault  <address@hidden>
+
+       * kern/debug.c (panic) [MACH_KDB]: Don't wait before running the
+       debugger.
+       * linux/dev/glue/block.c (MAX_BUF): Set to sane stack-friendly 8
+       instead of blindly following VM_MAP_COPY_PAGE_LIST_MAX.
+       (rdwr_full): increment blk by cc >> bshift instead of nb.
+
+2007-12-11  Thomas Schwinge  <address@hidden>
+
+       * linux/dev/include/linux/nfs.h: Remove unused file.
+       * linux/src/include/linux/nfs.h: Likewise.
+
+2007-12-10  Thomas Schwinge  <address@hidden>
+
+       * i386/Makefrag.am (i386/i386at/boothdr.o, i386/i386at/interrupt.o)
+       (i386/i386/cswitch.o, i386/i386/locore.o): Remove targets.
+       * configure.ac <Dependency tracking for `.S' files>: Add a hack to
+       re-add the four targets with have been removed above for the (legacy)
+       case only where they are actually needed.
+
+2007-12-05  Guillem Jover  <address@hidden>
+
+       * i386/Makefrag.am (i386/i386at/interrupt.o): New target, depends on
+       i386/i386/i386asm.h
+       (i386/i386/cswitch.o): Likewise.
+       (i386/i386/locore.o): Likewise.
+
+2007-11-18  Samuel Thibault  <address@hidden>
+
+       * i386/intel/pmap.c (pmap_map_bd): Use
+       INTEL_PTE_NCACHE|INTEL_PTE_WTHRU.  Get pmap lock.
+
+2007-11-15  Samuel Thibault  <address@hidden>
+
+       * ddb/db_examine.c (db_strcpy): Add extra parentheses around
+       assignment used as boolean.
+       * ddb/db_sym.c (db_qualify, db_lookup): Likewise.
+
+2007-11-08  Thomas Schwinge  <address@hidden>
+
+       * doc/mach.texi: Do the copyright and licensing things as suggested by
+       the GNU Texinfo manual.
+
+2007-10-09  Thomas Schwinge  <address@hidden>
+
+       * linux/dev/glue/net.c (device_open) <LINUX_IFF_ALLMULTI>: Comment.
+
+2007-10-08  Stefan Siegl  <address@hidden>
+
+       * linux/dev/glue/net.c (device_open): Set LINUX_IFF_ALLMULTI flag
+       on device and propagate.
+
+2007-10-02  Samuel Thibault  <address@hidden>
+
+       * kern/zalloc.c (zget_space): Fix last change.
+
+2007-09-03  Samuel Thibault  <address@hidden>
+
+       * kern/zalloc.c (zget_space): Align zalloc_next_space again after
+       calling kmem_alloc_wired (which may sleep).
+
+2007-08-16  Samuel Thibault  <address@hidden>
+
+       * Makefile.am (clib_routines): Add udivdi3, __udivdi3 and _end. Fix
+       edata into _edata.
+       (gnumach-undef): Do not remove heading _s.
+       (clib-routines.o): Add -lgcc.
+
+2007-07-09  Samuel Thibault  <address@hidden>
+
+       * i386/i386/db_interface.c (int_regs): Drop gs and fs fields.
+       (kdb_kentry): Get fs and gs from struct i386_interrupt_state instead of
+       struct int_regs.
+       * i386/i386/kttd_interface.c (int_regs, kttd_netentry): Likewise.
+       * i386/i386/locore.S (all_intrs): Save fs and gs and set them to kernel
+       segment too.
+       (return_to_iret): Restore fs and gs too.
+       (return_to_iret_i): Likewise.
+       (ast_from_interrupt): Set fs and gs to kernel segment too.
+       (kdb_from_iret): Don't save/restore fs and gs either.
+       (ttd_from_iret): Likewise.
+       * i386/i386/thread.h (i386_interrupt_state): Add gs and fs fields.
+       * linux/src/include/asm-i386/irq.h (SAVE_ALL): Set gs to kernel
+       segment too.
+
+2007-08-04  Samuel Thibault  <address@hidden>
+
+       * i386/i386/locore.S (TIME_TRAP_UENTRY, TIME_TRAP_SENTRY)
+       (TIME_TRAP_UEXIT): Use TH_SYSTEM_TIMER instead of old TH_SYS_TIMER.
+       (current_tstamp, TIME_TRAP_UENTRY, TIME_TRAP_SENTRY, TIME_TRAP_UEXIT)
+       (TIME_INT_ENTRY, TIME_INT_EXIT, timer_switch, start_timer): Use
+       EXT(current_tstamp) and EXT(current_timer) instead of _current_tstampt
+       and _current_timer.
+       * i386/i386/io_perm.c (i386_io_perm_create): Lock io_perm->port, not
+       inexistent device->port.
+       * i386/i386at/model_dep.c: Make init_alloc_aligned() extern.
+       * i386/i386/mp_desc.c: Include <machine/vm_param.h>
+       (interrupt_stack_alloc): Call init_alloc_aligned() instead of
+       init_alloc().
+       (cpu_control, interrupt_processor, cpu_start, start_other_cpus): New
+       functions.
+       * i386/i386/mp_desc.h: Include <i386at/idt.h> instead of "idt.h"
+       * i386/i386/cswitch.S: Use EXT(interrupt_stack) instead of
+       _interrupt_stack.
+       * i386/i386/i386asm.sym (MP_GDT, MP_IDT): Remove macros.
+       * i386/i386/lock.h: Don't include_next "lock.h".
+       * i386/linux/dev/include/linux/autoconf.h [NCPUS > 1]: Define
+       CONFIG_SMP.
+       * linux/dev/include/asm-i386/smp.h: New file.
+       * linux/dev/init/main.c [__SMP__ && __i386] (smp_loops_per_tick):
+       Restore variable.
+       * linux/pcmcia-cs/modules/cs_internal.h: Use __SMP__ instead of
+       USE_SPIN_LOCKS.
+       * linux/pcmcia-cs/modules/i82365.c: Likewise.
+       * linux/pcmcia-cs/modules/rsrc_mgr.c: Likewise.
+       * linux/dev/include/asm-i386/system.h: Update to Linux 2.2 for SMP.
+       * configfrag.ac (mach_ncpus): Define to 1.
+       (NCPUS): Set to $mach_ncpus.
+       [$mach_ncpus > 1] (MULTIPROCESSOR): Set to 1.
+       * linux/configfrag.ac [$mach_ncpus > 1] (__SMP__): Define.
+       * linux/dev/arch/i386/kernel/irq.c: Include <asm/hardirq.h>.
+       (local_bh_count, local_irq_count, global_irq_holder, global_irq_lock)
+       (global_irq_count, check_smp_invalidate, show, wait_on_bh)
+       (wait_on_irq, synchronize_bh, synchronize_irq, get_irqlock)
+       (__global_cli, __global_sti, __global_save_flags)
+       (__global_restore_flags): New variables and functions from Linux 2.2
+       * linux/src/drivers/net/3c515.c (test_and_set_bit): Remove macro.
+       * linux/src/drivers/net/de4x5.c (test_and_set_bit): Remove macro.
+       * linux/src/drivers/net/eth16i.c (test_and_set_bit): Remove macro.
+       * linux/src/drivers/net/kern_compat.h (test_and_set_bit): Remove macro.
+       * linux/src/drivers/net/pcnet32.c (test_and_set_bit): Remove macro.
+       * linux/src/include/linux/compatmac.h (test_and_set_bit)
+       (test_and_clear_bit): Remove macro.
+       * linux/src/include/asm-i386/atomic.h (atomic_read): New macro.
+       * linux/src/include/asm-i386/bitops.h (test_and_set_bit)
+       (test_and_clear_bit, test_and_change_bit): New inline functions.
+       * linux/src/include/asm-i386/hardirq.h (local_bh_count): New
+       declaration.
+       * linux/src/include/linux/tasks.h (NR_CPUS): Set to NCPUS.
+       (NO_PROC_ID): New macro.
+
+2007-07-08  Samuel Thibault  <address@hidden>
+
+       * i386/i386/seg.h (SZ_64): New macro.
+       * i386/i386/user_ldt.c (selector_check, i386_set_gdt): Check
+       user-provided descriptor against SZ_64.
+
+2007-07-04  Samuel Thibault  <address@hidden>
+
+       * i386/intel/pmap.c (pmap_enter): Use INTEL_PTE_NCACHE|INTEL_PTE_WTHRU
+       when cpu >= 486 and physical address is after memory end.
+
+2007-06-23  Samuel Thibault  <address@hidden>
+
+       * i386/i386/trap.c (user_trap): Read faulting linear address before
+       using it.
+
+2007-06-02  Thomas Schwinge  <address@hidden>
+
+       * Makerules.mig.am: New file, factored out of code of...
+       * Makefrag.am: ... this file and...
+       * Makerules.am: ... this file.
+       * i386/Makefrag.am: Update comment.
+
+       * Makefile.am (MIGFLAGS): Remove.
+       (MIGCOM): Add ``-n''.
+       * Makerules.am: Adapt to that.
+
+2007-05-09  Thomas Schwinge  <address@hidden>
+
+       * include/mach/mach_types.defs (userprefix, serverprefix): Set, if
+       requested (by setting USERPREFIX respective SERVERPREFIX).
+
+2007-05-08  Samuel Thibault  <address@hidden>
+
+       * i386/i386/fpu.c (fpu_set_state): Set fp_valid to TRUE.  Free the
+       unused ifps.
+
+2007-05-07  Thomas Schwinge  <address@hidden>
+
+       [bug #15295 -- Mach lets processes write to I/O ports]
+
+       * i386/Makefrag.am (libkernel_a_SOURCES): Add `i386/i386/io_perm.c',
+       `i386/i386/io_perm.h', `i386/i386/machine_task.c', `i386/i386/task.h'
+       and remove `i386/i386/io_port.h', `i386/i386/iopb.c',
+       `i386/i386/iopb.h'.
+
+       * i386/i386/io_port.h: Remove file.
+       * i386/i386at/kd.c: Don't include <i386/io_port.h>.
+       (vga_port_list, kd_io_device, kd_io_map_open, kd_io_map_close): Don't
+       define and don't use anymore.
+
+       * include/stddef.h: New file.
+
+       * i386/i386/io_perm.c: Include <string.h>, <device/device_emul.h>,
+       <ipc/ipc_space.h> and don't include <oskit/ds_oskit.h>.
+       (io_perm_device_emulation_ops): New variable.
+       (dev_open_alloc, setup_no_senders): Remove declarations.
+       (convert_io_perm_to_port, convert_port_to_io_perm, io_perm_deallocate):
+       Rewrite.
+       (no_senders): New function.
+       (i386_io_perm_create, i386_io_perm_modify): Rewrite partially, to adapt
+       to the GNU Mach environment.
+       * i386/i386/io_perm.h: Include <device/dev_hdr.h> and
+       <ipc/ipc_types.h>.
+       (io_perm, io_perm_t): New structure and accompanying type definition.
+       (IO_PERM_NULL): Define.
+       * i386/i386/locore.S (ktss): Move variable to...
+       * i386/i386/ktss.c: ... here, make it a ``struct task_tss''.
+       (ktss_init): Initialize the `task_tss' structure and the i/o permission
+       bit map.
+       * i386/i386/ktss.h: Adapt to that.
+       * i386/i386/machine_task.c (machine_task_module_init): Adapt the `zinit'
+       call to the GNU Mach environment.
+       * i386/i386/mp_desc.c: Include <machine/ktss.h>.
+       * i386/i386/tss.h: Include <machine/io_perm.h>.
+       (task_tss): New structure, equivalent to the OSKit-Mach one.
+       * i386/include/mach/i386/mach_i386.defs: Don't include
+       <device/device_types.defs>.
+       (device_list_t): Remove type.
+       * i386/include/mach/i386/mach_i386_types.h (device_list_t): Remove type
+       definition.
+
+2007-05-07  Marcus Brinkmann  <address@hidden>
+
+       [bug #15295 -- Mach lets processes write to I/O ports]
+
+       * i386/i386/iopb.h, i386/i386/iopb.c: Obsolete files removed.
+
+       * i386/i386/pcb.c (switch_context): Update the I/O permission
+       bitmap from stack_handoff() here (not only in stack_handoff()).
+
+       * i386/i386/machine_task.c (machine_task_module_init): Set
+       ZONE_COLLECTABLE and ZONE_EXHAUSTIBLE flags for the iopb zone.
+       Requested by Roland McGrath <address@hidden>.
+
+       * i386/i386/io_perm.h: New file.
+       * i386/i386/io_perm.c: New file.
+       * i386/i386/machine_task.c: New file.
+       * i386/i386/mp_desc.h: (struct mp_desc_table): Change type of ktss to
+       struct task_tss.
+       (mp_ktss): Likewise for array of pointers to the struct.
+       * i386/i386/mp_desc.c: Include `machine/tss.h' and `machine/io_perm.h'.
+       (mp_ktss): Change type to array of struct task_tss.
+       (mp_desc_init): Cast pointer to x86_tss into pointer to task_tss,
+       and use size of struct task_tss instead size of struct x86_tss.
+       Initialize the task_tss structure.
+       * i386/i386/pcb.c: Include `stddef.h' and `machine/tss.h'.
+       (iopb_create, iopb_destroy): Prototypes removed.
+       (curr_ktss): Cast pointer to base_tss to pointer to struct
+       task_tss.
+       (switch_ktss): Always use kernel TSS.
+       (update_ktss_iopb): New function.
+       (stack_handoff): Call update_ktss_iopb.
+       (pcb_module_init): Do not call iopb_init.
+       (pcb_terminate): Do not call iopb_destroy.
+       (thread_setstatus): Remove local variable tss.
+       (thread_getstatus): Rewrite i386_ISA_PORT_MAP_STATE case handler.
+       * i386/i386/task.h: New file.
+       * i386/i386/thread.h: Do not include `i386/iopb.h'.
+       (struct i386_machine_state): Remove member io_tss.
+       * i386/include/mach/i386/mach_i386.defs [KERNEL_SERVER]: Include
+       `machine/io_perm.h'.  Define intran, outtran and destructor.
+       (io_port_t): New type.
+       (io_perm_t): Likewise.
+       (i386_io_port_add): Interface removed.
+       (i386_io_port_remove): Likewise.
+       (i386_io_port_list): Likewise.
+       (i386_io_perm_create): New interface.
+       (i386_io_perm_modify): Likewise.
+       * i386/include/mach/i386/mach_i386_types.h [MACH_KERNEL]: Include
+       `i386/io_perm.h'.
+       [!MACH_KERNEL]: Define types io_port_t and io_perm_t.
+       * kern/task.c (task_init): Call machine_task_module_init.
+       (task_create): Call machine_task_init.
+       (task_deallocate): Call machine_task_terminate.
+       (task_collect_scan): Call machine_task_collect.
+       * task.h: Include `machine/task.h'.
+       (struct task): Add member machine.
+
+2007-05-06  Thomas Schwinge  <address@hidden>
+
+       * device/kmsg.c: Include <device/ds_routines.h>.
+       (kmsg_lock): Use `decl_simple_lock_data'.
+       (kmsgread, kmsg_read_done): Add two typecasts.
+
+       * device/buf.h (minphys): Add return type.
+       * device/device_types_kernel.h: We're not in the eighties anymore...
+       * device/io_req.h: Likewise.
+
+2007-05-05  Thomas Schwinge  <address@hidden>
+
+       * i386/i386at/model_dep.c (halt_cpu, halt_all_cpus): Call
+       `machine_idle' to avoid busy-looping.
+
+       * i386/intel/read_fault.c (intel_read_fault): Remove the last parameter
+       from the calls of `vm_map_lookup'.
+
+       We're not in the eighties anymore.  List arguments in function
+       prototypes and definitions for a lot of symbols.  Also drop some unused
+       prototypes.  I refrain from listing every changed symbol.
+       * vm/memory_object.c: Do as described.
+       * vm/memory_object.h: Likewise.
+       * vm/pmap.h: Likewise.
+       * vm/vm_external.c: Likewise.
+       * vm/vm_external.h: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_fault.h: Likewise.
+       * vm/vm_kern.h: Likewise.
+       * vm/vm_map.c: Likewise.
+       * vm/vm_map.h: Likewise.
+       * vm/vm_pageout.h: Likewise.
+       * vm/vm_user.h: Likewise.
+       * vm/memory_object.h: Include <ipc/ipc_types.h>.
+       * vm/pmap.h: Include <kern/thread.h>.
+       * vm/vm_fault.h: Include <mach/vm_prot.h>, <vm/vm_map.h> and
+       <vm/vm_types.h>.
+       * vm/vm_map.h: Include <mach/vm_attributes.h> and <vm/vm_types.h>.
+       (vm_map_t, VM_MAP_NULL): Remove type and definition.
+       * vm/vm_object.h (vm_object_t, VM_OBJECT_NULL): Remove type and
+       definition.
+       * vm/vm_page.h: Include <vm/vm_types.h>.
+       (vm_page_t, VM_PAGE_NULL): Remove type and definition.
+       * vm/vm_user.h: Include <mach/std_types.h>.
+       * kern/task.h: Include <vm/vm_types.h> instead of <vm/vm_map.h>.
+       * vm/vm_types.h: New file: the above-removed types and definitions.
+
+2007-05-02  Thomas Schwinge  <address@hidden>
+
+       * configure.ac (--disable-default-device-drivers): Transform into...
+       (--enable-device-drivers): ... this new option and extend it.
+       * i386/configfrag.ac (--enable-lpr): Adapt to that.
+       * linux/configfrag.ac (AC_OPTION_Linux_ix86_at, AC_Linux_DRIVER):
+       Likewise.
+       (AC_Linux_DRIVER_qemu): New definition.  Use it for the `floppy', `ide'
+       and `ne' device drivers.
+       * doc/mach.texi: Document all that.
+
+2007-05-01  Thomas Schwinge  <address@hidden>
+
+       * assigns: Remove file.  See `copyright.list' on the GNU server instead.
+
+2007-04-30  Thomas Schwinge  <address@hidden>
+
+       We're not in the eighties anymore.  List arguments in function
+       prototypes and definitions for a lot of symbols.  Also drop some unused
+       prototypes.  I refrain from listing every changed symbol.
+       * chips/busses.h: Do as described.
+       * ddb/db_break.c: Likewise.
+       * ddb/db_break.h: Likewise.
+       * ddb/db_command.c: Likewise.
+       * ddb/db_command.h: Likewise.
+       * ddb/db_lex.c: Likewise.
+       * ddb/db_lex.h: Likewise.
+       * ddb/db_output.c: Likewise.
+       * ddb/db_output.h: Likewise.
+       * ddb/db_sym.h: Likewise.
+       * ddb/db_task_thread.c: Likewise.
+       * ddb/db_task_thread.h: Likewise.
+       * ddb/db_variables.h: Likewise.
+       * ddb/db_watch.c: Likewise.
+       * ddb/db_watch.h: Likewise.
+       * device/buf.h: Likewise.
+       * device/conf.h: Likewise.
+       * device/dev_hdr.h: Likewise.
+       * device/ds_routines.h: Likewise.
+       * device/if_ether.h: Likewise.
+       * device/io_req.h: Likewise.
+       * device/net_io.h: Likewise.
+       * i386/i386/io_port.h: Likewise.
+       * i386/i386/lock.h: Likewise.
+       * i386/i386/mp_desc.c: Likewise.
+       * i386/i386/mp_desc.h: Likewise.
+       * i386/i386/proc_reg.h: Likewise.
+       * i386/i386/user_ldt.h: Likewise.
+       * i386/i386at/kd_queue.h: Likewise.
+       * i386/i386at/kdsoft.h: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * i386/intel/pmap.h: Likewise.
+       * include/mach/mach_traps.h: Likewise.
+       * ipc/ipc_entry.h: Likewise.
+       * ipc/ipc_hash.h: Likewise.
+       * ipc/ipc_kmsg.h: Likewise.
+       * ipc/ipc_marequest.c: Likewise.
+       * ipc/ipc_marequest.h: Likewise.
+       * ipc/ipc_mqueue.h: Likewise.
+       * ipc/ipc_notify.h: Likewise.
+       * ipc/ipc_object.h: Likewise.
+       * ipc/ipc_port.h: Likewise.
+       * ipc/ipc_pset.h: Likewise.
+       * ipc/ipc_right.h: Likewise.
+       * ipc/ipc_space.h: Likewise.
+       * ipc/ipc_table.h: Likewise.
+       * ipc/mach_msg.c: Likewise.
+       * ipc/mach_msg.h: Likewise.
+       * kern/ast.c: Likewise.
+       * kern/ast.h: Likewise.
+       * kern/debug.c: Likewise.
+       * kern/debug.h: Likewise.
+       * kern/ipc_tt.c: Likewise.
+       * kern/ipc_tt.h: Likewise.
+       * kern/mach_factor.c: Likewise.
+       * kern/mach_factor.h: Likewise.
+       * kern/printf.c: Likewise.
+       * kern/printf.h: Likewise.
+       * kern/queue.h: Likewise.
+       * kern/sched.h: Likewise.
+       * kern/syscall_subr.c: Likewise.
+       * kern/syscall_subr.h: Likewise.
+       * kern/task.h: Likewise.
+       * kern/thread_swap.c: Likewise.
+       * kern/thread_swap.h: Likewise.
+       * kern/timer.h: Likewise.
+       * kern/xpr.c: Likewise.
+       * kern/xpr.h: Likewise.
+       * kern/zalloc.c: Likewise.
+       * kern/zalloc.h: Likewise.
+       * ipc/ipc_port.h: Don't include <ipc/ipc_space.h>.
+       * device/dev_hdr.h: Include <ipc/ipc_types.h>.
+       * device/net_io.h: Include <device/if_hdr.h> and <device/io_req.h>.
+       * ipc/ipc_entry.h: Include <mach/mach_types.h> and <ipc/ipc_types.h>.
+       * ipc/ipc_kmsg.h: Include <ipc/ipc_object.h>, <ipc/ipc_types.h> and
+       <vm/vm_map.h>.
+       * ipc/ipc_marequest.h: Include <mach_debug/hash_info.h> and
+       <ipc/ipc_types.h>.
+       * ipc/ipc_object.h: Include <ipc/ipc_types.h>.
+       * ipc/ipc_right.h: Include <ipc/ipc_entry.h>.
+       * ipc/ipc_space.h: Include <mach/mach_types.h> and <ipc/ipc_types.h>.
+       * kern/ipc_tt.h: Include <mach/mach_types.h>.
+       * kern/sched.h: Include <kern/kern_types.h>.
+       * kern/syscall_subr.h: Include <kern/kern_types.h>.
+       * ipc/ipc_hash.c (ipc_hash_index_t): Move type definition...
+       * ipc/ipc_hash.h: ... into here.
+
+2007-04-25  Thomas Schwinge  <address@hidden>
+
+       * DEVELOPMENT: Add url.
+
+       [task #5878 -- Backport code from GNU Mach's trunk to
+       gnumach-1-branch: i386_set_gdt, i386_get_gdt]
+       * i386/include/mach/i386/mach_i386.defs (i386_set_gdt, i386_get_gdt):
+       Shift by two to maintain rpc id compatibility with OSKit-Mach.
+
+       * linux/dev/glue/kmem.c (vmalloc_list_remove): Cast the first argument
+       in the `kfree' call to what is expected.
+
+       * linux/pcmcia-cs/glue/ds.c (kmalloc, kfree): Call `linux_kmalloc',
+       respective `linux_kfree' instead.
+
+       * kern/kalloc.h (kalloc, kget, kfree, kalloc_init): List the arguments.
+
+2007-04-24  Michael Casadevall  <address@hidden>
+
+       * linux/src/drivers/net/ne.c (bad_clone_list): Add the RealTek 8029 PCI
+       card's signature.
+       <http://lists.gnu.org/archive/html/bug-hurd/2007-04/msg00039.html>
+
+2007-04-24  Thomas Schwinge  <address@hidden>
+
+       * ipc/ipc_port.h: Include <ipc/ipc_space.h>.
+
+2007-04-11  Thomas Schwinge  <address@hidden>
+
+       * config.status.dep.patch: Update to match more files.  This fixes
+       building GNU Mach with ``make -j2'' and higher.  The problem was
+       reported by Michael Casadevall <address@hidden>.
+
+2007-04-02  Thomas Schwinge  <address@hidden>
+
+       * i386/i386/io_emulate.c: Remove file.
+       * i386/i386/io_emulate.h: Likewise.
+       * i386/i386at/iopl.c: Likewise.
+       * i386/Makefrag.am (libkernel_a_SOURCES): Remove the aforementioned
+       files.
+       * i386/i386/trap.c: Don't include <i386/io_emulate.h>.
+       (v86_assist, check_io_fault): Remove functions.
+       (user_trap): Remove the code referencing the above functions.
+       * i386/i386at/conf.c (dev_name_list): Remove the `iopl' device.
+       * DEVELOPMENT: Document this.
+
+2007-03-30  Thomas Schwinge  <address@hidden>
+
+       * Makefile.am (gnumach_o_LINK): Remove ``--start-group''.
+
+2007-03-27  Thomas Schwinge  <address@hidden>
+
+       Unconditionally use the device driver multiplexing.  Suggested by
+       Gianluca Guida <address@hidden>.
+       * i386/i386at/dev_hdr.h: Merge into `device/dev_hdr.h' and remove.
+       * i386/i386at/device_emul.h: Rename to `device/device_emul.h'.  Adapt
+       all users.
+       * i386/i386at/i386at_ds_routines.c: Merge into `device/ds_routines.c'
+       and remove.
+       * i386/linux/dev/include/linux_emul.h: Remove file.
+       * Makefrag.am (libkernel_a_SOURCES): Add `device/device_emul.h'.
+       * i386/Makefrag.am (libkernel_a_SOURCES): Remove
+       `i386/i386at/dev_hdr.h', `i386/i386at/device_emul.h' and
+       `i386/i386at/i386at_ds_routines.c'.
+       * i386/linux/Makefrag.am (liblinux_a_SOURCES): Remove
+       `i386/linux/dev/include/linux_emul.h'.
+       * dev/dev_hdr.h: Adapt all users of `i386' as if it were always
+       defined.
+       * device/dev_lookup.c: Likewise.
+       * device/ds_routines.c: Likewise.
+       * device/device_init.c (ds_init): Rename to `mach_device_init'.
+       * device/ds_routines.c (ds_init): Likewise.
+       (ds_trap_init): Rename to `mach_device_trap_init'.
+       (mach_device_trap_init): Make it `static'.
+       * linux/dev/glue/block.c: Don't include <linux_emul.h>, but instead
+       include <device/device_emul.h> and <i386at/disk.h>.
+       * linux/dev/glue/net.c: Don't include <linux_emul.h>, but instead
+       include <device/device_emul.h>.
+       * linux/pcmcia-cs/glue/ds.c: Likewise.
+
+       * kern/pcsample.h: Remove the automatic cvs log appending machinery.
+       * linux/dev/drivers/scsi/g_NCR5380.c: Likewise.
+       * linux/src/drivers/net/sk_g16.h: Likewise.
+       * linux/src/drivers/scsi/AM53C974.c: Likewise.
+       * linux/src/drivers/scsi/AM53C974.h: Likewise.
+       * linux/src/drivers/scsi/NCR5380.c: Likewise.
+       * linux/src/drivers/scsi/NCR5380.h: Likewise.
+       * linux/src/drivers/scsi/aha152x.c: Likewise.
+       * linux/src/drivers/scsi/aha1542.h: Likewise.
+       * linux/src/drivers/scsi/g_NCR5380.c: Likewise.
+       * linux/src/drivers/scsi/g_NCR5380.h: Likewise.
+       * linux/src/drivers/scsi/gdth.c: Likewise.
+       * linux/src/drivers/scsi/qlogicisp.c: Likewise.
+       * linux/src/drivers/scsi/qlogicisp.h: Likewise.
+       * linux/src/drivers/scsi/t128.c: Likewise.
+       * linux/src/drivers/scsi/t128.h: Likewise.
+
+2007-03-24  Thomas Schwinge  <address@hidden>
+
+       * i386/i386at/conf.c (block_io_mmap): Remove declaration.
+
+       * doc/mach.texi: Fix a typo and the url for GNU GRUB.
+
+       * device/kmsg.h: Include <sys/types.h>, <device/device_types.h> and
+       <device/io_req.h>.
+
+       * Makefrag.am (libkernel_a_SOURCES): Move `device/kmsg.h' into
+       [enable_kmsg].
+
+2007-03-23  Thomas Schwinge  <address@hidden>
+
+       * Makerules.am (%.server.msgids, %.user.msgids): Merge into the
+       existing ``%.h %.c'' rules.
+       Comment out the currently unused rpc stub rules.
+       * Makefrag.am (gnumach.msgids): Rewrite.
+       (nodist_libkernel_a_SOURCES): Add all ``.msgids'' files.
+       * i386/Makefrag.am (nodist_libkernel_a_SOURCES): Likewise.
+
+2007-03-19  Tim Retout  <address@hidden>
+
+       * i386/ldscript: Correct 'LINKFLAGS_gnumach' in comment.
+
+2007-03-06  Samuel Thibault  <address@hidden>
+
+       * i386/i386/user_ldt.c (i386_set_gdt): Call switch_ktss() if target is
+       current thread.
+
+2007-03-05  Samuel Thibault  <address@hidden>
+
+       [bug #18349 -- ``General Protection Trap'' in `ipc_kmsg_enqueue']
+       * linux/dev/glue/net.c (device_write): Call net_packet() with splimp
+       held.
+
+2007-03-04  Thomas Schwinge  <address@hidden>
+
+       * tests/configfrag.ac (MBCHK): Remove check.
+       * tests/test-mbchk.in: Fail correctly if `mbchk' is not available.
+
+2007-03-01  Thomas Schwinge  <address@hidden>
+
+       * linux/dev/glue/block.c (free_buffer): Use `VM_PAGE_FREE'.
+       * vm/vm_object.c (vm_object_collapse, vm_object_page_remove)
+       (vm_object_page_map): Likewise.
+
+2007-02-20  Samuel Thibault  <address@hidden>
+
+       * linux/dev/glue/block.c (free_buffer): Fix
+       vm_page_lock_queues/vm_page_unlock_queues pair.
+
+       Fix ddb's trace command.
+       * i386/i386/db_trace.c (db_find_trace_symbols): Drop _ prefix on ELF
+       targets.
+       (db_i386_stack_trace): Check that adresses of known functions were
+       really found.
+
+2007-02-19  Thomas Schwinge  <address@hidden>
+
+       * Makefile.am (gnumach_LINKFLAGS): New variable.
+       (gnumach_LINK): Use that one instead of the previously used
+       `LINKFLAGS_gnumach'.
+       * i386/Makefrag.am (LINKFLAGS_gnumach): Rename to `gnumach_LINKFLAGS',
+       move into [PLATFORM_at] and pass `_START'.
+       * i386/ldscript: Don't hardcode a _start address of 0x100000, but make
+       it configurable via `_START'.
+
+       Add a `--enable-platform' option for future use.  Allow building
+       without any Linux code.
+       * Makefile.am: Don't include `linux/Makefrag.am' in there...
+       * Makefrag.am: ... but rather in here.
+       * configfrag.ac (MACH_MACHINE_ROUTINES): AC_DEFINE_UNQUOTED based on
+       then shell variable `mach_machine_routines'.
+       (--disable-default-device-drivers): Don't define in there...
+       * configure.ac: ... but rather in here.
+       (--enable-platform): New option.
+       (host_platform): New variable.
+       (HOST_i386): Don't define there...
+       * i386/configfrag.ac (HOST_ix86): ... but rather here, rename it and
+       adapt all users.
+       (PLATFORM_at): New conditional.
+       (MACH_MACHINE_ROUTINES): Don't AC_DEFINE, but rather set a shell
+       variable `mach_machine_routines'.
+       * linux/Makefrag.am (noinst_LIBRARIES, gnumach_o_LDADD): Only enhance
+       ``if CODE_linux'' or ``if device_driver_group_pcmcia''.
+       * linux/configfrag.ac (AC_OPTION): Rename to `AC_OPTION_Linux_ix86_at'
+       and rework a bit.  Adapt all users.
+       (AC_OPTION_nodef): Rename to `AC_OPTION_Linux_ix86_at_nodef' and rework
+       a bit.  Adapt all users.
+       (CODE_linux): New conditional.
+       * i386/Makefrag.am (LINKFLAGS_gnumach): Don't evaluate $(systype).
+
+       * Makefile.am: Update the FSF's postal address.
+       * doc/Makefrag.am: Likewise.
+       * i386/linux/Makefrag.am: Likewise.
+       * linux/Makefrag.am: Likewise.
+       * tests/Makefrag.am: Likewise.
+       * tests/configfrag.ac: Move to GPL.
+
+2007-02-05  Thomas Schwinge  <address@hidden>
+
+       * kern/mach_clock.c: Don't include <kern/time_out.h>.
+
+       * i386/i386/hardclock.c: Include <kern/mach_clock.h> instead of
+       <kern/time_out.h>.
+       * i386/i386/pit.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * i386/i386at/rtc.c: Likewise.
+       * kern/ipc_sched.c: Likewise.
+       * kern/mach_factor.c: Likewise.
+       * kern/priority.c: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/startup.c: Likewise.
+       * kern/syscall_subr.c: Likewise.
+       * kern/thread.h: Likewise.
+       * kern/zalloc.c: Likewise.
+
+       * kern/host.c: Include <kern/mach_clock.h>.
+       (tick): Remove declaration.
+       * kern/pc_sample.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/sched_prim.c (hz): Remove declaration.
+       * kern/syscall_subr.c (hz): Likewise.
+       * linux/dev/init/main.c (hz): Likewise.
+
+       * kern/time_out.h: Remove file after having installed the missing bits
+       in...
+       * kern/mach_clock.h: ... here.
+
+       * configfrag.ac: Enhance comments.
+
+       * vm/vm_debug.c (MACH_VM_DEBUG): Correctly place conditional.
+
+2007-02-04  Thomas Schwinge  <address@hidden>
+
+       * doc/mach.texi (thread_switch): Enhance a bit.
+
+       * doc/Makefrag.am ($(web)): Use ``mkdir -p''.
+
+       * doc/mach.texi: Fix unusual hyphens.
+
+       * i386/i386/hardclock.c: Don't check for the `SYMMETRY' platform.
+
+       * kern/timer.h: Add some comments from...
+       * i386/i386/timer.h: ... here and remove this file.
+
+2007-01-26  Thomas Schwinge  <address@hidden>
+
+       * doc/mach.texi: Fix the last change.
+
+2007-01-22  Thomas Schwinge  <address@hidden>
+
+       * COPYING: Update via GNU automake 1.10.
+       * doc/fdl.texi: Update from <http://www.gnu.org/licenses/fdl.texi>.
+       * doc/gpl.texi: Update from <http://www.gnu.org/licenses/gpl.texi>.
+       * doc/mach.texi: Use the GFDL 1.2.
+
+2007-01-21  Ralf Wildenhues  <address@hidden>
+
+       * doc/mach.texi: Many typos fixed.
+
+2007-01-11  Thomas Schwinge  <address@hidden>
+
+       * DEVELOPMENT (LAYOUT OF THE SOURCE TREE): New section.
+
+       These following files are regenerated by running ``autoreconf -i'' and
+       ``make info''.
+       * INSTALL: Remove file.
+       * Makefile.in: Likewise.
+       * aclocal.m4: Likewise.
+       * build-aux/compile: Likewise.
+       * build-aux/config.guess: Likewise.
+       * build-aux/config.sub: Likewise.
+       * build-aux/depcomp: Likewise.
+       * build-aux/install-sh: Likewise.
+       * build-aux/mdate-sh: Likewise.
+       * build-aux/missing: Likewise.
+       * build-aux/texinfo.tex: Likewise.
+       * config.h.in: Likewise.
+       * configure: Likewise.
+       * doc/mach.info: Likewise.
+       * doc/mach.info-1: Likewise.
+       * doc/mach.info-2: Likewise.
+       * doc/stamp-vti: Likewise.
+       * doc/version.texi: Likewise.
+
+2007-01-06  Thomas Schwinge  <address@hidden>
+
+       * ddb/db_break.c (db_delete_thread_breakpoint): Don't declare
+       `db_cond_free'.
+       * ddb/db_run.c: Include <ddb/db_cond.h>.
+       (db_stop_at_pc): Don't declare `db_cond_check'.
+       * ddb/db_input.c: Include <ddb/db_input.h>.
+       * ddb/db_macro.c: Include <ddb/db_macro.h>.
+       * ddb/db_trap.c: Include <ddb/db_trap.h>.
+       * i386/i386/db_interface.h: Include <machine/thread.h>.
+       * i386/i386/db_interface.c: Include <machine/db_interface.h>.
+       * i386/i386/db_machdep.h: Include <machine/db_interface.h>.
+       (db_check_access, db_phys_eq, db_task_name): Remove declarations.
+
+2007-01-06  Barry deFreese  <address@hidden>
+
+       * ddb/db_aout.c: Include <ddb/db_output.h>.
+       * ddb/db_break.c: Include <ddb/db_cond.h>, <ddb/db_expr.h> and
+       <ddb/db_output.h>.
+       (db_delete_cmd, db_breakpoint_cmd): Explicitly define untyped variables
+       as `int'.
+       * ddb/db_command.c: Include <ddb/db_examine.h>, <ddb/db_expr.h> and
+       <ddb/db_macro.h>.
+       * ddb/db_command.h (db_exec_cmd_nest): New declaration.
+       * ddb/db_cond.c: Include <ddb/db_cond.h>, <ddb/db_expr.h> and
+       <ddb/db_output.h>.
+       (db_cond_cmd): Explicitly define untyped variable as `int'.
+       * ddb/db_cond.h: New file.
+       * ddb/db_examine.c: Include <machine/db_interface.h>,
+       <ddb/db_examine.h> and <ddb/db_expr.h>.
+       (db_strcpy, db_examine): Remove forward declarations.
+       (db_xcdump): Explicitly define untyped variables as `int'.
+       * ddb/db_examine.h: New file.
+       * ddb/db_expr.c: Include <ddb/db_expr.h>, <ddb/db_output.h>,
+       <ddb/db_sym.h> and <ddb/db_variables.h>.
+       * ddb/db_input.c: Include <ddb/db_command.h>.
+       * ddb/db_input.h: New file.
+       * ddb/db_lex.c: Include <ddb/db_command.h>, <ddb/db_examine.h>,
+       <ddb/db_input.h> and <ddb/db_output.h>.
+       (db_skip_to_eol, db_lex): Explicitly define untyped variables as `int'.
+       * ddb/db_lex.h (db_lex): New declaration.
+       * ddb/db_macro.c: Include <ddb/db_examine.h>, <ddb/db_expr.h> and
+       <ddb/db_output.h>.
+       (db_def_macro_cmd, db_exec_macro): Explicitly define untyped variables
+       as `int'.
+       * ddb/db_macro.h: New file.
+       * ddb/db_output.c: Include <ddb/db_command.h>.
+       * ddb/db_output.h (db_putchar): New declaration.
+       * ddb/db_print.c: Include <machine/db_interface.h>, <ddb/db_command.h>
+       and <ddb/db_output.h>.
+       (db_show_regs): Explicitly define untyped variables as `int'.
+       * ddb/db_run.c: Include <ddb/db_command.h>, <ddb/db_examine.h>,
+       <ddb/db_output.h> and <ddb/db_watch.h>.
+       * ddb/db_run.h: Include <kern/task.h> and <machine/db_machdep.h>.
+       (db_single_step, db_single_step_cmd, db_in_single_step): New
+       declarations.
+       * ddb/db_sym.c: Include <ddb/db_command.h> and <ddb/db_output.h>.
+       (db_sym_parse_and_lookup): Explicitly define untyped variables as
+       `int'.
+       * ddb/db_sym.h (db_line_at_pc): New declaration.
+       * ddb/db_task_thread.c: Include <ddb/db_command.h>, <ddb/db_expr.h>,
+       <ddb/db_lex.h> and <ddb/db_output.h>.
+       (db_lookup_task, db_lookup_task_thread, db_lookup_thread)
+       (db_lookup_task_id, db_lookup_thread_id): Explicitly define untyped
+       variables as `int'.
+       * ddb/db_trap.c: Include <ddb/db_examine.h> and <ddb/db_output.h>.
+       * ddb/db_trap.h: New file.
+       * ddb/db_variables.c: Include <ddb/db_command.h>, <ddb/db_examine.h>,
+       <ddb/db_expr.h> and <ddb/db_output.h>.
+       (db_get_suffix, db_cmp_variable_name): Explicitly define untyped
+       variables as `int'.
+       * ddb/db_variables.h (db_get_variable): New declaration.
+       * ddb/db_watch.c: Include <ddb/db_command.h>, <ddb/db_expr.h>,
+       <ddb/db_output.h> and <ddb/db_run.h>.
+       * ddb/db_write_cmd.c: Include <ddb/db_expr.h> and <ddb/db_output.h>.
+       * i386/i386/db_interface.c: Include <kern/printf.h>, <ddb/db_access.h>,
+       <ddb/db_command.h>, <ddb/db_output.h>, <ddb/db_run.h> and
+       <ddb/db_trap.h>.
+       (kdbprinttrap): Add `void' return type.
+       (db_user_to_kernel_address, db_task_name): Explicitly define untyped
+       variables as `int'.
+       * i386/i386/db_interface.h: New file.
+       * i386/i386/db_trace.c (db_i386_reg_value): Add `int' return type.
+       * i386/i386/trap.c [MACH_KDB]: Include <ddb/db_run.h> and
+       <ddb/db_watch.h>.
+       * ipc/ipc_kmsg.c [MACH_KDB]: Include <ddb/db_output.h>.
+       * kern/lock.c [MACH_KDB]: Include <ddb/db_output.h>.
+
+2007-01-06  Thomas Schwinge  <address@hidden>
+
+       * configure.ac (AM_INIT_AUTOMAKE): Add ``-Wall -Wno-portability''.
+
+2007-01-05  Richard Braun  <address@hidden>
+
+       Add alignment support in the zone allocator.
+       * kern/zalloc.c (ALIGN_SIZE_UP): New macro.
+       (zinit): New `align' parameter.
+       (zget_space): Likewise.
+       (zalloc): Updated call to zget_space() with the zone alignment.
+       * kern/zalloc.h (zone): New member `align'.
+       (zinit): Declaration updated as required.
+       * device/dev_lookup.c (dev_lookup_init): Updated call to zinit() with
+       alignment of 0.
+       * device/dev_pager.c (dev_pager_hash_init): Likewise.
+       (device_pager_init): Likewise.
+       * device/ds_routines.c (ds_init): Likewise.
+       (ds_trap_init): Likewise.
+       * device/net_io.c (net_io_init): Likewise.
+       * i386/i386/fpu.c (fpu_module_init): Likewise.
+       * i386/i386/pcb.c (pcb_module_init): Likewise.
+       * i386/intel/pmap.c (pmap_init): Likewise.
+       * ipc/ipc_init.c (ipc_bootstrap): Likewise.
+       * ipc/ipc_marequest.c (ipc_marequest_init): Likewise.
+       * kern/act.c (global_act_init): Likewise.
+       * kern/kalloc.c (kalloc_init): Likewise.
+       * kern/processor.c (pset_sys_init): Likewise.
+       * kern/task.c (task_init): Likewise.
+       * kern/thread.c (thread_init): Likewise.
+       * kern/zalloc.c (zone_bootstrap): Likewise.
+       * vm/vm_external.c (vm_external_module_initialize): Likewise.
+       * vm/vm_fault.c (vm_fault_init): Likewise.
+       * vm/vm_map.c (vm_map_init): Likewise.
+       * vm/vm_object.c (vm_object_bootstrap): Likewise.
+       * vm/vm_resident.c (vm_page_module_init): Likewise.
+
+2007-01-02  Samuel Thibault  <address@hidden>
+
+       Fix translation of port into device in the "no sender" notification.
+       * i386/i386at/i386at_ds_routines.c (ds_notify): Use dev_port_lookup()
+       for translating the remote port.
+
+       Fix loop indexing.
+       * i386/intel/pmap.c (pmap_change_wiring): Increment pte in the
+       unwiring loop.
+
+       Drop old and broken support for Olivetti XP7 & XP9
+       * i386/intel/pmap.c [ORC] (OLIVETTICACHE): Remove macro.
+       [OLIVETTICACHE] (pstart): Remove declaration.
+       (CACHE_LINE, CACHE_SIZE, CACHE_PAGE, WRITE_PTE, WRITE_PTE_FAST): Remove
+       macros.
+       [OLIVETTICACHE] (write_pte): Remove function.
+       * DEVELOPMENT: Document the removal.
+
+2006-12-19  Samuel Thibault  <address@hidden>
+
+       Add support for global pages.
+       * i386/i386at/model_dep.c: Include <i386/locore.h>.
+       (i386at_init): Set CR4_PGE if available.
+       (c_boot_entry): Call discover_x86_cpu_type() before i386at_init().
+       * i386/intel/pmap.c: Include <i386/locore.h>.
+       (pmap_map_bd): Use INTEL_PTE_GLOBAL if available.
+       (pmap_bootstrap): Likewise.
+
+       Add support for cr3/cr4 flags.
+       * i386/i386/proc_reg.h (CR3_PCD, CR3_PWT, CR4_VME, CR4_PVI, CR4_TSD)
+       (CR4_DE, CR4_PSE, CR4_PAE, CR4_MCE, CR4_PGE, CR4_PCE, CR4_OSFXSR)
+       (CR4_OSXMMEXCPT, get_cr4, set_cr4): New macros.
+       * i386/intel/pmap.h (INTEL_PTE_GLOBAL): New macro.
+
+       Add support for querying x86 features.
+       * i386/i386/locore.h (cpu_features): New variable declaration.
+       (CPU_FEATURE_FPU, CPU_FEATURE_VME, CPU_FEATURE_DE, CPU_FEATURE_PSE)
+       (CPU_FEATURE_TSC, CPU_FEATURE_MSR, CPU_FEATURE_PAE, CPU_FEATURE_MCE)
+       (CPU_FEATURE_CX8, CPU_FEATURE_APIC, CPU_FEATURE_SEP, CPU_FEATURE_MTRR)
+       (CPU_FEATURE_PGE, CPU_FEATURE_MCA, CPU_FEATURE_CMOV, CPU_FEATURE_PAT)
+       (CPU_FEATURE_PSE_36, CPU_FEATURE_PSN, CPU_FEATURE_CFLSH)
+       (CPU_FEATURE_DS, CPU_FEATURE_ACPI, CPU_FEATURE_MMX, CPU_FEATURE_FXSR)
+       (CPU_FEATURE_SSE, CPU_FEATURE_SSE2, CPU_FEATURE_SS, CPU_FEATURE_HTT)
+       (CPU_FEATURE_TM, CPU_FEATURE_PBE, CPU_HAS_FEATURE): New macros.
+       * i386/i386/locore.S (cpu_features): New variable.
+       (discover_x86_cpu_type): Record CPUID feature word 0.
+
+2006-12-13  Samuel Thibault  <address@hidden>
+
+       Drop useless and broken FPE support.
+       * i386/configfrac.ac (FPE): Don't define.
+       * i386/i386/gdt.h (FPE_CS, USER_FPREGS): Remove macros.
+       * i386/i386/fpu.c (init_fpu, fpu_set_state, fpu_get_state): Remove FPE
+       support.
+       * i386/i386/fpu.h: Likewise.
+       * i386/i386/trap.c (user_trap, i386_exception): Likewise.
+       * i386/i386/fpe_linkage.c: Remove file.
+       * i386/Makefrag.am: Remove i386/i386/fpe_linkage.c.
+       * Makefile.in: Regenerate.
+
+2006-12-03  Thomas Schwinge  <address@hidden>
+
+       [patch #5019 -- Remove checks for continuations]
+
+       * DEVELOPMENT: Document the removal.
+
+       * i386/configfrag.ac (CONTINUATIONS): Don't define.
+
+2006-12-03  Leonardo Lopes Pereira  <address@hidden>
+
+       [patch #5019 -- Remove checks for continuations]
+       * ipc/mach_msg.c: Adapt all users of CONTINUATIONS as if it were always
+       defined.
+       * kern/eventcount.c: Likewise.
+       * kern/ipc_sched.c: Likewise.
+       * kern/syscall_subr.c: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_pageout.c: Likewise.
+       * vm/vm_resident.c: Likewise.
+
+2006-12-03  Thomas Schwinge  <address@hidden>
+
+       [patch #5017 -- Remove obsolete IPC interfaces]
+
+       * DEVELOPMENT: Document the removal.
+
+       * configfrag.ac (MACH_IPC_COMPAT): Don't define.
+
+2006-12-03  Leonardo Lopes Pereira  <address@hidden>
+
+       [patch #5017 -- Remove obsolete IPC interfaces]
+       * kern/act.c [MIGRATING_THREADS]: Don't include <mach_ipc_compat.h>.
+       * kern/act.h: Likewise.
+       * i386/include/mach/i386/machine_types.defs: Adapt all users of
+       MACH_IPC_COMPAT as if it were always defined to `0'.
+       * include/mach/mach.defs: Likewise.
+       * include/mach/mach_param.h: Likewise.
+       * include/mach/mach_traps.h: Likewise.
+       * include/mach/message.h: Likewise.
+       * include/mach/mig_errors.h: Likewise.
+       * include/mach/notify.h: Likewise.
+       * include/mach/port.h: Likewise.
+       * include/mach/std_types.defs: Likewise.
+       * include/mach/syscall_sw.h: Likewise.
+       * include/mach/task_special_ports.h: Likewise.
+       * include/mach/thread_special_ports.h: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_kmsg.h: Likewise.
+       * ipc/ipc_marequest.c: Likewise.
+       * ipc/ipc_notify.c: Likewise.
+       * ipc/ipc_notify.h: Likewise.
+       * ipc/ipc_object.c: Likewise.
+       * ipc/ipc_object.h: Likewise.
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_port.h: Likewise.
+       * ipc/ipc_right.c: Likewise.
+       * ipc/ipc_right.h: Likewise.
+       * ipc/ipc_space.c: Likewise.
+       * ipc/ipc_space.h: Likewise.
+       * ipc/mach_debug.c: Likewise.
+       * ipc/mach_msg.c: Likewise
+       * ipc/mach_msg.h: Likewise.
+       * ipc/mach_port.c: Likewise.
+       * kern/act.c: Likewise.
+       * kern/act.h: Likewise.
+       * kern/ipc_host.c: Likewise.
+       * kern/ipc_tt.c: Likewise.
+       * kern/syscall_sw.c: Likewise.
+       * kern/thread.h: Likewise.
+
+2006-12-03  Thomas Schwinge  <address@hidden>
+
+       [bug #17120 -- GNU Mach debian dir]
+       * debian/README.Debian: Remove file.
+       * debian/changelog: Likewise.
+       * debian/control: Likewise.
+       * debian/copyright: Likewise.
+       * debian/postinst: Likewise.
+       * debian/prerm: Likewise.
+       * debian/rules: Likewise.
+
+       [bug #18015 -- GNU Mach: `make dist' and friends]
+       * Makefile.am (DISTCLEANFILES): New variable.
+
+2006-11-30  Thomas Schwinge  <address@hidden>
+
+       * Makefile.in: Regenerate.
+       * configure: Likewise.
+
+2006-11-30  Barry deFreese  <address@hidden>
+           Thomas Schwinge  <address@hidden>
+
+       [bug #18015 -- GNU Mach: `make dist' and friends]
+       * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New variable.
+       (EXTRA_DIST): Enhance with the patches and documentation files.
+       (dist-hook): New target to remove the `CVS' directories.
+       * Makefrag.am (libkernel_a_SOURCES, EXTRA_DIST): Add header and `mig'
+       input files.
+       (DISTCHECK_CONFIGURE_FLAGS): Enable the kernel debugger.
+       * i386/Makefrag.am: Likewise.  Also add `i386/i386/i386asm.sym',
+       `i386/ldscript' and `i386/README-Drivers'.
+       * i386/linux/Makefrag.am (liblinux_a_SOURCES): Add the header files
+       from `i386/linux/'.
+       * linux/Makefrag.am (liblinux_a_SOURCES, EXTRA_DIST)
+       (liblinux_pcmcia_cs_modules_a_SOURCES)
+       (liblinux_pcmcia_cs_clients_a_SOURCES)
+       (liblinux_pcmcia_cs_wireless_a_SOURCES): Add header and other included
+       files.
+       (dist-hook): Depend on `dist-hook-linux'.
+       (dist-hook-linux): New phony target to remove the `asm' symbolic links.
+       * Makerules.am (EXTRA_DIST): Add `gensym.awk'.
+       * doc/Makefrag.am (EXTRA_DIST): Add `$(mach_TEXINFOS)'.
+       * configure.ac (AC_CONFIG_LINKS): Move instantiation to...
+       * configfrag.ac: ... here and change quotation.
+       * linux/configfrag.ac (AC_CONFIG_LINKS): Change quotation.
+
+2006-11-29  Thomas Schwinge  <address@hidden>
+
+       * configure: Regenerate.
+       * Makefile.in: Likewise.
+
+       * configure.ac (disable_smashing_stack_protector): New conditional, set
+       depending on the compiler accepting `-fstack-protector' or not.
+       * Makefile.am (CFLAGS): Add `-fno-stack-protector' if
+       `disable_smashing_stack_protector' is set.
+
+2006-11-28  Thomas Schwinge  <address@hidden>
+
+       * doc/Makefrag.am ($(srcdir)/doc/version.texi): Oppress a potential
+       error message from grep.
+
+2006-11-26  Samuel Thibault  <address@hidden>
+
+       [bug #17346 -- GNU mach can't handle 4GB memory]
+       * i386/i386at/model_dep.c (mem_size_init): Truncate memory size to
+       4GiB.
+
+2006-11-21  Thomas Schwinge  <address@hidden>
+
+       * doc/Makefrag.am (doc/web, html-local, ps-local, pdf-local)
+       ($(srcdir)/doc/version.texi): New targets to faciliate keeping the web
+       pages of the GNU Mach Reference Manual updated.
+
+2006-11-20  Samuel Thibault  <address@hidden>
+
+       [patch #5328 -- GNU Mach asm statements tidy]
+       * i386/i386/fpe_linkage.c (disable_fpe): Gather dependent asm
+       statements, add `ax' clobber.
+       (fpe_exception_fixup): Drop bogus cast from input parameter of lcall
+       asm statement.
+       * i386/i386/pio.h (inw, outw): Drop 0x66 prefix an just use the w
+       instruction variant.
+       * i386/i386/proc_reg.h: (get_eflags, get_tr, get_ldt): Drop
+       useless "volatile" from asm statement.
+       (get_esp): Use direct asm register specification.
+       * i386/include/mach/i386/cthreads.h (cthread_sp): Likewise.
+       * i386/intel/pmap.c (pmap_unmap_page_zero): Fix asm clobber into `eax'.
+
+       [patch #5375 -- Fix de4x5 probe]
+       * linux/src/drivers/net/de4x5.c (pci_probe): Make probe loop stop on
+       any error, not only device not found.
+
+2006-11-17  Constantine Kousoulos  <address@hidden>
+           Thomas Schwinge  <address@hidden>
+
+       [bug #18010 -- GNU Mach: update i386/README-Drivers and doc/mach.texi]
+       * i386/README-Drivers: Move most of the text into...
+       * doc/mach.texi: ... here and update a number of things.
+       (UPDATED): Don't override.
+
+2006-11-13  Samuel Thibault  <address@hidden>
+
+       * i386/i386at/iopl.c (ioplmmap): Add `int' return type.
+       * i386/i386at/model_dep.c (halt_all_cpus): Fix typo in declaration.
+       * kern/assert.h (Assert): Add __attribute__ ((noreturn)) to
+       declaration.
+       * kern/debug.c (Debugger): Add __attribute__ ((noreturn)) to
+       declaration.
+       (Debugger): Add call to panic().
+       * kern/debug.h (panic): Add __attribute__ ((noreturn)) to declaration.
+       * util/putchar.c (putchar): Return printed char.
+
+2006-11-13  Barry deFreese  <address@hidden>
+
+       * device/chario.c (tty_cts): Add `void' return type.
+       * device/cons.c (cninit, cnputc): Add `void' return type.
+       (cngetc, cnmaygetc): Add `int' return type.
+       * device/net_io.c (net_del_q_info, net_free_dead_infp)
+       (net_free_dead_entp): Add `void' return type.
+       * i386/i386/fpu.c (fpnoextflt, fpextovrflt, fpexterrflt, fp_save)
+       (fp_load, fpintr): Add `void' return type.
+       * i386/i386/ktss.c (ktss_init): Add `int' type to `exception_stack'.
+       * i386/i386/loose_ends.c (delay): Add `void' return type.
+       * i386/i386/phys.c (pmap_zero_page, pmap_copy_page, copy_to_phys)
+       (copy_from_phys): Add `void' return type.
+       * i386/i386/pic.c (picinit, form_pic_mask, intnull, prtnull): Add
+       `void' return type.
+       * i386/i386/pit.c (clkstart): Add `void' return type.
+       * i386/i386at/com.c (comparm, comtimer, fix_modem_state)
+       (commodem_intr): Add `void' return type.
+       (comintr, commctl, comstop): Add `int' return type.
+       * i386/i386at/iopl.c (ioplclose): Add `int' return type.
+       * i386/i386at/kd.c (kd_io_map_openn, kd_io_map_close, feep, pause)
+       (kd_debug_put, cnpollc, kdclose, kd_handle_ack, kd_resend, kdinit)
+       (kd_belloff, kd_bellon, kd_putc, kd_setpos, kd_scrollup, kd_scrolldn)
+       (kd_parseesc, kd_parserest, kd_tab, kd_cls, kd_home, kd_up, kd_down)
+       (kd_right, kd_left, kd_cr, kd_cltobcur, kd_cltopcurn, kd_cltoecur)
+       (kd_clfrbcur, kd_delln, kd_insln, kd_delch, kd_erase, kd_eraseln)
+       (kd_insch, kd_senddata, kd_sendcmd, kd_cmdreg_write, kd_mouse_drain)
+       (set_kd_state, kd_setleds1, kd_setleds2, cnsetleds, kdreboot): Add
+       `void' return type.
+       (kdopen, kdread, kdwrite, kdportdeath, kdsetbell, kdgetkbent, kdintr)
+       (do_modifier, kdstate2idx, kdstart, kdstop, kd_kbd_magic): Add `int'
+       return type.
+       (kd_isupper, kd_islower): Add `boolean_t' return type.
+       (kd_cmdreg_read): Add `unsigned char' return type.
+       * i386/i386at/kd_event.c (kbdinit, kbdclose, kdb_in_out, X_kdb_enter)
+       (X_kdb_exit, X_kdb_enter_init, X_kdb_exit_init): Add `void' return
+       type.
+       (kbdopen, kbdioctl, kbdselect, kbdread): Add `int' return type.
+       * i386/i386at/kd_mouse.c (init_mouse_hw, serial_mouse_open)
+       (kd_mouse_open, mouseclose, serial_mouse_close, kd_mouse_close)
+       (mouse_handle_byte, mouse_packet_mouse_system_mouse)
+       (mouse_packet_microsoft_mouse, ibm_ps2_mouse_open)
+       (ibm_ps2_mouse_close, mouse_packet_ibm_ps2_mouse, mouse_moved)
+       (mouse_button): Add `void' return type.
+       (mouseopen, mouseioctl, mouseselect, mouseread, mouseintr): Add `int'
+       return type.
+       * i386/i386at/lpr.c (lprclose, lprpr_addr): Add `void' return type.
+       (lprprobe, lpropen, lprread, lprwrite, lprportdeath, lprstop, lprpr):
+       Add `int' return type.
+       * i386/i386at/model_dep.c (i386at_init, startrtclock): Add `void'
+       return type.
+       (timemmap): Add `int' return type.
+       * i386/i386at/rtc.c (rtcinit, rtcput): Add `void' return type.
+       (yeartoday, hexdectodec, readtodc, writetodc): Add `int' return type.
+       * i386/intel/pmap.c (pmap_pageable): Add `void' return type.
+       * kern/eventcount.c (simpler_thread_setrun): Add `int' type to
+       `whichrq' variable.
+
+2006-11-13  Barry deFreese  <address@hidden>
+
+       * i386/i386/locore.h: New file.
+       * i386/i386/pcb.h: New file.
+       * i386/i386/pcb.c: Include `pcb.h'.
+       * i386/i386/pit.c (clkstart): Fix type of s into unsigned long.
+       * i386/i386/spl.h (spl0, splsched, splx, splsoftclock, splon, sploff)
+       (splhigh, splimp, spltty, splclock, setsoftclock): Add prototype.
+       * i386/i386at/kd_event.h: New file.
+       * i386/i386at/kd_event.c: Include `kd_event.h'.
+       * i386/i386at/kd_mouse.h: New file.
+       * i386/i386at/kd_mouse.c: Include `kd_mouse.h'.
+       (mouseclose): Fix call of `serial_mouse_close' function.
+       * i386/i386at/kd.c: Include `kd_event.h' and `kd_mouse.h'.
+       * i386/i386at/kd.h (splx, spltty): Remove prototypes.h
+       * i386/i386at/lpr.c: Likewise.
+       * ipc/mach_msg.c: Include `machine/locore.h' and `machine/pcb.h'.
+       * kern/mach_clock.h: New file.
+       * kern/mach_clock.c: Include `kern/queue.h', `kern/timer.h' and
+       `mach_clock.h'.
+       * kern/mach_factor.h: New file.
+       * kern/mach_factor.c: Include `mach_factor.h'.
+       * kern/sched_prim.c: Include `kern/mach_factor.h'.
+       * kern/thread.c: Include `machine/pcb.h'.
+
+2006-11-11  Thomas Schwinge  <address@hidden>
+
+       * Makefile.am (gnumach-undef-bad): Depend on the Makefile.
+
+2006-11-11  Samuel Thibault  <address@hidden>
+
+       Fix I/O port type.
+       * i386/i386/pic.c (master_icq, master_ocw, slaves_icq, slaves_ocw):
+       Change variables type from char * to unsigned short.
+       (picinit): Remove now-useless cast.
+       * i386/i386at/kd_mouse.c (init_mouse_hw, serial_mouse_close)
+       (mouseintr): Change variable type from caddr_t to unsigned short,
+       remove now-useless cast.
+
+       [task #5726 -- GCC built-in functions]
+       * kern/machine.c: Include `string.h'.
+
+       Fix ``assignment used as truth value'' warnings.
+       * device/cons.c (cninit): Add parenthesis.
+       * kern/bootstrap.c (copy_bootstrap): Likewise.
+       * kern/printf.c (_doprnt): Likewise.
+       * vm/vm_map.c (vm_map_lookup): Likewise.
+
+       Fix a bunch of ``unused variable'' warnings.
+       * device/ds_routines.c (ds_device_open): Remove unused `namebuf'
+       variable.
+       * device/kmsg.c (kmsgread): Remove unused `err' variable.
+       * device/net_io.c (net_set_filter): Remove unused `j' variable.
+       * i386/i386/pcb.c (curr_gdt, curr_ktss): Artificially use parameter of
+       macro.
+       * i386/i386/pic.c (picinit): Remove unused `i' variable.
+       * i386/i386/pit.c (clkstart): Remove unused `flags' variable.
+       * i386/i386/trap.c (kernel_trap): Remove unused `exc' variable.
+       (user_trap): Remove unused `map' and `result' variables.
+       (v86_assist): Remove unused `size' variable.
+       * i386/i386at/i386at_ds_routines.c (ds_device_open): Remove unused
+       `dev' variable.
+       * i386/i386at/kd.c (kdintr): Remove unused `o_pri' variable.
+       (kdcngetc): Remove unused `i' variable.
+       * i386/i386at/kd_event.c (kbdgetstat, kbdsetstat): Remove unused
+       `result' variable.
+       * i386/i386at/kd_mouse.c (mousegetstat): Likewise.
+       * i386/i386at/lpr.c (lprattach): Remove unused `tp' variable.
+       (lprsetstat): Remove unused `dev_addr' and `s' variables.
+       * i386/intel/pmap.c (pmap_bootstrap): Remove unused `pteva' variable.
+       (SPLVM, SPLX): Artificially use parameter of macro.
+       * ipc/ipc_kmsg.c (ipc_kmsg_copyin_body): Remove unused `mr' variable.
+       * kern/bootstrap.c (boot_script_exec_cmd): Remove unused
+       `boot_exec_info' and `user_map' variables.
+       * vm/vm_kern.c (projected_buffer_map): Remove unused `object'
+       variable.
+
+2006-11-10  Samuel Thibault  <address@hidden>
+
+       * kern/sched_prim.h (thread_syscall_return): Replace old `volatile'
+       function qualifier with __attribute__((__noreturn__)).
+
+2006-11-09  Barry deFreese  <address@hidden>
+
+       [task #5726 -- GCC built-in functions]
+       * include/printf.h: Move file...
+       * kern/printf.h: ... here.
+       * kern/debug.h (panic_init, panic): Add prototypes.
+       * chips/busses.c: Don't include `printf.h', include `kern/printf.h'
+       and `kern/debug.h' for panic().
+       * ddb/db_command.c: Likewise.
+       * ddb/db_cond.c: Likewise.
+       * ddb/db_output.c: Likewise.
+       * device/cirbuf.c: Likewise.
+       * device/cons.c: Likewise.
+       * device/dev_name.c: Likewise.
+       * device/dev_pager.c: Likewise.
+       * device/device_init.c: Likewise.
+       * device/dk_label.c: Likewise.
+       * device/ds_routines.c: Likewise.
+       * device/net_io.c: Likewise.
+       * device/subrs.c: Likewise.
+       * i386/i386/debug_i386.c: Likewise.
+       * i386/i386/fpe_linkage.c: Likewise.
+       * i386/i386/fpu.c: Likewise.
+       * i386/i386/io_map.c: Likewise.
+       * i386/i386/kttd_interface.c: Likewise.
+       * i386/i386/mp_desc.c: Likewise.
+       * i386/i386/pcb.c: Likewise.
+       * i386/i386/pic.c: Likewise.
+       * i386/i386/trap.c: Likewise.
+       * i386/i386at/autoconf.c: Likewise.
+       * i386/i386at/com.c: Likewise.
+       * i386/i386at/i386at_ds_routines.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/kd_event.c: Likewise.
+       * i386/i386at/kd_mouse.c: Likewise.
+       * i386/i386at/lpr.c: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * ipc/ipc_entry.c: Likewise.
+       * ipc/ipc_hash.c: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_mqueue.c: Likewise.
+       * ipc/ipc_notify.c: Likewise.
+       * ipc/ipc_object.c: Likewise.
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_pset.c: Likewise.
+       * ipc/ipc_right.c: Likewise.
+       * ipc/mach_msg.c: Likewise.
+       * ipc/mach_port.c: Likewise.
+       * ipc/mach_rpc.c: Likewise.
+       * kern/act.c: Likewise.
+       * kern/ast.c: Likewise.
+       * kern/bootstrap.c: Likewise.
+       * kern/debug.c: Likewise.
+       * kern/eventcount.c: Likewise.
+       * kern/exception.c: Likewise.
+       * kern/host.c: Likewise.
+       * kern/ipc_host.c: Likewise.
+       * kern/ipc_kobject.c: Likewise.
+       * kern/ipc_mig.c: Likewise.
+       * kern/ipc_sched.c: Likewise.
+       * kern/ipc_tt.c: Likewise.
+       * kern/kalloc.c: Likewise.
+       * kern/lock.c: Likewise.
+       * kern/mach_clock.c: Likewise.
+       * kern/machine.c: Likewise.
+       * kern/pc_sample.c: Likewise.
+       * kern/printf.c: Likewise.
+       * kern/processor.c: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/server_loop.ch: Likewise.
+       * kern/startup.c: Likewise.
+       * kern/task.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/thread_swap.c: Likewise.
+       * kern/xpr.c: Likewise.
+       * kern/zalloc.c: Likewise.
+       * vm/memory_object.c: Likewise.
+       * vm/vm_debug.c: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_kern.c: Likewise.
+       * vm/vm_map.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_object.h: Likewise.
+       * vm/vm_pageout.c: Likewise.
+       * vm/vm_resident.c: Likewise.
+
+2006-11-08  Thomas Schwinge  <address@hidden>
+
+       * aclocal.m4: Regenerate using GNU Autoconf 2.60 and GNU Automake 1.10.
+       * INSTALL: Likewise.
+       * Makefile.in: Likewise.
+       * configure: Likewise.
+       * build-aux/config.guess: Likewise.
+       * build-aux/config.sub: Likewise.
+       * build-aux/depcomp: Likewise.
+       * build-aux/install-sh: Likewise.
+       * build-aux/missing: Likewise.
+       * build-aux/texinfo.tex: Likewise.
+
+       * Makefrag.am (gnumach.msgids): Remove temporary files.
+
+2006-11-08  Samuel Thibault  <address@hidden>
+
+       [task #5726 -- GCC built-in functions]
+       * include/printf.h (iprintf): Fix prototype.
+       (vprintf): Add prototype.
+       * kern/printf.c: Include `printf.h'.
+       (vprintf, printf): Fix prototype and return a dumb value.
+       * kern/startup.c: Include `printf.h'.
+
+2006-11-07  Barry deFreese  <address@hidden>
+
+       [task #5726 -- GCC built-in functions]
+       * include/printf.h: New file.
+       (printf_init, _doprnt, printnum, sprintf, printf, indent, iprint): New
+       declarations.
+       * include/string.h (strchr, strcmp, strcpy, strlen, strncmp, strncpy)
+       (strrchr, strsep): New extern declarations.
+       * kern/strings.c: Don't include `kern/strings.h', include `string.h'.
+       (strncmp, strncpy, strlen): Fix prototypes into using size_t.
+       * kern/strings.h: Removed file.
+       * kern/debug.c: Include `printf.h'.
+       (do_cnputc): New function.
+       (panic, log): Use do_cnputc instead of cnputc.
+       * chips/busses.c: Don't include `kern/strings.h', include `printf.h' and
+       `string.h'.
+       (_doprnt): Remove extern declaration.
+       (indent): Remove extern declaration.
+       * ddb/db_aout.c: Likewise.
+       * ddb/db_command.c: Likewise.
+       * ddb/db_lex.c: Likewise.
+       * ddb/db_macro.c: Likewise.
+       * ddb/db_output.c: Likewise.
+       * ddb/db_print.c: Likewise.
+       * ddb/db_sym.c: Likewise.
+       * device/dev_name.c: Likewise.
+       * device/dev_pager.c: Likewise.
+       * device/dk_label.c: Likewise.
+       * device/ds_routines.c: Likewise.
+       * device/net_io.c: Likewise.
+       * device/subrs.c: Likewise.
+       * i386/i386/db_trace.c: Likewise.
+       * i386/i386/debug_i386.c: Likewise.
+       * i386/i386/fpu.c: Likewise.
+       * i386/i386/io_map.c: Likewise.
+       * i386/i386/kttd_interface.c: Likewise.
+       * i386/i386/pic.c: Likewise.
+       * i386/i386/trap.c: Likewise.
+       * i386/i386at/autoconf.c: Likewise.
+       * i386/i386at/com.c: Likewise.
+       * i386/i386at/i386at_ds_routines.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/kd_event.c: Likewise.
+       * i386/i386at/kd_mouse.c: Likewise.
+       * i386/i386at/lpr.c: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * ipc/ipc_entry.c: Likewise.
+       * ipc/ipc_hash.c: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_notify.c: Likewise.
+       * ipc/ipc_object.c: Likewise.
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_pset.c: Likewise.
+       * ipc/mach_msg.c: Likewise.
+       * ipc/mach_port.c: Likewise.
+       * ipc/mach_rpc.c: Likewise.
+       * kern/bootstrap.c: Likewise.
+       * kern/eventcount.c: Likewise.
+       * kern/ipc_kobject.c: Likewise.
+       * kern/pc_sample.c: Likewise.
+       * kern/printf.c: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/zalloc.c: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_map.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_resident.c: Likewise.
+
+2006-11-05  Samuel Thibault  <address@hidden>
+
+       * include/string.h: Fix copyright assignment to FSF, keep author's
+       name.
+
+2006-11-05  Thomas Schwinge  <address@hidden>
+
+       * linux/dev/README: New file.
+
+       * config.h.in: Regenerate.
+       * configure: Likewise.
+
+       [task #5956 -- Automake'ify GNU Mach's code base]
+       * configure.ac <AM_INIT_AUTOMAKE>: Add `no-define' and `1.9'.
+
+2006-11-05  Barry deFreese  <address@hidden>
+
+       [task #5878 -- Backport code from GNU Mach's trunk to
+       gnumach-1-branch: i386_set_gdt, i386_get_gdt'']
+       [sync from HEAD, 2002-10-03]
+       * i386/include/mach/i386/mach_i386.defs (i386_set_gdt, i386_get_gdt):
+       New routines.
+       * i386/i386/user_ldt.c (i386_set_gdt, i386_get_gdt): New functions.
+       * i386/i386/gdt.h (USER_GDT, USER_GDT_SLOTS): New macros.
+       (GDTSZ): Compute it from USER_GDT and USER_GDT_SLOTS.
+       * i386/i386/thread.h: Include `gdt.h'.
+       (struct i386_machine_state): New member `user_gdt'.
+       * i386/i386/pcb.c (switch_ktss): Copy those slots into the GDT.
+       * linux/src/include/linux/head.h (idt,gdt): Remove extern declaration.
+
+2006-11-05  Samuel Thibault  <address@hidden>
+
+       FPU, CPU and IO stubs cleanup.
+       * i386/i386/fpu.h (fstcw): New macro.
+       * i386/i386/locore.S (_fninit, _fstcw, _fldcw, _fnstsw, _fnclex)
+       (_clts, _fpsave, _fprestore, set_cr3, get_cr3, flush_tlb, get_cr2)
+       (get_ldt, set_ldt, get_tr, set_tr, _setts, outb, inb, outw, inw, outl)
+       (inl, loutb, loutw, linb, linw): Remove functions.
+       * i386/i386/proc_reg.h (flush_tlb): New macro.
+       * i386/i386/db_interface.c: Include `i386/proc_reg.h'.
+       * i386/intel/pmap.c: Likewise.
+       * i386/intel/pmap.h: Likewise.
+       * i386/i386/fpu.c: Include `i386/pio.h'.
+       * i386/i386/pic.c: Likewise.
+       * i386/i386/pit.c: Likewise.
+       * i386/i386at/iopl.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/kd_event.c: Likewise.
+       * i386/i386at/kd_mouse.c: Likewise.
+       * i386/i386at/rtc.c: Likewise.
+
+2006-11-05  Barry deFreese  <address@hidden>
+
+       [task #5726 -- GCC built-in functions]
+       * include/string.h: New file.
+       * include/mach/mig_support.h: Include `string.h'.
+       [MACH_KERNEL] (bcopy): Remove extern declaration.
+       [MACH_KERNEL] (memcpy): Remove macro.
+       * device/cirbuf.c: Include `string.h'.
+       (q_to_b, b_to_q): Replace bcopy() with memcpy() and bzero() with
+       memset(), clean memcpy() and memset() invocation.
+       * device/cons.c (cnputc): Likewise.
+       * device/dev_pager.c (device_pager_data_request_done): Likewise.
+       * device/ds_routines.c (device_write_get, ds_read_done): Likewise.
+       * device/kmsg.c: Likewise.
+       * device/net_io.c (net_filter, net_set_filter, net_getstat): Likewise.
+       * i386/i386/fpu.c (fpu_set_state, fpu_get_state, fp_load)
+       (fp_state_alloc): Likewise.
+       * i386/i386/iopb.c (io_tss_init, i386_io_port_list): Likewise.
+       * i386/i386/mp_desc.c (mp_desc_init): Likewise.
+       * i386/i386/pcb.c (pcb_init, thread_setstatus)
+       (thread_getstatus): Likewise.
+       * i386/i386/phys.c (pmap_zero_page, pmap_copy_page, copy_to_phys)
+       (copy_from_phys): Likewise.
+       * i386/i386/trap.c (v86_assist): Likewise.
+       * i386/i386/user_ldt.c (i386_set_ldt, i386_get_ldt): Likewise.
+       * i386/i386at/immc.c (immc_cnputc): Likewise.
+       * i386/i386at/kd_event.c (X_kdb_enter_init, X_kdb_exit_init): Likewise.
+       * i386/intel/pmap.c (pmap_init, pmap_page_table_page_alloc)
+       (pmap_create): Likewise.
+       * ipc/ipc_entry.c (ipc_entry_grow_table): Likewise.
+       * ipc/ipc_kmsg.c (ipc_kmsg_get_from_kernel)
+       (ipc_kmsg_put_to_kernel): Likewise.
+       * ipc/ipc_object.c (ipc_object_alloc, ipc_object_alloc_name): Likewise.
+       * ipc/ipc_port.c (ipc_port_dngrow): Likewise.
+       * ipc/ipc_space.c: Likewise.
+       * ipc/mach_debug.c (mach_port_space_info)
+       (mach_port_space_info): Likewise.
+       * kern/act.c (act_create): Likewise.
+       * kern/boot_script.c: Likewise.
+       * kern/bootstrap.c: Likewise.
+       * kern/eventcount.c (evc_init): Likewise.
+       * kern/host.c (host_info, host_processor_sets): Likewise.
+       * kern/lock.c (lock_init): Likewise.
+       * kern/lock_mon.c (lock_info_clear): Likewise.
+       * kern/mach_clock.c (mapable_time_init): Likewise.
+       * kern/pc_sample.c (get_sampled_pcs): Likewise.
+       * kern/processor.c (processor_set_things): Likewise.
+       * kern/syscall_emulation.c (task_set_emulation_vector_internal)
+       (task_get_emulation_vector, xxx_task_get_emulation_vector): Likewise.
+       * kern/task.c (task_threads): Likewise.
+       * kern/xpr.c (xprbootstrap): Likewise.
+       * kern/zalloc.c (host_zone_info): Likewise.
+       * vm/vm_debug.c (mach_vm_object_pages): Likewise.
+       * vm/vm_kern.c (projected_buffer_allocate, copyinmap)
+       (copyoutmap): Likewise.
+       * vm/vm_object.c (vm_object_bootstrap): Likewise.
+       * vm/vm_resident.c (vm_page_grab_contiguous_pages): Likewise.
+
+2006-11-05  Samuel Thibault  <address@hidden>
+
+       * DEVELOPMENT: Document the following removals.
+
+       Drop MB1/MB2/EXL architecture support.
+       * i386/i386/pit.h (PITCTR0_PORT, PITCTR1_PORT, PITCTR2_PORT)
+       (PITCTL_PORT, CLKNUM): Remove MB1/MB2/EXL cases.
+       [EXL] (time_latch): Remove structure and type.
+       [EXL] (intr_disable, intr_restore): Remove functions.
+
+       Drop iPSC architecture support.
+       * i386/i386/hardclock.c: Remove iPSC386 from #if.
+       * i386/i386/locore.S: Remove iPSC386 delays.
+       * i386/i386/pic.c: Remove iPSC386 support.
+       (SLAVEMASK): Rmove iPSC386 case.
+       * i386/i386/pic.h (ADDR_PIC_BASE, OFF_ICW, OFF_OCW, SIZE_PIC)
+       (PICM_VECTBASE, PICS_VECTBASE): Remove iPSC386 cases.
+       [iPSC386] (I_AM_A_SLAVE, I_AM_A_MASTR): Remove macros.
+       * i386/i386/pit.h: Remove iPSC386 from #if.
+       [iPSC386] (CLKNUM): Remove macro.
+       * kern/machine.c (host_get_boot_info): Remove iPSC386 support.
+       * vm/vm_map.h (VM_MAP_COPY_PAGE_LIST_MAX): Remove iPSC case.
+
+       Drop i860 architecture support.
+       * i386/i386/pmap.h: Remove i860 comment.
+       * i386/intel/pmap.c: Remove i860 comments.
+       [i860]: Don't include `i860ipsc/nodehw.h'.
+       (INVALIDATE_TLB): Remove i860 case.
+       (paging_enabled): Remove variable.
+       (pmap_map): Remove setting INTEL_PTE_NCACHE.
+       (pmap_bootstrap): Remove i860 support.
+       (pmap_page_table_page_alloc): Remove setting INTEL_PTE_NCACHE.
+       (pmap_enter): Remove call to flush function.
+       (set_dirbase): Remove function.
+       * i386/intel/pmap.h: Remove i860 comments.
+       (INTEL_PGBYTES, INTEL_PGSHIFT, intel_btop, intel_ptob)
+       (intel_round_page, intel_trunc_page, trunc_intel_to_vm)
+       (round_intel_to_vm, vm_to_intel, INTEL_PTE_VALID, set_dirbase): Remove
+       i860 cases.
+       (INTEL_PTE_valid): Remove macro.
+       * i386/intel/read_fault.c: Remove i860 comment.
+
+       Drop PS2 architecture support.
+       * i386/i386/fpu.c (fpintr): Remove PS2 from #if.
+       * i386/i386/gdt.c [PS2] (abios_int_return, abios_th_return, intstack):
+       Remove extern declarations.
+       * i386/i386/gdt.h [PS2] (ABIOS_INT_RET, ABIOS_TH_RET, ABIOS_INT_SS)
+       (ABIOS_TH_SS, ABIOS_FIRST_AVAIL_SEL): Remove macros.
+       (GDTSZ): Remove PS2 case.
+       * i386/i386/hardclock.c [PS2]: Don't include `i386/pic.h' and
+       `i386/pio.h'.
+       (hardclock): Remove PS2 prototype and code.
+       * i386/i386/locore.S (RET_OFFSET): Remove PS2 stack layout.
+       * i386/i386/pic.c (picinit): Remove #ifdef PS2.
+       * i386/i386/pic.h: Remove PS2 from #if.
+       * i386/i386/pit.c [PS2] (clock_int_handler): Remove extern declaration.
+       Don't include `sys/types.h' and `i386ps2/abios.h'.
+       (clock_request_block, clock_flags, cqbuf): Remove variables.
+       (clkstart): Remove call to abios_clock_start function.
+       (COUNT): Don't define.
+       (abios_clock_start, ackrtclock): Remove functions.
+       * i386/i386/pit.h: Remove PS2 from #if.
+
+2006-10-26  Thomas Schwinge  <address@hidden>
+
+       * Makefile.in: Regenerate.
+
+       [task #5956 -- Automake'ify GNU Mach's code base]
+
+       * Makefrag.am (gnumach.msgids): Remove repetition.
+       * Makerules.am (%.server.msgids, %.user.msgids): Targets renamed from
+       `%.msgids'.  Also consider MIGCOMSFLAGS respective MIGCOMUFLAGS.
+       Thanks to Guillem Jover and Leonardo Lopes Pereira for reporting this.
+
+       The Automake build system wants us to have these files in the rcs, so
+       do that.
+       * doc/mach.info: New file, generated.
+       * doc/mach.info-1: Likewise.
+       * doc/mach.info-2: Likewise.
+       * doc/stamp-vti: Likewise.
+       * doc/version.texi: Likewise.
+
+2006-10-18  Thomas Schwinge  <address@hidden>
+
+       * Makefile.in: Regenerate.
+
+       Install `PREFIX/share/msgids/gnumach.msgids'.
+       * Makerules.am (%.msgids): Two new rules.
+       * Makefrag.am (MOSTLYCLEANFILES): Add `gnumach.msgids'.
+       (gnumach.msgids): New rule.
+       (exec_msgidsdir, exec_msgids_DATA): New variables.
+
+2006-10-16  Thomas Schwinge  <address@hidden>
+
+       * configure: Regenerate.
+
+       [bug #18011 -- `make install-data' will build the
+       ``to-be-generated files'']
+       * config.status.dep.patch: Do an educated guess instead of using the
+       `Makefile'.
+       * configure.ac <config.status.dep.patch>: Update description.
+
+2006-10-15  Thomas Schwinge  <address@hidden>
+
+       * configure: Regenerate.
+
+       * configure.ac: Update texts snippets: GNU Automake 1.10 has just been
+       released.
+
+       * i386/include/Makefile.in: Remove unused file.  Thanks to Guillem
+       Jover for spotting this.
+
+       [task #5956 -- Automake'ify GNU Mach's code base]
+
+       * configure: Regenerate.
+
+       * configure.ac <config.status.dep.patch>: Point to [bug #18011 --
+       `make install-data' will build the ``to-be-generated files''].
+
+       * Makefile.in: Regenerate.
+
+       * Makefrag.am (include_mach_exec): Rename to `include_mach_eXec'.
+
+       * Makefile.in: New file, generated by `autoreconf'.
+       * config.h.in: Likewise.
+       * configure: Updated file, generated by `autoreconf'.
+
+       * INSTALL: File updated, thanks to `autoreconf'.
+       * aclocal.m4: Likewise.
+
+       * build-aux/compile: New file, thanks to `autoreconf'.
+       * build-aux/config.guess: Likewise.
+       * build-aux/config.sub: Likewise.
+       * build-aux/depcomp: Likewise.
+       * build-aux/install-sh: Likewise.
+       * build-aux/mdate-sh: Likewise.
+       * build-aux/missing: Likewise.
+       * build-aux/texinfo.tex: Likewise.
+
+       * AUTHORS: New file, copy from the MIG repository.
+
+       * kern/bootstrap.c: Don't include `bootstrap_symbols.h'.
+       * ddb/db_command.c: Don't include `cpus.h'.
+       * ddb/db_mp.c: Likewise.
+       * i386/i386/ast_check.c: Likewise.
+       * i386/i386/cswitch.S: Likewise.
+       * i386/i386/db_interface.c: Likewise.
+       * i386/i386/fpu.c: Likewise.
+       * i386/i386/fpu.h: Likewise.
+       * i386/i386/i386asm.sym: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/mp_desc.c: Likewise.
+       * i386/i386/mp_desc.h: Likewise.
+       * i386/i386/pcb.c: Likewise.
+       * i386/i386/trap.c: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * include/mach/machine.h: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_kmsg.h: Likewise.
+       * kern/ast.c: Likewise.
+       * kern/ast.h: Likewise.
+       * kern/cpu_number.h: Likewise.
+       * kern/debug.c: Likewise.
+       * kern/eventcount.c: Likewise.
+       * kern/host.c: Likewise.
+       * kern/ipc_sched.c: Likewise.
+       * kern/lock.c: Likewise.
+       * kern/lock.h: Likewise.
+       * kern/lock_mon.c: Likewise.
+       * kern/mach_clock.c: Likewise.
+       * kern/mach_factor.c: Likewise.
+       * kern/machine.c: Likewise.
+       * kern/priority.c: Likewise.
+       * kern/processor.c: Likewise.
+       * kern/processor.h: Likewise.
+       * kern/sched.h: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/startup.c: Likewise.
+       * kern/syscall_subr.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/timer.c: Likewise.
+       * kern/timer.h: Likewise.
+       * vm/vm_resident.c: Likewise.
+       * kern/sched_prim.c: Don't include `fast_tas.h'.
+       * kern/task.c: Likewise.
+       * kern/task.h: Likewise.
+       * kern/sched_prim.c: Don't include `hw_footprint.h'.
+       * kern/thread.c: Likewise.
+       * kern/thread.h: Likewise.
+       * kern/counters.c: Don't include `mach_counters.h'.
+       * kern/counters.h: Likewise.
+       * ddb/db_ext_symtab.c: Don't include `mach_debug.h'.
+       * i386/i386/pcb.c: Likewise.
+       * kern/ipc_kobject.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/zalloc.c: Likewise.
+       * kern/ast.c: Don't include `mach_fixpri.h'.
+       * kern/processor.c: Likewise.
+       * kern/processor.h: Likewise.
+       * kern/sched.h: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/syscall_subr.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/thread.h: Likewise.
+       * kern/host.c: Don't include `mach_host.h'.
+       * kern/ipc_sched.c: Likewise.
+       * kern/machine.c: Likewise.
+       * kern/processor.c: Likewise.
+       * kern/processor.h: Likewise.
+       * kern/sched_prim.c: Likewise.
+       * kern/startup.c: Likewise.
+       * kern/task.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/thread.h: Likewise.
+       * include/mach/mach.defs: Don't include `mach_ipc_compat.h'.
+       * include/mach/mach_param.h: Likewise.
+       * include/mach/mach_traps.h: Likewise.
+       * include/mach/message.h: Likewise.
+       * include/mach/mig_errors.h: Likewise.
+       * include/mach/notify.h: Likewise.
+       * include/mach/port.h: Likewise.
+       * include/mach/std_types.defs: Likewise.
+       * include/mach/task_special_ports.h: Likewise.
+       * include/mach/thread_special_ports.h: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_kmsg.h: Likewise.
+       * ipc/ipc_marequest.c: Likewise.
+       * ipc/ipc_notify.c: Likewise.
+       * ipc/ipc_notify.h: Likewise.
+       * ipc/ipc_object.c: Likewise.
+       * ipc/ipc_object.h: Likewise.
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_port.h: Likewise.
+       * ipc/ipc_right.c: Likewise.
+       * ipc/ipc_right.h: Likewise.
+       * ipc/ipc_space.c: Likewise.
+       * ipc/ipc_space.h: Likewise.
+       * ipc/mach_debug.c: Likewise.
+       * ipc/mach_msg.c: Likewise.
+       * ipc/mach_msg.h: Likewise.
+       * ipc/mach_port.c: Likewise.
+       * kern/ipc_tt.c: Likewise.
+       * kern/syscall_sw.c: Likewise.
+       * kern/thread.h: Likewise.
+       * include/mach_debug/mach_debug.defs: Don't include `mach_ipc_debug.h'.
+       * ipc/ipc_hash.c: Likewise.
+       * ipc/ipc_hash.h: Likewise.
+       * ipc/ipc_marequest.c: Likewise.
+       * ipc/ipc_marequest.h: Likewise.
+       * kern/ipc_kobject.c: Don't include `mach_ipc_test.h'.
+       * ddb/db_access.c: Don't include `mach_kdb.h'.
+       * ddb/db_aout.c: Likewise.
+       * ddb/db_break.c: Likewise.
+       * ddb/db_command.c: Likewise.
+       * ddb/db_command.h: Likewise.
+       * ddb/db_cond.c: Likewise.
+       * ddb/db_examine.c: Likewise.
+       * ddb/db_expr.c: Likewise.
+       * ddb/db_ext_symtab.c: Likewise.
+       * ddb/db_input.c: Likewise.
+       * ddb/db_lex.c: Likewise.
+       * ddb/db_macro.c: Likewise.
+       * ddb/db_mp.c: Likewise.
+       * ddb/db_output.c: Likewise.
+       * ddb/db_print.c: Likewise.
+       * ddb/db_run.c: Likewise.
+       * ddb/db_sym.c: Likewise.
+       * ddb/db_task_thread.c: Likewise.
+       * ddb/db_trap.c: Likewise.
+       * ddb/db_variables.c: Likewise.
+       * ddb/db_watch.c: Likewise.
+       * ddb/db_watch.h: Likewise.
+       * ddb/db_write_cmd.c: Likewise.
+       * i386/i386/db_disasm.c: Likewise.
+       * i386/i386/db_interface.c: Likewise.
+       * i386/i386/db_trace.c: Likewise.
+       * i386/i386/i386asm.sym: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/trap.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * include/mach_debug/mach_debug.defs: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_object.c: Likewise.
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_pset.c: Likewise.
+       * kern/bootstrap.c: Likewise.
+       * kern/debug.c: Likewise.
+       * kern/exception.c: Likewise.
+       * kern/lock.c: Likewise.
+       * kern/xpr.c: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_map.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_resident.c: Likewise.
+       * kern/lock.h: Don't include `mach_ldebug.h'.
+       * kern/lock_mon.c: Don't include `mach_lock_mon.h'.
+       * kern/ipc_kobject.c: Don't include `mach_machine_routines.h'.
+       * kern/lock_mon.c: Don't include `mach_mp_debug.h'.
+       * vm/memory_object.c: Don't include `mach_pagemap.h'.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_object.h: Likewise.
+       * vm/vm_pageout.c: Likewise.
+       * i386/i386/trap.c: Don't include `mach_pcsample.h'.
+       * kern/mach4.srv: Likewise.
+       * kern/mach_clock.c: Likewise.
+       * kern/pc_sample.c: Likewise.
+       * kern/task.c: Likewise.
+       * kern/thread.c: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * device/net_io.c: Don't include `mach_ttd.h'.
+       * i386/i386/kttd_interface.c: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/trap.c: Likewise.
+       * i386/i386at/autoconf.c: Likewise.
+       * include/mach_debug/mach_debug.defs: Don't include `mach_vm_debug.h'.
+       * vm/vm_debug.c: Likewise.
+       * vm/vm_page.h: Likewise.
+       * vm/vm_resident.c: Likewise.
+       * kern/sched_prim.c: Don't include `power_save.h'.
+       * kern/sched.h: Don't include `simple_clock.h'.
+       * kern/sched_prim.c: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/mach_clock.c: Don't include `stat_time.h'.
+       * i386/i386/i386asm.sym: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * kern/sched.h: Likewise.
+       * kern/timer.c: Likewise.
+       * kern/timer.h: Likewise.
+       * kern/startup.c: Don't include `xpr_debug.h'.
+       * kern/xpr.h: Likewise.
+       * i386/i386at/autoconf.c: Don't include `com.h'.
+       * i386/i386at/com.c: Likewise.
+       * i386/i386at/conf.c: Likewise.
+       * i386/i386at/cons_conf.c: Likewise.
+       * i386/i386/fpe_linkage.c: Don't include `fpe.h'.
+       * i386/i386/fpu.c: Likewise.
+       * i386/i386/fpu.h: Likewise.
+       * i386/i386/trap.c: Likewise.
+       * i386/i386at/autoconf.c: Don't include `lpr.h'.
+       * i386/i386at/conf.c: Likewise.
+       * i386/i386at/lpr.c: Likewise.
+       * i386/i386/cswitch.S: Don't include `platforms.h'.
+       * i386/i386/fpu.c: Likewise.
+       * i386/i386/gdt.c: Likewise.
+       * i386/i386/hardclock.c: Likewise.
+       * i386/i386/i386asm.sym: Likewise.
+       * i386/i386/io_emulate.c: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/pic.c: Likewise.
+       * i386/i386/pic.h: Likewise.
+       * i386/i386/pit.c: Likewise.
+       * i386/i386/pit.h: Likewise.
+       * i386/i386/seg.h: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * i386/i386at/com.c: Don't include `rc.h'
+       * i386/i386at/cons_conf.c: Likewise.
+       * i386/i386at/pic_isa.c: Likewise.
+       * device/ds_routines.c: Don't include <i386/linux/device-drivers.h>.
+       * i386/i386at/i386at_ds_routines.c: Likewise.
+       * i386/linux/dev/include/linux/autoconf.h: Likewise.
+       * linux/dev/arch/i386/kernel/setup.c: Likewise.
+       * linux/dev/init/main.c: Likewise.
+       * linux/pcmcia-cs/glue/pcmcia_glue.h: Likewise.
+       * linux/pcmcia-cs/glue/wireless_glue.h: Likewise.
+       * kern/lock_mon.c: Don't include <time_stamp.h>.
+       * device/cons.c: Include <device/cons.h> instead of <cons.h>.
+       * i386/i386at/com.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/cons_conf.c: Likewise.
+       * i386/i386at/i386at_ds_routines.c: Include <device/device.server.h>
+       instead of "device_interface.h".
+       * device/chario.c: Include <device/device_reply.user.h> instead of
+       "device_reply.h".
+       * device/ds_routines.c: Likewise.
+       * linux/dev/glue/block.c: Likewise.
+       * linux/dev/glue/net.c: Likewise.
+       * linux/pcmcia-cs/glue/ds.c: Likewise.
+       * device/cons.c: Include <device/kmsg.h> instead of <kmsg.h>.
+       * device/kmsg.c: Likewise.
+       * i386/i386/cswitch.S: Include <i386/cpu_number.h> instead of
+       "cpu_number.h".
+       * i386/i386/locore.S: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * ipc/ipc_kmsg.h: Likewise.
+       * i386/i386/i386asm.sym: Include <i386/gdt.h> instead of "gdt.h".
+       * i386/i386/idt.c: Likewise.
+       * i386/i386at/int_init.c: Likewise.
+       * i386/i386/cswitch.S: Include <i386/i386asm.h> instead of "i386asm.h".
+       * i386/i386/locore.S: Likewise.
+       * i386/i386at/boothdr.S: Likewise.
+       * i386/i386at/interrupt.S: Likewise.
+       * i386/i386at/idt.h: Include <i386/idt-gen.h> instead of "idt-gen.h".
+       * i386/i386at/interrupt.S: Include <i386/ipl.h> instead of "ipl.h".
+       * i386/i386/i386asm.sym: Include <i386/ldt.h> instead of "ldt.h".
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/i386asm.sym: Include <i386/mp_desc.h> instead of
+       "mp_desc.h".
+       * i386/i386at/interrupt.S: Include <i386/pic.h> instead of "pic.h".
+       * i386/i386/cswitch.S: Include <i386/proc_reg.h> instead of
+       "proc_reg.h".
+       * i386/i386/locore.S: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * i386/i386/i386asm.sym: Include <i386/seg.h> instead of "seg.h".
+       * i386/i386/idt.c: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/locore.S: Include <i386/trap.h> instead of "trap.h".
+       * i386/i386/i386asm.sym: Include <i386/tss.h> instead of "tss.h".
+       * i386/i386/i386asm.sym: Include <i386/vm_param.h> instead of
+       "vm_param.h".
+       * i386/i386/idt.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * i386/i386/i386asm.sym: Include <i386at/idt.h> instead of "idt.h".
+       * i386/i386/idt.c: Likewise.
+       * i386/i386at/int_init.c: Likewise.
+       * ipc/ipc_target.c: Include <kern/sched_prim.h> instead of
+       "sched_prim.h".
+       * vm/memory_object.c: Include <vm/memory_object_default.user.h> instead
+       of "memory_object_default.h".
+       * vm/vm_object.c: Likewise.
+       * vm/vm_pageout.c: Likewise.
+       * vm/memory_object.c: Include <vm/memory_object_user.user.h> instead of
+       "memory_object_user.h".
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_pageout.c: Likewise.
+
+       * Makefile.am: New file.
+       * Makerules.am <configure's findings, System dependent Makerules>
+       <Compilation flags, Dependency generation, Autoconf support>: Remove
+       sections.
+       <Building from foo.cli, Building from foo.srv>: Rewrite:
+       (%.server.defs.c, %.user.defs.c, %.server.h %.server.c)
+       (%.user.h %.user.c, %.server.defs, %.user.defs): New targets.
+       (%.h %_user.c %.cli.d, %_interface.h %_server.c %.srv.d): Remove
+       targets.
+       (echo-%): New target.
+       * Makefrag.am <configure's findings, Rules, Kernel Image, Installation>
+       <Building the distribution, Autoconf support, Makerules>: Remove
+       sections.
+       (enable_kdb, enable_kmsg): Adapt.
+       <All the source in each directory>
+       <Header files installed for user use>: Rewrite to adapt to how things
+       are to be done now.
+       <Automatically generated source files>: New section.
+       (i386/Makefrag.am): Include file if appropriate.
+       * i386/Makefrag.am <configure's findings, Rules, Installation>
+       <Autoconf support, Makerules>: Remove sections.
+       (enable_lpr): Adapt.
+       <Source files for any i386 kernel>: Rewrite to adapt to how things are
+       to be done now.
+       * i386/linux/Makefrag.am: New file.
+       * linux/Makefrag.am: Likewise.
+
+       * Makefile.in: Move file...
+       * Makefrag.am: ... here.
+       * i386/Makefile.in: Move file...
+       * i386/Makefrag.am: ... here.
+       * i386/linux/Makefile.in: Remove file.
+
+       * doc/Makefile.in: Remove file.
+       * doc/Makefrag.am: New file.
+       * tests/Makefrag.am: Likewise.
+       * tests/test-mbchk.in: Likewise.
+
+       * configfrag.ac: New file.
+       * tests/configfrag.ac: Likewise.
+       * Makerules.am (DEFINES): Convert those into...
+       * configfrag.ac: ... AC_DEFINE instantiations.
+       * i386/Makerules.in (DEFINES): Convert those into...
+       * i386/configfrag.ac: ... AC_DEFINE instantiations.
+       * i386/Makerules.in: Remove file.
+       * i386/configfrag.ac (AC_PREREQ, AC_INIT, AC_CONFIG_SRCDIR)
+       (AC_CONFIG_SUBDIRS, AC_CONFIG_FILES, AC_OUTPUT): Don't invoke.
+       (../version.m4): Don't include.
+       (--disable-lpr): Rework configuration option.
+       (--disable-default-device-drivers): Move configuration option to...
+       * configfrag.ac: ... here.
+       * configure.ac (AC_CONFIG_AUX_DIR, AM_INIT_AUTOMAKE): Instantiate.
+       (AC_PREFIX_DEFAULT, AC_CONFIG_SUBDIRS): Don't invoke.
+       <Output variable `systype'>: Rework the whole section.
+       <Options> (--enable-kdb, --disable-kmsg): Move into `configfrag.ac' and
+       adapt.
+       <Programs> (AM_PROG_AS, AM_PROG_CC_C_O): Instantiate.
+       (AC_CHECK_PROG): Move instantiation searching for a `mbchk' program
+       into `tests/configfrag.ac'.
+       (AC_CHECK_PROG): Instantiate to search for a `patch' program.
+       <configure fragments> (tests/configfrag.ac, configfrag.ac)
+       (linux/configfrag.ac): Include files.
+       (i386/configfrag.ac): Include file if appropriate.
+       (AC_CONFIG_HEADER): Instantiate for `config.h'.
+       (AC_CONFIG_FILES): Remove `Makerules' and `doc/Makefile'.
+       (AC_CONFIG_COMMANDS_POST): Instantiate for `config.status.dep.patch'.
+       (AC_CONFIG_COMMANDS): Instantiate for
+       `Makefile.correct_output_files_for_.S_files.patch' and (the
+       nonexistent) `Makefile.dependency_tracking_for_.S_files.patch'.
+       * Makefile.dependency_tracking_for_.S_files.patch: New file.
+       * config.status.dep.patch: Likewise.
+       * bogus/bootstrap_symbols.h: Remove file.
+       * configfrag.ac: AC_DEFINE `BOOTSTRAP_SYMBOLS' to `0'.
+       * bogus/cpus.h: Remove file.
+       * configfrag.ac: AC_DEFINE `NCPUS' to `1'.  AH_TEMPLATE
+       `MULTIPROCESSOR'.
+       * bogus/fast_tas.h: Remove file.
+       * configfrag.ac: AC_DEFINE `FAST_TAS' to `0'.
+       * bogus/hw_footprint.h: Remove file.
+       * configfrag.ac: AC_DEFINE `HW_FOOTPRINT' to `0'.
+       * bogus/mach_counters.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_COUNTERS' to `0'.
+       * bogus/mach_debug.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_DEBUG' to `1'.
+       * bogus/mach_fixpri.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_FIXPRI' to `1'.
+       * bogus/mach_host.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_HOST' to `0'.
+       * bogus/mach_ipc_compat.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_IPC_COMPAT' to `1'.
+       * bogus/mach_ipc_debug.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_IPC_DEBUG' to `1'.
+       * bogus/mach_ipc_test.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_IPC_TEST' to `0'.
+       * bogus/mach_kdb.h: Remove file.
+       * configfrag.ac (--disable-kdb): AC_DEFINE `MACH_KDB' to `0'.
+       * bogus/mach_ldebug.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_LDEBUG' to `0'.
+       * bogus/mach_lock_mon.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_LOCK_MON' to `0'.
+       * bogus/mach_machine_routines.h: Remove file.
+       * configfrag.ac: Add comment about not AC_DEFINEing
+       `MACH_MACHINE_ROUTINES' to `0'.
+       * bogus/mach_mp_debug.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_MP_DEBUG' to `0'.
+       * bogus/mach_pagemap.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_PAGEMAP' to `1'.
+       * bogus/mach_pcsample.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_PCSAMPLE' to `1'.
+       * bogus/mach_ttd.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_TTD' to `0'.
+       * bogus/mach_vm_debug.h: Remove file.
+       * configfrag.ac: AC_DEFINE `MACH_VM_DEBUG' to `1'.
+       * bogus/power_save.h: Remove file.
+       * configfrag.ac: AC_DEFINE `POWER_SAVE' to `1'.
+       * bogus/simple_clock.h: Remove file.
+       * configfrag.ac: AC_DEFINE `SIMPLE_CLOCK' to `0'.
+       * bogus/stat_time.h: Remove file.
+       * configfrag.ac: AC_DEFINE `STAT_TIME' to `1'.
+       * bogus/xpr_debug.h: Remove file.
+       * configfrag.ac: AC_DEFINE `XPR_DEBUG' to `1'.
+       * i386/bogus/com.h: Remove file.
+       * i386/configfrag.ac: AC_DEFINE `NCOM' to `4'.
+       * i386/bogus/fpe.h: Remove file.
+       * i386/configfrag.ac: AC_DEFINE `FPE' to `0'.
+       * i386/bogus/lpr.h: Remove file.
+       * i386/configfrag.ac: AC_DEFINE `NLPR' to `1'.
+       * i386/bogus/mach_machine_routines.h: Remove file.
+       * i386/configfrag.ac: AC_DEFINE `MACH_MACHINE_ROUTINES' to `1'.
+       * i386/bogus/platforms.h: Remove file.
+       * i386/configfrag.ac: AC_DEFINE `AT386' to `1'.
+       * i386/bogus/rc.h: Remove file.
+       * i386/configfrag.ac: AC_DEFINE `RCLINE' to `-1' and `RCADDR' to 
`0x3f8'.
+
+       * Makerules.in: Move file...
+       * Makerules.am: ... here.
+
+       * linux/configfrag.ac (AC_PREREQ, AC_INIT, AC_CONFIG_SRCDIR)
+       (AC_CONFIG_HEADER, AC_CANONICAL_HOST, hurd_SYSTYPE, AC_CONFIG_FILES)
+       (AC_OUTPUT): Don't invoke.
+       (../../version.m4, ../../Drivers.macros, ../../aclocal.m4): Don't
+       include.
+       <case "$host_cpu">: Only evaluate for i386.
+       (--disable-default-device-drivers): Remove configuraion option.
+       (LINUX_DEV, __KERNEL__): AC_DEFINE these.
+       (scsi, net, pcmcia, wireless): Remove AC_DRIVER_CLASS instantiations.
+       (device_driver_group): New shell function.
+       (AC_OPTION, AC_OPTION_nodef): New functions.
+       (linux_DRIVER): Rename function to AC_Linux_DRIVER and adapt.
+       (linux_DRIVER_nodef): Likewise to AC_Linux_DRIVER_nodef.
+       <Configuration options>: Adapt to the new functions introduced above
+       and re-position parts.
+       <Process device driver groups>: Adapt to the changes related to device
+       driver groups.
+       * linux/configure.in <AC_CONFIG_LINKS>: Move to...
+       * linux/configfrag.ac: ... here.
+       * linux/configure.in: Remove file.
+       * linux/configure: Likewise.
+       * i386/linux/Makerules.in: Likewise.
+       * Drivers.macros: Likewise.
+
+       * i386/linux/configure.ac: Move file...
+       * linux/configfrag.ac: ... here.
+       * i386/linux/configure: Remove file.
+       * i386/linux/device-drivers.h.in: Likewise.
+
+       * i386/configure.in: Move file...
+       * i386/configfrag.ac: ... here.
+       * i386/configure: Remove file.
+
+       * config.guess: Remove file.
+       * config.sub: Likewise.
+       * install-sh: Likewise.
+
+       * i386/Files: Remove file.
+       * i386/Subdirs: Likewise.
+       * linux/Files: Likewise.
+       * linux/Subdirs: Likewise.
+
+2006-10-13  Thomas Schwinge  <address@hidden>
+
+       * configure.in: Move file...
+       * configure.ac: ... here.
+
+       * Makerules.in (ASFLAGS): Don't define `ASSEMBLER'.
+       * i386/i386/cpu_number.h: Check for `__ASSEMBLER__' instead of
+       `ASSEMBLER'.
+       * i386/i386/debug.h: Likewise.
+       * i386/i386/ipl.h: Likewise.
+       * i386/i386/ldt.h: Likewise.
+       * i386/i386/proc_reg.h: Likewise.
+       * i386/i386/seg.h: Likewise.
+       * i386/i386/trap.h: Likewise.
+       * i386/include/mach/i386/kern_return.h: Likewise.
+       * i386/include/mach/i386/vm_types.h: Likewise.
+       * i386/intel/pmap.h: Likewise.
+       * include/mach/boolean.h: Likewise.
+       * include/mach/boot.h: Likewise.
+       * include/mach/error.h: Likewise.
+       * kern/syscall_emulation.h: Likewise.
+
+       * configure: Regenerate.
+       * i386/configure: Likewise.
+       * i386/linux/configure: Likewise.
+       * linux/configure: Likewise.
+
+2006-10-12  Thomas Schwinge  <address@hidden>
+
+       * version.m4 (AC_PACKAGE_VERSION): Let's name it `1.3.99'.
+
+       * configure: Regenerate.
+       * i386/configure: Likewise.
+       * i386/linux/configure: Likewise.
+       * linux/configure: Likewise.
+
+       * version.m4: Rewrite.
+       * configure.in: Adapt to the above.
+       * i386/configure.in: Likewise.
+       * i386/linux/configure.ac: Likewise.
+       * linux/configure.in: Likewise.
+
+2006-10-09  Thomas Schwinge  <address@hidden>
+
+       * ddb/tr.h: Insert the content of `bogus/mach_assert.h' instead of
+       including it.
+       * i386/i386/loose_ends.c: Likewise.
+       * bogus/mach_assert.h: Remove file.
+
+       * bogus/panic.c: Remove file.
+
+       * linux/src/drivers/scsi/in2000.c (in2000_proc_info) [PROC_INTERFACE]:
+       Don't consider `__DATE__' and `__TIME__'.
+
+2006-10-08  Thomas Schwinge  <address@hidden>
+
+       * linux/dev/drivers/scsi/scsi.h: Move file...
+       * linux/src/drivers/scsi/scsi.h: ... here, overwriting the old file.
+
+       * linux/dev/drivers/scsi/seagate.c: Move file...
+       * linux/src/drivers/scsi/seagate.c: ... here, overwriting the old file.
+
+       * linux/dev/drivers/scsi/aha152x.c: Move file...
+       * linux/src/drivers/scsi/aha152x.c: ... here, overwriting the old file.
+
+       * linux/dev/drivers/scsi/sr.c: Move file...
+       * linux/src/drivers/scsi/sr.c: ... here, overwriting the old file.
+
+       * linux/dev/drivers/scsi/sd_ioctl.c: Move file...
+       * linux/src/drivers/scsi/sd_ioctl.c: ... here, overwriting the old file.
+
+       * linux/dev/drivers/scsi/sd.c: Move file...
+       * linux/src/drivers/scsi/sd.c: ... here, overwriting the old file.
+
+       * linux/dev/drivers/scsi/hosts.c: Remove file.
+       * linux/dev/drivers/scsi/scsi.c: Likewise.
+
+       * linux/dev/drivers/block/ide.c: Move file...
+       * linux/src/drivers/block/ide.c: ... here, overwriting the old file.
+
+       * linux/dev/drivers/block/ide-cd.c: Remove file.
+       * linux/src/drivers/block/ide-cd.c (cdrom_sleep): Don't define function
+       `#ifndef MACH'.
+
+2006-10-07  Thomas Schwinge  <address@hidden>
+
+       * i386/linux/configure: Regernerate.
+       * i386/linux/device-drivers.h.in: Likewise.
+
+       * Drivers.macros (AC_DRIVER, AC_DRIVER_nodef): Rewrite to allow options
+       with dashes in them, make it usable more universally and enhance the
+       generated comments in header files.
+       * i386/linux/configure.ac (linux_DRIVER, linux_DRIVER_nodef): Enhance
+       DESCRIPTION.
+       (u1434f): Rename to `u14-34f'.
+       (smcultra): Rename to `smc-ultra'.
+       (smcultra32): Rename to `smc-ultra32'.
+       (hpplus): Rename to `hp-plus'.
+       (ne2kpci): Rename to `ne2k-pci'.
+       (viarhine): Rename to `via-rhine'.
+       (intelgige): Rename to `intel-gige'.
+       (winbond840): Rename to `winbond-840'.
+       (AC_PCMCIA_OPTION): Remove function.
+       (pcmcia-isa): Use `AC_DRIVER' instead of `AC_PCMCIA_OPTION'.
+       * i386/README-Drivers: Update accordingly.
+
+2006-10-03  Thomas Schwinge  <address@hidden>
+
+       [task #5941 -- Linker script for GNU Mach]
+
+       * Makefile.in (kernel.o): Remove `$(systype)-objfiles-prepend' hackery.
+       * i386/Makefile.in (sysdep.a): Likewise.
+       * i386/Makerules.in: Likewise.
+       (LDFLAGS-kernel): Point to the linker script.
+       * i386/i386at/boothdr.S (_start): Don't put into `.text', but into
+       `.text.start' instead.
+       * i386/ldscript: Change to put `.text' at 0x100000 and put
+       `.text.start' first into `.text'.
+
+       * i386/ldscript: New file, copied from `/lib/ldscripts/elf_i386.x' of a
+       GNU Binutils 2.16.1 installation.
+
+2006-09-25  Stefan Siegl  <address@hidden>
+
+       * linux/dev/glue/net.c (device_get_status): Reworked to not read
+       from STATUS.  Fill `struct iw_point' correctly if necessary.
+
+2006-09-23  Stefan Siegl  <address@hidden>
+
+       * i386/linux/configure: Regenerate.
+       * i386/linux/device-drivers.h.in: Likewise.
+
+       * i386/linux/configure.ac (AC_PCMCIA_OPTION): New function.
+       (--disable-pcmcia-isa): New configuration option to disable ISA-bus
+       support in the pcmcia core, which is otherwise enabled now by default.
+       * doc/mach.texi (Configuration): Briefly document the new configuration
+       option.
+       * i386/README-Drivers: Likewise.
+
+2006-09-20  Thomas Schwinge  <address@hidden>
+
+       * configure: Regenerate.
+       * i386/configure: Likewise.
+       * i386/linux/configure: Likewise.
+       * i386/linux/device-drivers.h.in: Likewise.
+
+       * Drivers.macros (AC_DRIVER_ALIAS): Remove definition.
+       (AC_DRIVER): Extend to take a `description' parameter and consider
+       `$enable_default_device_drivers'.
+       (AC_DRIVER_nodef): New definition.
+       * configure.in (options kdb, kmsg): Remove redundancy.
+       * i386/configure.in (option default-device-drivers): New option.
+       (option lpr): Consider `$enable_default_device_drivers'.
+       * i386/linux/configure.ac: Rework substantially.  Remove all aliases.
+       Rename some of the device driver options.
+       (option default-device-drivers): New option.
+       (linux_DRIVER): Take care about a `description' parameter and don't
+       invoke AC_DRIVER_ALIAS.
+       (linux_DRIVER_nodef): New definition.
+       Adapt all usages of AC_DRIVER and linux_DRIVER to provide a
+       `description' parameter.
+       (g_NCR5380, NCR53c406a, eata_dma, wavelan, atp): Change from AC_DRIVER
+       to AC_DRIVER_nodef to have these device drivers disabled by default.
+       * doc/mach.texi: Add a note about the outdatedness to the configuration
+       option table.
+       * i386/README-Drivers: Update.
+
+2006-09-19  Samuel Thibault  <address@hidden>
+
+       [bug #17338 -- GNU Mach vs. GCC 4.1]
+       * i386/i386/seg.h (struct pseudo_descriptor): Pack structure and
+       move the padding field to the end.
+       (lgdt): Pass the whole structure to the lgdt assembly command.
+       (lidt): Likewise.
+
+2006-08-06  Thomas Schwinge  <address@hidden>
+
+       * DEVELOPMENT: Update.
+
+2006-07-31  Stefan Siegl  <address@hidden>
+
+       * doc/mach.texi (Configuration): Document the new PCMCIA drivers a bit
+       more.
+       * i386/README-Drivers: Likewise.
+
+2006-07-27  Thomas Schwinge  <address@hidden>
+
+       * i386/linux/configure: Regenerate.
+
+       * i386/linux/configure.ac: Pull in the pcmcia code only if really
+       needed.
+
+       * doc/mach.texi (Configuration): Very briefly document the new drivers.
+       * i386/README-Drivers: Likewise.
+
+       * linux/dev/include/linux/types.h (_MACH_SA_SYS_TYPES_H_): Define.
+
+       * i386/linux/configure: Regenerate.
+       * i386/linux/device-drivers.h.in: Likewise.
+
+2006-07-27  Stefan Siegl  <address@hidden>
+
+       * i386/linux/configure.ac (pcmcia, wireless): New driver classes.
+       (i82365, 3c574_cs, 3c589_cs, axnet_cs, fmvj18x_cs, nmclan_cs, pcnet_cs)
+       (smc91c92_cs, xirc2ps_cs, orinoco_cs): New drivers.
+       * i386/linux/Makefile.in (linux-pcmcia-cs-modules-files)
+       (linux-pcmcia-cs-clients-files, linux-pcmcia-cs-wireless-files): New
+       variables.  Add `vpath's to the files locations.
+       (all-linux-files): Add the three new variables.
+       (linux-pcmcia-cs-modules-flags, linux-pcmcia-cs-clients-flags)
+       (linux-pcmcia-cs-wireless-flags): New variables.
+       (linux-flags): Add code to handle the above files and flags.
+
+       * i386/i386at/i386at_ds_routines.c (emulation_list)
+       [LINUX_DEV && CONFIG_INET && CONFIG_PCMCIA]: Add the Linux pcmcia
+       emulation structure.
+       * linux/dev/glue/net.c: Include <linux/wireless.h>.
+       (device_get_status): Rewrite function.
+       (device_set_status): New function.
+       (linux_net_emulation_ops): Add `device_set_status' at the appropriate
+       position.
+       * linux/dev/init/main.c (linux_init) [CONFIG_PCMCIA]: Call pcmcia_init.
+
+       * linux/pcmcia-cs/glue/ds.c: New file.
+       * linux/pcmcia-cs/glue/pcmcia.c: Likewise.
+       * linux/pcmcia-cs/glue/pcmcia_glue.h: Likewise.
+       * linux/pcmcia-cs/glue/wireless_glue.h: Likewise.
+
+       * linux/pcmcia-cs/clients/xirc2ps_cs.c (busy_loop): Replace the code by
+       a call to __udelay.
+       * linux/pcmcia-cs/include/linux/init.h: Adapt to our Linux environment.
+       * linux/pcmcia-cs/include/linux/slab.h: Use `#include', not
+       `#include_next'.
+       * linux/pcmcia-cs/include/pcmcia/mem_op.h: Adapt to our Linux
+       environment and fix GCC 4.0 complaints.
+       * linux/pcmcia-cs/include/pcmcia/version.h: Always assume that
+       CONFIG_PCMCIA is not defined.
+       * linux/pcmcia-cs/modules/cs.c (init_pcmcia_cs): Don't make it static.
+       * linux/pcmcia-cs/modules/ds.c: Use some magic to avoid duplicate
+       definition `io_req_t'.
+       (ds_open, ds_release, ds_read, ds_write, ds_select, ds_poll, ds_fops):
+       Hide functions if MACH is defined.
+       Likewise for the module handling code.
+       (ds_ioctl): Use plain `memcpy' if MACH is defined.
+       (init_pcmcia_ds): Don't register charcater devices if MACH is defined.
+       Include "../glue/ds.c".
+       * linux/pcmcia-cs/modules/i82365.c (test_irq): Adapt to GNU Mach.
+       (init_i82365): Don't make it static.
+       * linux/pcmcia-cs/modules/pci_fixup.c (pci_devices): Don't define if
+       MACH is defined.
+       * linux/pcmcia-cs/wireless/orinoco.c: Adapt to our Linux environment.
+
+2006-07-27  Thomas Schwinge  <address@hidden>
+
+       Import a number of files from the pcmcia-cs package, version 3.2.8,
+       available from <http://pcmcia-cs.sourceforge.net/>.
+
+       * linux/pcmcia-cs/clients/3c574_cs.c: Import file.
+       * linux/pcmcia-cs/clients/3c589_cs.c: Likewise.
+       * linux/pcmcia-cs/clients/ax8390.h: Likewise.
+       * linux/pcmcia-cs/clients/axnet_cs.c: Likewise.
+       * linux/pcmcia-cs/clients/fmvj18x_cs.c: Likewise.
+       * linux/pcmcia-cs/clients/nmclan_cs.c: Likewise.
+       * linux/pcmcia-cs/clients/ositech.h: Likewise.
+       * linux/pcmcia-cs/clients/pcnet_cs.c: Likewise.
+       * linux/pcmcia-cs/clients/smc91c92_cs.c: Likewise.
+       * linux/pcmcia-cs/clients/xirc2ps_cs.c: Likewise.
+       * linux/pcmcia-cs/include/linux/crc32.h: Likewise.
+       * linux/pcmcia-cs/include/linux/init.h: Likewise.
+       * linux/pcmcia-cs/include/linux/slab.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/bulkmem.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/bus_ops.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/ciscode.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/cisreg.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/cistpl.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/cs.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/cs_types.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/driver_ops.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/ds.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/mem_op.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/ss.h: Likewise.
+       * linux/pcmcia-cs/include/pcmcia/version.h: Likewise.
+       * linux/pcmcia-cs/modules/bulkmem.c: Likewise.
+       * linux/pcmcia-cs/modules/cirrus.h: Likewise.
+       * linux/pcmcia-cs/modules/cistpl.c: Likewise.
+       * linux/pcmcia-cs/modules/cs.c: Likewise.
+       * linux/pcmcia-cs/modules/cs_internal.h: Likewise.
+       * linux/pcmcia-cs/modules/ds.c: Likewise.
+       * linux/pcmcia-cs/modules/ene.h: Likewise.
+       * linux/pcmcia-cs/modules/i82365.c: Likewise.
+       * linux/pcmcia-cs/modules/i82365.h: Likewise.
+       * linux/pcmcia-cs/modules/o2micro.h: Likewise.
+       * linux/pcmcia-cs/modules/pci_fixup.c: Likewise.
+       * linux/pcmcia-cs/modules/ricoh.h: Likewise.
+       * linux/pcmcia-cs/modules/rsrc_mgr.c: Likewise.
+       * linux/pcmcia-cs/modules/smc34c90.h: Likewise.
+       * linux/pcmcia-cs/modules/ti113x.h: Likewise.
+       * linux/pcmcia-cs/modules/topic.h: Likewise.
+       * linux/pcmcia-cs/modules/vg468.h: Likewise.
+       * linux/pcmcia-cs/modules/yenta.h: Likewise.
+       * linux/pcmcia-cs/wireless/hermes.c: Likewise.
+       * linux/pcmcia-cs/wireless/hermes.h: Likewise.
+       * linux/pcmcia-cs/wireless/hermes_rid.h: Likewise.
+       * linux/pcmcia-cs/wireless/ieee802_11.h: Likewise.
+       * linux/pcmcia-cs/wireless/orinoco.c: Likewise.
+       * linux/pcmcia-cs/wireless/orinoco.h: Likewise.
+       * linux/pcmcia-cs/wireless/orinoco_cs.c: Likewise.
+
+2006-07-24  Thomas Schwinge  <address@hidden>
+
+       * Makerules.in (%.h %_user.c): Add `%.cli.d' to the target list.
+       Create these files by specifying `-MD' as a flag for mig and rename the
+       resulting files as needed.
+       Include these `*.cli.d' files instead of `*.migu.d' files.
+       (%_interface.h %_server.c): Likewise for `%.srv.d' / `*.migs.d'.
+       (%.migs.d, %.migu.d): Remove targets.
+       * Makefile.in (clean): Adapt to the above.
+       * i386/Makefile.in (clean): Likewise.
+
+2006-06-30  Samuel Thibault  <address@hidden>
+
+       * i386/i386at/kd_mouse.c (mouse_char_in, mouse_char) Remove variables.
+       (mouse_char_index) New variable.
+       (mouse_handle_byte, kd_mouse_read): Use MOUSEBUF instead of MOUSE_CHAR
+       for storing incoming command characters.
+       (kd_mouse_read_reset): New function.
+       (ibm_ps2_mouse_open, ibm_ps2_mouse_close): Call new kd_mouse_read_reset
+       function.
+
+2006-06-09  Stefan Siegl  <address@hidden>
+
+       * linux/dev/include/asm-i386/uaccess.h: New dummy file.
+       * linux/dev/include/linux/pm.h: Likewise.
+       * linux/dev/include/linux/threads.h: Likewise.
+       * linux/src/include/linux/symtab_begin.h: New file from Linux 2.0.40.
+       * linux/src/include/linux/symtab_end.h: Likewise.
+       * linux/src/include/linux/module.h: Update from Linux 2.0.40 with minor
+       changes.
+       * linux/src/include/linux/list.h: New file from Linux 2.2.26.
+       * linux/src/include/linux/kcomp.h: Likewise with minor changes.
+       * linux/src/include/linux/wait.h: Update from Linux 2.2.26.
+       * linux/src/include/linux/wireless.h: Likewise.
+       * linux/src/include/asm-i386/bitops.h [__KERNEL__] (ffs, hweight32)
+       (hweight16, hweight8): Copy from Linux 2.2.26.
+
+       * kern/printf.c (_doprnt): Support printing of pointer addresses.
+
+2006-05-14  Roland McGrath  <address@hidden>
+
+       [sync from HEAD, 2002-06-17]
+       * device/if_hdr.h: Replace ancient UCB copyright terms with current
+       approved UCB terms.
+       * include/sys/reboot.h: Likewise.
+       * include/device/disk_status.h: Likewise.
+       * include/device/tape_status.h: Likewise.
+       * device/net_io.c: Remove advertising clause from UCB copyright terms.
+       * include/device/audio_status.h: Likewise.
+       * include/device/bpf.h: Likewise.
+
+2006-05-14  Thomas Schwinge  <address@hidden>
+
+       * i386/i386at/autoconf.c (bus_device_init) <lpr> [! LINUX_DEV]: Depend
+       on `MACH_LPR' instead.
+       * i386/i386at/lpr.c: Fix obsolescent `#else' / `#endif' syntax.
+
+2006-05-12  Stefan Siegl  <address@hidden>
+
+       * linux/dev/glue/kmem.c (vfree): Panic if `vmalloc_list_lookup' did
+       NOT succeed.
+
+2006-05-08  Thomas Schwinge  <address@hidden>
+
+       * DEVELOPMENT: Document Samuel's patch.
+
+2006-05-08  Samuel Thibault  <address@hidden>
+
+       [bug #7118 -- GNU Mach can't handle 1G memory]
+       * i386/i386at/model_dep.c (mem_size_init): Limit memory to what can
+       actually be used (minus a little extra for virtual mappings).
+       * i386/intel/pmap.c (pmap_bootstrap): Extend the virtual mapping area
+       according to memory size for at least being able to manage it.  But
+       look out for wrap and limit it to kernel adresses.  Remove duplicate
+       computing.
+
+2006-04-27  Richard Braun  <address@hidden>
+           Manuel Menal  <address@hidden>
+
+       * device/if_hdr.h (struct ifnet): Added new members `if_snd_port_list'
+       and `if_snd_port_list_lock'.
+       * device/net_io.c: Reworked to improve BPF support.  Filters can be
+       applied to ingress packets, egress packets, or both.
+       * device/subrs.c: Initialize the `if_snd_port_list' and
+       `if_snd_port_list_lock'.
+       * include/device/bpf.h [0]: Enable unconditionally.
+       Include <sys/types.h>.
+       (BPF_IN, BPF_OUT): New macros.
+       * include/device/net_status.h (NETF_TYPE_MASK, NETF_IN, NETF_OUT): New
+       macros.
+       (struct net_rcv_msg): New member `sent'.
+       * linux/dev/glue/net.c: Mark ingress packets as received and inject
+       egress packets into the packet filters.
+
+2006-04-26  Thomas Schwinge  <address@hidden>
+
+       * Makefile.in: Replace `make' with `$(MAKE)'.
+       * i386/Makefile.in: Likewise.
+       Reported by Leonardo Lopes Pereira <address@hidden>.
+
+2006-04-08  Thomas Schwinge  <address@hidden>
+
+       * i386/Makefile.in (INCLUDES): Don't add `$(srcdir)/bogus'.
+       * i386/Makerules.in (INCLUDES): Add
+       `$(abs_top_srcdir)/$(systype)/bogus'.
+       Reported by Samuel Thibault <address@hidden>.
+
+2006-04-02  Thomas Schwinge  <address@hidden>
+
+       * Makerules.in (%_user.c, %_server.c): Those are `.PRECIOUS'.
+       (%.migs.d, %.migu.d): New targets.
+       (%.migs_d, %.migu_d, %.migsh_d, %.miguh_d): Remove targets.
+       Adapt the `include's to the renamed targets.
+       * Makefile.in (clean): Adapt to the renamed targets.
+       * i386/Makefile.in (clean): Likewise.
+
+       * i386/Makefile.in (boothdr.o): New target.
+
+2006-03-21  Thomas Schwinge  <address@hidden>
+
+       * Makefile.in (clean): Also remove `kernel.gz', `kernel.stripped' and
+       `kernel.stripped.gz'.
+
+       * Makefile.in (kernel.o): Handle `$(systype)-objfiles-prepend'.
+       * i386/Makefile.in (sysdep.a): Likewise.
+       * i386/Makerules.in (kernel-objfiles-prepend): Transform variable into
+       `$(systype)-objfiles-prepend'.
+       (kernel.o): Remove target.
+
+2006-03-20  Thomas Schwinge  <address@hidden>
+
+       * DEVELOPMENT: Document the NORMA removal.
+
+2006-03-20  Leonardo Lopes Pereira  <address@hidden>
+
+       Remove unused and unsupported code.  Consult the file `DEVELOPMENT'
+       for details.
+
+       [patch #4982 -- remove of unused / unsuported functions of
+       gnumach-1-branch]
+       * bogus/norma_device.h: Remove file.
+       * bogus/norma_ether.h: Likewise.
+       * bogus/norma_ipc.h: Likewise.
+       * bogus/norma_task.h: Likewise.
+       * bogus/norma_vm.h: Likewise.
+       * include/mach/mach_norma.defs: Likewise.
+       * include/mach/norma_task.defs: Likewise.
+       * include/mach/norma_special_ports.h: Likewise.
+       * Makefile.in (bogus-files): Remove `norma_device.h', `norma_ether.h',
+       `norma_ipc.h', `norma_task.h' and `norma_vm.h'.
+       (mach-headers): Remove `mach_norma.defs', `norma_task.defs' and
+       `norma_special_ports.h'.
+       * device/ds_routines.c: Don't include <norma_device.h> anymore and
+       adapt all users of NORMA_DEVICE as if it were always defined to `0'.
+       * device/net_io.c: Likewise for <norma_ether.h>, NORMA_ETHER.
+       * kern/machine.c: Likewise.
+       * ddb/db_command.c: Likevise for <norma_ipc.h>, NORMA_IPC.
+       * ipc/ipc_init.c: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_kmsg.h: Likewise.
+       * ipc/ipc_mqueue.c: Likewise.
+       * ipc/ipc_notify.c: Likewise.
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_port.h: Likewise.
+       * ipc/ipc_space.c: Likewise.
+       * ipc/ipc_space.h: Likewise.
+       * ipc/mach_msg.c: Likewise.
+       * kern/ast.c: Likewise.
+       * kern/debug.c: Likewise.
+       * kern/exception.c: Likewise.
+       * kern/startup.c: Likewise.
+       * vm/memory_object.c: Likewise.
+       * vm/vm_map.c: Likewise.
+       * kern/ipc_kobject.c: Likewise for <norma_task.h>, NORMA_TASK.
+       * kern/task.c: Likewise.
+       * kern/task.h: Likewise.
+       * ddb/db_command.c: Likewise for <norma_vm.h>, NORMA_VM.
+       * device/dev_pager.c: Likewise.
+       * include/mach/mach_types.defs: Likewise.
+       * include/mach/mach_types.h: Likewise.
+       * include/mach/memory_object_default.defs: Likewise.
+       * include/mach/memory_object.defs: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * kern/ipc_kobject.c: Likewise.
+       * kern/ipc_mig.c: Likewise.
+       * kern/startup.c: Likewise.
+       * vm/memory_object.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_object.h: Likewise.
+       * vm/vm_pageout.c: Likewise.
+
+2006-03-19  Thomas Schwinge  <address@hidden>
+
+       * DEVELOPMENT: Document the FIPC removal.
+
+2006-03-19  Leonardo Lopes Pereira  <address@hidden>
+
+       Remove unused and unsupported code.  Consult the file `DEVELOPMENT'
+       for details.
+
+       [patch #4982 -- remove of unused / unsuported functions of
+       gnumach-1-branch]
+       * ipc/fipc.c: Remove file.
+       * ipc/fipc.h: Likewise.
+       * Makefile.in (ipc-cfiles): Remove `fipc.c'.
+       (ipc-files): Remove `fipc.h'.
+       * device/device_init.c [FIPC]: Remove code.
+       * device/net_io.c [FIPC]: Likewise.
+       * include/mach/syscall_sw.h [FIPC]: Likewise.
+       * kern/syscall_sw.c [FIPC]: Likewise.
+
+2006-03-15  Thomas Schwinge  <address@hidden>
+
+       * configure.in: Check for strip and gzip.
+       * configure: Regenerated.
+       * Makerules.in (GZIP, STRIP): New variables.
+       (%.gz, %.stripped): New targets.
+
+2006-03-04  Roland McGrath  <address@hidden>
+
+       * Makefile.in (DEFS): Substitute once and use the variable elsewhere.
+
+2006-03-04  Samuel Thibault  <address@hidden>
+
+       [patch #4737 -- User TSS fixup]
+       * i386/i386/iopb.c: Include "vm_param.h".
+       (io_tss_init): Fix address and limit of user TSS.
+
+2006-03-04  Thomas Schwinge  <address@hidden>
+
+       Remove unused and unsupported code.  Consult the file
+       `DEVELOPMENT' for details.  Partly based on suggestions by
+       Gianluca Guida <address@hidden>.
+
+       * i386/bogus/par.h: Remove file.
+       * i386/i386at/if_par.c: Likewise.
+       * i386/i386at/if_par.h: Likewise.
+       * i386/i386at/conf.c: Don't include <par.h> anymore and adapt all users
+       of NPAR as if it were always defined to `0'.
+       * i386/i386at/lpr.c: Likewise.
+
+       * i386/bogus/de6c.h: Remove file.
+       * i386/i386at/if_de6c.c: Likewise.
+       * i386/i386at/if_de6c.h: Likewise.
+       * i386/i386at/if_de6s.S: Likewise.
+       * i386/i386at/conf.c: Don't include <de6c.h> anymore and adapt all
+       users of NDE6C as if it were always defined to `0'.
+       * i386/i386at/lpr.c: Likewise.
+
+2006-02-20  Thomas Schwinge  <address@hidden>
+
+       Remove unused and unsupported code.  Consult the file
+       `DEVELOPMENT' for details.  Partly based on suggestions by
+       Gianluca Guida <address@hidden>.
+
+       * i386/bogus/blit.h: Remove file.
+       * i386/i386at/blit.c: Likewise.
+       * i386/i386at/blitreg.h: Likewise.
+       * i386/i386at/blituser.h: Likewise.
+       * i386/i386at/blitvar.h: Likewise.
+       * i386/i386at/conf.c: Don't include <blit.h> anymore and adapt all
+       users of NBLIT as if it were always defined to `0'.
+       * i386/i386at/kd.c: Likewise.
+       (blit_init): Remove definition.
+       (blit_present): Likewise and adapt all users as if it were always
+       defined to `FALSE'.
+       * i386/Makefile.in (i386at-files): Remove `blit.c'.
+
+       * bogus/net_atm.h: Remove file.
+       * Makefile.in (bogus-files): Remove `net_atm.h'.
+       * kern/syscall_sw.c: Don't include <net_atm.h> anymore and adapt all
+       users of NET_ATM as if it were always defined to `0'.
+       * kern/task.c: Likewise.
+       * kern/task.h: Likewise.
+       * kern/thread.c: Likewise.
+       * kern/thread.h: Likewise.
+
+       * util/about_to_die.c: Remove file.
+       * util/config.h: Likewise.
+       * util/cpu.c: Likewise.
+       * util/cpu.h: Likewise.
+       * util/cpu_init.c: Likewise.
+       * util/cpu_subs.h: Likewise.
+       * util/debug.h: Likewise.
+       * util/die.c: Likewise.
+       * util/phys_mem.h: Likewise.
+       * util/ref_count.h: Likewise.
+       * util/cpus.h: Move from here...
+       * bogus/cpus.h: ... to here.
+       * Makefile.in (bogus-files): Add `cpus.h'.
+       (util-cfiles): Only contain `putchar.c' and `puts.c'.
+       (util-files): Only contain `$(util-cfiles)'.
+
+       * i386/util/NOTES: Remove file.
+       * i386/util/anno.c: Likewise.
+       * i386/util/anno.h: Likewise.
+       * i386/util/cpu.h: Likewise.
+       * i386/util/cpu_subs.h: Likewise.
+       * i386/util/cpu_tables_init.c: Likewise.
+       * i386/util/cpu_tables_load.c: Likewise.
+       * i386/util/crtn.S: Likewise.
+       * i386/util/debug.h: Likewise.
+       * i386/util/gdt.c: Likewise.
+       * i386/util/gdt.h: Likewise.
+       * i386/util/gdt_sels.h: Likewise.
+       * i386/util/i16/debug.h: Likewise.
+       * i386/util/i16/i16.h: Likewise.
+       * i386/util/i16/i16_die.c: Likewise.
+       * i386/util/i16/i16_gdt_init_temp.c: Likewise.
+       * i386/util/i16/i16_nanodelay.c: Likewise.
+       * i386/util/i16/i16_puts.c: Likewise.
+       * i386/util/i16/i16_writehex.c: Likewise.
+       * i386/util/i386_asm.sym: Likewise.
+       * i386/util/idt.c: Likewise.
+       * i386/util/idt.h: Likewise.
+       * i386/util/idt_inittab.S: Likewise.
+       * i386/util/idt_inittab.h: Likewise.
+       * i386/util/ldt.h: Likewise.
+       * i386/util/trap.h: Likewise.
+       * i386/util/trap_asm.sym: Likewise.
+       * i386/util/trap_dump.c: Likewise.
+       * i386/util/trap_dump_die.c: Likewise.
+       * i386/util/trap_handler.S: Likewise.
+       * i386/util/trap_return.S: Likewise.
+       * i386/util/tss.c: Likewise.
+       * i386/util/tss.h: Likewise.
+       * i386/util/tss_dump.c: Likewise.
+       * i386/util/vm_param.h: Likewise.
+
+       * i386/pc/NOTES: Remove file.
+       * i386/pc/debug.h: Likewise.
+       * i386/pc/exit.c: Likewise.
+       * i386/pc/gdt.h: Likewise.
+       * i386/pc/gdt_sels.h: Likewise.
+       * i386/pc/i16/i16_a20.c: Likewise.
+       * i386/pc/i16/i16_a20.h: Likewise.
+       * i386/pc/i16/i16_bios.h: Likewise.
+       * i386/pc/i16/i16_exit.c: Likewise.
+       * i386/pc/i16/i16_ext_mem.c: Likewise.
+       * i386/pc/i16/i16_init.c: Likewise.
+       * i386/pc/i16/i16_main.c: Likewise.
+       * i386/pc/i16/i16_pic.c: Likewise.
+       * i386/pc/i16/i16_putchar.c: Likewise.
+       * i386/pc/i16/i16_raw.c: Likewise.
+       * i386/pc/i16/i16_raw_test_a20.S: Likewise.
+       * i386/pc/i16/i16_real_int.S: Likewise.
+       * i386/pc/i16/i16_switch.h: Likewise.
+       * i386/pc/i16/phys_mem_collect.c: Likewise.
+       * i386/pc/i16/phys_mem_sources.h: Likewise.
+       * i386/pc/i16/raw_exit.c: Likewise.
+       * i386/pc/i16/raw_real_int.c: Likewise.
+       * i386/pc/ipl.h: Likewise.
+       * i386/pc/irq.h: Likewise.
+       * i386/pc/irq_list.h: Likewise.
+       * i386/pc/pc_asm.sym: Likewise.
+       * i386/pc/phys_mem.h: Likewise.
+       * i386/pc/phys_mem_add.c: Likewise.
+       * i386/pc/pic.c: Likewise.
+       * i386/pc/pic.h: Likewise.
+       * i386/pc/putchar.c: Likewise.
+       * i386/pc/real.h: Likewise.
+       * i386/pc/real_tss.c: Likewise.
+       * i386/pc/real_tss.h: Likewise.
+       * i386/pc/real_tss_def.S: Likewise.
+       * i386/pc/rv86/config.h: Likewise.
+       * i386/pc/rv86/gdt_sels.h: Likewise.
+       * i386/pc/rv86/idt_irq_init.c: Likewise.
+       * i386/pc/rv86/rv86_real_int.c: Likewise.
+       * i386/pc/rv86/rv86_real_int_asm.S: Likewise.
+       * i386/pc/rv86/rv86_reflect_irq.S: Likewise.
+       * i386/pc/rv86/rv86_trap_handler.S: Likewise.
+       * i386/pc/rv86/trap_handler.S: Likewise.
+
+       * i386/imps/Makefile.in: Remove file.
+       * i386/imps/apic.h: Likewise.
+       * i386/imps/cpu_number.h: Likewise.
+       * i386/imps/cpus.h: Likewise.
+       * i386/imps/imps.c: Likewise.
+       * i386/imps/impsasm.sym: Likewise.
+
+       * i386/dos/dos_buf.c: Remove file.
+       * i386/dos/dos_check_err.c: Likewise.
+       * i386/dos/dos_close.c: Likewise.
+       * i386/dos/dos_fstat.c: Likewise.
+       * i386/dos/dos_gettimeofday.c: Likewise.
+       * i386/dos/dos_io.h: Likewise.
+       * i386/dos/dos_open.c: Likewise.
+       * i386/dos/dos_read.c: Likewise.
+       * i386/dos/dos_rename.c: Likewise.
+       * i386/dos/dos_seek.c: Likewise.
+       * i386/dos/dos_tcgetattr.c: Likewise.
+       * i386/dos/dos_unlink.c: Likewise.
+       * i386/dos/dos_write.c: Likewise.
+       * i386/dos/i16/gdt.h: Likewise.
+       * i386/dos/i16/gdt_sels.h: Likewise.
+       * i386/dos/i16/i16_crt0.S: Likewise.
+       * i386/dos/i16/i16_crt0.h: Likewise.
+       * i386/dos/i16/i16_dos.h: Likewise.
+       * i386/dos/i16/i16_dos_mem.c: Likewise.
+       * i386/dos/i16/i16_exit.c: Likewise.
+       * i386/dos/i16/i16_main.c: Likewise.
+       * i386/dos/i16/i16_putchar.c: Likewise.
+       * i386/dos/i16/i16_vcpi.c: Likewise.
+       * i386/dos/i16/i16_xms.c: Likewise.
+       * i386/dos/i16/idt.h: Likewise.
+       * i386/dos/i16/phys_mem_sources.h: Likewise.
+       * i386/dos/putchar.c: Likewise.
+
+       * chips/atm.c: Remove file.
+       * chips/atmreg.h: Likewise.
+       * chips/audio.c: Likewise.
+       * chips/audio_config.h: Likewise.
+       * chips/audio_defs.h: Likewise.
+       * chips/bt431.c: Likewise.
+       * chips/bt431.h: Likewise.
+       * chips/bt455.c: Likewise.
+       * chips/bt455.h: Likewise.
+       * chips/bt459.c: Likewise.
+       * chips/bt459.h: Likewise.
+       * chips/bt478.c: Likewise.
+       * chips/bt478.h: Likewise.
+       * chips/build_font.c: Likewise.
+       * chips/cfb_hdw.c: Likewise.
+       * chips/cfb_misc.c: Likewise.
+       * chips/dc503.c: Likewise.
+       * chips/dc503.h: Likewise.
+       * chips/dtop.h: Likewise.
+       * chips/dtop_handlers.c: Likewise.
+       * chips/dtop_hdw.c: Likewise.
+       * chips/dz_7085.h: Likewise.
+       * chips/dz_defs.h: Likewise.
+       * chips/dz_hdw.c: Likewise.
+       * chips/eccreg.h: Likewise.
+       * chips/fb_hdw.c: Likewise.
+       * chips/fb_misc.c: Likewise.
+       * chips/fdc_82077.h: Likewise.
+       * chips/fdc_82077_hdw.c: Likewise.
+       * chips/frc.c: Likewise.
+       * chips/ims332.c: Likewise.
+       * chips/ims332.h: Likewise.
+       * chips/isdn_79c30.h: Likewise.
+       * chips/isdn_79c30_hdw.c: Likewise.
+       * chips/kernel_font.c: Likewise.
+       * chips/kernel_font.data: Likewise.
+       * chips/lance.c: Likewise.
+       * chips/lance.h: Likewise.
+       * chips/lance_mapped.c: Likewise.
+       * chips/lk201.c: Likewise.
+       * chips/lk201.h: Likewise.
+       * chips/mc_clock.c: Likewise.
+       * chips/mc_clock.h: Likewise.
+       * chips/mouse.c: Likewise.
+       * chips/nc.c: Likewise.
+       * chips/nc.h: Likewise.
+       * chips/nw.h: Likewise.
+       * chips/nw_mk.c: Likewise.
+       * chips/nw_mk.h: Likewise.
+       * chips/pm_defs.h: Likewise.
+       * chips/pm_hdw.c: Likewise.
+       * chips/pm_misc.c: Likewise.
+       * chips/scc_8530.h: Likewise.
+       * chips/scc_8530_hdw.c: Likewise.
+       * chips/screen.c: Likewise.
+       * chips/screen.h: Likewise.
+       * chips/screen_defs.h: Likewise.
+       * chips/screen_switch.c: Likewise.
+       * chips/screen_switch.h: Likewise.
+       * chips/serial_console.c: Likewise.
+       * chips/serial_defs.h: Likewise.
+       * chips/sfb_hdw.c: Likewise.
+       * chips/sfb_misc.c: Likewise.
+       * chips/spans.c: Likewise.
+       * chips/spans.h: Likewise.
+       * chips/tca100.c: Likewise.
+       * chips/tca100.h: Likewise.
+       * chips/tca100_if.c: Likewise.
+       * chips/tca100_if.h: Likewise.
+       * chips/vs42x_rb.h: Likewise.
+       * chips/xcfb_hdw.c: Likewise.
+       * chips/xcfb_misc.c: Likewise.
+       * chips/xcfb_monitor.h: Likewise.
+       * Makefile.in (chips-files): Only contain `busses.c' and `busses.h'.
+       * kern/syscall_sw.c: Don't include <chips/nw_mk.h> anymore.
+
+       * i386/i386at/asm_startup.h: Remove file.
+       * i386/i386at/phys_mem_grab_page.c: Likewise.
+       * i386/Makefile.in (i386at-files): Remove `phys_mem_grab_page.c'.
+
+       * i386/bogus/evc.h: Remove file.
+       * i386/i386at/kd.c: Don't include <evc.h> anymore and adapt all users
+       of NEVC as if it were always defined to `0'.
+       (evc1init): Remove definition and adapt all users as if it were always
+       defined to `FALSE'.
+
+       * i386/bogus/nscsi.h: Remove file.
+       * i386/i386at/model_dep.c: Don't include <nscsi.h> anymore and adapt
+       all users of NSCSI as if it were always defined to `0'.
+       (use_all_mem): Don't define anymore and adapt all users as if it were
+       always defined to `1'.
+       (NBBY, NBPW, DMA_MAX): Remove macros.
+       (alloc_dma_mem): Remove function.
+
+       * i386/bogus/asc.h: Remove file.
+       * i386/bogus/aha.h: Likewise.
+       * i386/bogus/eaha.h: Likewise.
+       * i386/bogus/sbic.h: Likewise.
+       * i386/bogus/sci.h: Likewise.
+       * i386/bogus/sii.h: Likewise.
+       * i386/bogus/siop.h: Likewise.
+       * i386/i386at/eisa.h: Likewise.
+       * scsi/adapters/README: Likewise.
+       * scsi/adapters/scsi_33C93.h: Likewise.
+       * scsi/adapters/scsi_33C93_hdw.c: Likewise.
+       * scsi/adapters/scsi_5380.h: Likewise.
+       * scsi/adapters/scsi_5380_hdw.c: Likewise.
+       * scsi/adapters/scsi_53C700.h: Likewise.
+       * scsi/adapters/scsi_53C700_hdw.c: Likewise.
+       * scsi/adapters/scsi_53C94.h: Likewise.
+       * scsi/adapters/scsi_53C94_hdw.c: Likewise.
+       * scsi/adapters/scsi_7061.h: Likewise.
+       * scsi/adapters/scsi_7061_hdw.c: Likewise.
+       * scsi/adapters/scsi_89352.h: Likewise.
+       * scsi/adapters/scsi_89352_hdw.c: Likewise.
+       * scsi/adapters/scsi_aha15.h: Likewise.
+       * scsi/adapters/scsi_aha15_hdw.c: Likewise.
+       * scsi/adapters/scsi_aha17_hdw.c: Likewise.
+       * scsi/adapters/scsi_dma.h: Likewise.
+       * scsi/adapters/scsi_user_dma.c: Likewise.
+       * scsi/adapters/scsi_user_dma.h: Likewise.
+       * scsi/compat_30.h: Likewise.
+       * scsi/disk_label.c: Likewise.
+       * scsi/mapped_scsi.c: Likewise.
+       * scsi/mapped_scsi.h: Likewise.
+       * scsi/pc_scsi_label.c: Likewise.
+       * scsi/rz.c: Likewise.
+       * scsi/rz.h: Likewise.
+       * scsi/rz_audio.c: Likewise.
+       * scsi/rz_cpu.c: Likewise.
+       * scsi/rz_disk.c: Likewise.
+       * scsi/rz_disk_bbr.c: Likewise.
+       * scsi/rz_host.c: Likewise.
+       * scsi/rz_labels.h: Likewise.
+       * scsi/rz_tape.c: Likewise.
+       * scsi/scsi.c: Likewise.
+       * scsi/scsi.h: Likewise.
+       * scsi/scsi2.h: Likewise.
+       * scsi/scsi_alldevs.c: Likewise.
+       * scsi/scsi_comm.c: Likewise.
+       * scsi/scsi_cpu.c: Likewise.
+       * scsi/scsi_defs.h: Likewise.
+       * scsi/scsi_disk.c: Likewise.
+       * scsi/scsi_endian.h: Likewise.
+       * scsi/scsi_jukebox.c: Likewise.
+       * scsi/scsi_optical.c: Likewise.
+       * scsi/scsi_printer.c: Likewise.
+       * scsi/scsi_rom.c: Likewise.
+       * scsi/scsi_scanner.c: Likewise.
+       * scsi/scsi_tape.c: Likewise.
+       * scsi/scsi_worm.c: Likewise.
+       * i386/i386at/autoconf.c: Don't include <aha.h> and <eaha.h> anymore
+       and adapt all users of NAHA and NEAHA as if it were always defined to
+       `0'.
+       * i386/i386at/conf.c: Likewise.
+       * Makefile.in (scsi-files): Remove variable and all users of it.
+
+       * i386/bogus/wt.h: Remove file.
+       * i386/i386at/autoconf.c: Don't include <wt.h> anymore and adapt all
+       users of NWT as if it were always defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * i386/bogus/hpp.h: Remove file.
+       * i386/bogus/ul.h: Likewise.
+       * i386/bogus/wd.h: Likewise.
+       * i386/i386at/gpl/if_hpp.c: Likewise.
+       * i386/i386at/gpl/if_ns.c: Likewise.
+       * i386/i386at/gpl/if_nsreg.h: Likewise.
+       * i386/i386at/gpl/if_ul.c: Likewise.
+       * i386/i386at/gpl/if_wd.c: Likewise.
+       * i386/i386at/autoconf.c: Don't include <hpp.h>, <ul.h> and <wd.h>
+       anymore and adapt all users of NHPP, NUL and NWD as if they were always
+       defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * i386/bogus/at3c501.h: Remove file.
+       * i386/i386at/if_3c501.c: Likewise.
+       * i386/i386at/if_3c501.h: Likewise.
+       * i386/i386at/autoconf.c: Don't include <at3c501.h> anymore and adapt
+       all users of NAT3C501 as if it were always defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * i386/bogus/ns8390.h: Remove file.
+       * i386/i386at/ds8390.h: Likewise.
+       * i386/i386at/if_3c503.h: Likewise.
+       * i386/i386at/if_ns8390.c: Likewise.
+       * i386/i386at/if_ns8390.h: Likewise.
+       * i386/i386at/if_wd8003.h: Likewise.
+       * i386/i386at/autoconf.c: Don't include <ns8390.h> anymore and adapt
+       all users of NNS8390 as if it were always defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * i386/bogus/ne.h: Remove file.
+       * i386/i386at/if_ne.c: Likewise.
+       * i386/i386at/if_nereg.h: Likewise.
+       * i386/i386at/autoconf.c: Don't include <ne.h> anymore and adapt all
+       users of NNE as if it were always defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * i386/bogus/pc586.h: Remove file.
+       * i386/i386at/i82586.h: Likewise.
+       * i386/i386at/if_pc586.c: Likewise.
+       * i386/i386at/if_pc586.h: Likewise.
+       * i386/i386at/autoconf.c: Don't include <pc586.h> anymore and adapt all
+       users of NPC586 as if it were always defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * i386/bogus/fd.h: Remove file.
+       * i386/i386at/fd.c: Likewise.
+       * i386/i386at/fdreg.h: Likewise.
+       * i386/i386at/nfd.c: Likewise.
+       * i386/i386at/nfdreg.h: Likewise.
+       * i386/Makefile.in (i386at-files): Remove `fd.c'.
+       * i386/i386at/autoconf.c: Don't include <fd.h> anymore and adapt all
+       users of NFD as if it were always defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * i386/bogus/hd.h: Remove file.
+       * i386/i386at/nhd.c: Likewise.
+       * i386/i386at/nhdreg.h: Likewise.
+       * i386/i386at/autoconf.c: Don't include <hd.h> anymore and adapt all
+       users of NHD as if it were always defined to `0'.
+       * i386/i386at/conf.c: Likewise.
+
+       * DEVELOPMENT: New file.
+
+2006-02-05  Thomas Schwinge  <address@hidden>
+
+       * Makerules.in: Don't set no_deps to true if MAKECMDGOALS is empty.
+
+2006-02-03  Thomas Schwinge  <address@hidden>
+
+       * Makerules.in: Set no_deps to true if we don't need the dependency
+       files.
+       * i386/linux/Makefile.in: Do care about linux-flags if no_deps is true;
+       reverting the change from 2006-01-31.
+
+       * Makefile.in: Include Makerules through top_builddir, so that it will
+       automatically be rebuilt if needed.
+
+       * Makerules.in (CFLAGS): Added -fno-strict-aliasing.
+       * i386/linux/Makefile.in (linux-gen-flags): Likewise.
+
+2006-02-02  Sergio Lopez  <address@hidden>
+
+       * linux/src/drivers/scsi/eata_pio.c (eata_pio_detect): Fix a
+       off-by-one error when probing.
+       * linux/src/drivers/scsi/eata_dma.c (eata_detect): Likewise.
+       * linux/dev/drivers/scsi/eata_dma.c (eata_detect): Likewise.
+
+       * linux/src/drivers/net/apricot.c (apricot_probe): Increase eth_addr
+       size to 8 so we do not trash the stack when reading from the io ports.
+
+2006-02-02  Thomas Schwinge  <address@hidden>
+
+       * Makerules.in: Move a comment ...
+       * Makefile.in: ... here.
+
+2006-02-01  Thomas Schwinge  <address@hidden>
+
+       * linux/dev/drivers/block/genhd.c (add_bsd_partition): Only define if
+       both MACH and CONFIG_BSD_DISKLABEL are defined.
+       Reported by Matheus Morais <address@hidden>.
+
+2006-01-31  Thomas Schwinge  <address@hidden>
+
+       Cleanup of GNU Mach's build system.  The system dependent parts are now
+       handled by the respective Makefile and no longer by the top-level one.
+
+       * configure, i386/configure, i386/linux/configure, linux/configure:
+       Regenerated.
+
+       * Makefile.in: Various cleanups.
+       (mach/machine, mach_machine): Targets removed.
+       (AWK, CC, CFLAGS, CPPFLAGS, DEFINES, INCLUDES, INSTALL, INSTALL_DATA)
+       (INSTALL_PROGRAM, LD, MIG, MIGFLAGS, NM): Variables moved into
+       Makerules.in.
+       Do not include $(sysdep)/Makefrag anymore.
+       (all, check, clean, distclean, mostlyclean, maintainer-clean, install)
+       (install-headers, install-kernel): Recurse into the system dependent
+       subdirectory.
+       (check): Add a basic test using mbchk.
+       (clean, distclean): Be more explicit in what to delete.
+       ($(systype)/%): New target.
+       (kernel.o): Incorporate the system dependent archive.
+       (installed-sysdep-headers-names, $(installed-sysdep-headers-names)):
+       Variable and target moved into the system dependent Makefile.in.
+       (install-headers, mkheaderdirs): Don't care for the system dependent
+       header files.
+       (%.symc, %.symc.o, %.h, %_user.c, %_interface.h, %_server.c): Targets
+       moved into Makerules.in.
+       Inclusion of dependency files: Likewise.
+       (%.migs_d, %.migu_d, %.migsh_d, %.miguh_d, make-deps, %.d): Likewise.
+       Include Makerules.
+       * Makerules.in: New file, mainly based on Makefile.in.
+       * configure.in: Do not substitute cross_compiling and not explicitly
+       substitute LDFLAGS.
+       Check for cpp, ranlib, ar and mbchk.
+       Care for the mach/machine symbolic link.
+       Add Makerules as a config file.
+       * i386/Makefile.in: Various cleanups.
+       Merge i386/Makefrag and the system dependent stuff from Makefile.in
+       into this file.
+       (all, check, install, install-headers, install-kernel): Recurse into
+       the system dependent subdirectory.
+       (sysdep.o): transformed to the new target sysdep.a.
+       (linux/linux.o): Target removed.
+       (clean, distclean): Be more explicit in what to delete.
+       (linux/%): New target.
+       (install-headers): Install the system dependent header files.
+       (mkheaderdirs): New target.
+       Include the top-level Makerules.
+       * i386/Makefrag: File removed.
+       * i386/Makerules.in: New file.
+       * i386/configure.in: Synchronize AC_INIT to the top-level definition.
+       Do not check for ld and make.
+       Add Makerules as a config file.
+       * i386/linux/Makefile.in: Various cleanups.
+       Replace linux-objs with objfiles.
+       (check, install, install-headers, install-kernel): New empty targets.
+       Don't care about linux-flags if no_deps is true.
+       Inclusion of dependency files removed and instead...
+       Include the top-level Makerules.
+       * i386/linux/Makerules.in: New file.
+       * i386/linux/configure.ac: Synchronize AC_INIT to the top-level
+       definition.
+       Do not check for gcc and ld.
+       Do not explicitly substitute LDFLAGS.
+       Add Makerules as a config file.
+       * linux/configure.in: Synchronize AC_INIT to the top-level definition.
+       Do not create directories using a dummy file.
+       * linux/dummy.in: File removed.
+
+       * ddb/db_access.h: Include <machine/vm_param.h> instead of
+       "vm_param.h".
+       * kern/bootstrap.c: Likewise.
+       * kern/thread.c: Likewise.
+       * vm/vm_kern.c: Likewise.
+       * vm/vm_object.c: Likewise.
+       * vm/vm_resident.c: Likewise.
+
+2006-01-26  Thomas Schwinge  <address@hidden>
+
+       * config.guess: Updated from the canonical source.
+       * config.sub: Likewise.
+
+2006-01-26  Jeroen Dekkers  <address@hidden>
+
+       * i386/i386/locore.S (trap_push_segs): Switch fs and gs to kernel
+       data segment too.
+       (syscall_entry_2): Likewise.
+       * i386/i386/user_ldt.c (i386_set_ldt): Always copy the master LDT
+       when there is no old user LDT.
+
+2006-01-26  Samuel Thibault  <address@hidden>
+
+       * linux/dev/arch/i386/kernel/irq.c (linux_intr): Disable interrupts
+       if the driver requested it through request_irq().
+
+       * linux/dev/drivers/block/ide.c (read_intr): Set the IRQ handler before
+       issuing a request.
+       (write_intr): Likewise.
+       (multwrite_intr): Likewise.
+
+2006-01-26  Thomas Schwinge  <address@hidden>
+
+       * i386/linux/Makefile.in: Automatically recreate the `Makefile'.
+
+2006-01-23  Thomas Schwinge  <address@hidden>
+
+       * i386/linux/configure: Regenerated.
+
+       * i386/linux/configure.ac: Only add a AC_DRIVER_ALIAS if it really is a
+       alias.
+
+2006-01-22  Thomas Schwinge  <address@hidden>
+
+       * doc/mach.texi (Configuration): Document the recently added drivers.
+       * i386/README-Drivers: Likewise.
+
+       * configure, i386/configure, i386/linux/configure, linux/configure,
+       i386/linux/device-drivers.h.in: Regenerated.
+
+       * linux/src/drivers/net/ne2k-pci.c: Resolve conflicts.
+
+2006-01-22  Guillem Jover  <address@hidden>
+
+       * i386/linux/configure.ac: Renamed winbond-840 driver to winbond_840.
+       Enable the starfire, intel_gige and natsemi network drivers.  Remove
+       "CONFIG_" from cb_chim, starfire, sundance, winbond840, hamachi,
+       natsemi, myson803 and ns820 driver declarations.  Replace INTER_GIGE
+       with INTEL_GIGE.
+       * linux/dev/drivers/net/Space.c: Add conditional probes for natsemi,
+       ns820, winbond840, hamachi, sundance, starfire, myson803 and intel-gige
+       drivers.
+
+       * linux/src/include/asm-i386/cache.h: New file from linux 2.2.26.
+       * linux/dev/include/linux/malloc.h: Include <asm/cache.h>.
+
+       * linux/src/drivers/net/ns820.c (netsami_drv_id): Renamed to ...
+       (ns820_drv_id): ... this.  Fix all callers.
+       * linux/src/drivers/net/intel-gige.c
+       (skel_netdev_probe): Renamed to ...
+       (igige_probe): ... this.
+       * linux/dev/drivers/net/eepro100.c: Remove obsoleted file.
+       * linux/src/drivers/net/eepro100.c (pci_id_tbl): Add PCI ID's from
+       linux-2.6.14-rc4.
+
+2006-01-22  Alfred M. Szmidt  <address@hidden>
+
+       * i386/linux/configure.ac: Added `pci-scan.o' to the network driver
+       class.  (ns820, myson803, sundance, winbond-840, hamachi): New drivers.
+       * i386/linux/Makefile.in (linux-net-files): Added `cb_shim.c',
+       `hamachi.c', `intel-gige.c', `myson803.c', `natsemi.c', `ns820.c',
+       `starfire.c', `sundance.c', `winbond-840.c' and `pci-scan.c'.
+
+       * linux/dev/include/linux/modversions.h: New file.
+
+       * linux/src/drivers/net/cb_shim.c, linux/src/drivers/net/hamachi.c,
+       linux/src/drivers/net/intel-gige.c, linux/src/drivers/net/myson803.c,
+       linux/src/drivers/net/natsemi.c, linux/src/drivers/net/ns820.c,
+       linux/src/drivers/net/starfire.c, linux/src/drivers/net/sundance.c,
+       linux/src/drivers/net/winbond-840.c,
+       linux/src/drivers/net/kern_compat.h, linux/src/drivers/net/pci-scan.c,
+       linux/src/drivers/net/pci-scan.h: New files from netdrivers 3.5 package
+       (http://www.scyld.com/network).
+
+       * linux/src/drivers/net/3c59x.c, linux/src/drivers/net/eepro100.c,
+       linux/src/drivers/net/epic100.c, linux/src/drivers/net/ne2k-pci.c,
+       linux/src/drivers/net/rtl8139.c, linux/src/drivers/net/tulip.c,
+       linux/src/drivers/net/via-rhine.c, linux/src/drivers/net/yellowfin.c:
+       Updated files from netdrivers 3.5 (http://www.scyld.com/network).
+
+2006-01-22  Thomas Schwinge  <address@hidden>
+
+       * linux/src/drivers/net/ne2k-pci.c (ne_block_input, ne_block_output):
+       Fix previous patch.
+
+2005-07-12  Guillem Jover  <address@hidden>
+
+       * configure: Regenerated.
+       * i386/configure: Regenerated.
+
+       * Drivers.macros (AC_DRIVER_CLASS): Use AH_TEMPLATE.
+       (AC_DRIVER): Set the value for the AC_DEFINE and AC_DEFINE_UNQUOTED
+       to 1.
+
+       * aclocal.m4 (AC_PROG_CC_LOCAL, AC_PROG_CC_WORKS_LOCAL): Removed.
+       * version.m4: New file.
+       * Makefile.in: Use PACKAGE_VERSION, not VERSION.
+       * doc/Makefile.in: Likewise.
+       * version.c.in: Likewise. Use PACKAGE_NAME, not "GNUmach".
+       * i386/linux/Makefile.in (configure): Change its source to
+       configure.ac.
+
+       * aclocal.m4: Add missing quotations.
+       * Drivers.macros: Likewise.
+       * configure.in: Likewise. Include version.m4 and use PACKAGE and
+       VERSION m4 macros from it.
+       * i386/configure.in: Likewise.
+       (AC_INIT): Use new syntax and move source check to AC_CONFIG_SRCDIR.
+       * i386/linux/configure.ac: Likewise. Use m4_sinclude, not sinclude.
+       * linux/configure.in: Likewise.
+
+       * i386/configure.in: Update AC_DEFINE to the new three argument form.
+       * i386/linux/configure.ac: Move AC_DEFINE inside AC_ARG_ENABLE.
+
+       * configure.in: Use AC_CONFIG_LINKS, not AC_LINK_FILES.
+       * linux/configure.in: Likewise.
+
+       * i386/configure.in: Call AC_CONFIG_FILES and use the new form of
+       AC_OUTPUT.
+       * i386/linux/configure.ac: Likewise.
+       * linux/configure.in: Likewise
+
+       * configure.in: Use AS_HELP_STRING in AC_ARG_ENABLE help strings.
+       * Drivers.macros: Likewise.
+       * i386/configure.in: Likewise.
+       * i386/linux/configure.ac: Likewise.
+
+2005-07-12  Neal H. Walfield  <address@hidden>
+
+       * configure.in: Update to use autoconf 2.57.
+       Do not error out if host_os is not GNU.
+       Update AC_DEFINEs to the required three argument form.
+       Don't call AC_CHECK_TOOL(CC, gcc) and AC_PROG_CC_LOCAL, just use
+       AC_PROG_CC.
+       AC_SUBST(LDFLAGS).
+       Refactor AC_CONFIG_SUBDIRS to not do variable substitution.
+       Call AC_CONFIG_FILES and use the new form of AC_OUTPUT.
+       * i386/configure.in: Require autoconf 2.57.
+       * linux/configure.in: Likewise.
+       * i386/linux/Drivers.in: Move from here...
+       * i386/linux/configure.ac: ... to here to conform to the
+       environment autoreconf expects.
+       (hurd_host_CPU): New macro.
+       Call AC_PROG_CC, not AC_PROG_CC_LOCAL.
+       AC_SUBST(LD_FLAGS).
+       (flashpoint): Update AC_DEFINE to the new three argument form.
+       * Drivers.macros (AC_DRIVER): Update AC_DEFINE to the new three
+       argument form.
+
+2005-05-24  Alfred M. Szmidt  <address@hidden>
+
+       * i386/include/mach/i386/asm.h (END): New macro.
+
+       * i386/include/mach/i386/syscall_sw.h (kernel_trap): Call END.
+
+2005-05-28  Alfred M. Szmidt  <address@hidden>
+
+       * linux/src/drivers/scsi/u14-34f.c (ihdlr): Silence gcc 4.x
+       errors.
+       * linux/src/drivers/scsi/qlogicisp.h: Likewise.
+       * linux/src/drivers/scsi/advansys.c: Likewise.
+       (advansys_reset, advansys_interrupt, asc_scsi_done_list,
+       (asc_enqueue, asc_dequeue, asc_dequeue_list, asc_rmqueue,
+       (asc_isqueued): Likewise.
+       * linux/src/drivers/scsi/53c78xx.c (NCR53c7xx_queue_command):
+       Likewise.
+       * linux/src/drivers/net/ne2k-pci.c (ne_block_input)
+       (ne_block_output): Likewise.
+       * linux/src/drivers/net/hp100.c (__initfunc): Likewise.
+       * linux/src/drivers/net/3c507.c (el16_interrupt): Likewise.
+       * linux/dev/drivers/scsi/seagate.c (seagate_st0x_queue_command):
+       Likewise.
+
+2005-05-26  Alfred M. Szmidt  <address@hidden>
+
+       * device/cons.h (cn_tab) [KERNEL]: Removed extern declaration.
+
+       * linux/dev/include/linux/fs.h (super_blocks): Declare as an
+       pointer.
+
+2005-02-10  Guillem Jover  <address@hidden>
+
+       * linux/dev/glue/block.c (rdwr_partial): Remove leftover assert.
+
+2005-01-22  Guillem Jover  <address@hidden>
+
+       * linux/dev/include/linux/skbuff.h (skb_put, skb_push): Fix errors
+       for deprecated use of labels at end of compound statements.
+       * i386/i386/fpe_linkage.c (enable_fpe): Declare prototype.
+
+2005-01-22  Guillem Jover  <address@hidden>
+
+       * linux/src/drivers/scsi/qlogicisp_asm.c: Remove file with binary
+       only firmware.
+       * linux/src/drivers/scsi/qlogicisp.c: Do not include "qlogicisp_asm.c".
+       (RELOAD_FIRMWARE): Set to 0.
+       (risc_code_addr01): New variable from qlogicisp_asm.c.
+       * linux/Files: Remove linux/src/drivers/scsi/qlogicisp_asm.c.
+
+2004-09-08  Neal H. Walfield  <address@hidden>
+
+       * linux/dev/kernel/printk.c: Include <kern/assert.h>.
+       (printk): Use vsnprintf, not linux_vsprintf to avoid buffer
+       overruns.
+
+       * kern/printf.c (struct vsnprintf_cookie): New structure.
+       (snputc): New function.
+       (vsnprintf): Likewise.
+
+2004-11-22  Guillem Jover  <address@hidden>
+
+       * bogus/mach_assert.h: Change #ifdef DEBUG to #ifndef NDEBUG
+       for assert et al.
+       * kern/assert.h: Likewise.
+       * kern/debug.h: Likewise.
+       * util/debug.h: Likewise.
+
+       * i386/i386/debug.h: Move dump_ss definition out of [DEBUG].
+       * linux/dev/glue/block.c (rdwr_full): Remove invalid assert.
+
+2004-09-07  Neal H. Walfield  <address@hidden>
+
+       * linux/dev/glue/block.c (__brelse): Unconditionally kfree BH.
+       (getblk): Unconditionally kalloc BH.
+
+       * kern/kalloc.c [!NDEBUG] (kalloc_init_called): New static
+       variable.
+       (kalloc_init): Assert that kalloc_init_called is zero.
+       [! NDEBUG] Set kalloc_init_called to 1 on success.
+       (kalloc): Assert that kalloc_init_called is non-zero.
+       (kget): Likewise.
+       (kfree): Likewise.
+
+2004-11-22  Guillem Jover  <address@hidden>
+
+       * i386/i386/locore.S (discover_x86_cpu_type): Enable function.
+       Enable ID flag for Cyrix CPU. Use %ebp to save the stack pointer.
+       Restore EFLAGS just after its last usage.
+       * i386/i386at/model_dep.c (c_boot_entry): Enable use of
+       discover_x86_cpu_type. Remove hardcoded cpu_type assignment.
+       * i386/include/mach/i386/eflags.h
+       (EFL_VI, EFL_VIP): New bits.
+       (EFL_AC, EFL_ID): Bits finally added.
+
+2004-10-26  Guillem Jover  <address@hidden>
+
+       * i386/i386/fpe.b: Remove binary without source.
+       * i386/i386/fpe.b_elf: Likewise.
+       * i386/i386/fpe_linkage.c: Disable the code if [! FPE].
+       * i386/bogus/fpe.h: Add comment about not having an fpe implementation.
+       * i386/Makefrag (objfiles): Do not add fpe.o.
+       Remove targets to generate fpe.o.
+
+2004-02-29  Marcus Brinkmann  <address@hidden>
+
+       * NEWS: Add things that changed so far since 1.3.
+
+2004-02-02  Marco Gerards  <address@hidden>
+
+       * i386/i386at/kd.c (kdinit): Initialize the input buffer.
+
+       * i386/i386at/kd.h (KDSETLEDS): New macro.
+       * i386/i386at/kd_event.c (kbdsetstat): Handle KDSETLEDS here to
+       set the keyboard LEDs state.
+
+2004-01-19  Marco Gerards  <address@hidden>
+
+       * linux/dev/glue/block.c (init_partition): Don't check for BSD
+       partitions if the DOS partition is too small.
+
+2004-01-16  Marco Gerards  <address@hidden>
+
+       * linux/dev/glue/block.c (device_get_status): Correctly calculate
+       the number of blocks.
+
+2004-01-15  Alfred M. Szmidt  <address@hidden>
+
+       * linux/dev/include/asm-i386/string.h (memscan): Don't use
+       multi-line string literals for asm().
+       * linux/dev/include/asm-i386/segment.h (__generic_memcpy_tofs)
+       (__generic_memcpy_fromfs): Likewise.
+       * linux/src/include/asm-i386/floppy.h (floppy_hardint): Likewise.
+       * i386/i386/proc_reg.h (flush_instr_queue): Likewise.
+       * i386/i386/gdt.c (gdt_init): Likewise.
+
+       * linux/src/drivers/scsi/aic7xxx.c: Updated from Linux 2.0.39
+       * linux/src/drivers/scsi/aic7xxx.h: Likewise.
+       * linux/src/drivers/scsi/aic7xxx_proc.c: Likewise.
+       * linux/src/drivers/scsi/scsicam.c: Likewise.
+       * linux/src/include/linux/pci.h: Likewise.
+
+       * linux/src/drivers/scsi/53c7,8xx.h (patch_dsa_32): Don't use
+       token paste operator (##).
+
+       * Makefile.in (kernel-undef): Match new output format from
+       nm (binutils) 2.14.x.
+
+2002-05-27  Roland McGrath  <address@hidden>
+
+       * Version 1.3 released.
+
+2002-05-23  Marcus Brinkmann  <address@hidden>
+
+       * i386/i386at/model_dep.c: Include <kern/cpu_number.h> and
+       <kern/assert.h>.
+       (machine_idle): New function.
+       * bogus/power_save.h (POWER_SAVE): Define to 1.
+
+2002-05-22  Roland McGrath  <address@hidden>
+
+       * configure.in (VERSION): New substituted variable: set to 1.3 now.
+       (version.c): Add it to AC_OUTPUT.
+       * configure: Regenerated.
+       * Makefile.in (version): New variable, set from that.
+       Remove vpath directive for version.c, not found in build dir.
+       (topfiles): version.c -> version.c.in
+       * doc/Makefile.in (mach-version): Substituted instead of constant.
+       * version.c: File removed, replaced with ...
+       * version.c.in: ... this new file.
+       (version): Make it const.  Use @VERSION@ for the number.
+
+       * Makefile.in (debian-files): Add postinst and prerm.
+       (dist): Use gzip -9 instead of tar z.
+
+       * linux/Files: Add missing files to the list:
+               linux/dev/drivers/net/eepro100.c
+               linux/src/include/asm-i386/hardirq.h
+               linux/src/include/asm-i386/spinlock.h
+               linux/src/include/linux/compatmac.h
+               linux/src/include/linux/spinlock.h
+
+       * linux/src/drivers/net/eth16i.c (eth16i_check_signature): Fix syntax:
+       #ifdef 0 -> #if 0
+
+       * Makefile.in (%.migs_d, %.migu_d): Fix sed substitution to match
+       whatever target file name gcc comes up with.
+       (%.migs_d, %.migu_d, %.symc.o, %_user.c, %_server.c):
+       Depend on $(before-compile).
+
+2002-04-24  Marcus Brinkmann  <address@hidden>
+
+       * debian/rules (DOCDIR): Move to
+       $(PREFIX)/share/doc/$(package-dev).
+
+2002-04-23  Roland McGrath  <address@hidden>
+
+       * i386/i386/ldt.c (ldt_init): Fix fencepost error in segment limits.
+
+2002-04-19  Roland McGrath  <address@hidden>
+
+       * gensym.awk: Emit \n\ at the end of lines inside strings.
+       * Makefile.in (%.symc: %.sym): Depend on gensym.awk.
+
+2002-03-29  Marcus Brinkmann  <address@hidden>
+
+       * doc/mach.texi: End index entry with full stop.
+
+2002-03-05  Roland McGrath  <address@hidden>
+
+       * kern/bootstrap.c: Include <alloca.h>.
+
+2002-03-04  Roland McGrath  <address@hidden>
+
+       * Makefile.in (%_interface.h %_server.c: %.srv): Pass -sheader switch
+       to mig, not -header.
+
+2001-11-23  Roland McGrath  <address@hidden>
+
+       * i386/i386at/i386at_ds_routines.c (device_deallocate): Do nothing if
+       argument is DEVICE_NULL.
+
+2001-10-21  Marcus Brinkmann  <address@hidden>
+
+       * linux/src/arch/i386/lib/delay.c: Convert HTML entities.
+       Reported by John Tobey <address@hidden>.
+
+2001-10-13  Marcus Brinkmann  <address@hidden>
+
+       * debian/changelog: Update for next release.
+
+2001-10-07  Roland McGrath  <address@hidden>
+
+       * ddb/db_access.c: Fix obsolescent #else/#endif syntax.
+       * device/dev_name.c: Likewise.
+       * device/dev_pager.c: Likewise.
+       * device/ds_routines.c: Likewise.
+       * i386/i386/i386asm.sym: Likewise.
+       * include/device/device_reply.defs: Likewise.
+       * include/mach/memory_object.defs: Likewise.
+       * include/mach/memory_object_default.defs: Likewise.
+
+       * i386/i386/locore.S: Fix sloppy asm syntax to avoid warnings from
+       newer assembler (%ecx -> %cl in byte insns).
+
+       * kern/bootstrap.c (bootstrap_create): Fix inverted test logic for
+       compatibility case.  Ignore trailing newlines after space for
+       compatibility detection.
+       Reported by Neal H Walfield <address@hidden>.
+
+2001-10-06  Marcus Brinkmann  <address@hidden>
+
+       * README: Replace `GNU mach' by `GNU Mach', and remove
+       obsolete paragraph about kmsg device.
+
+2001-10-06  Marcus Brinkmann  <address@hidden>
+
+       * doc/mach.texi: Fix direntry.
+
+2001-10-05  Marcus Brinkmann  <address@hidden>
+
+       * doc/mach.texi: Replace `path name' by `file name' in one place.
+       Replace `illegal' by `invalid' and `to to' by `to' everwhere.
+
+       * debian/changelog: Prepare for next release.
+
+2001-10-04  Marcus Brinkmann  <address@hidden>
+
+       * doc: New directory.
+       * doc/Makefile.in: New file.
+       * doc/gpl.texi: Likewise.
+       * doc/fdl.texi: Likewise.
+       * doc/mach.texi: Likewise.
+       * configure.in: Add doc/Makefile to AC_OUTPUT call.
+       * configure: Regenerated.
+
+       * Makefile.in (dist): Create directories doc and debian.
+       (doc-files): New variable with documentation files.
+       (debian-files): New variable with Debian packaging files.
+
+       * debian/rules (stamp-build): Build documentation.
+       (build-gnumach): Install the documentation into the gnumach
+       package.
+       * debian/postrm: New file to install info document.
+       * debian/prerm: New file to install info document.
+
+2001-10-01  Marcus Brinkmann  <address@hidden>
+
+       * i386/i386/locore.S (tenmicrosec): Remove subroutine.
+       * i386/i386/pit.c (delaycount): Remove global variable.
+       (microdata): Likewise.
+       (clkstart): Do not call findspeed() and microfind().
+       (findspeed): Remove function.
+       (spinwait): Likewise.
+       (microfind): Likewise.  This function triggers a division by zero
+       trap on AMD K6 350Mhz+ and Athlon 1.1GHz+ machines (and in general
+       leads to bad results on fast cpus), and nothing uses this code anymore.
+
+2001-09-30  Roland McGrath  <address@hidden>
+
+       * kern/bootstrap.c (bootstrap_create): Ignore trailing spaces when
+       checking boot module string for containing none.
+
+2001-09-18  Marcus Brinkmann  <address@hidden>
+
+       * linux/dev/glue/misc.c: Do not include <linux/types.h> and
+       <linux/string.h>.
+       Remove global variable ___strtok.
+       Remove implementation of strspn, strpbrk, strtok and strstr.
+       * Makefile.in: Add strpbrk and strtok.
+
+2001-08-24  Roland McGrath  <address@hidden>
+
+       * kern/bootstrap.c (bootstrap_create): Make setting of boot-args and
+       root-device no longer conditional on [! OSKIT_MACH].
+       (bootstrap_create) [! OSKIT_MACH]: Parse FOO=BAR words out of the
+       multiboot command line and turn those into boot script variables.
+
+       * Makefile.in (clib-routines): Add strsep.
+       * kern/strings.h (strsep, strchr): Declare them.
+
+2001-08-23  Roland McGrath  <address@hidden>
+
+       * kern/bootstrap.c (bootstrap_create, user_bootstrap,
+       boot_script_exec_cmd, boot_script_task_resume): Add printfs at
+       various stages of startup.
+
+2001-08-21  Roland McGrath  <address@hidden>
+
+       * i386/i386at/model_dep.c (use_all_mem): Turn variable into macro.
+       (init_alloc_aligned): Make this function static.
+       Initially skip memory < 16MB and then wrap around to get it last.
+
+2001-08-20  Roland McGrath  <address@hidden>
+
+       Support "boot script" functionality in multiboot module strings.
+       * kern/bootstrap.c: Rewrite merged from oskit-branch.
+       * kern/boot_script.c, kern/boot_script.h: New files,
+       copied from boot/ directory in Hurd sources.
+       * Makefile.in (kern-cfiles): Add boot_script.c here.
+       (kern-files): Add boot_script.h here.
+       * NEWS: Mention the new feature.
+
+2001-08-18  Roland McGrath  <address@hidden>
+
+       * i386/i386at/model_dep.c (boot_info): Define a struct, not a pointer.
+       (c_boot_entry): Copy the contents into it rather than setting the ptr.
+       (c_boot_entry, init_alloc_aligned, pmap_valid_page, mem_size_init):
+       Update uses.
+       (init_alloc_aligned): Don't need to skip the boot_info memory.
+       * kern/bootstrap.c (boot_info): Update decl.
+       (bootstrap_create): Update uses.
+
+2001-08-18  Marcus Brinkmann  <address@hidden>
+
+       * linux/src/drivers/net/eepro100.c: File updated to version in
+       Linux 2.2.19.  This time for real.
+
+2001-08-18  Marcus Brinkmann  <address@hidden>
+
+       * debian/changelog: Update for next package upload.
+       * debian/control: Add gnumach-dbg package.
+       * debian/rules: New targets to build gnumach-dbg package.
+       Fix various bugs.
+
+2001-08-18  Marcus Brinkmann  <address@hidden>
+
+       * i386/i386at/kd.c (kdintr): In event mode, make it so that
+       0xE0 scancodes are received.
+       From Kalle Olavi Niemitalo <address@hidden>.
+
+       * i386/i386at/kd.h: New constants KAX_REVERSE, KAX_UNDERLINE,
+       KAX_BLINK, KAX_BOLD, KAX_DIM, KAX_INVISIBLE, KAX_COL_UNDERLINE,
+       KAX_COL_DIM.
+       * i386/i386at/kd.c: Increase K_MAXESC to 32.
+       New global variable color_table to map color values.
+       New globals kd_color and kd_attrflags.
+       (kdinit): Initialize these variables.
+       (kd_update_kd_attr): New function.
+       (kd_parserest): Redone to support more terminal attributes,
+       including colors.
+
+2001-08-18  Marcus Brinkmann  <address@hidden>
+
+       * linux/src/drivers/net/eepro100.c: File updated to version in
+       Linux 2.2.19.
+       * linux/src/include/asm-i386/spinlock.h: New file from Linux 2.2.19.
+       * linux/src/include/asm-i386/hardirq.h: Likewise.
+       * linux/src/include/linux/spinlock.h: Likewise.
+       * linux/src/include/linux/compatmac.h: Likewise.
+       * linux/dev/drivers/net/eepro100.c: New file, modified version from
+       the above to glue it in gnumach.
+       Submitted by Kapil H. Paranjape <address@hidden>.
+
+2001-08-17  Roland McGrath  <address@hidden>
+
+       * Makefile.in (clib-routines): Add strchr.
+       (kernel-undef-bad): Depend on Makefile.
+
+       * Makefile.in ($(srcdir)/configure, $(srcdir)/config.h.in):
+       Use $(srcdir) in deps.
+       (Makefile, config.h, config.status): Likewise.
+
+2001-07-29  Marcus Brinkmann  <address@hidden>
+
+       * NEWS: Add items for this and other changes.
+       * configure.in: Define MACH_KMSG by default and document this in
+       the help output.
+       * configure: Regenerated.
+       * debian/rules: Do not enable kmsg explicitely.
+
+2001-07-18  Marcus Brinkmann  <address@hidden>
+
+       * debian/rules: Add -isp to dpkg-gencontrol invocation.
+       Move documentation to /share/doc.
+       * debian/changelog: Update.
+
+2001-06-28  Marcus Brinkmann  <address@hidden>
+
+       * linux/dev/drivers/block/ide.c (lba_capacity_is_ok): Do not
+       attempt to correct id->cyls, it is a short and for large disks the
+       number of cylinders necessary would not fit.  Subsequent checks
+       for lba support would fail.
+       (current_capacity): Likewise for drive->cyl.
+       (do_identify): Store value returned by current_capacity in
+       CAPACITY.  The check which corrects the number of bios cylinders
+       is not aggressive enough.  Update it with the check in linux
+       kernel-2.2.19.
+
+2001-06-25  Marcus Brinkmann  <address@hidden>
+
+       * i386/bogus/fpe.h (FPE): Define FPE to 0, as the floating point
+       emulation is broken anyway and blows up plex86.
+
+2001-06-17  Marcus Brinkmann  <address@hidden>
+
+       * debian/rules: Update to current version.
+
+2001-06-13  Roland McGrath  <address@hidden>
+
+       * linux/dev/glue/block.c (device_get_status: DEV_GET_RECORDS):
+       Always return 512 for DEV_GET_SIZE_RECORD_SIZE as DEV_GET_SIZE does.
+
+2001-05-27  Marcus Brinkmann  <address@hidden>
+
+       * debian/rules: Add --enable-ncr53c8xx to configure.
+
+1999-10-06  OKUJI Yoshinori  <address@hidden>
+
+       * linux/src/drivers/scsi/tmscsiw.c: Removed.
+       * linux/src/drivers/scsi/tmscsiw.h: Likewise.
+       * linux/src/drivers/scsi/dc390w.h: Likewise.
+       * i386/linux/device-drivers.h.in (CONFIG_SCSI_DC390W): Deleted.
+       * i386/linux/Drivers.in: Remove linux_DRIVER(dc390w, ...). Now
+       dc390w, dc390u, and dc390f are aliases to ncr53c8xx.
+       * i386/linux/configure: Regenerated.
+       * linux/Files: Likewise.
+       * i386/linux/Makefile.in (linux-scsi-files): Delete tmscsiw.c.
+       * linux/dev/drivers/scsi/hosts.c: Do not include dc390w.h.
+       Reported by Andreas Voegele <address@hidden>.
+
+2001-05-20  Roland McGrath  <address@hidden>
+
+       * kern/sched_prim.c (state_panic): New function, panic with some
+       info when a thread's state is bogus.
+       (thread_wakeup_prim): Use that instead of uninformative panic.
+       (thread_invoke): Likewise.
+       (thread_dispatch): Likewise.
+
+2001-05-12  Marcus Brinkmann  <address@hidden>
+
+       * ipc/ipc_object.c (ipc_object_alloc): Remove initialization of
+       *namep, which was without effect.
+
+2001-04-29  Marcus Brinkmann  <address@hidden>
+
+       * debian/changelog: New entries for past Debian uploads.
+       * debian/rules: Disable eatdma driver (breaks AMD K7), do
+       not enable com, lpr (com is redundant, lpr doesn't work),
+       move enabling of kmsg in its own line.
+       * debian/control: Add build dependency on mig and sharutils.
+
+2001-04-29  Marcus Brinkmann  <address@hidden>
+
+       * device/chario.c: Set number of elements of tthiwat and ttlowat
+       to NSPEEDS rather than 16. Initialize the two new elements.
+       (chario_init): Initialize pdma_timeouts and pdma_water_mark for
+       B57600 and B115200.
+
+2001-04-27  Marcus Brinkmann  <address@hidden>
+
+       * include/device/tty_status.h: New macros B57600 and B115200,
+       increase NSPEED accordingly.
+       * i386/i386at/com.c (divisorreg): New divisor 1.
+
+2001-04-04  Roland McGrath  <address@hidden>
+
+       * ddb/db_access.h: Fix obsolescent #else/#endif syntax.
+       * ddb/db_aout.c: Likewise.
+       * ddb/db_break.c: Likewise.
+       * ddb/db_break.h: Likewise.
+       * ddb/db_command.c: Likewise.
+       * ddb/db_command.h: Likewise.
+       * ddb/db_cond.c: Likewise.
+       * ddb/db_examine.c: Likewise.
+       * ddb/db_expr.c: Likewise.
+       * ddb/db_ext_symtab.c: Likewise.
+       * ddb/db_input.c: Likewise.
+       * ddb/db_lex.c: Likewise.
+       * ddb/db_macro.c: Likewise.
+       * ddb/db_mp.c: Likewise.
+       * ddb/db_output.c: Likewise.
+       * ddb/db_print.c: Likewise.
+       * ddb/db_run.c: Likewise.
+       * ddb/db_sym.c: Likewise.
+       * ddb/db_task_thread.c: Likewise.
+       * ddb/db_task_thread.h: Likewise.
+       * ddb/db_trap.c: Likewise.
+       * ddb/db_variables.c: Likewise.
+       * ddb/db_watch.c: Likewise.
+       * ddb/db_watch.h: Likewise.
+       * ddb/db_write_cmd.c: Likewise.
+       * device/dev_pager.c: Likewise.
+       * device/device_port.h: Likewise.
+       * device/device_types_kernel.h: Likewise.
+       * device/ds_routines.h: Likewise.
+       * device/errno.h: Likewise.
+       * device/if_ether.h: Likewise.
+       * device/if_hdr.h: Likewise.
+       * device/io_req.h: Likewise.
+       * device/net_io.c: Likewise.
+       * device/net_io.h: Likewise.
+       * i386/i386/ast_check.c: Likewise.
+       * i386/i386/cswitch.S: Likewise.
+       * i386/i386/db_disasm.c: Likewise.
+       * i386/i386/db_interface.c: Likewise.
+       * i386/i386/db_trace.c: Likewise.
+       * i386/i386/debug.h: Likewise.
+       * i386/i386/debug_i386.c: Likewise.
+       * i386/i386/debug_trace.S: Likewise.
+       * i386/i386/eflags.h: Likewise.
+       * i386/i386/gdt.h: Likewise.
+       * i386/i386/hardclock.c: Likewise.
+       * i386/i386/idt-gen.h: Likewise.
+       * i386/i386/ipl.h: Likewise.
+       * i386/i386/ktss.h: Likewise.
+       * i386/i386/kttd_interface.c: Likewise.
+       * i386/i386/ldt.h: Likewise.
+       * i386/i386/lock.h: Likewise.
+       * i386/i386/locore.S: Likewise.
+       * i386/i386/mp_desc.h: Likewise.
+       * i386/i386/pic.c: Likewise.
+       * i386/i386/pic.h: Likewise.
+       * i386/i386/pio.h: Likewise.
+       * i386/i386/pit.h: Likewise.
+       * i386/i386/seg.h: Likewise.
+       * i386/i386/thread.h: Likewise.
+       * i386/i386/trap.c: Likewise.
+       * i386/i386/trap.h: Likewise.
+       * i386/i386/vm_param.h: Likewise.
+       * i386/i386/vm_tuning.h: Likewise.
+       * i386/i386at/autoconf.c: Likewise.
+       * i386/i386at/blit.c: Likewise.
+       * i386/i386at/conf.c: Likewise.
+       * i386/i386at/fd.c: Likewise.
+       * i386/i386at/idt.h: Likewise.
+       * i386/i386at/immc.c: Likewise.
+       * i386/i386at/kd.c: Likewise.
+       * i386/i386at/kd_event.c: Likewise.
+       * i386/i386at/kd_mouse.c: Likewise.
+       * i386/i386at/model_dep.c: Likewise.
+       * i386/i386at/rtc.c: Likewise.
+       * i386/include/mach/i386/asm.h: Likewise.
+       * i386/include/mach/i386/eflags.h: Likewise.
+       * i386/include/mach/i386/mach_i386.defs: Likewise.
+       * i386/include/mach/i386/multiboot.h: Likewise.
+       * i386/include/mach/i386/trap.h: Likewise.
+       * i386/include/mach/i386/vm_types.h: Likewise.
+       * i386/include/mach/sa/stdarg.h: Likewise.
+       * i386/intel/pmap.c: Likewise.
+       * i386/intel/pmap.h: Likewise.
+       * include/alloca.h: Likewise.
+       * include/device/device_types.defs: Likewise.
+       * include/device/device_types.h: Likewise.
+       * include/device/disk_status.h: Likewise.
+       * include/device/net_status.h: Likewise.
+       * include/mach/mach.defs: Likewise.
+       * include/mach/memory_object.defs: Likewise.
+       * include/mach/std_types.defs: Likewise.
+       * include/mach_debug/hash_info.h: Likewise.
+       * include/mach_debug/ipc_info.h: Likewise.
+       * include/mach_debug/mach_debug.defs: Likewise.
+       * include/mach_debug/mach_debug_types.defs: Likewise.
+       * include/mach_debug/mach_debug_types.h: Likewise.
+       * include/mach_debug/vm_info.h: Likewise.
+       * include/mach_debug/zone_info.h: Likewise.
+       * include/sys/ioctl.h: Likewise.
+       * include/sys/time.h: Likewise.
+       * ipc/ipc_entry.h: Likewise.
+       * ipc/ipc_hash.h: Likewise.
+       * ipc/ipc_init.c: Likewise.
+       * ipc/ipc_kmsg.c: Likewise.
+       * ipc/ipc_kmsg.h: Likewise.
+       * ipc/ipc_marequest.c: Likewise.
+       * ipc/ipc_marequest.h: Likewise.
+       * ipc/ipc_mqueue.c: Likewise.
+       * ipc/ipc_mqueue.h: Likewise.
+       * ipc/ipc_notify.c: Likewise.
+       * ipc/ipc_notify.h: Likewise.
+       * ipc/ipc_object.c: Likewise.
+       * ipc/ipc_object.h: Likewise.
+       * ipc/ipc_port.c: Likewise.
+       * ipc/ipc_port.h: Likewise.
+       * ipc/ipc_pset.c: Likewise.
+       * ipc/ipc_pset.h: Likewise.
+       * ipc/ipc_right.c: Likewise.
+       * ipc/ipc_right.h: Likewise.
+       * ipc/ipc_space.c: Likewise.
+       * ipc/ipc_space.h: Likewise.
+       * ipc/mach_debug.c: Likewise.
+       * ipc/mach_msg.c: Likewise.
+       * ipc/mach_msg.h: Likewise.
+       * ipc/mach_port.c: Likewise.
+       * kern/act.c: Likewise.
+       * kern/assert.h: Likewise.
+       * kern/ast.c: Likewise.
+       * kern/ast.h: Likewise.
+       * kern/bootstrap.c: Likewise.
+       * kern/counters.c: Likewise.
+       * kern/counters.h: Likewise.
+       * kern/debug.h: Likewise.
+       * kern/exception.c: Likewise.
+       * kern/host.h: Likewise.
+       * kern/ipc_host.c: Likewise.
+       * kern/ipc_host.h: Likewise.
+       * kern/ipc_kobject.c: Likewise.
+       * kern/ipc_mig.c: Likewise.
+       * kern/ipc_tt.c: Likewise.
+       * kern/ipc_tt.h: Likewise.
+       * kern/kalloc.h: Likewise.
+       * kern/lock_mon.c: Likewise.
+       * kern/mach_clock.c: Likewise.
+       * kern/mach_factor.c: Likewise.
+       * kern/mach_param.h: Likewise.
+       * kern/machine.c: Likewise.
+       * kern/processor.c: Likewise.
+       * kern/profile.c: Likewise.
+       * kern/queue.h: Likewise.
+       * kern/sched.h: Likewise.
+       * kern/startup.c: Likewise.
+       * kern/syscall_emulation.h: Likewise.
+       * kern/syscall_subr.c: Likewise.
+       * kern/syscall_subr.h: Likewise.
+       * kern/syscall_sw.c: Likewise.
+       * kern/syscall_sw.h: Likewise.
+       * kern/task.h: Likewise.
+       * kern/thread_swap.h: Likewise.
+       * kern/time_out.h: Likewise.
+       * kern/time_stamp.c: Likewise.
+       * kern/time_stamp.h: Likewise.
+       * kern/timer.c: Likewise.
+       * kern/timer.h: Likewise.
+       * kern/xpr.c: Likewise.
+       * kern/xpr.h: Likewise.
+       * kern/zalloc.c: Likewise.
+       * kern/zalloc.h: Likewise.
+       * linux/dev/drivers/block/ide.c: Likewise.
+       * linux/dev/include/linux/blk.h: Likewise.
+       * linux/src/include/linux/cdrom.h: Likewise.
+       * linux/src/include/linux/md.h: Likewise.
+       * util/cpu.h: Likewise.
+       * vm/memory_object.c: Likewise.
+       * vm/memory_object.h: Likewise.
+       * vm/pmap.h: Likewise.
+       * vm/vm_debug.c: Likewise.
+       * vm/vm_external.h: Likewise.
+       * vm/vm_fault.c: Likewise.
+       * vm/vm_fault.h: Likewise.
+       * vm/vm_kern.h: Likewise.
+       * vm/vm_map.c: Likewise.
+       * vm/vm_map.h: Likewise.
+       * vm/vm_object.h: Likewise.
+       * vm/vm_pageout.c: Likewise.
+       * vm/vm_pageout.h: Likewise.
+       * vm/vm_user.h: Likewise.
+
+2001-01-28  Roland McGrath  <address@hidden>
+
+       * kern/zalloc.c (zalloc): Change panics for exhausted zone to include
+       the zone name.
+
+2001-01-09  Marcus Brinkmann  <address@hidden>
+
+       * include/device/device_types.h: New get_status call
+       DEV_GET_RECORDS to get the number of records of a device (rather
+       than the number of bytes). Accordingly define
+       DEV_GET_RECORDS_DEVICE_RECORDS, DEV_GET_RECORDS_RECORD_SIZE and
+       DEV_GET_RECORDS_COUNT.
+
+       * linux/dev/glue/block.c (device_get_status): Handle
+       DEV_GET_RECORDS.
+
+2000-11-26  David Welch  <address@hidden>
+
+       * i386/Makefrag (i386-installed-headers): Removed dead files
+       from the list of headers to be installed
+
+2000-11-26  Marcus Brinkmann  <address@hidden>
+
+       * linux/src/drivers/net/tulip.c: Updated to version
+       from Linux 2.2.17 (I am amazed that 2.2.x drivers work).
+       Suggested by Jason Henry Parker <address@hidden>.
+
+2000-10-29  Roland McGrath  <address@hidden>
+
+       Remove numerous dead header files.
+       Suggested by Igor Khavkine <address@hidden>.
+       * i386/include/mach/i386/bios.h: Dead file removed.
+       * i386/include/mach/i386/code16.h: Dead file removed.
+       * i386/include/mach/i386/debug_reg.h: Dead file removed.
+       * i386/include/mach/i386/dpmi.h: Dead file removed.
+       * i386/include/mach/i386/far_ptr.h: Dead file removed.
+       * i386/include/mach/i386/paging.h: Dead file removed.
+       * i386/include/mach/i386/pio.h: Dead file removed.
+       * i386/include/mach/i386/pmode.h: Dead file removed.
+       * i386/include/mach/i386/proc_reg.h: Dead file removed.
+       * i386/include/mach/i386/seg.h: Dead file removed.
+       * i386/include/mach/i386/time_stamp.h: Dead file removed.
+       * i386/include/mach/i386/tss.h: Dead file removed.
+       * i386/include/mach/i386/vcpi.h: Dead file removed.
+       * i386/include/mach/proc_ops.h: Dead file removed.
+       * i386/include/mach/sa/sys/varargs.h: Dead file removed.
+       * i386/include/mach/setjmp.h: Dead file removed.
+       * include/mach/proc_ops.h: Dead file removed.
+       * Makefile.in (mach-headers): Remove proc_ops.h.
+       * i386/Makefrag (i386-installed-headers): Likewise.
+       (installed-headers): Don't touch this any more.
+       * i386/Files: Update for removed files.
+
+2000-09-29  Marcus Brinkmann  <address@hidden>
+
+       * i386/i386at/conf.c (dev_name_list): Don't use MACH_COM to check
+       if com support is enabled, but NCOM, as it used to be.
+
+2000-09-24  OKUJI Yoshinori  <address@hidden>
+
+       * linux/dev/glue/block.c: Reverted the changes at 2000-08-17.
+       Reported by Brent Fulgham <address@hidden>.
+
+2000-09-19  Marcus Brinkmann  <address@hidden>
+
+       * linux/dev/glue/block.c (init_partition): Move initialization
+       of MASK until it is asserted that gd is non-NULL.
+
+2000-08-17  OKUJI Yoshinori  <address@hidden>
+
+       * linux/dev/glue/block.c (rdwr_partial): Mask the minor device
+       number with MINOR_SHIFT bits, when indexing the array of
+       partitions. Reported by Marius Vollmer <address@hidden>.
+       (init_partition): Likewise.
+       (check_limit): Likewise.
+       (device_get_status): Likewise.
+
+2000-07-27  Marcus Brinkmann  <address@hidden>
+
+       * Fix omissions in last change:
+       * linux/src/arch/i386/lib/delay.S: Now really delete the file.
+       * linux/src/arch/i386/lib/delay.c: Now really add the file.
+
+2000-07-04  Marcus Brinkmann <address@hidden>
+
+       * debian/changelog: Add entry for new Debian upload.
+       * linux/dev/drivers/scsi/seagate.c (WRITE_CONTROL, WRITE_DATA):
+       Added from linux 2.2.15.
+       (__asm__ constructs): Replace with equivalent C code from linux 2.2.15
+       to support gcc-2.95.
+       * linux/src/drivers/scsi/in2000.h: Update asm code to linux 2.2.15.
+       * linux/src/drivers/scsi/ppa.c: Replace asm code with equivalent
+       C code from linux 2.2.15.
+
+2000-02-06  Stefan Weil <address@hidden>
+
+       * device/subrs.c: Fixed compiler warning.
+       * ddb/db_output.c, kern/bootstrap.c, kern/debug.c, kern/printf.c:
+       Replaced varargs.h by stdarg.h. Fixed prototypes (const char *fmt).
+       * ddb/db_output.h: Use prototype for db_printf.
+       * i386/Files: removed varargs.h.
+       * i386/i386/pit.h: Fixed compiler warning.
+       * i386/i386at/model_dep.c: Tried to fix compiler warning.
+       * i386/include/mach/sa/sys/varargs.h: Removed.
+       * i386/linux/Makefile.in: Removed delay.S, added delay.c.
+       * linux/dev/include/asm-i386/segment.h: Support gcc-2.95.
+       * linux/dev/include/asm-i386/string.h,
+       linux/src/include/asm-i386/string.h: Update from linux-2.2.14.
+       * linux/dev/lib/vsprintf.c: Fixed compiler warning.
+       * linux/src/include/asm-i386/delay.h: Update from linux-2.2.14.
+       * linux/src/arch/i386/lib/delay.c: Copy from linux-2.2.14.
+       * linux/src/include/asm-i386/string.h: Update from linux-2.2.14.
+
+1999-10-08  Thomas Bushnell, BSG  <address@hidden>
+
+       * linux/src/drivers/net/3c59x.c: Updated to version 0.99L of the
+       driver from ftp://cesdis.gsfc.nasa.gov/linux/drivers/3c59x.c, in
+       order to support the 3c509c card, as requested by Jeff Bailey
+       <address@hidden>.
+
+1999-09-17  Thomas Bushnell, BSG  <address@hidden>
+
+       * linux/dev/drivers/block/ide.c (do_request) [MACH]: In "bad
+       access" printf, actually print the number of sectors of the
+       partition.
+
+1999-10-05  Roland McGrath  <address@hidden>
+
+       * i386/intel/pmap.c (pmap_bootstrap): Use _start instead of start.
+       * i386/i386/trap.c (kernel_trap): Likewise.
+
+1999-10-04  Roland McGrath  <address@hidden>
+
+       * configure.in: Remove AC_CHECK_TOOL(MAKE,...) check.
+       * Makefile.in (MAKE): Variable removed.  We require GNU make anyway,
+       and it always sets MAKE.
+       * configure: Regenerated.
+
+       * Makefile.in (clib-routines.o, check-clib-routines, clib-routines.d):
+       Remove these rules, replace with:
+       (kernel.o): New target, relocatable object linked from kernel objects.
+       (kernel-undef, kernel-undef-bad): New targets, glean undefined symbols
+       from kernel.o.
+       (clib-routines.o): New target, use those to select symbols from libc.
+       (clib-routines): Add some symbols; move defn to kernel linking page.
+       This variable is now a list of symbols allowed to be undefined,
+       rather than a prescriptive list of symbols always grabbed from libc.
+       (kernel): Rewrite this rules to just link kernel.o and clib-routines.o
+       together to make the kernel image.
+
+1999-09-15  Mark Kettenis  <address@hidden>
+
+       * i386/i386/user_ldt.c: Fix user LDT management.
+       (i386_set_ldt): Prevent thrashing the LDT for the current thread.
+       Correctly calculate size of new LDT.  Set base adress of the LDT
+       descriptor to the linear address of the LDT instead of the kernel
+       virtual address.  Copy descriptors from the default LDT if there
+       is no old LDT for the current thread.  Call switch_ktss if we are
+       setting a new LDT for the current thread.
+       (i386_get_ldt): Fix bug in copying out the descriptors.
+
+1999-09-09  Thomas Bushnell, BSG  <address@hidden>
+
+       * linux/src/drivers/net/rtl8139.c (RX_BUF_LEN_IDX): Reduce from 3
+       to 2.  (64K exceeds the limits in linux/dev/glue/kmem.c:kmalloc.)
+       (rtl8129_open): If we fail to get the memory we need, then free
+       the IRQ before returning.
+       Reported by Daniel Kobras <address@hidden>.
+
+1999-09-07  Thomas Bushnell, BSG  <address@hidden>
+
+       * linux/src/drivers/net/yellowfin.c (yellowfin_probe): Return
+       correct value.  Reported by Marcus Brinkmann
+       <address@hidden>.
+
+       * linux/dev/drivers/net/Space.c: Declare tc515_probe.  Reported by
+       Marcus Brinkmann <address@hidden>.
+
+1999-09-04  Thomas Bushnell, BSG  <address@hidden>
+
+       * vm/vm_resident.c (vm_page_grab): Only block unprivileged
+       allocations over vm_page_external_limit if they are actually
+       external allocations.  Reported by Mark Kettenis
+       (address@hidden>.
+
+1999-08-10  Thomas Bushnell, BSG  <address@hidden>
+
+       * i386/i386at/model_dep.c (init_alloc_aligned): Revert previous
+       change except for the one to AVAIL_NEXT.  All the rest of the
+       previous code was correct.  Correction from Momchil Velikov
+       (address@hidden).
+
+1999-07-23  Roland McGrath  <address@hidden>
+
+       * Drivers.macros (AC_DRIVER): Use `test' instead of `[ ... ]'.
+       Reported by "Momchil 'Velco' Velikov" <address@hidden>.
+
+1999-07-20  Roland McGrath  <address@hidden>
+
+       * linux/dev/drivers/block/genhd.c (check_partition): Change message
+       to say these are only the DOS partitions.
+       * i386/linux/dev/include/linux/autoconf.h (CONFIG_BSD_DISKLABEL,
+       CONFIG_SMD_DISKLABEL): #undef these.  The dev/glue/block.c code
+       deals with BSD disklabels and expects the Linux genhd.c code to
+       handle only the DOS partitions; having genhd.c do BSD disklabels
+       too just confuses things.
+
+       Force subdirectory targets so they get recompiled properly.
+       * i386/Makefile.in (linux/linux.o): Depend on FORCE instead of linux.
+       (FORCE): New target.
+       * i386/Makefrag (i386/sysdep.o, FORCE): Likewise.
+
+1999-07-11  Thomas Bushnell, BSG  <address@hidden>
+
+       * i386/i386at/model_dep.c (init_alloc_aligned): Make the checks
+       correctly for addresses falling into skip regions.  Reported by
+       Momchil Velikov (address@hidden).
+
+1999-07-01  Thomas Bushnell, BSG  <address@hidden>
+
+       * i386/linux/Makefile.in: For each .o file in $(linux-objs)
+       include a corresponding .d file, unless `no_deps' is `t'.
+       (make-deps): New function.
+       (%.d): New pattern rules for building %.d from %.c and %.S.
+
+1999-06-29  Thomas Bushnell, BSG  <address@hidden>
+
+       * vm/vm_resident.c (vm_page_grab): Don't bounce requests when
+       vm_page_external_count == vm_page_external_limit, so that before
+       initialization is complete we can still allocate memory without
+       relying on current_thread.
+       (vm_page_wait): Also block if we are over the external page
+       limit.
+       * vm/vm_pageout.c (vm_pageout_scan): Rewrite the
+       scan-for-pages-to-pageout loop to not crash when we hit the end of
+       the inactive queue; instead jump back to the
+       pause-for-a-little-while code.
+
+1999-06-27  Thomas Bushnell, BSG  <address@hidden>
+
+       * vm/vm_resident.c (vm_page_external_count): Define variable.
+       (vm_page_grab): New argument `external'.  All callers changed.
+       Keep track of number of externally managed pages.  Don't let
+       non-privileged threads exceed the externally-managed page limit.
+       (vm_page_grab_contiguous_pages): New argument `external'.  All
+       callers changed.  Keep track of number of externally managed
+       pages.  Don't let non-privileged threads exceed the
+       externally-managed page limit.
+       (vm_page_convert): New argument `external', handed off to
+       vm_page_grab.  All callers changed.
+       (vm_page_release): New argument `external'.  All callers
+       changed. Keep track of number of externally managed pages.
+       (vm_page_bootstrap): Initialize M->external.
+       (vm_page_external_limit): Define new variable.
+       (vm_page_grab_phys_addr, vm_page_alloc): Add new arg for
+       vm_page_grab.
+       (vm_page_free): Provide new arg to vm_page_release.
+       * vm/vm_page.h (vm_page_external_limit, vm_page_external_count):
+       New variables.
+       (struct vm_page): New members `external' and `extcounted'.
+       (vm_page_grab, vm_page_release, vm_page_convert): Specify new
+       argument.
+       * vm/vm_pageout.c (vm_pageout): Initialize vm_page_external_limit
+       and vm_page_external_target.
+       (VM_PAGE_EXTERNAL_LIMIT, VM_PAGE_EXTERNAL_TARGET): New macro.
+       (vm_page_external_target): New variable.
+       (vm_pageout_scan): Regard "too many externally managed pages" as a
+       reason to keep doing work, but if that's the only reason we're
+       doing work, then the only thing we do is schedule cleaning of
+       pages.  Help keep track of the number of externally managed pages
+       that we care about.
+       * i386/intel/pmap.c (pmap_page_table_page_alloc): Add new arg for
+       vm_page_grab.
+       * linux/dev/glue/block.c (alloc_buffer, device_read): Likewise.
+       * vm/vm_map.c (vm_map_copy_steal_pages): Likewise.
+       * vm/vm_fault.c (vm_fault_page): Add new args for vm_page_grab and
+       vm_page_convert.
+
+       * vm/vm_pageout.c (VM_PAGEOUT_BURST_WAIT): Reduce to 10ms/page.
+       (VM_PAGEOUT_EMPTY_WAIT): Reduce to 75 ms.
+       (VM_PAGE_FREE_RESERVED): Increase to 50 pages.
+       (VM_PAGEOUT_RESERVED_INTERNAL): Adjust to `(reserve) - 25'.
+       (VM_PAGEOUT_RESERVED_REALLY): Adjust to `(reserve) - 40'.
+
+1999-06-21  Thomas Bushnell, BSG  <address@hidden>
+
+       * i386/Files: Don't mention i386/pc/Makerules,
+       i386/include/Makerules, or i386/util/Makerules.
+
+       * Makefile.in (all-real-archs): Delete variable.
+       (dist): No longer make `machine' symlink.
+
+       * Makefile.in (dist): Sanify file permissions before building tar
+       file.
+
+       * i386/Subdirs: Remove i386/i386at/boot.
+
+Sun Jun 20 18:33:59 1999  Thomas Bushnell, BSG  <address@hidden>
+
+       * version.c (version): Updated to version 1.2.
+
+       * i386/Files: Regenerated.
+       * i386/Subdirs: Regenerated.
+
+       * linux/Files: New file.
+       * linux/Subdirs: New file.
+       * Makefile.in (all-archs): Add `linux'.
+       (all-real-archs): New variable.
+       (dist): Create `machine' symlink only on
+       $(all-real-archs).
+
+       * Makefile.in (dist): Use `cp' instead of `ln'.
+
+       * config.guess: Updated from autoconf 2.13.
+       * config.sub: Likewise.
+
+1999-06-16  Thomas Bushnell, BSG  <address@hidden>
+
+       * linux/dev/drivers/net/Space.c (ethif_probe): Probe tc59x_probe
+       (CONFIG_VORTEX) after el3_probe (CONFIG_EL3), because the latter
+       card matches the former probe, but the driver doesn't work with
+       it.  Reported by Marcus Brinkmann <address@hidden>.
+
+       * Drivers.macros (AC_DRIVER): Only turn on driver if $enableval is
+       not `no'.  Reported by Kalle Olavi Niemitalo <address@hidden>.
+
+1999-06-15  Thomas Bushnell, BSG  <address@hidden>
+
+       * ipc/ipc_init.c (ipc_bootstrap): Don't make the IOT_PORT zone
+       exhaustible, because allocation of ports for internal objects
+       panics if zalloc fails.
+
+1999-06-07  OKUJI Yoshinori  <address@hidden>
+
+       * linux/dev/drivers/block/genhd.c [MACH] (mach_minor): New variable.
+       (add_bsd_partition): New function.
+       (bsd_disklabel_partition) [MACH]: Call add_bsd_partition.
+       (msdos_partition) [MACH]: Set mach_minor to MINOR before
+       calling bsd_disklabel_partition.
+       * linux/dev/drivers/block/ide.c (do_request) [MACH]: Fix "bad access"
+       message.
+
+1999-06-02  Roland McGrath  <address@hidden>
+
+       * kern/bootstrap.c (build_args_and_stack): If kernel_cmdline is
+       nonempty, give the bootstrap task an environment variable of
+       "MULTIBOOT_CMDLINE=kernel command line" on its stack.
+
+1999-05-29  Roland McGrath  <address@hidden>
+
+       * kern/startup.c (start_kernel_threads): Call record_time_stamp to
+       reset the kernel task's creation_time field, so it's not zero.
+
+1999-05-24  Mark Kettenis  <address@hidden>
+
+       * i386/i386/fpu.c (fp_free): Clear task switch flag before calling
+       fwait.
+       (fpu_get_state): Only save FPU state info if the live FPU state
+       belongs to our target, i.e. if THREAD is the current thread.
+       (fp_load): Print warning if we try to load an invalid FPU state,
+       and reset the FPU to some sane state instead.
+
+1999-05-23  Roland McGrath  <address@hidden>
+
+       * kern/task.c (task_info): Allow count for TASK_BASIC_INFO to be less
+       two words, not just one.  The new member creation_time is two words.
+
+1999-05-22  Roland McGrath  <address@hidden>
+
+       * linux/configure: Regenerated.
+
+1999-05-21  Roland McGrath  <address@hidden>
+
+       * linux/configure.in: Fix names dummy -> dummy.in in AC_OUTPUT call.
+
+1999-05-14  Roland McGrath  <address@hidden>
+
+       * i386/linux/Drivers.in (linux_DRIVER): New macro, does AC_DRIVER and
+       defines alias for Linux module name.  Use that for all single-module
+       Linux drivers, so we don't forget to define any of the aliases for the
+       Linux module names.
+       * i386/linux/configure: Regenerated.
+
+1999-04-28  OKUJI Yoshinori  <address@hidden>
+
+       * linux/dev/drivers/block/genhd.c (bsd_disklabel_partition) [MACH]:
+       Print BSD slices, using Mach device syntax instead of Linux extented
+       partition syntax.
+
+1999-05-01  Mark Kettenis  <address@hidden>
+
+       * linux/dev/glue/block.c (device_get_status): Always set
+       status_count to DEV_GET_STATUS_COUNT if flavor is DEV_GET_SIZE.
+
+1999-04-30  Roland McGrath  <address@hidden>
+
+       * i386/linux/Drivers.in: Don't create asm-${systype} symlinks here.
+       * linux/configure.in: New file.  Create them here instead.
+       * linux/dummy.in: New file, used by configure.
+       * linux/configure: New file (generated by autoconf).
+       * configure.in: Configure in linux subdir.
+       * configure: Regenerated.
+
+       * i386/configure.in: Require only autoconf 2.12, not 2.13.
+       * i386/configure: Regenerated.
+
+       * aclocal.m4 (hurd_SYSTYPE): New macro.
+       * i386/linux/Drivers.in: Use it.
+       * i386/linux/configure: Regenerated.
+
+Wed Apr 28 02:17:51 1999  Thomas Bushnell, BSG  <address@hidden>
+
+       * linux/src/drivers/net/3c59x.c: Upgrade to Linux 2.2.1 version.
+       (vortex_start_xmit): Don't frob VP->stat.tx_bytes.
+       (boomerang_start_xmit): Likewise.
+       (vortex_rx): Don't frob VP->stats.rx_bytes.
+       (boomerang_rx): Likewise.
+       Requested by Jeff Bailey (address@hidden).
+
+Mon Apr 26 02:13:02 1999  Thomas Bushnell, BSG  <address@hidden>
+
+       * Makefile.in (objfiles): Don't add $(systype)/sysdep.o here.
+       ($(systype)/sysdep.o): Delete rule.
+       (clean, distclean, mostlyclean, maintainerclean, install-headers,
+       install-kernel): Don't do recursive make here.
+       * i386/Makefrag (objfiles): Add i386/sysdep.o to the list.
+       (i386/sysdep.o): New rule.
+       (clean): Depend on i386-clean.
+       (distclean): Depend on i386-distclean.
+       (mostlyclean): Depend on i386-mostlyclean.
+       (maintainerclean): Depend on i386-maintainerclean.
+       (install-headers): Depend on i386-install-headers.
+       (install-kernel): Depend on i386-install-kernel.
+       (i386-clean, i386-distclean, i386-mostlyclean,
+       i386-maintainerclean, i386-install-kernel, i386-install-headers):
+       New rules.
+
+1999-04-14  OKUJI Yoshinori  <address@hidden>
+
+       * version.c (version): Update to 1.1.92.
+
+Sun Mar 14 18:53:01 1999  Thomas Bushnell, BSG  <address@hidden>
+
+       * device/ds_routines.c (ds_read_done): When touching memory to
+       mark it dirty, make sure we say "volatile" so the compiler doesn't
+       optimize it out.
+
+1999-04-12  OKUJI Yoshinori  <address@hidden>
+
+       * i386/linux/Drivers.in: Fix the source paths for `asm' symbolic
+       links. Reported by KONISHI Toru <address@hidden>.
+
+       * linux/dev/drivers/block/ide.c (init_hwif_data) [MACH]: Print Mach
+       device name instead of Linux one.
+       * linux/dev/drivers/block/genhd.c (disk_name): Likewise.
+       * linux/dev/drivers/scsi/sd.c (sd_init_onedisk): Likewise.
+       (sd_detect): Likewise.
+       * linux/dev/drivers/sr.c (sr_detect): Likewise.
+       (get_sectorsize): Likewise.
+
+1999-03-01  OKUJI Yoshinori  <address@hidden>
+
+       Version 1.1.91.
+
+       * version.c (version): Update to 1.1.91.
+
+1999-03-01  OKUJI Yoshinori  <address@hidden>
+
+       * i386/linux/Drivers.in: Fix linking paths.
+       * i386/linux/Makefile.in: Corrent include paths and fix
+       Drivers.macros location.
+
+1999-02-28  OKUJI Yoshinori  <address@hidden>
+
+       * Makefile.in (clean): Don't move device-drivers.h, because it is
+       not in the top directory any longer.
+       (distclean): Remove config.cache and config.log.
+       * i386/Makefile.in (distclean): Remove config.status, config.log
+       and Makefile.
+       * i386/linux/Makefile.in (distclean): Remove config.status,
+       config.log, Makefile and device-drivers.h.
+
+1999-02-27  OKUJI Yoshinori  <address@hidden>
+
+       * i386/linux/Drivers.in: Don't link dev/include/asm-i386 to
+       dev/include/asm. Check if directories already exist before
+       mkdir_p's. Link directories manually, because AC_LINK_FILES
+       is weak in linking files from non-current directories.
+
+       * i386/i386at/i386at_ds_routines.c: Include
+       <i386/linux/device-drivers.h> instead of <linux/device-drivers.h>.
+       * device/ds_routines.c [LINUX_DEV]: Likewise.
+       * i386/linux/Makefile.in (linux-gen-flags): Fix an extra slash.
+       (distclean): Remove asm links.
+       * linux/src/COPYING: Copied from linux-2.0.36.
+
+1999-02-27  OKUJI Yoshinori  <address@hidden>
+
+       * Makefile.in: Omit to detect if com or lpr is used, and don't use
+       linux.o.
+       (objfiles): Add $(systype)/sysdep.o.
+       (clean): Chain the target to $(systype).
+       (distclean): Likewise.
+       (mostlyclean): Likewise.
+       (maintainer-clean): Likewise.
+       (install-headers): Likewise.
+       (install-kernel): Likewise.
+       * configure.in: AC_CONFIG_SUBDIRS ${systype} instead of linux.
+       (--disable-linuxdev): Deleted.
+       (--disable-com): Likewise.
+       (--enable-lpr): Likewise.
+       * i386/Makefile.in: New file.
+       * i386/configure.in: Likewise.
+       * i386/Makefrag (DEFINES): Add -DLINUX_DEV.
+       (objfiles): Always add com.o. If MACH_LPR is defined, then add lpr.o.
+       * linux/Drivers.in: Moved to ...
+       * i386/linux/Drivers.in: ... here. Include ../../aclocal.m4.
+       (mkdir_p): New function to create the linux include dirs.
+       * linux/Makefile.in: Moved to ...
+       * i386/linux/Makefile.in: ... here, and modify so that paths
+       are valid.
+       (clean): New target.
+       (distclean): Likewise.
+       (mostlyclean): Likewise.
+       (maintainer-clean): Likewise.
+       * linux/src/include/linux/autoconf.h: Removed.
+       * linux/dev/include/linux/autoconf.h: Moved to ...
+       * i386/linux/dev/include/linux/autoconf.h: ... here.
+       * linux/dev/arch/i386/linux_emul.h: Moved to ...
+       * i386/linux/dev/include/linux_emul.h: ... here.
+       * linux/device-drivers.h.in: Moved to ...
+       * i386/linux/device-drivers.h.in: ... here.
+       * linux/aclocal.m4: Removed.
+       * linux/configure: Likewise.
+
+1999-02-14  Gordon Matzigkeit  <address@hidden>
+
+       * Makefile.in (install-kernel): Be sure that $(bootdir) is
+       created before installing the kernel.
+
+1999-02-06  OKUJI Yoshinori  <address@hidden>
+
+       * configure.in: Enable com by default, because current kbd and
+       mouse can't be linked without com. Reported by M. Meiarashi
+       <address@hidden>.
+
+1999-02-05  OKUJI Yoshinori  <address@hidden>
+
+       Version 1.1.90.
+
+       * version.c (version): Update to 1.1.90.
+
+1999-02-04  OKUJI Yoshinori  <address@hidden>
+
+       * device/kmsg.c (kmsginit): Add a missing semicolon.
+       (kmsggetstat): Fix typos,
+       DEV_GET_DEVICE_SIZE -> DEV_GET_SIZE_DEVICE_SIZE and
+       DEV_GET_RECORD_SIZE -> DEV_GET_SIZE_RECORD_SIZE.
+       (kmsg_putchar): Fix a typo kmsg_done_init -> kmsg_init_done.
+       * linux/dev/glue/block.c (device_get_status): Allocate a hd_geometry
+       on the stack.
+       * linux/dev/drivers/block/ide.c: New file.
+       * linux/dev/drivers/scsi/sd_ioctl.c: New file.
+
+1999-02-02  OKUJI Yoshinori  <address@hidden>
+
+       * i386/i386at/kd_event.c (kbdgetstat): Fix a typo
+       DEV_GET_SIZES -> DEV_GET_SIZE.
+       * i386/i386at/kd_mouse.c (mousegetstat): Likewise.
+       * device/kmsg.c (kmsggetstat): Likewise.
+
+1999-02-01  OKUJI Yoshinori  <address@hidden>
+
+       * linux/dev/glue/block.c (dev_getstat): Fix a missing `struct'.
+       * device/cons.c (cninit): Don't call kmsginit.
+       * kmsg.c (kmsg_buffer): Defined as static.
+       (kmsg_write_offset): Likewise.
+       (kmsg_read_offset): Likewise.
+       (kmsg_read_queue): Likewise.
+       (kmsg_in_use): Likewise.
+       (kmsg_lock): Likewise.
+       (kmsginit): Likewise, and call queue_init instead of setting
+       PREV and NEXT manually.
+       (kmsg_done_init): New variable.
+       (kmsg_putchar): Call kmsginit if not initialized yet.
+       (kmsggetstat): New function.
+       * kmsg.h (kmsggetstat): Add the prototype.
+       * i386/i386at/kd_event.c (kbdgetstat): Handle DEV_GET_SIZE.
+       (kbdread): Check if the amount a user specify is a multiple
+       of sizeof(kd_event).
+       * i386/i386at/kd_mouse.c (mousegetstat): New function.
+       (mouseread): Check if the amount a user specify is a multiple
+       of sizeof(kd_event).
+       * i386/i386at/conf.c (dev_name_list): Set the mouse getstat entry
+       to mousegetstat and the kmsg getstat entry to kmsggetstat.
+       Use MACH_COM instead of NCOM to determine if com is used.
+       Use MACH_LPR instead of NLPR to determine if lpr is used.
+       * configure.in (--enable-com): New option.
+       (--enable-lpr): Likewise.
+       * Makefile.in (enable_com): New variable.
+       (enable_lpr): Likewise.
+       * i386/Makefrag (i386at-files): Remove com.c.
+       (objfiles): Add com.o if enable_com is yes, and lpr.o if enable_lpr
+       is yes.
+
+Tue Jan 26 21:36:10 1999  Thomas Bushnell, BSG  <address@hidden>
+
+       * kern/exception.c (exception_no_server): Correctly comment out
+       the suspend code.  (This should have happened on 17 April 1997,
+       but apparently I did it backwards.)
+
+1999-01-26  OKUJI Yoshinori  <address@hidden>
+
+       * device/kmsg.c (kmsgopen): Added simple_lock and simple_unlock.
+       (ksmgclose): Likewise.
+
+1999-01-25  OKUJI Yoshinori  <address@hidden>
+
+       * Makefile.in (install-headers): New target for installing only
+       the headers.
+       (install-kernel): New target for installing only the kernel.
+       (mkheaderdirs): New target for making the headers
+       installation directories.
+       (mkkerneldirs): New target for making the kernel
+       installation directory.
+       (install): Do nothing by itself, but depend on install-kernel
+       and install-headers.
+
+1999-01-24  OKUJI Yoshinori  <address@hidden>
+
+       * device/kmsg.h (KMSGBUFSIZE): Deleted.
+       * device/kmsg.c: Rewritten completely to provide stream interface.
+       * linux/dev/glue/block.c (device_getstat): Added V_GETPARMS support.
+       * config.guess: New version from automake-1.4.
+       * config.sub: Likewise.
+       * install-sh: Likewise.
+
+       Some changes were merged from gnumach-m68k by
+       Aymeric Vincent <address@hidden>.
+
+       * Makefile.in (clean): Don't hang if device-drivers.h doesn't exist.
+       * linux/Makefile.in (CPPFLAGS): Fix a typo.
+
+1999-01-16  OKUJI Yoshinori  <address@hidden>
+
+       * device/kmsg.c: Fixed the copyright notice.
+       (MACH_KMSG): Removed.
+       * Makefile.in (enable_kmsg): New variable.
+       (objfiles): Add kmsg.o, if and only if enable_kmsg is yes.
+
+1999-01-10  OKUJI Yoshinori  <address@hidden>
+
+       * i386/i386at/kd.c: Applied a keymap patch. Reported by
+       Marcus Brinkmann <address@hidden>.
+       * i386/i386at/kd.h: Likewise.
+
+1998-12-30  OKUJI Yoshinori  <address@hidden>
+
+       * linux/dev/glue/net.c (dev_alloc_skb): Change the skb arragement.
+       (dev_kfree_skb): Free only skb.
+       (device_write): Keep skb elements up-to-date.
+
+1998-12-18  OKUJI Yoshinori  <address@hidden>
+
+       * Makefile.in (objfiles): Add kmsg.o.
+       * device/cons.c: Include <device/io_req.h>.
+       * device/kmsg.c: Rewritten almost entirely.
+
+1998-12-06  OKUJI Yoshinori  <address@hidden>
+
+       Add kmsg device.
+
+       * Makefile.in (device-files): Add kmsg.c and kmsg.h.
+       * configure.in (--enable-kmsg): New option.
+       * device/cons.c: Include kmsg.h.
+       (cninit): Call kmsginit if MACH_KMSG is defined.
+       (cnputc): Call kmsg_putchar if MACH_KMSG is defined.
+       * device/kmsg.c: New file.
+       * device/kmsg.h: Likewise.
+       * i386/i386at/conf.c (dev_name_list): Add kmsg entry.
+
+1998-12-02  OKUJI Yoshinori  <address@hidden>
+
+       * configure.in: Fix linuxdev option handling.
+       * linux/Drivers.in: Remove linuxdev option and fix linking files.
+       * linux/Makefile.in: Replace @DEFS@ with -DLINUX_DEV.
+       * linux/dev/arch/i386/kernel/irq.c: Include missing header files.
+       * linux/dev/arch/i386/kernel/setup.c: Include <device-drivers.h>.
+       * linux/dev/glue/kmem.c: Add printf declaration.
+       * linux/dev/glue/misc.c: Include <linux/types.h>.
+       * linux/dev/init/main.c: Call linux_sched_init instead of sched_init.
+       * linux/dev/kernel/sched.c: Add timer_bh declaration.
+       (tqueue_bh): Fix the argument.
+       (linux_sched_init): Renamed from sched_init.
+
+1998-12-01  OKUJI Yoshinori  <address@hidden>
+
+       * i386/i386at/i386at_ds_routines.c: Include <linux/device-drivers.h>
+       only if LINUX_DEV is defined. Reported by UCHIYAMA Yasushi
+       <address@hidden>.
+       * device/ds_routines.c: Likewise.
+       * configure.in: AC_CONFIG_SUBDIRS(linux) instead of linuxdev.
+       (--disable-linuxdev): New option.
+       * linux/Makefile.in (CPPFLAGS): Remove -DLINUX_DEV, and add 
@address@hidden
+       (objfiles): Add linux.o only if LINUX_DEV is defined.
+       * linux/Drivers.in (--disable-linuxdev): New option.
+       * i386/Makefrag (DEFINES): Remove -DLINUX_DEV.
+
+1998-11-30  OKUJI Yoshinori  <address@hidden>
+
+       Clean up linux emulation code to make it architecture-independent
+       as much as possible.
+
+       * linux: Renamed from linuxdev.
+       * Makefile.in (objfiles): Add linux.o instead of linuxdev.o.
+       (MAKE): New variable. Used for the linux.o target.
+       * configure.in: Add AC_CHECK_TOOL(MAKE, make).
+       * i386/i386/spl.h: Include <i386/ipl.h>, for compatibility with
+       OSF Mach 3.0. Suggested by Elgin Lee <address@hidden>.
+       * linux/src: Renamed from linux/linux.
+       * linux/dev: Renamed from linux/mach.
+       * linux/Drivers.in (AC_INIT): Use dev/include/linux/autoconf.h,
+       instead of mach/include/linux/autoconf.h.
+       * Makefile.in (all): Target ../linux.o instead of ../linuxdev.o.
+       * linux/dev/drivers/block/genhd.c: Include <machine/spl.h> instead
+       of <i386/ipl.h>.
+       * linux/dev/drivers/net/auto_irq.c: Remove unneeded header files,
+       <i386/ipl.h> and <i386/pic.h>.
+       * linux/dev/init/main.c: Many i386-dependent codes moved to ...
+       * linux/dev/arch/i386/irq.c: ... here.
+       * linux/dev/arch/i386/setup.c: New file.
+       * linux/dev/arch/i386/linux_emul.h: Likewise.
+       * linux/dev/arch/i386/glue/timer.c: Merged into sched.c.
+       * linux/dev/arch/i386/glue/sched.c: Include <machine/spl.h> instead
+       of <i386/ipl.h>, and moved to ...
+       * linux/dev/kernel/sched.c: ... here.
+       * linux/dev/arch/i386/glue/block.c: Include <machine/spl.h> and
+       <linux_emul.h>, instead of i386-dependent header files, and
+       moved to ...
+       * linux/dev/glue/blocl.c: ... here.
+       * linux/dev/arch/i386/glue/net.c: Include <machine/spl.h> and
+       <linux_emul.h>, instead of i386-dependent header files, and
+       moved to ...
+       * linux/dev/glue/net.c: ... here.
+       * linux/dev/arch/i386/glue/misc.c: Remove `x86' and moved to ...
+       * linux/dev/glue/misc.c: ... here.
+       * linux/dev/arch/i386/glue/kmem.c: Moved to ...
+       * linux/dev/glue/kmem.c: ... here.
+
+1998-11-25  OKUJI Yoshinori  <address@hidden>
+
+       * linuxdev/mach/init/main.c (linux_init): Call reserve_mach_irqs.
+       * linuxdev/mach/arch/i386/kernel/irq.c (probe_irq_on): Fix ivect
+       mishandling.
+       (probe_irq_off): Disable unnecessary IRQs. Reported by
+       UCHIYAMA Yasushi <address@hidden>.
+       (reserve_mach_irqs): New function.
+
+1998-11-24  OKUJI Yoshinori  <address@hidden>
+
+       * linuxdev/arch/i386/linux_init.c (linux_init): Check ivect
+       before set linux_bad_intr.
+       * linuxdev/arch/i386/linux_irq.c (probe_irq_on): Allocate only
+       if ivect is null, and set linux_intr_pri to intpri.
+
+       * linuxdev: Heavily changed. It becomes more Linux-like file
+       hierarchy as suggested by Roland McGrath <address@hidden>.
+       * linuxdev/linux: Contain original Linux source files.
+       * linuxdev/mach: Contain modified source files for Mach.
+       * linuxdev/mach/arch/i386/glue: XXX Contain files that are
+       not easy to segregate.
+       * Makefile.in: Call `make -C linuxdev all', instead of include
+       linuxdev/Makefrag.
+
+1998-11-23  OKUJI Yoshinori  <address@hidden>
+
+       * linuxdev/arch/i386/linux_irq.c (linux_bad_intr): New function.
+       (free_irq): Set linux_bad_intr into ivect[irq].
+       * linuxdev/arch/i386/linux_init.c (linux_init):
+       Set linux_bad_intr as the default interrupt handler.
+
+       * linuxdev/include/asm-i386/string.h (strstr): Fix the
+       egcs/gcc 2.8.x bug and a linkage problem. Reported by
+       Roland McGrath <address@hidden>.
+
+1998-11-18  OKUJI Yoshinori  <address@hidden>
+
+       * linuxdev/Drivers.in: Fix a typo.
+       * linuxdev/Makefrag: Likewise.
+       * linuxdev/arch/i386/linux_block.c (set_blocksize): Likewise.
+
+       * linuxdev/arch/i386/linux_kmem.c (vfree): Cast void * to
+       vm_offset_t.
+       * linuxdev/drivers/net/wavelan.p.h: Include
+       <linuxdev/drivers/net/i82586.h>, instead of <drivers/net/i82586.h>.
+       * linuxdev/drivers/scsi/aha152x.c: Define AUTOCONF.
+       * linuxdev/configure: Regenerate.
+
+1998-11-17  OKUJI Yoshinori  <address@hidden>
+
+       * linuxdev/arch/i386/linux_misc.c (strstr): New function.
+       Because inline version strstr is not used when use
+       egcs/gcc 2.8.x. Reported by UCHIYAMA Yasushi <address@hidden>.
+
+       * linuxdev/arch/i386/linux_irq.c (unmask_irq): Fix a typo.
+
+1998-11-17  OKUJI Yoshinori  <address@hidden>
+
+       * i386/README-Drivers: Update to Linux 2.0.36 device drivers.
+       * linuxdev/Drivers.in: Likewise.
+       * linuxdev/Makefrag: Likewise.
+       * linuxdev/arch/i386/linux_lib.S: Likewise.
+       * linuxdev/device-drivers.h.in: Likewise.
+       * linuxdev/drivers/block/floppy.c: Likewise.
+       * linuxdev/drivers/block/ide.c: Likewise.
+       * linuxdev/drivers/block/ide.h: Likewise.
+       * linuxdev/drivers/net/3c505.h: Likewise.
+       * linuxdev/drivers/net/3c509.c: Likewise.
+       * linuxdev/drivers/net/3c515.c: Likewise.
+       * linuxdev/drivers/net/3c59x.c: Likewise.
+       * linuxdev/drivers/net/Space.c: Likewise.
+       * linuxdev/drivers/net/apricot.c: Likewise.
+       * linuxdev/drivers/net/de4x5.c: Likewise.
+       * linuxdev/drivers/net/eepro.c: Likewise.
+       * linuxdev/drivers/net/eepro100.c: Likewise.
+       * linuxdev/drivers/net/eexpress.c: Likewise.
+       * linuxdev/drivers/net/epic100.c: Likewise.
+       * linuxdev/drivers/net/eth16i.c: Likewise.
+       * linuxdev/drivers/net/hp100.c: Likewise.
+       * linuxdev/drivers/net/lance.c: Likewise.
+       * linuxdev/drivers/net/ne2k-pci.c: Likewise.
+       * linuxdev/drivers/net/pcnet32.c: Likewise.
+       * linuxdev/drivers/net/rtl8139.c: Likewise.
+       * linuxdev/drivers/net/tlan.c: Likewise.
+       * linuxdev/drivers/net/tulip.c: Likewise.
+       * linuxdev/drivers/net/wavelan.c: Likewise.
+       * linuxdev/drivers/pci/pci.c: Likewise.
+       * linuxdev/drivers/scsi/BusLogic.c: Likewise.
+       * linuxdev/drivers/scsi/FlashPoint.c: Likewise.
+       * linuxdev/drivers/scsi/aha152x.c: Likewise.
+       * linuxdev/drivers/scsi/aha1542.c: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx/sequencer.h: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx.c: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx_proc.c: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx_reg.h: Likewise.
+       * linuxdev/drivers/scsi/dtc.c: Likewise.
+       * linuxdev/drivers/scsi/eata.c: Likewise.
+       * linuxdev/drivers/scsi/eata.h: Likewise.
+       * linuxdev/drivers/scsi/eata_dma.c: Likewise.
+       * linuxdev/drivers/scsi/gdth.c: Likewise.
+       * linuxdev/drivers/scsi/gdth.h: Likewise.
+       * linuxdev/drivers/scsi/gdth_proc.c: Likewise.
+       * linuxdev/drivers/scsi/gdth_proc.h: Likewise.
+       * linuxdev/drivers/scsi/hosts.c: Likewise.
+       * linuxdev/drivers/scsi/in2000.c: Likewise.
+       * linuxdev/drivers/scsi/in2000.h: Likewise.
+       * linuxdev/drivers/scsi/ncr53c8xx.c: Likewise.
+       * linuxdev/drivers/scsi/ppa.h: Likewise.
+       * linuxdev/drivers/scsi/scsi.c: Likewise.
+       * linuxdev/drivers/scsi/scsicam.c: Likewise.
+       * linuxdev/drivers/scsi/sd.c: Likewise.
+       * linuxdev/drivers/scsi/seagate.c: Likewise.
+       * linuxdev/drivers/scsi/u14-34f.c: Likewise.
+       * linuxdev/drivers/scsi/u14-34f.h: Likewise.
+       * linuxdev/drivers/scsi/wd7000.c: Likewise.
+       * linuxdev/drivers/scsi/wd7000.h: Likewise.
+       * linuxdev/include/asm-i386/irq.h: Likewise.
+       * linuxdev/include/asm-i386/processor.h: Likewise.
+       * linuxdev/include/asm-i386/ptrace.h: Likewise.
+       * linuxdev/include/asm-i386/system.h: Likewise.
+       * linuxdev/include/asm-i386/unistd.h: Likewise.
+       * linuxdev/include/linux/fs.h: Likewise.
+       * linuxdev/include/linux/genhd.h: Likewise.
+       * linuxdev/include/linux/interrupt.h: Likewise.
+       * linuxdev/include/linux/ip.h: Likewise.
+       * linuxdev/include/linux/pci.h: Likewise.
+       * linuxdev/include/linux/version.h: Likewise.
+       * linuxdev/include/linux/wireless.h: Likewise.
+
+       * linuxdev/drivers/net/via-rhine.c: New file.
+       * linuxdev/drivers/scsi/aic7xxx_seq.c: Likewise.
+       * linuxdev/include/linux/rose.h: Likewise.
+
+       * linuxdev/drivers/scsi/aic7xxx_seq.h: Removed.
+       * linuxdev/configure: Regenerate.
+       * linuxdev/include/asm-i386/string.h: Fix the egcs/gcc 2.8.x problem,
+       according to http://www.suse.de/~florian/kernel+egcs.html.
+
+1998-11-14  OKUJI Yoshinori  <address@hidden>
+
+       * Makefile.in (clib-routines.o): Add -L option to search libc.a.
+       Reported by TAKEUCHI Yoji <address@hidden>.
+
+       * linuxdev/drivers/pci/bios32.c: Moved to ...
+       * linuxdev/arch/i386/linux_bios32.c: ... here. Because it is
+       i386-specific code.
+       * linuxdev/include/asm: Moved to ...
+       * linuxdev/include/asm-i386: ... here.
+
+       * i386/README-Drivers: Update to Linux 2.0.35 device drivers.
+       * linuxdev/Drivers.in: Likewise.
+       * linuxdev/configure: Likewise.
+       * linuxdev/device-drivers.h.in: Likewise.
+       * linuxdev/Makefrag: Likewise.
+       * linuxdev/arch/i386/linux_autoirq.c: Likewise.
+       * linuxdev/arch/i386/linux_block.c: Likewise.
+       * linuxdev/arch/i386/linux_dma.c: Likewise.
+       * linuxdev/arch/i386/linux_init.c: Likewise.
+       * linuxdev/arch/i386/linux_irq.c: Likewise.
+       * linuxdev/arch/i386/linux_kmem.c: Likewise.
+       * linuxdev/arch/i386/linux_misc.c: Likewise.
+       * linuxdev/arch/i386/linux_net.c: Likewise.
+       * linuxdev/arch/i386/linux_port.c: Likewise.
+       * linuxdev/arch/i386/linux_printk.c: Likewise.
+       * linuxdev/arch/i386/linux_sched.c: Likewise.
+       * linuxdev/arch/i386/linux_timer.c: Likewise.
+       * linuxdev/arch/i386/linux_version.c: Likewise.
+       * linuxdev/arch/i386/linux_vsprintf.c: Likewise.
+       * linuxdev/drivers/block/cmd640.c: Likewise.
+       * linuxdev/drivers/block/floppy.c: Likewise.
+       * linuxdev/drivers/block/genhd.c: Likewise.
+       * linuxdev/drivers/block/ide-cd.c: Likewise.
+       * linuxdev/drivers/block/ide.c: Likewise.
+       * linuxdev/drivers/block/ide.h: Likewise.
+       * linuxdev/drivers/block/ide_modes.h: Likewise.
+       * linuxdev/drivers/block/rz1000.c: Likewise.
+       * linuxdev/drivers/block/triton.c: Likewise.
+       * linuxdev/drivers/net/3c501.c: Likewise.
+       * linuxdev/drivers/net/3c503.c: Likewise.
+       * linuxdev/drivers/net/3c505.c: Likewise.
+       * linuxdev/drivers/net/3c507.c: Likewise.
+       * linuxdev/drivers/net/3c509.c: Likewise.
+       * linuxdev/drivers/net/3c59x.c: Likewise.
+       * linuxdev/drivers/net/8390.c: Likewise.
+       * linuxdev/drivers/net/8390.h: Likewise.
+       * linuxdev/drivers/net/Space.c: Likewise.
+       * linuxdev/drivers/net/ac3200.c: Likewise.
+       * linuxdev/drivers/net/apricot.c: Likewise.
+       * linuxdev/drivers/net/at1700.c: Likewise.
+       * linuxdev/drivers/net/atp.c: Likewise.
+       * linuxdev/drivers/net/atp.h: Likewise.
+       * linuxdev/drivers/net/de4x5.c: Likewise.
+       * linuxdev/drivers/net/de4x5.h: Likewise.
+       * linuxdev/drivers/net/de600.c: Likewise.
+       * linuxdev/drivers/net/de620.c: Likewise.
+       * linuxdev/drivers/net/depca.c: Likewise.
+       * linuxdev/drivers/net/dev.c: Likewise.
+       * linuxdev/drivers/net/e2100.c: Likewise.
+       * linuxdev/drivers/net/eepro.c: Likewise.
+       * linuxdev/drivers/net/eepro100.c: Likewise.
+       * linuxdev/drivers/net/eexpress.c: Likewise.
+       * linuxdev/drivers/net/eth16i.c: Likewise.
+       * linuxdev/drivers/net/ewrk3.c: Likewise.
+       * linuxdev/drivers/net/ewrk3.h: Likewise.
+       * linuxdev/drivers/net/hp-plus.c: Likewise.
+       * linuxdev/drivers/net/hp.c: Likewise.
+       * linuxdev/drivers/net/hp100.c: Likewise.
+       * linuxdev/drivers/net/hp100.h: Likewise.
+       * linuxdev/drivers/net/i82586.h: Likewise.
+       * linuxdev/drivers/net/lance.c: Likewise.
+       * linuxdev/drivers/net/ne.c: Likewise.
+       * linuxdev/drivers/net/net_init.c: Likewise.
+       * linuxdev/drivers/net/ni52.c: Likewise.
+       * linuxdev/drivers/net/ni52.h: Likewise.
+       * linuxdev/drivers/net/ni65.c: Likewise.
+       * linuxdev/drivers/net/ni65.h: Likewise.
+       * linuxdev/drivers/net/seeq8005.c: Likewise.
+       * linuxdev/drivers/net/seeq8005.h: Likewise.
+       * linuxdev/drivers/net/sk_g16.c: Likewise.
+       * linuxdev/drivers/net/sk_g16.h: Likewise.
+       * linuxdev/drivers/net/smc-ultra.c: Likewise.
+       * linuxdev/drivers/net/tulip.c: Likewise.
+       * linuxdev/drivers/net/wavelan.c: Likewise.
+       * linuxdev/drivers/net/wavelan.h: Likewise.
+       * linuxdev/drivers/net/wd.c: Likewise.
+       * linuxdev/drivers/net/znet.c: Likewise.
+       * linuxdev/drivers/pci/pci.c: Likewise.
+       * linuxdev/drivers/scsi/53c7,8xx.h: Likewise.
+       * linuxdev/drivers/scsi/53c78xx.c: Likewise.
+       * linuxdev/drivers/scsi/53c8xx_d.h: Likewise.
+       * linuxdev/drivers/scsi/AM53C974.c: Likewise.
+       * linuxdev/drivers/scsi/AM53C974.h: Likewise.
+       * linuxdev/drivers/scsi/BusLogic.c: Likewise.
+       * linuxdev/drivers/scsi/BusLogic.h: Likewise.
+       * linuxdev/drivers/scsi/NCR53c406a.c: Likewise.
+       * linuxdev/drivers/scsi/NCR53c406a.h: Likewise.
+       * linuxdev/drivers/scsi/advansys.c: Likewise.
+       * linuxdev/drivers/scsi/advansys.h: Likewise.
+       * linuxdev/drivers/scsi/aha152x.c: Likewise.
+       * linuxdev/drivers/scsi/aha152x.h: Likewise.
+       * linuxdev/drivers/scsi/aha1542.c: Likewise.
+       * linuxdev/drivers/scsi/aha1542.h: Likewise.
+       * linuxdev/drivers/scsi/aha1740.c: Likewise.
+       * linuxdev/drivers/scsi/aha1740.h: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx.c: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx.h: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx_seq.h: Likewise.
+       * linuxdev/drivers/scsi/constants.h: Likewise.
+       * linuxdev/drivers/scsi/eata.c: Likewise.
+       * linuxdev/drivers/scsi/eata.h: Likewise.
+       * linuxdev/drivers/scsi/eata_dma.c: Likewise.
+       * linuxdev/drivers/scsi/eata_dma.h: Likewise.
+       * linuxdev/drivers/scsi/eata_generic.h: Likewise.
+       * linuxdev/drivers/scsi/eata_pio.c: Likewise.
+       * linuxdev/drivers/scsi/eata_pio.h: Likewise.
+       * linuxdev/drivers/scsi/fdomain.c: Likewise.
+       * linuxdev/drivers/scsi/fdomain.h: Likewise.
+       * linuxdev/drivers/scsi/g_NCR5380.c: Likewise.
+       * linuxdev/drivers/scsi/g_NCR5380.h: Likewise.
+       * linuxdev/drivers/scsi/hosts.c: Likewise.
+       * linuxdev/drivers/scsi/hosts.h: Likewise.
+       * linuxdev/drivers/scsi/in2000.c: Likewise.
+       * linuxdev/drivers/scsi/in2000.h: Likewise.
+       * linuxdev/drivers/scsi/pas16.c: Likewise.
+       * linuxdev/drivers/scsi/pas16.h: Likewise.
+       * linuxdev/drivers/scsi/scsi.c: Likewise.
+       * linuxdev/drivers/scsi/scsi.h: Likewise.
+       * linuxdev/drivers/scsi/scsi_ioctl.c: Likewise.
+       * linuxdev/drivers/scsi/scsi_proc.c: Likewise.
+       * linuxdev/drivers/scsi/scsicam.c: Likewise.
+       * linuxdev/drivers/scsi/sd.c: Likewise.
+       * linuxdev/drivers/scsi/sd.h: Likewise.
+       * linuxdev/drivers/scsi/sd_ioctl.c: Likewise.
+       * linuxdev/drivers/scsi/seagate.c: Likewise.
+       * linuxdev/drivers/scsi/seagate.h: Likewise.
+       * linuxdev/drivers/scsi/sr.c: Likewise.
+       * linuxdev/drivers/scsi/sr_ioctl.c: Likewise.
+       * linuxdev/drivers/scsi/t128.c: Likewise.
+       * linuxdev/drivers/scsi/t128.h: Likewise.
+       * linuxdev/drivers/scsi/u14-34f.c: Likewise.
+       * linuxdev/drivers/scsi/u14-34f.h: Likewise.
+       * linuxdev/drivers/scsi/ultrastor.c: Likewise.
+       * linuxdev/drivers/scsi/ultrastor.h: Likewise.
+       * linuxdev/drivers/scsi/wd7000.c: Likewise.
+       * linuxdev/drivers/scsi/wd7000.h: Likewise.
+       * linuxdev/include/asm-i386/bitops.h: Likewise.
+       * linuxdev/include/asm-i386/delay.h: Likewise.
+       * linuxdev/include/asm-i386/dma.h: Likewise.
+       * linuxdev/include/asm-i386/errno.h: Likewise.
+       * linuxdev/include/asm-i386/fcntl.h: Likewise.
+       * linuxdev/include/asm-i386/floppy.h: Likewise.
+       * linuxdev/include/asm-i386/ioctl.h: Likewise.
+       * linuxdev/include/asm-i386/floppy.h: Likewise.
+       * linuxdev/include/asm-i386/irq.h: Likewise.
+       * linuxdev/include/asm-i386/processor.h: Likewise.
+       * linuxdev/include/asm-i386/ptrace.h: Likewise.
+       * linuxdev/include/asm-i386/resource.h: Likewise.
+       * linuxdev/include/asm-i386/segment.h: Likewise.
+       * linuxdev/include/asm-i386/sigcontext.h: Likewise.
+       * linuxdev/include/asm-i386/signal.h: Likewise.
+       * linuxdev/include/asm-i386/socket.h: Likewise.
+       * linuxdev/include/asm-i386/statfs.h: Likewise.
+       * linuxdev/include/asm-i386/string.h: Likewise.
+       * linuxdev/include/asm-i386/system.h: Likewise.
+       * linuxdev/include/asm-i386/termios.h: Likewise.
+       * linuxdev/include/asm-i386/types.h: Likewise.
+       * linuxdev/include/asm-i386/unistd.h: Likewise.
+       * linuxdev/include/linux/autoconf.h: Likewise.
+       * linuxdev/include/linux/binfmts.h: Likewise.
+       * linuxdev/include/linux/bios32.h: Likewise.
+       * linuxdev/include/linux/blk.h: Likewise.
+       * linuxdev/include/linux/blkdev.h: Likewise.
+       * linuxdev/include/linux/cdrom.h: Likewise.
+       * linuxdev/include/linux/config.h: Likewise.
+       * linuxdev/include/linux/etherdevice.h: Likewise.
+       * linuxdev/include/linux/fd.h: Likewise.
+       * linuxdev/include/linux/fdreg.h: Likewise.
+       * linuxdev/include/linux/fs.h: Likewise.
+       * linuxdev/include/linux/genhd.h: Likewise.
+       * linuxdev/include/linux/hdreg.h: Likewise.
+       * linuxdev/include/linux/if.h: Likewise.
+       * linuxdev/include/linux/if_arp.h: Likewise.
+       * linuxdev/include/linux/if_ether.h: Likewise.
+       * linuxdev/include/linux/if_tr.h: Likewise.
+       * linuxdev/include/linux/igmp.h: Likewise.
+       * linuxdev/include/linux/in.h: Likewise.
+       * linuxdev/include/linux/inet.h: Likewise.
+       * linuxdev/include/linux/interrupt.h: Likewise.
+       * linuxdev/include/linux/ioport.h: Likewise.
+       * linuxdev/include/linux/ip.h: Likewise.
+       * linuxdev/include/linux/kernel.h: Likewise.
+       * linuxdev/include/linux/locks.h: Likewise.
+       * linuxdev/include/linux/major.h: Likewise.
+       * linuxdev/include/linux/malloc.h: Likewise.
+       * linuxdev/include/linux/mc146818rtc.h: Likewise.
+       * linuxdev/include/linux/mm.h: Likewise.
+       * linuxdev/include/linux/module.h: Likewise.
+       * linuxdev/include/linux/mount.h: Likewise.
+       * linuxdev/include/linux/net.h: Likewise.
+       * linuxdev/include/linux/netdevice.h: Likewise.
+       * linuxdev/include/linux/nfs.h: Likewise.
+       * linuxdev/include/linux/notifier.h: Likewise.
+       * linuxdev/include/linux/pagemap.h: Likewise.
+       * linuxdev/include/linux/pci.h: Likewise.
+       * linuxdev/include/linux/personality.h: Likewise.
+       * linuxdev/include/linux/proc_fs.h: Likewise.
+       * linuxdev/include/linux/quota.h: Likewise.
+       * linuxdev/include/linux/route.h: Likewise.
+       * linuxdev/include/linux/sched.h: Likewise.
+       * linuxdev/include/linux/skbuff.h: Likewise.
+       * linuxdev/include/linux/socket.h: Likewise.
+       * linuxdev/include/linux/sockios.h: Likewise.
+       * linuxdev/include/linux/string.h: Likewise.
+       * linuxdev/include/linux/time.h: Likewise.
+       * linuxdev/include/linux/timer.h: Likewise.
+       * linuxdev/include/linux/tqueue.h: Likewise.
+       * linuxdev/include/linux/tty.h: Likewise.
+       * linuxdev/include/linux/types.h: Likewise.
+       * linuxdev/include/linux/uio.h: Likewise.
+       * linuxdev/include/linux/version.h: Likewise.
+       * linuxdev/include/linux/wait.h: Likewise.
+       * linuxdev/include/net/af_unix.h: Likewise.
+       * linuxdev/include/net/ax25.h: Likewise.
+       * linuxdev/include/net/ax25call.h: Likewise.
+       * linuxdev/include/net/icmp.h: Likewise.
+       * linuxdev/include/net/ip.h: Likewise.
+       * linuxdev/include/net/ip_alias.h: Likewise.
+       * linuxdev/include/net/ip_forward.h: Likewise.
+       * linuxdev/include/net/ipx.h: Likewise.
+       * linuxdev/include/net/netlink.h: Likewise.
+       * linuxdev/include/net/netrom.h: Likewise.
+       * linuxdev/include/net/nrcall.h: Likewise.
+       * linuxdev/include/net/p8022.h: Likewise.
+       * linuxdev/include/net/protocol.h: Likewise.
+       * linuxdev/include/net/psnap.h: Likewise.
+       * linuxdev/include/net/raw.h: Likewise.
+       * linuxdev/include/net/route.h: Likewise.
+       * linuxdev/include/net/sock.h: Likewise.
+       * linuxdev/include/net/tcp.h: Likewise.
+       * linuxdev/include/net/udp.h: Likewise.
+
+       * linuxdev/arch/i386/linux_soft.c: Removed.
+       * linuxdev/drivers/scsi/NCR5380.src: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx_proc.src: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx_reg.h: Likewise.
+       * linuxdev/drivers/scsi/eata_dma_proc.src: Likewise.
+       * linuxdev/drivers/scsi/eata_pio_proc.src: Likewise.
+       * linuxdev/drivers/scsi/qlogic.c: Likewise.
+       * linuxdev/drivers/scsi/qlogic.h: Likewise.
+       * linuxdev/drivers/scsi/scsi_debug.c: Likewise.
+       * linuxdev/drivers/scsi/scsi_debug.h: Likewise.
+       * linuxdev/drivers/scsi/scsi_ioctl.h: Likewise.
+       * linuxdev/include/linux/math_emu.h: Likewise.
+       * linuxdev/include/linux/minix_fs.h: Likewise.
+       * linuxdev/include/linux/minix_fs_sb.h: Likewise.
+       * linuxdev/include/linux/scsi.h: Likewise.
+       * linuxdev/include/linux/scsicam.h: Likewise.
+       * linuxdev/include/linux/vm86.h: Likewise.
+
+       * linuxdev/arch/i386/linux_ctype.c: New file.
+       * linuxdev/arch/i386/linux_lib.S: Likewise.
+       * linuxdev/arch/i386/linux_softirq.c: Likewise.
+       * linuxdev/drivers/net/3c515.c: Likewise.
+       * linuxdev/drivers/net/epic100.c: Likewise.
+       * linuxdev/drivers/net/eth82586.h: Likewise.
+       * linuxdev/drivers/net/fmv18x.c: Likewise.
+       * linuxdev/drivers/net/ne2k-pci.c: Likewise.
+       * linuxdev/drivers/net/pcnet32.c: Likewise.
+       * linuxdev/drivers/net/rtl8139.c: Likewise.
+       * linuxdev/drivers/net/smc-ultra32.c: Likewise.
+       * linuxdev/drivers/net/smc9194.c: Likewise.
+       * linuxdev/drivers/net/smc9194.h: Likewise.
+       * linuxdev/drivers/net/tlan.c: Likewise.
+       * linuxdev/drivers/net/tlan.h: Likewise.
+       * linuxdev/drivers/net/wavelan.p.h: Likewise.
+       * linuxdev/drivers/net/yellowfin.c: Likewise.
+       * linuxdev/drivers/scsi/FlashPoint.c: Likewise.
+       * linuxdev/drivers/scsi/NCR5380.c: Likewise.
+       * linuxdev/drivers/scsi/NCR5380.h: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx/scsi_message.h: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx/sequencer.h: Likewise.
+       * linuxdev/drivers/scsi/aic7xxx_proc.c: Likewise.
+       * linuxdev/drivers/scsi/dc390.h: Likewise.
+       * linuxdev/drivers/scsi/dc390w.h: Likewise.
+       * linuxdev/drivers/scsi/dtc.c: Likewise.
+       * linuxdev/drivers/scsi/dtc.h: Likewise.
+       * linuxdev/drivers/scsi/eata_dma_proc.c: Likewise.
+       * linuxdev/drivers/scsi/eata_pio_proc.c: Likewise.
+       * linuxdev/drivers/scsi/gdth.c: Likewise.
+       * linuxdev/drivers/scsi/gdth.h: Likewise.
+       * linuxdev/drivers/scsi/gdth_ioctl.h: Likewise.
+       * linuxdev/drivers/scsi/gdth_proc.c: Likewise.
+       * linuxdev/drivers/scsi/gdth_proc.h: Likewise.
+       * linuxdev/drivers/scsi/ncr53c8xx.c: Likewise.
+       * linuxdev/drivers/scsi/ncr53c8xx.h: Likewise.
+       * linuxdev/drivers/scsi/ppa.c: Likewise.
+       * linuxdev/drivers/scsi/ppa.h: Likewise.
+       * linuxdev/drivers/scsi/qlogicfas.c: Likewise.
+       * linuxdev/drivers/scsi/qlogicfas.h: Likewise.
+       * linuxdev/drivers/scsi/qlogicisp.c: Likewise.
+       * linuxdev/drivers/scsi/qlogicisp.h: Likewise.
+       * linuxdev/drivers/scsi/qlogicisp_asm.c: Likewise.
+       * linuxdev/drivers/scsi/scripts.h: Likewise.
+       * linuxdev/drivers/scsi/scsiio.c: Likewise.
+       * linuxdev/drivers/scsi/scsiiom.c: Likewise.
+       * linuxdev/drivers/scsi/tmscsim.c: Likewise.
+       * linuxdev/drivers/scsi/tmscsim.h: Likewise.
+       * linuxdev/drivers/scsi/tmscsiw.c: Likewise.
+       * linuxdev/drivers/scsi/tmscsiw.h: Likewise.
+       * linuxdev/include/asm-i386/atomic.h: Likewise.
+       * linuxdev/include/asm-i386/checksum.h: Likewise.
+       * linuxdev/include/asm-i386/ioctls.h: Likewise.
+       * linuxdev/include/asm-i386/math_emu.h: Likewise.
+       * linuxdev/include/asm-i386/posix_types.h: Likewise.
+       * linuxdev/include/asm-i386/semaphore.h: Likewise.
+       * linuxdev/include/asm-i386/sockios.h: Likewise.
+       * linuxdev/include/asm-i386/string-486.h: Likewise.
+       * linuxdev/include/asm-i386/termbits.h: Likewise.
+       * linuxdev/include/asm-i386/unaligned.h: Likewise.
+       * linuxdev/include/asm-i386/vm86.h: Likewise.
+       * linuxdev/include/linux/affs_hardblocks.h: Likewise.
+       * linuxdev/include/linux/atalk.h: Likewise.
+       * linuxdev/include/linux/ax25.h: Likewise.
+       * linuxdev/include/linux/compile.h: Likewise.
+       * linuxdev/include/linux/ctype.h: Likewise.
+       * linuxdev/include/linux/fddidevice.h: Likewise.
+       * linuxdev/include/linux/icmp.h: Likewise.
+       * linuxdev/include/linux/if_fddi.h: Likewise.
+       * linuxdev/include/linux/ipx.h: Likewise.
+       * linuxdev/include/linux/md.h: Likewise.
+       * linuxdev/include/linux/netrom.h: Likewise.
+       * linuxdev/include/linux/posix_types.h: Likewise.
+       * linuxdev/include/linux/random.h: Likewise.
+       * linuxdev/include/linux/ucdrom.h: Likewise.
+       * linuxdev/include/linux/udp.h: Likewise.
+       * linuxdev/include/linux/wireless.h: Likewise.
+       * linuxdev/include/net/br.h: Likewise.
+       * linuxdev/include/net/gc.h: Likewise.
+       * linuxdev/include/net/ip_masq.h: Likewise.
+       * linuxdev/include/net/p8022tr.h: Likewise.
+       * linuxdev/include/net/p8022trcall.h: Likewise.
+       * linuxdev/include/net/rose.h: Likewise.
+       * linuxdev/include/net/rosecall.h: Likewise.
+       * linuxdev/include/net/slhc_vj.h: Likewise.
+       * linuxdev/include/net/spx.h: Likewise.
+       * linuxdev/include/scsi/scsi.h: Likewise.
+       * linuxdev/include/scsi/scsi_ioctl.h: Likewise.
+       * linuxdev/include/scsi/scsicam.h: Likewise.
+
+1998-11-06  OKUJI Yoshinori  <address@hidden>
+
+       * i386/i386at/gpl/linux: Moved to ...
+       * linuxdev: ... here.
+       * i386/Makefrag: Linux drivers specific code moved to ...
+       * linuxdev/Makefrag: ... here.
+       * i386/Files: Recreated.
+       * i386/Subdirs: Likewise.
+       * linuxdev/drivers: New directory.
+       * linuxdev/arch: Likewise.
+       * linuxdev/arch/i386: Likewise.
+       * linuxdev/{block,scsi,net,pci}: Moved to ...
+       * linuxdev/drivers/{block,scsi,net,pci}: ... here.
+       * i386/{Drivers.in,device-drivers.h.in,driverlist.in}: Moved to ...
+       * linuxdev/{Drivers.in,device-drivers.h.in,driverlist.in}: ... here.
+       * linuxdev/{linux_emul.h,linux_*.c}: Moved to ...
+       * linuxdev/arch/i386/{linux_emul.h,linux_*.c}: ... here.
+       * linuxdev/arch/i386/linux_block.c: Include <linux_emul.h>, instead
+       of <i386at/gpl/linux/linux_emul.h>.
+       * linuxdev/arch/i386/linux_init.c: Likewise.
+       * linuxdev/arch/i386/linux_kmem.c: Likewise.
+       * linuxdev/arch/i386/linux_misc.c: Likewise.
+       * linuxdev/arch/i386/linux_net.c: Likewise.
+       * linuxdev/arch/i386/linux_sched.c: Likewise.
+       * device/ds_routines.c: Include <linuxdev/device-drivers.h>, instead
+       of <i386/device-drivers.h>.
+       * linuxdev/arch/i386/linux_init.c: Likewise.
+       * linuxdev/include/linux/autoconf.h: Likewise.
+       * Makefile.in: Include $(srcdir)/linuxdev/Makefrag.
+       * linuxdev/Drivers.in (AC_INIT): Use include/linux/autoconf.h,
+       instead of i386/i386asm.sym.
+
+1998-10-28  Roland McGrath  <address@hidden>
+
+       * include/mach/multiboot.h: Contents were doubled.
+
+1998-10-24  Roland McGrath  <address@hidden>
+
+       * Makefile.in (mach_machine): Don't depend on config.status, since it
+       is always newer than the symlink target.
+
+       * i386/Makefrag ($(systype)/device-drivers.h): Depend on
+       $(systype)/driverlist, and have no commands.
+
+       * configure.in (--enable-kdb): Fix help text; handle --disable-kdb.
+       Remove BUILD_CC checks and lex/yacc checks (which were for mig).
+       (installed_clib): Remove these checks.
+       (LD, NM, MIG): Use AC_CHECK_TOOL for these.
+
+       * Makefile.in (all, clean, mostlyclean, install, dist,
+       %_interface.h rule, all *mig* rules): Remove all commands, deps,
+       and rules related to mig, which is now in a separate distribution.
+
+       * Makefile.in (before-compile): Add mach/machine.
+       (mach/machine, mach_machine): New rules to make symlink so
+       #include <mach/machine/foo.h> works.
+
+       * Makefile.in (NM): New variable, substituted by configure.
+       (check-clib-routines): Use $(NM) instead of literal "nm".
+       Fix awk script to grok __ defns and weak defns of desired symbols.
+       (clib-routines.o): Use $(CC) -r -nostartfiles -nostdlib -static
+       instead of $(LD) -r.  Use -lc instead of $(installed-clib).
+       (installed-clib): Variable removed.
+
+       * i386/Makefrag: Use -include for linux-flags, so no warning.
+
+       * device/chario.c: Add forward decl for ttstart.
+
+       * i386/i386/db_trace.c: Use explicit int in decl.
+
+       * device/ds_routines.c (device_write_trap, device_writev_trap,
+       ds_trap_write_done): Cast arg to zfree.
+
+       * kern/ipc_tt.c (mach_ports_lookup): Remove unnecessary cast.
+
+1998-10-04  Roland McGrath  <address@hidden>
+
+       * include/mach/message.h: Use __typeof instead of typeof.
+
+1998-09-06  Roland McGrath  <address@hidden>
+
+       * kern/time_out.h: Include <mach/time_value.h> for time_value_t defn.
+
+1998-07-19  Roland McGrath  <address@hidden>
+
+       * mig: Subdirectory removed, now in separate dist.
+
+Fri Apr 24 14:24:15 1998  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386/pcb.c (thread_setstatus): Set STATE before validating
+       segment registers.  Reported by UCHIYAMA Fasushi (address@hidden).
+
+Fri Apr 24 13:19:40 1998  Thomas Bushnell n/BSG  <address@hidden>
+
+       * kern/debug.c (panic): Increase "seconds" in delay to 1000; machines
+       are faster now.
+
+       * i386/i386at/gpl/linux/linux_kmem.c: Increase MEM_CHUNKS to 7.
+
+Wed Aug 20 16:05:19 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kern/thread.h (struct thread): New member `creation_time'.
+       * include/mach/thread_info.h: New member `creation_time'.
+       * kern/thread.c (thread_create): Set creation time stamp.
+       (thread_info) [THREAD_BASIC_INFO]: Fill in new creation time
+       field.  Carefully preserve compatibility with old callers.
+
+       * kern/task.h (struct task): New member `creation_time'.
+       * include/mach/task_info.h: New member `creation_time'.
+       * kern/task.c (task_create): Set creation time stamp.
+       (task_info) [TASK_BASIC_INFO]: Fill in new creation time field.
+       Carefully preserve compatibility with old callers.
+
+       * kern/mach_clock.c (record_time_stamp): New function.
+       * kern/time_out.h (record_time_stamp): Add prototype.
+
+Sun Aug  3 18:25:38 1997  Shantanu Goel  <address@hidden>
+
+       * i386/i386/thread.h (struct pcb): Added new field `data' used
+       by Linux driver emulation.
+
+       * i386/i386at/gpl/linux/include/linux/blk.h (end_request):
+       Revamped Mach specific code.  Don't use `errors' field in request.
+       Don't call driver's request function.
+
+       * i386/i386at/gpl/linux/include/linux/fs.h (struct buffer_head):
+       Deleted old Mach-specific definition.  Use original Linux defintion.
+
+       * i386/i386at/gpl/linux/linux_block.c:  Rewritten extensively.
+       (collect_buffer_pages): Deleted.
+       (alloc_buffer, free_buffer): Rewritten to use Mach page allocator.
+       (getblk, __brelse): Use Mach kernel allocator.
+       (check_for_error): Deleted.
+       (ll_rw_block): Allocate request structure on stack.
+       (rdwr_partial, rdwr_full, do_rdwr) New routines.
+       (block_read, block_write): Rewritten to use new routine do_rdwr.
+       (find_name): New routine.
+       (read_bsd_label, read_vtoc): New routines.
+       (init_partition): New routine.
+       (device_open): Rewritten for modularity.  Allocate Linux block
+       variables on the stack.
+       (check_limit): New routine.
+       (device_read, device_write): Rewritten extensively.  Map user
+       pages into kernel buffer before passing to driver.  This is in
+       preparation for general Linux block driver support.  Allocate
+       Linux block variables on the stack.
+
+       * i386/i386at/gpl/linux/linux_kmem.c:
+       (collect_buffer_pages): Deleted.
+
+Fri Aug  1 16:15:33 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kern/mach_clock.c (clock_interrupt): Test correct macro to see
+       if PC sampling is configured: MACH_PCSAMPLE, not MACH_SAMPLE.
+
+       * i386/i386/locore.S (discover_x86_cpu_type): Comment out routine
+       for now.
+       * i386/i386at/model_dep.c (c_boot_entry): Comment out use of
+       discover_x86_cpu_type for now.
+
+       * i386/include/mach/i386/eflags.h (EFL_AC, EFL_ID): New bits.
+
+       * i386/i386/locore.S (discover_x86_cpu_type): Use correct opcode
+       for right shift.  Use ENTRY macro correctly.
+
+Mon Jul 28 17:01:19 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * COPYING: New file.
+       * Makefile.in (topfiles): Add COPYING.
+
+Mon Jul 21 14:20:39 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kern/mach4.srv: Include <mach_pcsample.h> so the value of
+       MACH_PCSAMPLE is made available for mach4.defs.
+
+Thu Jul 10 13:51:20 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in (install): Use `ln -sf' instead of `-ln -s'.
+       Suggested by Marcus G. Daniels (address@hidden).
+
+Thu Jun 26 13:48:31 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386/locore.S (discover_x86_cpu_type): New function.
+       * i386/i386at/model_dep.c (c_boot_entry): Fill in cpu type in
+       MACHINE_SLOT using new function.
+
+       * include/mach/machine.h (CPU_TYPE_I486, CPU_TYPE_PENTIUM,
+       CPU_TYPE_PENTIUMPRO, CPU_TYPE_POWERPC): New CPU types.  These
+       conform to current OSF Mach values, but note that some of the
+       various subtypes are different.
+
+Mon Jun 16 12:14:17 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386/loose_ends.c (ovbcopy): Delete function.  Suggested by
+       Matthew Wilcox (address@hidden)
+
+Thu Jun 12 18:08:29 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       Version 1.1.3 released.
+
+       * version.c (version): Update to 1.1.3.
+
+Wed Jun 11 20:16:47 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/Drivers.in: Add el3.  How did this escape notice?
+       * i386/device-drivers.h.in: Add CONFIG_EL3.
+
+Tue Jun 10 13:33:37 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       Version 1.1.2 released.
+
+       * Makefile.in (install): Install cross-migcom as `migcom', not as
+       `mig'.
+
+       * i386/Makefrag (objfiles += $(device_drivers)): Sort
+       $(device_drivers) before adding to objfiles in order to remove
+       duplicates.
+
+Mon Jun  9 22:14:09 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/Drivers.in: Fix typos apt.o -> atp.o; 3c403.o -> 3c503.o.
+
+       * Drivers.macros (AC_DRIVER): Test the class selected flag
+       correctly.
+
+Mon May 26 14:33:19 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * version.c (version): Update to version 1.1.2.
+
+Fri May 23 10:08:48 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kern/thread.c (thread_info): Set flags word correctly;
+       TH_FLAGS_SWAPPED and TH_FLAGS_IDLE are not exclusive.
+
+       * Makefile.in (topfiles): Add aclocal.m4.
+       Reported by Marcus G. Daniels (address@hidden).
+
+Mon May 12 11:25:38 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       Version 1.1.1 released.
+
+       * version.c (version): Update to version 1.1.1.
+
+       * bogus/mach_kdb.h: Make sure MACH_KDB is always defined, to zero
+       if necessary.  Bug report from Marcus Daniels
+       (address@hidden).
+
+Fri May  9 13:06:25 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/Files: Fix typo for _setjmp.S.
+       Reflect 53c7,8xx.c -> 53c78xx.c change.
+
+Wed May  7 15:32:08 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * version.c (version): Update to version 1.1.
+       * NEWS: New file.
+       * Makefile.in (topfiles): Add NEWS.
+
+Mon May  5 11:34:01 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in (enable_kdb): Use findstring instead of filter.
+       Reported by Marcus Daniels (address@hidden).
+
+Fri May  2 12:43:46 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in (enable_kdb): New variable.
+       (clib-routines): If enable_kdb, then add strstr.
+       * i386/i386/_setjmp.S: New file, from UK22 libmach.
+       * i386/Files: Add i386/i386/_setjmp.S.
+       * i386/Makefrag (objfiles): Add _setjmp.o if enable_kdb.
+
+1997-04-30  Marcus G. Daniels  <address@hidden>
+
+       * Makefile.in (clib-routines): Add htons not because it is necessary,
+       but because libc5 systems will bring it in.
+       (check-clib-routines): Tolerate extra weak symbols.
+
+Wed Apr 30 14:12:12 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in: Delete duplicate rule for cross-mig.
+
+Mon Apr 28 12:09:53 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in (check): New target.  Reported by
+       address@hidden
+
+       * i386/Drivers.in (ncr53c7xx): Change file name to 53c78xx.o.
+       * i386/i386at/gpl/linux/scsi/53c7,8xx.c: Moved to ...
+       * i386/i386at/gpl/linux/scsi/53c78xx.c: ... here.
+       * i386/Makefrag (linux-scsi-files): Change file name here too.
+       Reported by address@hidden
+
+Wed Apr 23 14:35:44 1997  Miles Bader  <address@hidden>
+
+       * ipc/ipc_entry.c [MACH_KDB]: Add include of <kern/task.h>.
+
+Wed Apr 23 13:21:23 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * configure.in (BUILD_CC): Use AC_CHECK_PROGS, not AC_CHECK_PROG,
+       since we are checking multiple names.
+
+       * configure.in (kdb): New --enable option.
+       * Makefile.in (DEFINES): Add @address@hidden
+       * bogus/mach_kdb.h: Make this file zero length; we get MACH_KDB
+       from configure now.
+
+       * Makefile.in (clean, distclean, mostlyclean, maintainter-clean):
+       New targets.
+       (all-archs-configures): New variable.
+       (MIG): Change to ./local-mig.
+       (./local-mig): Change to build this instead of ./mig
+       (check-clib-routines): Use nm -g in case there are local symbols.
+       Suggested by Matthew Wilcox (address@hidden).
+
+Fri Apr 18 15:25:10 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * configure.in: Add AC_PREREQ for version 2.12.
+       * i386/Drivers.in: Likewise.
+
+Wed Apr 16 16:55:36 1997  Marcus G. Daniels  <address@hidden>
+
+       * configure.in: Replace AC_PROG_CC with AC_PROG_CC_LOCAL.
+       If cross compiling do Lex/Yacc checks with BUILD_CC.
+       Check CC and BUILD_CC for libraries having the needed support,
+       and substitute discovery in installed_clib.
+
+       * aclocal.m4: New file.  These replacement macros are to handle
+       the case where there is a cross compiler but no supporting files.
+
+       * Makefile.in (installed-clib): Don't hardwire a Hurd libcrt.a.
+       (cross_linkable): Only define cross-migcom variable when it will
+       be possible to build it.
+       (all, install): Use $(cross-migcom).
+       (install): Install cross-migcom only if was to be built.
+       (mkinstalldirs): Add $(bindir), $(includedir)/mach/exec
+       (cross-lexxer.o lexxer.o): lexxer.o needs cpu.h.
+       (./cross-migcom): Prevent dependency generation for cross-* MiG files
+       unless they can actually be built.
+
+Thu Apr 17 15:55:40 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kern/exception.c (exception_no_server): Comment out the suspend
+       code; it's useful for special case debugging, but causes problems
+       in general.
+
+Wed Apr 16 12:52:25 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in (cross-lexxer.o lexxer.o): Add pump-priming
+       dependency on cpu.h.  Reported by Marcus G. Daniels
+       (address@hidden).
+
+       * configure.in: Fail if configure target is not for GNU os.
+
+       * i386/Drivers.in (com): Delete option.  It's required by
+       kd_mouse.c.
+       * i386/Makefrag (i386at-files): Add com.c.
+       (driver-files): Delete variable.
+       * i386/bogus/com.h: Revert change of March 10.
+       * i386/device-drivers.h.in (CONFIG_MACH_COM): Delete option.
+       Bug report from Marcus G. Daniels (address@hidden).
+
+       * Makefile.in (./cross-mig): New rule.
+       (mkinstalldirs): Add $(libexecdir).
+       * configure.in: Recognize i686.
+       Reported by Marcus G. Daniels (address@hidden).
+
+Mon Apr 14 11:50:45 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Released version 1.0.
+
+       * kern/exception.c (exception_no_server): Try and suspend the
+       failing thread before killing the task.  Then a debugger can be
+       used.
+
+       * i386/Makefrag: Add rebuilding rules for configure subscript.
+
+       * i386/Makefrag: Fix up copyright notice.
+       * i386/Drivers.in: Likewise.
+       * Makefile.in: Likewise.
+       * Drivers.macros: Likewise.
+       * configure.in: Likewise.
+
+       * include/sys/time.h: New file, from include/mach/sa/sys/time.h.
+       * include/sys/reboot.h: New file, from include/mach/sa/sys/reboot.h.
+       * include/sys/ioctl.h: New file, from include/mach/sa/sys/ioctl.h.
+       * include/alloca.h: New file, from include/mach/sa/alloca.h.
+       * Makefile.in (other-sys-headers): Add time.h, ioctl.h, and reboot.h.
+       (other-mach-headers): New variable.
+       (mach-exec-headers): New variable.
+       (other-headers): New variable.
+       (installed-headers): Add mach-exec-headers.
+       (dist): Distribute other-mach-headers, other-sys-headers,
+       mach-exec-headers, and other-headers.
+       (device-files): Add device.srv.
+
+       * Makefile.in (check-clib-routines): Use more efficient rule.
+
+Fri Apr 11 15:18:09 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in (dist): Repair rule.
+       (other-sys-headers): New variable.
+       (dist): Install $(other-sys-headers).
+       (INCLUDES): Remove -I$(srcdir)/include/mach/sa.
+       (rules for mig-related .d files): Include MiG-specific -I flags.
+       (mach-headers): Add inline.h.
+       * include/sys/types.h: New file, from include/mach/sa/sys/types.h.
+
+Mon Mar 24 16:23:21 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * version.c (version): Make that 1.0.  Whee.
+
+Fri Mar 21 15:50:09 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386at/gpl/linux/scsi/aha1740.c (aha1740_test_port): Try
+       and turn on PORTADDR_ENH before checking it.
+
+       * vm/vm_object.c (vm_object_cached_max): Increase to 200.
+
+Thu Mar 20 12:33:06 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * Makefile.in (dist): New target.  Reorganized some vars
+       describing source.
+       * i386/Subdirs: New file.
+       * i386/Files: New file.
+
+       * version.c (version): Push back to 0.1.
+
+       * Makefile.in (cross_compiling, bindir, libexecdir): New
+       variable.
+
+       * Makefile.in (install): Depend on cross-mig and cross-migcom;
+       install them.  New rules added to build mig, migcom, cross-mig,
+       and cross-migcom.
+
+       * configure.in (AC_PROG_LEX, AC_PROG_YACC): New tests.
+       (BUILD_CC): New test to set these.
+
+       * Makefile.in (%.h %_user.c): Depend on $(MIG) too.
+       (%_interface.h %_server.c): Likewise.
+       (MIG): Don't use @MIG@; hard code it to the one we build.
+       (BUILD_CC, BUILD_CFLAGS, MIGCOM, LEX, YACC, LEXLIB): New variables.
+
+Wed Mar 19 16:47:28 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386at/kd.c (BROKEN_KEYBOARD_RESET): Turn off this so that
+       we attempt the keyboard resets.
+       * i386/i386/locore.S (cpu_shutdown): Attempt to provide a more
+       `robust' null_idtr.
+
+Mon Mar 17 13:47:14 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386at/gpl/linux/scsi/hosts.c (scsi_init): Don't print out
+       gratuitious obnoxiousness.
+       * i386/i386at/gpl/linux/scsi/scsi.c (scsi_dev_init): Likewise.
+       * i386/i386at/gpl/linux/block/triton.c (ide_init_triton):
+       Likewise.
+       (init_triton_dma): Likewise.
+       * i386/i386at/gpl/linux/pci/pci.c (pci_init): Likewise.
+       * i386/i386at/gpl/linux/pci/bios32.c (check_pcibios): Likewise.
+       (pcibios_init): Likewise.
+       * i386/i386at/gpl/linux/block/genhd.c (add_partition): Likewise.
+
+       * i386/i386at/gpl/linux/net/8390.c (ei_debug): Make default value
+       zero.
+
+Wed Mar 12 14:50:46 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386at/com.c (comprobe): Turn off noisiness.
+
+       * i386/i386at/gpl/linux/linux_block.c (check_disk_change): Don't
+       print out gratuitous obnoxiousness.
+       (device_open): Likewise.
+       * kern/bootstrap.c (copy_bootstrap): Likewise.
+       (user_bootstrap): Likewise.
+       * i386/i386at/gpl/linux/block/genhd.c (msdos_partition): Likewise.
+       (osf_partition): Likewise.
+       (sun_partition): Likewise.
+       (check_partition): Likewise.
+       * i386/i386/pit.c (findspeed): Likewise.
+       * vm/vm_resident.c (vm_page_bootstrap): Likewise.
+
+Mon Mar 10 15:04:47 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/i386at/gpl/linux/linux_init.c (calibrate_delay): Don't
+       print out gratuitous obnoxiousness.
+
+       * i386/i386at/gpl/linux/linux_init.c (linux_init): Only call
+       linux_net_emulation_init if CONFIG_INET.  Include
+       <i386/device-drivers.h>.
+
+       * i386/i386at/i386at_ds_routines.c: Include
+       <i386/device-drivers.h>.  Don't mention linux_net_emulation_ops
+       unless CONFIG_INET.
+
+       * device/ds_routines.c (io_done_thread_continue): [i386]
+       Conditionalize free_skbuffs also on CONFIG_INET.  Include
+       <i386/device-drivers.h>.
+
+       * i386/Drivers.in, i386/device-drivers.h.in, i386/driverlist.in:
+       New files.
+       * i386/Makefrag: Include i386/driverlist; don't include all device
+       drivers in kernel image; instead use list from driverlist.
+       * configure.in: Configure in $systype subdir too.
+
+       * i386/i386at/gpl/linux/include/linux/autoconf.h: Damage severly
+       to conform to device-drivers.h model.
+
+       * i386/bogus/com.h: Include <i386/device-drivers.h>.
+       Only turn on NCOM if CONFIG_MACH_COM is present.
+
+Mon Mar  3 16:26:58 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * include/mach/message.h (__mach_msg, __mach_msg_trap): Add decls.
+
+Tue Feb 25 15:42:23 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * i386/Makefrag (INCLUDES): Find `include' directory in new
+       location.
+       * Makefile (INCLUDES): Find `include' directory in new location.
+       (%.symc): Find gensym.awk in new location.
+
+       * Reorganized directories into new layout and unified mach4 and
+       mach4-i386 into a single tree.
+
+
+Older changes in ChangeLog.00 (for i386 directory) and ChangeLog.0 (for
+all other files).
diff --git a/ChangeLog.0 b/ChangeLog.0
new file mode 100644
index 0000000..2ef943a
--- /dev/null
+++ b/ChangeLog.0
@@ -0,0 +1,721 @@
+Wed Feb 12 16:22:07 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kernel/kern/debug.c (panic): Insert a delay loop.  Do a reboot
+       instead of a mere halt.
+
+Wed Feb  5 12:07:30 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kernel/util/cpu.h (struct cpu): Add dummy field so that zero
+       size structure doesn't become an undefined variable.
+
+       * kernel/version.c: New file.
+
+       * kernel/kern/elf-load.c: New file.  (Was mach4/libmach/exec/elf.c
+       in Utah distribution.)  Define exec_load instead of exec_load_elf.
+
+       * kernel/device/chario.c: Include "device_reply.h" rather than
+       <device/device_reply.h>.
+
+Thu Mar 28 17:59:36 1996  Linus Kamb  <address@hidden>
+
+       * kernel/ipc/fipc.c:
+
+               changed fipc_send() to take a fipc_endpoint_t structure
+               which has the destination hardware address and destination
+               port, instead of the two integer arguments used before.
+
+               changed fipc_recv() to also take a fipc_endpoint_t
+               parameter that returns the senders hardware address.
+               (Their is no concept of a sending fipc port.)
+
+               Also added some spl stuff to avoid a possible race
+               condition, and generally cleaned it up.
+
+       * include/mach/syscall_sw.h: changed the argument #'s for fipc calls.
+
+       * kernel/kern/syscall_sw.c: changed the argument #'s for fipc calls.
+
+       * kernel/device/device_init.c: Changed call to fipc_thread() 
+               to call to fipc_init().
+
+Mon Mar 25 01:39:45 1996  steve clawson  <address@hidden>
+
+       * changes for VM_PROT_NOTIFY added for Godmar Back
+       (address@hidden):
+       
+       * include/mach/kern_return.h: Added KERN_WRITE_PROTECTION_FAILURE
+       return value.
+
+       * include/mach/vm_prot.h: Added VM_PROT_NOTIFY.
+
+       * kernel/vm/vm_map.c (vm_map_protect): or in VM_PROT_NOTIFY
+       when we check the new protection against max protection (should
+       always be able to set the NOTIFY bit, ).
+
+       * kernel/vm/vm_map.c (vm_map_lookup): If VM_PROT_NOTIFY is set and
+       we get a write protection violation, return
+       KERN_WRITE_PROTECTION_FAILURE.
+       
+       * kernel/vm/vm_user.c (vm_protect): Make sure that we accept
+       VM_PROT_NOTIFY (since it's not in VM_PROT_ALL).
+
+Sun Mar 24 13:17:45 1996  Shantanu Goel  <address@hidden>
+
+       * kernel/device/dev_hdr.h: Following changes #ifdef'ed for i386.
+       Include i386at/dev_hdr.h.
+       (device): Renamed to mach_device.  All users changed.
+       (device_t): Renamed to mach_device_t.  All users changed.
+
+       * kernel/device/dev_lookup.c: Following changes #ifdef'ed for i386.
+       (dev_port_enter): Initialize emulation ops and data.
+       (convert_device_to_port): Use emulation ops.
+       (device_reference): Renamed to mach_device_reference.
+       Interface changed.  All callers changed.
+       (device_allocate): Renamed to mach_device_deallocate.
+       Interface changed.  All callers changed.
+       
+       * kernel/device/ds_routines.c: Following changes #ifdef'ed for i386.
+       Include i386at/device_emul.h.
+       (mach_convert_device_to_port): New function.  Replaces
+       convert_device_to_port.  All callers changed.
+       (ds_device_open, ds_device_close, ds_device_write,
+        ds_device_write_inband, ds_device_read, ds_device_read_inband,
+        ds_device_set_status, ds_device_get_status, ds_device_set_filter,
+        ds_device_map, ds_device_write_trap, ds_device_writev_trap):
+       Declaration made static.  Dropped "ds_" prefix.  Interface changed.
+       (ds_notify): Deleted.
+       (ds_nosenders): Declaration made static.
+       (io_done_thread_continue): (free_skbuffs): Use it.
+       (mach_device_emulation_ops): New variable.
+
+Mon Mar  4 10:39:03 MST 1996 Linus Kamb  (address@hidden)
+
+       * Checked in FIPC code:
+
+       * Added kernel/ipc/fipc.[ch]
+               fipc_send(int a0, int a1, char *buf, int buf_len);
+                       a0 and a1 together contain the 6 byte ethernet
+                       address of the receiving machine, and the 16 bit
+                       unsigned "fipc_port".
+       
+               fipc_recv(unsigned short fipc_port, char *buf, int *buf_len);
+                       Returns as much as buf_len bytes to the user's buf from
+                       port fipc_port.  Will block if there is no available
+                       message on the fipc port.  Buf_len is an IN/OUT
+                       parameter, giving the size of the user's buffer,
+                       and returning the actual number of bytes in the
+                       message.
+       
+       * Changed kernel/device/device_init.c
+               starts the fipc_thread, which does necessary initialization.
+
+       * Changed kernel/device/net_io.c
+               added net_fwrite() which is very similar to net_write(), but
+               is called by nefoutput() (if_ne.c) which is the path for
+               fipc_send calls.
+
+       * Changed kernel/kern/syscall_sw.c
+               adding -96 and -97 for FIPC traps
+
+       * Changed include/mach/syscall_sw.h
+               adding kernel_trap() delcarations for fipc_send and fipc_recv
+
+Tue Feb 13 22:34:27 1996  Kevin T. Van Maren  <address@hidden>
+
+       * More diskslice changes are integrated:
+
+       * kernel/scsi/disk_label.c: Updated this file I added last time.
+         Full support for dos partitions and BSD disklabels.  No longer
+         uses a disklabel structure for partition information encoding.
+,
+       * kernel/scsi/pc_scsi_label.c: No code changes
+
+       * kernel/scsi/rz.h: rzpartition() definition changed for slices
+
+       * kernel/scsi/rz_disk.c: Modified to use the array of partitions
+         and the common partitioning code.  Disklabels are still there
+         but are fairly meaningless to the kernel, and incorrect in any
+         event.
+
+       * kernel/scsi/rz_disk_bbr.c: Uses new partitioning. NOT TESTED.
+
+       * kernel/scsi/rz_labels.h: Added diskpart structure.  Also added
+         #defines for partition types in this structure.
+
+       * kernel/scsi/scsi_defs.h: MAX_SCSI_PARTS defined
+
+       * kernel/device/dev_name.c: Now converts a block device string to
+         the correct slice+partition fields for the partition code.
+
+Thu Feb 8 00:27:33 MST 1996  Bryan Ford <address@hidden>
+
+       Merged in changes from UK02p20 to end of UK02-freeze branch,
+       and terminated the last remnant of the UK02-freeze branch.
+
+       Fri Feb  2 17:03:38 1996  steve clawson  <address@hidden>
+
+               * kernel/ipc/ipc_notify.c: added ipc_notify_init_msg_accepted
+                 call to ipc_notify_init().
+
+       Wed Jan 17 17:04:24 1996  Bart Robinson  <address@hidden>
+
+               * Serial console working for real.
+
+               * kernel/device/cons.c, cons.h: added.  These are the same as in
+                 mach4-parisc/kernel/hpdev but changed slightly to make cninit
+                 re-entrant.  They can and should be used for the PA too.
+
+               * kernel/util/console.c, console_buf.c, console_list.h: removed.
+                 The console is handled differently now.
+
+       Wed Jan 17 13:51:46 1996  Kevin Van Maren  <vanmaren.cs.utah.edu>
+
+               * Unified the partition code for IDE & SCSI device drivers
+
+               * kernel/scsi/disklabel.c: new file
+               * kernel/scsi/rz_labels.c: deleted
+               * kerenl/scsi/pc_label.c: deleted
+
+               * kernel/scsi/rz_labels.h: Added more partition ID types. Also
+                 added the prefix scsi_ to structs.
+
+               * kernel/scsi/pc_scsi_label.c: removed grab_bob_label(),
+                 default_label is now scsi_default_label.
+
+               * kernel/scsi/rz_disk.c: Replaced scsi-specific partition code 
+                 with code that calls the unified partition code.
+
+Thu Jan 11 20:06:33 MST 1996  Bryan Ford <address@hidden>
+
+       Added remote debugging support to MOSS;
+       fixed a number of bugs.
+
+Mon Oct 30 09:21:10 MST 1995  Bryan Ford <address@hidden>
+
+       Merged in changes from UK02p15 to UK02p20:
+
+       Mon Oct 23 11:03:10 1995  steve clawson  <address@hidden>
+
+               * bootstrap/bootstrap.c: Added back code to ask for a root
+               device (the '-a' switch from the command line).  Added
+               `translate_root' function that converts from Linux device
+               names to Mach ones.
+
+       Sun Oct 22 18:36:49 1995  Bryan Ford <address@hidden>
+
+               * Integrated Steve's and Bart's changes from the UK02p16-work
+                 branch.
+
+               * bootstrap: use exec_load() to find startup's symbol table,
+                 instead of trying to hand-interpret the a.out header.
+
+               * bootstrap: no longer try to load emulator symbols; that's
+                 Lites' job.
+
+               * bootstrap: if user types in a new server directory name,
+                 use the new device name as the root device as well.
+
+               * include/mach/sa/sys/reboot.h: added BSD flag definitions.
+
+               * mach4/kernel/ddb/db_aout.c: got rid of ddb_init();
+                 instead just call aout_db_sym_init() directly from 
model_dep.c.
+
+               * mach4/kernel/kern/bootstrap.c: Use MultiBoot kernel command
+                 line to find root device and flags, instead of old kludgy
+                 boothowto and bootdev values.
+
+       Fri Oct 13 16:47:52 1995  steve clawson  <address@hidden>
+
+               * include/mach/multiboot.h: Added entries for symbol table
+                 information and for boothowto and bootdev into the boot_info 
+                 structure.
+
+               * include/mach/exec/exec.h: Cleaned up text (>80 columns).
+               * include/mach/exec/a.out.h: Added some macros from FreeBSD.
+
+               * kernel/ddb/db_aout.c: Enabled code to load kernel symbol
+                 table.
+
+       Thu Sep 28 16:57:07 1995  steve clawson  <address@hidden>
+
+               * kernel/scsi/adapters/scsi_aha15.h: Added #defines for the
+                 1542CF. 
+               
+               * kernel/scsi/adapters/scsi_aha15_hdw.c: Added support for the
+                 1542CF.  #defined db_printf to just be printf.
+               
+               * kernel/scsi/adapters/scsi_aha17_hdw.c: #defined db_printf to
+                 just be printf.
+
+       Mon Jun 26 13:51:42 MDT 1995  Wolfram Stering <address@hidden>
+
+               * kernel/scsi/*label*: fixed to support Linux-style
+                 partitioning.
+
+       Fri May 19 11:17:13 MDT 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p17, as a private snapshot for goel.
+
+       Tue May 16 01:45:22 1995  Shantanu Goel  <address@hidden>
+
+               * kernel/device/ds_routines.c (ds_device_set_status):
+                 Pass device structure to Linux driver.
+                 (ds_device_get_status): Likewise.
+
+       Fri May  12 10:47:41 MDT 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p16, as an internal snapshot for rdukes
+
+Wed Oct  4 20:04:27 MDT 1995  Bryan Ford <address@hidden>
+
+       Released moss-0.80 (tag moss-0-80)
+
+Wed Oct  4 12:05:57 MDT 1995  Bryan Ford <address@hidden>
+
+       Merged in changes made for DOS extender at home:
+       * better mach/sa include files
+       * new list-based flexible memory allocator
+
+Wed May  3 13:59:54 MDT 1995  Bryan Ford <address@hidden>
+
+       Merged in diffs from UK02p12 to UK02p15:
+
+       Wed May  3 10:47:41 MDT 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p15.
+                 (UK02p14 was just an intermediate tag after adding ELF 
support.)
+
+               Configuration-related changes:
+
+               * configrules: now looks for mach4 sources in a default location
+                 "next to" the machine-dependent sources if no '--with-mach4='
+                 option is specified.
+
+               ELF support changes:
+
+               * Got rid of old ex_get_header() routine from libmach_sa.a;
+                 instead provide a new library, libmach_exec.a (in 
libmach/exec)
+                 which provides a less a.out-specific exec_load() function.
+
+               * bootstrap/load.c, kernel/kern/bootstrap.c: use new 
exec_load() function.
+
+               * Added include/mach/exec/elf.h, from OSF's server bootstrap 
code
+
+               Makefile-related changes:
+
+               * Starting to phase out GSECTIONS/MSECTIONS, because
+                 that design forced all machine-dependent directories
+                 to come before all machine-independent directories,
+                 which isn't the right behavior in all cases.
+                 Now makefiles should just build SRCDIRS directly.
+
+               * We now generate public header files and libraries in
+                 $(OBJDIR)/include and $(OBJDIR)/lib before installing them.
+                 Added mach4/Makerules.lib, for various library targets to use.
+
+               * mach4/Makerules: sort all object files at once, so that
+                 .c files can override .S files and such.
+
+               * Split out common part of mach4-i386/Makefile.in and
+                 mach4-parisc/Makefile.in, and put them in mach4/Makerules.top.
+
+               Miscellaneous changes:
+
+               * (fjl) Various additions and fixes to the HTML pages.
+
+               * kernel/scsi: merged in MK83a changes, including new aha17 
(eaha) driver.
+
+               * gensym.awk: 'size' command can now take an optional fourth 
parameter
+                 indicating the name of the symbol to declare.
+
+               * Moved errorlib.h to the public include/mach directory.
+
+               * include/mach/machine/vm_param.h: 
+
+               * include/mach/sa: Added some common POSIX errno's and other 
useful stuff.
+
+               * libmach/standalone: Moved generic C-library stuff to 
libmach/c.
+
+               * libmach/c/stdio: created, containing extremely simple 
high-level file I/O
+                 functions that do no buffering, instead going straight to the 
low-level
+                 Unix-like file I/O routines.
+
+       Fri Apr  7 17:43:22 MDT 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p13.
+
+Fri Apr  7 13:08:16 MDT 1995  Bryan Ford <address@hidden>
+
+       Merged in diffs from UK02p9 to UK02p12:
+
+       Mon Apr  3 19:55:41 MDT 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p11.
+                 Too many changes to describe concisely,
+                 almost all affecting only the boot mechanism for now.
+                 Also, integrated the kernel/util, kernel/pc, kernel/dos code
+                 from my DOS extender project at home.
+
+       Mon Feb 27 16:32:59 MST 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p10 as a non-functional snapshot
+
+Fri Feb 10 13:25:54 MST 1995  Bryan Ford <address@hidden>
+
+       Merged in diffs from UK02p7 to UK02p9:
+
+       Thu Jan 26 19:37:04 1995  steve clawson  <address@hidden>
+
+               * kernel/scsi/adapters/scsi_aha15_hdw.c:
+
+                 Merged in MK83-MK83a changes.
+
+                 Added code to recognize 1542CF controllers. 
+                 (changes marked with a + imported from netbsd).
+               
+                 aha_probe(): 
+                   added 1542CF case in the id switch.
+                   +added code to unlock the mailbox interface on the C/CF's. 
+                   +added code to set DMA on/off times
+                   moved initialization around a bit:
+                     commented out the code to call aha_init_1().
+                     changed the call to aha_init_2() into aha_init().
+                 
+               * kernel/scsi/adapters/scsi_aha15.h:
+
+                 Added AHA_BID_1542CF, AHA_EXT_BIOS and AHA_MBX_ENABLE defines.
+                 Added struct aha_extbios.         
+
+               * bootstrap/fs.h:
+                 Added fs_state field to struct fs.  (fix suggested by Remy 
Card)
+
+
+       Tue Jan 17 15:55:01 MST 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p8
+
+       03-Dec-94 Johannes Helander (jvh) at Helsinki University of Technology
+
+               * bootstrap/ffs_file_io.c: 
+
+                 Added support for 4.4 BSD fastlinks.  The change breaks 4.3
+                 slowlinks of length four or less.
+
+                 Interpret 4.4 BSD directory entries correctly also on little
+                 endian machines.
+
+       12 Jan 1995 17:52:44 -0500  Shantanu Goel <address@hidden>
+
+               * vm/vm_map.c: Incorporated the device_write bug fix from MK83a.
+
+       09-Dec-94  Ian Dall (address@hidden)
+
+               * Fixed char_write_done to use ds_device_write_reply_inband when
+                 appropriate.
+
+       16-May-94  Ian Dall (address@hidden) at University of Adelaide
+
+               * Increase tty_outq_size to 2048. *Must* be greater than largest
+                 tthiwat entry or bad things happen.
+
+       Wed Dec  7 11:43:02 MST 1994  Roland McGrath (address@hidden)
+
+               * Fix to bootstrap code to interpret BSD 4.4 FFS filesystems.
+
+Fri Nov 25 13:56:32 MST 1994  Bryan Ford  (address@hidden)
+
+       Merged in diffs from UK02p6 to UK02p7:
+
+       * GNU make should now no longer mistakenly delete any more
+         intermediate files the first time around.
+
+       * 'make configure' should now work without producing bogus
+         error messages.  (Hint: don't put any bogus 'AC_*' text
+         strings in input files to autoconf, even if they're
+         in comments!)
+
+       * Don't install 'Makefile.in' into the public include directory.
+
+       * mig/Makerules (parser.o): 
+         Added explicit dependencies to protect files that were
+         automatically deleted by GNU make after the first compilation on
+         an empty object tree.  These were deleted because GNU make
+         decided that they were intermediary files.  However, because
+         they are listed in the automatically generated dependency file,
+         GNU make realizes that it must regenerate them on a subsequent
+         "make" pass.  Since they have explicit dependencies (in the
+         "depend" file) on that subsequent pass, GNU make does not delete
+         them.
+
+Tue Nov  1 19:12:55 1994  Jeff Law  (address@hidden)
+
+       * kernel/kern/{processor.h, task.h, thread.h}: Enclose full
+       prototypes inside #if KERNEL (for "klg" files where foo_t
+       is typically mapped to mach_port_t, which causes decl and defn
+       not to match).
+
+       * Merge in machine-independent kernel changes from MK83-MK83a.
+       Detailed change entries in CHANGES.MK83a.log.  Effected files:
+
+       * include/device/bpf.h: MK83a Changes.
+       * include/mach/{exe, mach4, mach_types}.defs: Likewise.
+       * include/mach/{host_info, pc_sample, processor_info}.h: Likewise.
+       * include/mach/vm_statistics.h: Likewise.
+       * kernel/chips/{audio.h, busses.h}: Likewise.
+       * kernel/device/{chario.c, conf.h, net_io.c}: Likewise.
+       * kernel/kern/{exception.c, host.c, mach_clock.c}: Likewise.
+       * kernel/kern/{host.c mach_clock.c pc_sample.c}: Likewise.
+       * kernel/kern/{processor.h, strings.c, task.c, task.h}: Likewise.
+       * kernel/kern/{thread.c, thread.h}: Likewise.
+       * kernel/scsi/rz_labels.c: Likewise.
+       * kernel/scsi/adapters/scsi_aha15_hdw.c: Likewise.
+       * kernel/vm/{vm_fault, vm_map, vm_resident}: Likewise.
+
+       * kernel/bogus/eaha.h: New file for MK83a support.
+       * kernel/kern/pc_sample.h: Likewise.
+       * kernel/scsi/adapters/scsi_aha17_hdw.c: Likewise.
+
+Sat Oct 22 14:56:33 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Got rid of various rinky-dink C library routines
+         that were duplicated in both the kernel and libmach.
+         In the system-independent source tree, this just
+         means kern/sscanf.c so far, but I've got my eye
+         on printf.c as well.  In the i386-specific tree
+         it includes all kinds of little things such as bcopy.
+
+Wed Oct 19 12:58:13 1994  Jeff Law  (address@hidden)
+
+       * kernel/kern/mach.srv: Use immediate forms of act_get_state and
+       act_set_state for thread_{get,set}_state.
+
+Thu Oct 13 09:50:24 MDT 1994  Bryan Ford  (address@hidden)
+
+       * include/mach/sys_*.h: moved to include/mach/sa/sys/*.h.
+         Also added some other C-library-like files in there
+         for the benefit of standalone programs as well as my
+         Mach-on-DOS ("MOSS") C library.
+
+       * Makerules: For all programs compiled on the target machine
+         (actually host machine in proper terminology),
+         add include/mach/sa to the include path.
+
+       * Makefiles: minor cleanups, added some .PRECIOUS rules
+         to reduce the number of files gratuitously recompiled
+         the second time around.
+
+       * libmach/unixoid: Cleaned out.  We no longer need the
+         unixoid version of libmach at all, because neither
+         the Hurd nor Lites need it (or ever will).  Good riddance.
+         We might start generating a 'libmach.a' again soon,
+         but it will contain only the "pure" Mach parts -
+         nothing related to Unix or C libraries.
+
+       * libmach/standalone/printf.c: Broke into multiple files
+         and added various tidbits of functionality.
+
+Fri Sep 30 01:43:16 1994  Jeff Law  (address@hidden)
+
+       * kernel/bogus/bogus.c: New file.
+
+Mon Sep 26 12:58:57 1994  Jeff Law  (address@hidden)
+
+       * kernel/kern/processor.c (pset_init): Nuke debugging printf.
+
+       * kernel/kern/thread.c (thread_create_in): Grab a reference to the
+       processor set for the new thread.
+
+Fri Sep  9 00:00:53 1994  Jeff Law  (address@hidden)
+
+       * kernel/device/ds_routines.c (io_done_thread): Nuke call to
+       stack_privilege.
+
+Thu Sep  8 11:37:03 1994  Jeff Law  (address@hidden)
+
+       * kernel/kern/act.c (act_set_state, act_get_state): Use natural_t
+       to match prototype.
+
+       * kernel/kern/zalloc.c: lock_zone has been renames to zone_lock,
+       likewise for unlock_zone.
+       
+       * kernel/bogus/mach_pcsample.h: Disable for now.
+       * kernel/bogus/xpr_debug.h: Likewise.
+
+       * include/mach/rpc.h: Add c-signature stuff.
+
+       * kernel/device/chario.c (ttstart): New function.
+       (ttrstrt): Use it.
+
+       * include/mach/mach4.defs: Wrap PC sampling stuff inside
+       an appropriate #ifdef.
+
+Wed Aug 31 10:59:51 1994  Jeff Law  (address@hidden)
+
+       * kernel/ipc/ipc_notify.c: Use MACH_MSG_TYPE_INTEGER_32 rather
+       than MACH_MSG_TYPE_INTEGER_T.
+
+       * kernel/kern/ipc_sched.c: Don't include thread_swap.h
+
+       * kernel/kern/sched_prim.c (thread_wakeup_prim): "event" should
+       be an event_t.  Cast argument to wait_hash to an int.
+       (various): Chagne thread->runq to thread->shuttle.runq.
+
+       * kernel/device/net_io.c: Don't typedef u_long here.
+
+       * kernel/kern/ipc_kobject.c: Include mach_machine_routines.h
+
+       * kernel/device/ds_routines: Include current.h for current_thread.
+
+       * include/mach/sys_types.h: Put u_long back.
+
+Tue Aug 30 13:45:05 MDT 1994
+
+       * Makefiles: Don't use CFLAGS etc. to build variables in;
+       that way the user can specify them on the `make' line
+       and still get sensible results.
+       Also, named some variables HOST_xxx and TARGET_xxx
+       to better support cross-compilation.
+
+Fri Aug 26 12:06:35 1994  Jeff Law  (address@hidden)
+
+       * include/mach/mach_port.defs: Use thread_t, not act_t.
+
+Mon Aug 1 18:15:00 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Got most of the migrating threads changes merged in
+
+Tue Oct 25 12:32:28 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Released UK02p6.
+
+       * Moved exec header interpretation stuff from the bootstrap code
+         into libmach so the kernel could also use it when initializing
+         the bootstrap program itself.
+
+Sat Oct 22 15:44:42 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Moved cthreads.h from the top-level public include directory
+         into the mach/ include subtree.  Higher-level OS personalities
+         can create their own cthreads.h, or just make a stub
+         that cross-includes mach/cthreads.h if they want to use
+         the "standard" implementation.
+
+Mon Oct 17 10:54:38 ??? 1994  Csizmazia Balazs  (address@hidden)
+
+       * Added MINIX filesystem support to the bootstrap loader.
+
+Sat Oct 15 17:22:01 MDT 1994  Bryan Ford (address@hidden)
+
+       * Temporary kludge: added servers/ include directory
+         containing libmachid and libnetname headers;
+         added corresponding library code to libmach.
+         This is so we can compile Lites against Mach4
+         without having to create a full new USER package yet.
+
+       * Changed ifdef's of KERNEL to MACH_KERNEL
+         in the public header files.
+         (Really should get rid of them entirely.)
+
+Fri Sep 16 11:33:44 MDT 1994  Bryan Ford (address@hidden)
+
+       * Released UK02p5.
+
+       * Added copyrights to the makefiles.
+
+Fri Sep  9 10:44:49 MDT 1994 Bryan Ford (address@hidden)
+
+       * configure.in: if user specifies --enable-debug,
+         add -DDEBUG to the compiler flags.
+
+Tue Sep  6 09:58:49 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Added blank .SUFFIXES line
+         to eliminate the requirement of using `make -r'.
+         (Things still go faster with `-r' though.)
+
+Mon Sep  5 22:44:00 1994  Patrick Doyle  (address@hidden)
+
+       * README (DIRECTORY STRUCTURE): Added a distillation of a
+         discussion with Bryan regarding organization of and differences
+         between the two libraries produced by the distribution.  (Also
+         cleaned up references to libmach_ux.a when I stumbled across
+         them in the source).
+
+Mon Sep  5 12:16:30 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Full cross compilation support
+
+       * Cleaned up all install rules
+         so they will no longer gratuitously reinstall things.
+
+Sun Sep  4 11:33:03 MDT 1994  Bryan Ford  (address@hidden)
+
+       * As suggested by Roland McGrath,
+         changed the genassym mechanism to cross-compile better,
+         by compiling to assembly language source
+         instead of an executable program.
+
+         Also refined and extended this technique
+         to make it more convenient,
+         and to allow MIG to use it too.
+
+Sun Sep  4 08:10:05 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Makefiles: better cross-compilation support.
+
+Sat Sep  3 15:14:36 MDT 1994  Bryan Ford  (address@hidden)
+
+       * bootstrap/*: got FFS support back in;
+         now both ext2 and FFS are supported at the same time
+         (although in a horrendously kludgy way).
+
+Wed Jul 20 14:00:45 MDT 1994  Bryan Ford  (address@hidden)
+
+       * include/mach/mig_support.h: Got rid of cross-includes
+         of some old bogus header files.
+
+       * Released UK02
+
+
+Mon Jul 18 18:28:00 MDT 1994  Bryan Ford  (address@hidden)
+
+       Integrated microkernel changes needed by LITES,
+       from Johannes Helander (jvh) and Tero Kivinen (kivinen) @cs.hut.fi:
+
+       * (jvh) include/device/device_reply.defs: added SEQNOS support.
+
+       * (jvh) include/mach/error.h: Surrounded typedefs with ifndef ASSEMBLER.
+
+       * (jvh) mig, libmach: mig_dealloc_reply_port() now takes an argument,
+         which is ignored in the default libmach implementation of this 
function,
+         but may be needed for custom reply port allocators.
+         MIG stubs now pass the reply port to be deallocated.
+
+       * (jvh) mig, libmach: new function mig_put_reply_port(),
+         which does nothing in the default libmach implementation.
+         MIG stubs call this function when done with a reply port,
+         if it wasn't deallocated with mig_dealloc_reply_port().
+
+       * (jvh) mig/mig.sh: added -migcom flag to specify the location of 
migcom.
+
+       * (jvh) libmach/err_kern.sub: added new errno strings for 4.4BSD and 
Lite.
+
+       * (???) libthreads: added wait_type to cproc structure
+         keeping track of what type of event is being waited for.
+
+       * (???) libthreads: added a holder field to mutex structure
+         keeping track of who's holding a mutex, for debugging.
+
+       * (kivinen) libthreads: Renamed cthread_t->catch to 
cthread_t->catch_exit,
+         because catch is a reserved word in C++.
+
+       * (jvh) libthreads: Added CONDITION_NAMED_INITIALIZER and 
MUTEX_NAMED_INITIALIZER
+         macros.  They take one argument: a name string.
+
+
+Fri Jul 15 11:46:19 MDT 1994  Bryan Ford  (address@hidden)
+
+       * kern/bootstrap.c: gutted and rewrote
+         to get the boot image from the bmod mechanism.
+         Needs to be gutted still more.
+
diff --git a/ChangeLog.00 b/ChangeLog.00
new file mode 100644
index 0000000..553b5fe
--- /dev/null
+++ b/ChangeLog.00
@@ -0,0 +1,858 @@
+Wed Feb 19 15:51:34 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kernel/i386at/gpl/linux/include/linux/autoconf.h 
+       (CONFIG_SCSI_AHA1740, CONFIG_EL3, CONFIG_WD80x3): Turn on these
+       devices. 
+
+Wed Feb  5 11:35:39 1997  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kernel/i386at/idt.h: Include "idt-gen.h" instead of
+       include-next.  Safer this way.
+       * kernel/i386/idt.h: Moved to ...
+       * kernel/i386/idt-gen.h: ... here.
+
+Mon Dec 16 21:01:37 1996  Thomas Bushnell, n/BSG  <address@hidden>
+
+       * kernel/i386/ast.h: Comment out chained include; generic
+       kern/ast.h includes us always, and that's all the ast.h's there
+       are. 
+       * kernel/i386/thread.h: Likewise.
+
+       * kernel/chips/busses.c: Delete file (duplicates generic copy).
+
+Thu Apr 18 22:54:26 1996  steve clawson  <address@hidden>
+
+       * configrules: Changed --with-elf option to define __ELF__ instead
+       of ELF.
+       * configure: likewise
+
+       * include/mach/machine/asm.h: Changed references from ELF to
+       __ELF__.
+       * kernel/i386at/boothdr: likewise.
+       * kernel/util/crtn.S: likewise.
+       * libmach/standalone/mach-crt0.c: likewise.
+       
+       * boot/bsd/main.c: Changes to conform with Multiboot 0.6 (adds a
+       checksum field to the multiboot header).  From Erich Boleyn
+       (address@hidden).
+       * boot/linux/misc.c: likewise.
+       * include/mach/machine/multiboot.h: likewise.
+       * kernel/i386at/boothdr: likewise.
+       
+Thu Apr  4 11:02:40 MST 1996  Bryan Ford  <address@hidden>
+
+       * boot/boot_info_dump.c: dump the string associated with
+       each boot module, if any.
+
+       * boot/bsd/main.c: pass along the associated boot module string
+
+       * boot/bsd/mkbsdimage.sh: allow strings to be associated with
+       boot modules, using the syntax "filename:string".
+
+Thu Apr 18 22:54:26 1996  steve clawson  <address@hidden>
+
+       * configrules: Changed --with-elf option to define __ELF__ instead
+       of ELF.
+       * configure: likewise
+
+       * include/mach/machine/asm.h: Changed references from ELF to
+       __ELF__.
+       * kernel/i386at/boothdr: likewise.
+       * kernel/util/crtn.S: likewise.
+       * libmach/standalone/mach-crt0.c: likewise.
+       
+       * boot/bsd/main.c: Changes to conform with Multiboot 0.6 (adds a
+       checksum field to the multiboot header).  From Erich Boleyn
+       (address@hidden).
+       * boot/linux/misc.c: likewise.
+       * include/mach/machine/multiboot.h: likewise.
+       * kernel/i386at/boothdr: likewise.
+       
+Thu Apr  4 11:02:40 MST 1996  Bryan Ford  <address@hidden>
+
+       * boot/boot_info_dump.c: dump the string associated with
+       each boot module, if any.
+
+       * boot/bsd/main.c: pass along the associated boot module string
+
+       * boot/bsd/mkbsdimage.sh: allow strings to be associated with
+       boot modules, using the syntax "filename:string".
+
+Fri Mar 29 02:00:29 1996  steve clawson  <address@hidden>
+
+       * html/mach4-UK22.html: new file.
+       * html/mach4-UK22-linuxdev.html: likewise.
+
+       * configrules: Added --enable-fipc option, which adds -DFIPC to DEFS.
+       * configure: likewise.
+
+Sun Mar 24 13:12:14 1996  Shantanu Goel  <address@hidden>
+
+       * kernel/i386at/model_dep.c: (init_alloc_aligned): Check for end
+       of memory.
+
+Sat Mar 16 20:26:28 1996  Shantanu Goel  <address@hidden>
+
+       Following changes for new driver emulation framework.
+
+       * kernel/Makerules: Exclude SCSI directories if LINUX_DEV.
+
+       * kernel/i386/iopb.c: Renamed device_t to mach_device_t.
+       Renamed convert_device_to_port to mach_convert_device_to_port.
+
+       * kernel/i386/trap.c: (kernel_trap): Panic if page fault at address
+       0 or kernel text segment.
+
+       * kernel/i386at/autoconf.c: (bus_master_init): Don't probe for
+       block drivers if the kernel is configured to use Linux block
+       drivers.
+       (bus_device_init): Likewise.
+
+       * kernel/i386at/kd.c: Renamed device_t to mach_device_t.
+         kernel/i386at/iopl.c: Likewise.
+         kernel/i386at/kd.c: Likewise.
+         kernel/i386/io_emulate.c: Likewise.
+
+       * kernel/i386at/conf.c: (dev_name_list): Don't include block
+       driver entries if the kernel is configured to use Linux block
+       drivers.
+
+       * kernel/i386at/i386at_ds_routines.c: New file.
+         kernel/i386at/dev_hdr.h: New file.
+         kernel/i386at/device_emul.h: New file.
+
+       * kernel/i386at/model_dep.c: (use_all_mem): Set it for LINUX_DEV.
+       (machine_init): Set BIOS warm boot magic.  Unmap page zero after
+       device initialization.
+       (halt_all_cpus): Removed BIOS warm boot magic.
+
+       * kernel/i386at/nhd.c: Don't compile if using Linux drivers.
+
+       * kernel/i386at/gpl/linux/linux_block.c: New file.
+         kernel/i386at/gpl/linux/linux_emul.h: New file.
+         kernel/i386at/gpl/linux/linux_misc.c: New file.
+         kernel/i386at/gpl/linux/linux_sched.c: New file.
+         kernel/i386at/gpl/linux/linux_version.c: New file.
+
+       * kernel/i386at/gpl/linux/linux_net.c: Rewritten from scratch.
+
+       * kernel/i386at/gpl/linux/block: New directory.  Block drivers
+       from Linux 1.3.68.
+
+       * kernel/i386at/gpl/linux/scsi: New directory.  SCSI drivers from
+       Linux 1.3.68.
+
+       * kernel/i386at/gpl/linux/pci: New directory.  PCI bus support from
+       Linux 1.3.68.
+       
+       * kernel/i386at/gpl/linux/include: All files upgraded to Linux 1.3.68.
+         kernel/i386at/gpl/linux/net: Likewise.
+       
+       * kernel/intel/pmap.c: (pmap_unmap_page_zero): New function.
+
+Wed Mar  6 18:14:22 1996  steve clawson  <address@hidden>
+
+       * include/mach/setjmp.h: Changed definition of jmp_buf[] so that
+       it's big enough for NetBSD, FreeBSD and linux's libc setjmp
+       functions.  Otherwise their setjmp ends up overwriting useful info
+       in the cthread_t structures.
+
+Tue Mar  5 17:47:59 MST 1996 Linus Kamb  (address@hidden)
+
+       * Changed kernel/i386at/if_ne.c
+               nerecv() recognizes FIPC_MSG_TYPE packets.
+               nefoutput() called by co-opting d_port_death.
+
+       * Changed kernel/i386at/conf.c
+               maps d_port_death to nefoutput()
+
+Fri Feb 23 19:44:52 1996  Bryan Ford <address@hidden>
+
+       Merged in Erich Boleyn's changes for the latest version of MultiBoot:
+
+       * boot/Proposal: updated to Erich's latest version of the proposal;
+         bumped the version number to 0.5.
+
+       * include/mach/machine/multiboot.h: added memory descriptions,
+         ELF symbol table passing support.
+
+       * kernel/i386at/boothdr.S: flag requiring memory info;
+         receive multiboot_info pointer in ebx instead of eax.
+
+       * kernel/i386at/model_dep.c: new way of finding available memory
+
+       * boot/boot_info_dump.c, boot/boot_start.c, boot/do_boot.S:
+         updated for new entry protocol and boot_info format.
+
+       * boot/bsd/main.c: updated to pass BIOS memory info.
+
+       * boot/linux/misc.c: [baford] updated to pass BIOS memory info.
+
+Thu Feb 15 18:36:54 1996  steve clawson  <address@hidden>
+
+       * kernel/i386/locore.S: added cpu_shutdown() function from OSF
+         Mach mk6.1_free, originally from Dave Slattengren
+         <address@hidden>.
+         
+       * kernel/i386at/kd.c: Made kdreboot() call cpu_shutdown() if 
+         the attempt to reset the machine through the keyboard controller
+         dosen't work.
+
+       * kernel/i386at/kd.c: Dosen't include <com.h> anymore, or set 
+         RCLINE.  This isn't needed with the serial console changes.
+       
+       * kernel/i386at/if_3c503.h: added 3com vendor ID numbers.
+
+       * kernel/i386at/if_ns8390.c: Added code from Linux to check for 
+         3com's vendor ID in the Etherlink II probe routine.
+
+Tue Feb 13 22:34:27 1996  Kevin T. Van Maren  <address@hidden>
+
+       * kernel/i386at/conf.c: Changed the number of subdevices for the
+         nhd and sd devices to 2^10 for slice numbering.
+
+       * kernel/i386at/nhd.c: Modified to use the array of partitions
+         and the common partitioning code.  Disklabels are still there,
+         but are fairly meaningless to the kernel (except for the basic
+         geometry information from the BIOS).
+
+       * kernel/i386at/disk.h: minor addition of BAD_BLK from the
+         old hdreg.h file (which is gone)
+
+       * kernel/i386at/pchd.c: removed as obsolete
+
+       * kernel/i386at/hdreg.h: removed as obsolete
+
+Tue Feb 13 16:22:48 1996  steve clawson  <address@hidden>
+
+       * kernel/i386at/if_ne.c: Changed initialization code to follow the
+         National Semiconductor guidelines for setting up the 8390.
+
+Sun Jan 28 22:56:38 MST 1996  Bryan Ford <address@hidden>
+
+       * Checked in major MOSS changes from work at home:
+         got DPMI support working (Win 3.1, Win95, OS/2)
+         modulo a few minor incompatibilities;
+         VCPI and DOS support are fully functional (again);
+         VCPI and DPMI now support fastints.
+
+Wed Jan 17 17:18:57 1996  Bart Robinson  <address@hidden>
+
+       * Serial console working for real.
+
+       * kernel/bogus/rc.h: removed RCBAUD and added RCADDR, prettied up.
+
+       * boot/serial.S: added.  This is used by the boot adaptor part,
+         the rest of the kernel uses mach4/kernel/device/cons.[ch].  This
+         file was taken from FreeBSD who took it from Mach sometime.
+
+       * kernel/pc/putchar.c: changed to use serial.S if <rc.h> says so.
+
+       * boot/bsd/Makerules: serial.S needs kernel/bogus to be on the -I
+         list
+
+       * boot/linux/Makerules: ditto
+
+       * kernel/i386at/model_dep.c: changed to call cninit() rather than
+         kdinit().  Also if booted with -d will call cninit() before
+         Debugger().  It used to have kd_cnmaygetc call cninit (yuk!)
+
+       * kernel/i386at/console_list.h: removed.  The console is handled
+         differently now.
+
+       * kernel/i386at/conf.c: console entry in the device list is now
+         the `virtual' one "cn" instead of "kd"
+
+       * kernel/i386at/cons_conf.c: added.  Defines the constab array
+         which tells us which console-like things to look for.
+
+       * kernel/i386at/com.c: tweaked to export an interface that
+         mach4/kernel/device/cons.[ch] wants.  RCBAUD is in here now
+         rather than rc.h.
+
+       * kernel/i386at/kd.c: ditto
+
+Wed Jan 17 13:51:46 1996  Kevin Van Maren  <vanmaren.cs.utah.edu>
+
+       * Unified the partition code for IDE & SCSI device drivers
+       
+       * kernel/i386at/pc_label.c: deleted
+       * kernel/i386/pc_hd_label.c: deleted (used by hd.c)
+       * kernel/i386/hd.c: deleted (old 'ide' driver)
+
+       * kernel/i386at/nhdreg.h: Removed the definition of PDLOCATION,
+         should be in <i386at/disk.h> not here!
+       
+       * kernel/i386at/nhd.c: Removed IDE specific PC partition code.
+         Changed to use the unified partition code.
+
+Mon Oct 30 08:33:01 1995  Bryan Ford <address@hidden>
+
+       * mach4-i386/kernel/i386at/interrupt.S: from Shantanu: proper fix
+         for interrupt disable bug.
+       * mach4-i386/kernel/i386/spl.S: likewise.
+
+Mon Oct 23 11:08:33 1995  steve clawson  <address@hidden>
+
+       * bootstrap/translate_root.c: new file
+         bootstrap/translate_root.h: likewise
+
+         Code to convert strange root device encodings (like Linux device
+         numbers) into what Mach wants.
+       
+Sun Oct 22 18:36:49 1995  Bryan Ford <address@hidden>
+
+       * Integrated Steve's and Bart's changes from the UK02p16-work branch.
+
+       * boot: updated booter/kernel interface to be (mostly) conformant
+         to MultiBoot-0.3 proposal.
+
+       * boot/bsd/crt0.S: pass a boot loader value (Mach/NetBSD/FreeBSD)
+         as well as boothowto and bootdev.
+
+       * boot/bsd/main.c: Fabricate a proper MultiBoot kernel command line
+         from the boothowto and bootdev values.
+
+       * boot/bsd/main.c: Cleaned up symbol table loading, so it should
+         work with all a.out format variants.
+
+       * boot/bsd/main.c: Provide the kernel info on the device we booted from.
+
+       * mach4-i386/kernel/i386at/model_dep.c: MultiBoot-0.3 compliance.
+
+       * mach4-i386/kernel/i386at/interrupt.S: mostly fix interrupt nesting
+         problem with Linux driver changes.
+
+Mon Oct 16 14:49:01 1995  steve clawson  <address@hidden>
+
+       * boot/bsd/crt0.S: Now should be able to differentiate between
+         the original Mach bootblocks, the old BSD (which NetBSD uses)
+         bootblocks and the new-style FreeBSD bootblocks.  
+
+Fri Oct 13 16:59:10 1995  steve clawson  <address@hidden>
+
+       * boot/boot_info.c: Add code to add the symbol table into the 
+         occupied list that we hand to the kernel.
+
+       * boot/bsd/crt0.S: Added in code to pass along the boothowto and
+         bootdev.  We should be able to tell between Mach, FreeBSD and
+         NetBSD bootblocks, but we don't tell anyone about it yet.
+
+       * boot/bsd/main.c: Now tries to find the kernel symbol table and
+         put it into a `safe' place for the kernel to grab later.  It
+         also sets the bsd_boothowto and bsd_bootdev fields of the 
+         boot_info struct.
+
+       * bootstrap/exec.c: Enabled code to load symbol tables.
+
+       * kernel/i386/setroot.c: Changed code to work with BSD bootblocks
+         (and their major device numbering...sd == 4, instead of 3).
+
+       * kernel/i386at/model_dep.c: Now sets kern_sym_start and
+         kern_sym_size from boot_info, along with boothowto and
+         bootinfo from the bootblocks.
+
+Wed Oct  4 20:04:27 MDT 1995  Bryan Ford <address@hidden>
+
+       Released moss-0.80 (tag moss-0-80)
+
+Wed Oct  4 12:05:57 MDT 1995  Bryan Ford <address@hidden>
+
+       Merged in changes made for DOS extender at home:
+       * added mach/i386/debug_reg.h,
+         containing definitions for accessing the debug registers.
+       * changed i16 code to add physical memory to the malloc pool
+         (assuming we're using the lmm to handle the malloc pool).
+
+Tue Oct  3 13:22:50 1995  steve clawson  <address@hidden>
+
+       * kernel/pc/i16/i16_raw.c: baford's changes to work with gcc
+         2.7.0.
+         boot/boot_start.c: Likewise.
+
+Thu Sep 28 17:37:44 1995  steve clawson  <address@hidden>
+
+       * Makefile.in: added image, bsdimage and linuximage targets.
+         image will build both the linux and bsd images (Mach and zMach),
+         in the Object directory, the others will only build their their
+         respective images.
+
+       * kernel/bogus/hpp.h: Changed #define to be 1, so that the driver
+         is included by default.
+
+       * kernel/i386at/autoconf.c: Changes for NE2000.
+         kernel/i386at/conf.c: Likewise.
+         kernel/i386at/if_ne.c: NE2000 driver.
+         kernel/i386at/if_nereg.h: NE2000 driver header file.
+
+       * kernel/i386at/gpl/if_hpp.c: Changed #include of vm_param.h to
+         "vm_param.h", since it wasn't getting found in the usual place.
+         kernel/i386at/gpl/if_ul.c: Likewise.
+         kernel/i386at/gpl/if_wd.c: Likewise.
+       
+       
+Fri Aug 25 23:39:19 1995  Shantanu Goel  <address@hidden>
+
+       * kernel/i386/hardclock.c: (cold): Deleted.  The Linux code now
+       uses its own clock interrupt handler.
+
+       * kernel/i386/spl.S: Use EXT to reference global variables.
+
+       * kernel/i386/spl.h: spl_t must be int; asm code assume this.
+
+       * kernel/i386at/autoconf.c: Changed default IRQ for "wd" to 9.
+       (probeio): Don't compare dev->ctlr against -1.  GCC 2.7.0 doesn't
+       like it.
+
+       * kernel/i386at/interrupt.S: (interrupt): Removed check
+       for spurious interrupts.
+
+       * kernel/i386at/model_dep.c: (cold): Deleted.
+       (startrtclock): Deleted check against multiple invocations;
+       it's no longer needed.
+
+       * kernel/i386at/pic_isa.c: (intpri): Initialize clock interrupt
+       priority to 0 to disable clock interrupts.
+
+       * kernel/i386at/gpl/linux/linux_dma.c:
+       (linux_request_dma, linux_free_dma): Made function declarations
+       consistent with prototype.
+
+       * kernel/i386at/gpl/linux/linux_init.c: (linux_init): Deleted
+       call to startrtclock().  Install temporary clock interrupt handler
+       for Linux device initialization.
+
+       * kernel/i386at/gpl/linux/linux_net.c: (linux_net_dev_init): Added
+       entries for SEEQ8005, HP100, and Intel EtherExpress Pro.
+       (linux_alloc_skb): No longer takes a 2nd argument in accordance
+       with Linux 1.3.x.
+       (net_soft): Cleaned up DMA handling.
+
+       * kernel/i386at/gpl/linux/linux_port.c: (linux_request_region): Made
+       function declaration consistent with prototype.
+
+       * kernel/i386at/gpl/linux/linux_printk.c: Get GCC's stdarg.h.
+
+       * kernel/i386at/gpl/linux/linux_vsprintf.c: Get GCC's stdarg.h.
+
+       * kernel/i386at/gpl/linux/net:  All files in this directory
+       have been upgraded to Linux 1.3.20.
+
+Mon Jun 26 12:41:56 MDT 1995  Miles Bader <address@hidden>
+
+       * boot/boot_start.c: changed "m" asm constraints to "rm"
+         to make gcc 2.7.0 happy.
+       * kernel/pc/i16/i16_raw.c: avoid using #ifdef's
+         in the middle of macro invocations; gcc 2.7.0 doesn't like them.
+
+Fri May 19 11:17:13 MDT 1995  Bryan Ford <address@hidden>
+
+       * Released UK02p17, as a private snapshot for goel.
+
+Tue May 16 00:59:56 1995  Shantanu Goel  <address@hidden>
+
+       * configure: Recognise --enable-linuxdev.
+
+       * kernel/Makerules: Recognise LINUX_DEV.
+         Don't compile ported Linux drivers if using the native Linux ones.
+
+       * include/mach/machine/asm.h (TEXT_ALIGN, DATA_ALIGN): New defines.
+
+       * kernel/i386/ipl.h (NSPL): New define.
+         (intpri): Make type int.
+         (SPLHI, SPL7, IPLHI): Defined to be 7.
+
+       * kernel/i386/pic.h (PIC_MASTER_ICW, PIC_MASTER_OCW): New defines.
+         (PIC_SLAVE_ICW, PIC_SLAVE_OCW): New defines.
+
+       * kernel/i386/pic.c (pic_mask, curr_pic_mask): Make type int.
+         (NSPL): Use it.
+
+       * kernel/i386/spl.S: Rewritten from scratch.
+
+       * kernel/i386/hardclock.c (hardclock): Linux support changes:
+
+               * Don't call the Mach interrupt handler during configuration.
+
+               * Never pass SPL0 flag to clock_interrupt.
+
+               * Handle Linux timers.
+
+       * kernel/i386at/conf.c: Added entries for Linux network drivers.
+         Disable native Mach drivers when using the Linux ones.
+
+       * kernel/i386at/autoconf.c: Disable probing of native Mach drivers
+         when using the Linux ones.
+         Disable printer driver when using Linux drivers because
+         it blindly allocates the irq, causing conflicts with the parallel
+         port Linux network drivers.
+
+       * kernel/i386at/model_dep.c (machine_init): Call linux_init.
+         (alloc_dma_mem): Modified so it can be called any time while
+         the system is running.  Interface changed.
+         (startrtclock): Protect against multiple invocations.
+
+       * kernel/i386at/nfd.c (fdprobe): Updated call to alloc_dma_mem
+         to account for interface change.
+
+       * kernel/i386at/interrupt.S: Rewritten from scratch.
+
+       * kernel/i386at/pic_isa.c (intpri): Make type int.
+
+       * kernel/i386at/gpl/linux: Directory and files under it added.
+         These provide native Linux network driver support.
+
+Fri May  12 10:47:41 MDT 1995  Bryan Ford <address@hidden>
+
+       * Released UK02p16, as an internal snapshot for rdukes
+
+Wed May  3 10:47:41 MDT 1995  Bryan Ford <address@hidden>
+
+       * Released UK02p15.
+         (UK02p14 was just an intermediate tag after adding ELF support.)
+
+       Configuration-related changes:
+
+       ELF support changes:
+
+       * configure: set 'enable_elf' if user specifies --enable-elf.
+
+       * include/mach/machine/asm.h: don't add underscores to symbols if ELF.
+
+       * All over: make proper use of EXT/LEXT/ENTRY macros
+         instead of assuming all public symbols are prefixed with underscores.
+
+       * boot/bsd.main.c: if a.out-kludge bit isn't set, use exec_load()
+         from libmach_exec.a to interpret the boot image executable header.
+
+       * kernel/i386/fpe.b_elf: created a uuencoded ELF version of fpe.b
+
+       * libmach/loader_info.c: deleted, became libmach/exec/a_out.c.
+
+       Miscellaneous changes:
+
+       * Makeconf.in: got rid of LD86 and AS86; no longer needed
+
+       * Makerules: various cleanups and fixes, ELF stuff.
+
+       * include/mach/machine/vm_param.h: Moved private kernel parts
+         to kernel/i386/vm_param.h.
+
+       * kernel/dos/*: added a bunch of Unix-like low-level file I/O
+         routines that translate to the appropriate DOS software interrupts.
+
+       * kernel/i386/seg.h: use MACH_INLINE macro for inline functions.
+
+       * kernel/i386at/eisa.h: added from MK83a, was missing for some reason.
+
+Fri Apr  7 17:43:22 MDT 1995  Bryan Ford <address@hidden>
+
+       * Released UK02p13.
+
+       * Got rid of the UK02-freeze branch in the i386 tree.
+         As a result, all the MK83a changes in this tree are now merged in.
+
+Fri Apr  7 14:19:55 MDT 1995  Bryan Ford <address@hidden>
+
+       * Merged in diffs from UK02p9 to UK02p12:
+
+       Mon Apr  3 19:55:41 MDT 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p11.
+                 Too many changes to describe concisely,
+                 almost all affecting only the boot mechanism for now.
+                 Also, integrated the kernel/util, kernel/pc, kernel/dos code
+                 from my DOS extender project at home.
+
+       Mon Feb 27 16:32:59 MST 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p10 as a non-functional snapshot
+
+Fri Feb 10 13:25:54 MST 1995  Bryan Ford <address@hidden>
+
+       Merged in diffs from UK02p7 to UK02p9:
+
+       Tue Jan 17 15:55:01 MST 1995  Bryan Ford <address@hidden>
+
+               * Released UK02p8
+
+       Tue Jan 17 12:03:37 MST 1995  Bryan Ford <address@hidden>
+
+               * boot/bsd/Makerules: BSD default boot image is now
+                 named 'Mach.all' instead of 'boot.all'.
+
+       Sat Jan 14 15:13:54 MST 1995  Bryan Ford <address@hidden>
+
+               * libmach/unixoid/Makefile: enable building libmach.a
+                 only if user specifies --enable-libmach to configure.
+
+       Fri Jan 13 15:14:43 1995  steve clawson  <address@hidden>
+
+               * Integrated Shantanu Goel's new floppy and hard drive 
+                 device drivers. (address@hidden)
+
+                 * kernel/i386at/nhd.c: Rewritten from scratch.
+                   kernel/i386at/nhdreg.h: Likewise.
+                   kernel/i386at/nfd.c: Likewise.
+                   kernel/i386at/nfdreg.h: Likewise.
+
+                 * kernel/i386at/model_dep.c:
+                   Added alloc_dma_mem().
+
+                 * kernel/bogus/fd.h:
+                   Set NFD to 4 to include floppy support.
+
+               * Added an #if 0/#endif wrapper around:
+                   kernel/i386/pc_hd_label.c
+                   kernel/i386at/pchd.c
+                   kernel/i386at/hd.c
+                   kernel/i386at/fd.c
+
+       Fri Jan 13 14:56:35 1995  steve clawson  <address@hidden>
+
+              * added .../kernel/i386at/gpl directory to hold gpl'd
+                 code (currently it holds ethernet drivers ported from
+                 Linux).
+
+              * Integrated Shantanu Goel's ethernet driver ports from 
+                Linux into the gpl directory. (address@hidden)
+
+                * kernel/i386at/gpl/if_ns.c: New file.   
+                  kernel/i386at/gpl/if_nsreg.h: New file.
+                  kernel/i386at/gpl/if_ul.c: New file.
+                  kernel/i386at/gpl/if_wd.c: New file.
+                  kernel/bogus/ul.h: New file.
+                  kernel/bogus/wd.h: New file.
+
+                * kernel/i386at/autoconf.c:
+                  Added entries for new drivers, "ul", "wd".
+
+                * kernel/i386at/conf.c:
+                  Added entries for new drivers, "ul", "wd".
+
+                * kernel/i386at/if_ns8390.c:
+                  Compile file only #if NNS8390 > 0.  This and if_wd.c 
+                  are probably mutually exclusive. (ie. don't try and stick
+                  both in your kernel...)
+
+               * Added HP PC LAN Plus support code ported from Linux.
+
+                 * kernel/i386at/gpl/if_hpp.c: New file.       
+                   kernel/bogus/hpp.h: New file.
+
+                 * kernel/i386at/autoconf.c:
+                   Added entry for new driver, "hpp".
+
+                 * kernel/i386at/conf.c:
+                   Added entry for new driver, "hpp".
+
+               * kernel/i386at/gpl/if_ns.c: nsintr(): Added back in the 
+                 code to read the counter values from the card if they
+                 overflow.  The HP PC LAN Plus needs to have this (just 
+                 acking the interrupt dosen't reset the counters on the 
+                 card I've got).
+                 
+       13 Jan 1995 19:53:53 +0100 (MET) address@hidden (Remy CARD)
+
+               * libmach/unixoid/Makefile.in: reenabled building of libmach.a.
+
+       Fri Jan 13 14:52:42 MST 1995  Bryan Ford <address@hidden>
+
+               * libmach/loader_info.c: fixed bug interpreting QMAGIC 
executables.
+
+Fri Nov 25 13:56:32 MST 1994  Bryan Ford  (address@hidden)
+
+       Merged in diffs from UK02p6 to UK02p7:
+
+       Sun Nov 20 11:56:51 MST 1994  Bryan Ford  (address@hidden)
+
+       * Changed the ifdefs referring to '__liXnux__' back to '__linux__'
+         so that partition interpretation will once again default to
+         standard PC-style when compiled on a Linux machine.
+         If you're cross-compiling from Linux and want BSD partitioning
+         anyway, add '-U__linux__' to the DEFINES line in Makeconf.
+
+       * Modified Alvin's compressed boot image mechanism slightly
+         so the Linux-derived files can be taken _completely_
+         unmodified from the Linux kernel source distribution.
+         Easier to keep up-to-date this way.  Also created a little
+         shell script to update these files automatically.
+
+       * Separated out the 'mkbootimage' script and supporting stuff
+         into a separate 'boot/bsd' subdirectory, just like the
+         Linux boot image stuff was separated out.  Now the top-level
+         'boot' directory contains _only_ stuff related to
+         boot _modules_.
+
+       * The top-level Makefile is no longer responsible for creating
+         the "default boot image" containing all available boot modules.
+         Instead, boot/bsd/Makefile now produces a default 32-bit boot
+         image ('boot.all'), and boot/linux/Makefile produces a
+         default 16-bit compressed Linux boot image ('zMach.all').
+
+       * Cleaned up the console code a little bit.
+
+       Mon Nov 14 22:50:57 -0500 1994  Alvin Starr <address@hidden>
+
+       * Separated out the Linux boot image creation mechanisms
+         into a separate 'boot/linux' subdirectory, and changed
+         it to produce compressed Linux boot images.  The Linux
+         boot images produced are now _exactly_ like those
+         produced by Linux, in that they use all the same 16-bit
+         setup code and decompression code and everything.
+         This also means you can 'dd' one of these boot images
+         straight onto a floppy to create a Mach boot floppy.
+
+         To create compressed Linux boot images now, use the
+         new 'mkliloimage' script.  It works just like 'mkbootimage'.
+
+         The old 'mkbootimage' script is still there, but is greatly
+         simplified since it no longer needs to produce Linux-compatible
+         boot images at all.  One side-effect of this is that the
+         32-bit boot images produced by this script will be in the
+         "native" executable format of the build environment in use.
+         For example, if you build under NetBSD, the produced 32-bit
+         boot images will load fine from BSD boot blocks, but probably
+         not from Mach boot blocks, because the Mach boot blocks don't
+         know about BSD's newer a.out format.
+
+       * Enabled SCSI drivers.
+
+       * God kernel debugger working again.
+
+       * Changed kd.c to handle tabs correctly.
+
+       Fri Sep 30 21:38:31 1994  Patrick Doyle  (address@hidden)
+
+       * Makefile.in
+         (SORTED_SUBDIRS):
+           Added a macro to generated a "sorted" list of subdirectories
+           such that those listed in $(FIRST_SUBDIRS) are first.  Changed
+           the "all" and "install" rules to use this macro so we don't
+           have to descend into those subdirs twice.  (Idea was stolen
+           from glibc makefile).
+         (boot.all):
+           Added rule to generate "boot.all" in the top level object
+           directory and changed "all" to create this target.
+
+Sat Oct 22 14:59:03 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Incorporated tons of minor changes and additions
+         produced by my Mach-based DOS extender project.
+         Mostly involved cleaning up and adding to libmach_sa.
+
+Tue Oct 25 12:32:28 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Released UK02p6.
+
+       * Moved exec header interpretation stuff from the bootstrap code
+         into libmach so the kernel could also use it when initializing
+         the bootstrap program itself.
+
+Fri Sep 16 11:33:44 MDT 1994  Bryan Ford (address@hidden)
+
+       * Fixed a bug in locore.S that caused occasional
+         "null pv_list" panics from within pmap.c.
+
+       * Fixed a bug in pmap.c: forgot to clear the kernel
+         page directory before initializing (only part of) it.
+
+Fri Sep  9 10:45:26 MDT 1994  Bryan Ford (address@hidden)
+
+       * Added kernel/imps directory 
+         for Intel MultiProcessor Spec compliant PCs;
+         only enabled if user specifies --enable-mp.
+
+       * boot image building scripts: exit when errors occur
+
+       * boot/mkbmod.sh: changed -s to -no-strip to avoid confusion
+
+Thu Sep  8 16:51:15 MDT 1994  Bryan Ford (address@hidden)
+
+       * bootstrap/exec.c:
+         support NetBSD big-endian ZMAGIC executables
+
+       * include/Makefile.in:
+         fixed installation directories
+
+Tue Sep  6 08:49:39 1994  Patrick Doyle  (address@hidden)
+
+       * Makefile.in (install): Changed "install" rule so that it doesn't
+         gratuitously reinstall boot.all.
+
+Mon Sep  5 12:11:45 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Full cross compilation support
+
+       * Changed default Mach boot image filename
+         from `machboot' to just `boot'.
+
+       * Automatically create a `boot.all' upon installation
+         containing all boot modules.
+
+Sat Sep  3 07:13:44 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Bugfix: boot code didn't clear NT flag properly,
+         and the VTech Platinum BIOS was leaving it set.
+
+       * Added get_esp() and get_eflags() in proc_reg.h.
+
+       * Added debug_trace facility.
+
+       * bootstrap/exec.c: got rid of #ifdef __linux__'s;
+         instead, support both at once and detect at runtime.
+
+       * include/mach/machine/disk.h,
+         kernel/i386/pc_hd_label.c:
+         hacked #ifdef __linux__'s to #ifdef __liXnux__
+         to get back to BSD-style partition table interpretation.
+
+Fri Aug 26 09:52:35 1994  Jeff Law  (address@hidden)
+
+       * configure: Add "-print" argument to find so that it works with
+       non-GNU finds. 
+
+Mon Aug 1 18:15:00 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Got most of the migrating threads changes merged in
+
+Mon Aug  1 14:45:52 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Integrated Louis-D. Dubeau's pchd (PC hard drive) patches.
+
+
+Wed Jul 20 14:00:45 MDT 1994  Bryan Ford  (address@hidden)
+
+       * include/Makefile: top-level header files weren't getting installed.
+
+       * Moved kernel i386/eflags.h to include/mach/machine/eflags.h,
+         so outsiders such as LITES can use it if they want to.
+
+       * Released UK02
+
+
+Fri Jul 15 11:46:19 MDT 1994  Bryan Ford  (address@hidden)
+
+       * Kernel address space and physical memory
+         is now mapped at virtual address 0 instead of 0xC0000000.
+         (It's still up high in linear memory,
+         but the kernel segment registers are used to shift addresses.)
+
+       * All copyin/copyout code now uses segment registers
+         to access user space, like Linux does.
+
+       * Separated the console stuff out of kd.c and into (new) console.c.
+         No longer initialize the console at the very beginning in i386_init;
+         instead do it with the rest of the devices, in machine_startup.
+
+       * console.c: Created a kludgy little "immediate console" for kernel 
debugging
+         which spews things onto a CGA/EGA/VGA display
+         without requiring _any_ initialization first.
+         It gets disabled automatically when the real console is initialized.
+
+       * include/mach/boot_info.h: deleted, because it was only for the old
+         `makeboot'-based server bootstrap mechanism.
+         Superseded by the new include/mach/boot.h.
+
+       * Lots of other minor changes.
+
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..007e939
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..5bbbbd1
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,7947 @@
+# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
address@hidden@
+
+# Makefile for GNU Mach.
+
+# Copyright (C) 2006, 2007, 2008, 2009, 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# Various definitions of the Automake environment.
+#
+# These will be augmented below.
+#
+
+# Makerules: how to do some things.
+
+# Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+
+# Permission to use, copy, modify and distribute this software and its
+# documentation is hereby granted, provided that both the copyright
+# notice and this permission notice appear in all copies of the
+# software, derivative works or modified versions, and any portions
+# thereof, and that both notices appear in supporting documentation.
+#
+# THE FREE SOFTWARE FOUNDATION ALLOWS FREE USE OF THIS SOFTWARE IN ITS
+# "AS IS" CONDITION.  THE FREE SOFTWARE FOUNDATION DISCLAIMS ANY
+# LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
+# USE OF THIS SOFTWARE.
+
+#
+# Building foo.h from foo.sym.
+#
+
+# Makerules.mig: how to do some MIG-related things.
+
+# Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# 
+# Written by Thomas Schwinge.
+
+# serial 0
+
+# TODO.  This file should probably be distributed with GNU MIG and then there
+# should be some mechanism so that every package using it is automagically
+# using the latest available (or best-matching) version of it.  Which is not
+# trivial, as the file is already needed to build the build system.  But then,
+# this file does not really depend on GNU Automake.  Hmm...
+
+# USAGE.
+
+# Before `include'ing this file, `noinst_LIBRARIES' and `MOSTLYCLEANFILES' have
+# to be initialized.
+
+# For using these rules, `AM_CPPFLAGS', `MIGCOM', `MIGCOMFLAGS', `MIGCOMSFLAGS'
+# and `MIGCOMUFLAGS' have to be defined as desired.
+
+# Then you can (read: currently ``have to''; see below for comments) use
+# constructs like:
+#
+# # User stubs.
+# nodist_lib_dep_tr_for_defs_a_SOURCES += \
+#      vm/memory_object_user.user.defs.c
+# nodist_libkernel_a_SOURCES += \
+#      vm/memory_object_user.user.h \
+#      vm/memory_object_user.user.c \
+#      vm/memory_object_user.user.msgids
+#
+# # Server stubs.
+# nodist_lib_dep_tr_for_defs_a_SOURCES += \
+#      device/device.server.defs.c
+# nodist_libkernel_a_SOURCES += \
+#      device/device.server.h \
+#      device/device.server.c \
+#      device/device.server.msgids
+
+#
+# Building RPC stubs.
+#
+
+# TODO.  Get rid of that stuff, lib_dep_tr_for_defs.a and the four following
+# rules.  See the thread at
+# <http://lists.gnu.org/archive/html/automake/2006-10/msg00039.html> about what
+# we really want to do.  This requires work on GNU Automake.
+
+# Main Makefile fragment for GNU Mach.
+
+# Copyright (C) 1997, 1999, 2004, 2006, 2007, 2009 Free Software
+# Foundation, Inc.
+
+# Permission to use, copy, modify and distribute this software and its
+# documentation is hereby granted, provided that both the copyright
+# notice and this permission notice appear in all copies of the
+# software, derivative works or modified versions, and any portions
+# thereof, and that both notices appear in supporting documentation.
+#
+# THE FREE SOFTWARE FOUNDATION ALLOWS FREE USE OF THIS SOFTWARE IN ITS
+# "AS IS" CONDITION.  THE FREE SOFTWARE FOUNDATION DISCLAIMS ANY
+# LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
+# USE OF THIS SOFTWARE.
+
+#
+# DDB support --- eventually to die.  Please.
+#
+
+# Makefile fragment for Linux device drivers and the glue code.
+
+# Copyright (C) 2006, 2007, 2011 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# Files for device driver support.
+#
+
+# Makefile fragment for i386-specific Linux code.
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# Files for device driver support.
+#
+
+# Makefile fragment for the Xen platform.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# Xen support.
+#
+
+# Makefile fragment for i386.
+
+# Copyright (C) 1997, 1999, 2006, 2007 Free Software Foundation, Inc.
+
+# Permission to use, copy, modify and distribute this software and its
+# documentation is hereby granted, provided that both the copyright
+# notice and this permission notice appear in all copies of the
+# software, derivative works or modified versions, and any portions
+# thereof, and that both notices appear in supporting documentation.
+#
+# THE FREE SOFTWARE FOUNDATION ALLOWS FREE USE OF THIS SOFTWARE IN ITS
+# "AS IS" CONDITION.  THE FREE SOFTWARE FOUNDATION DISCLAIMS ANY
+# LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
+# USE OF THIS SOFTWARE.
+
+#
+# Source files for any i386 kernel.
+#
+
+# Makefile fragment for the ix86 specific part of the Xen platform.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# Xen support.
+#
+
+# Makefile fragment for the test suite.
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# Tests.
+#
+
+# Makefile fragment for the documentation.
+
+# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# The GNU Mach Reference Manual.
+#
+
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+noinst_PROGRAMS = gnumach.o$(EXEEXT)
+
+# The smashing stack protector might be enabled by default, but might emit
+# unsuitable code.
address@hidden@am__append_1 = \
address@hidden@ -fno-stack-protector
+
+DIST_COMMON = $(srcdir)/Makerules.am $(srcdir)/Makerules.mig.am \
+       $(srcdir)/Makefrag.am $(srcdir)/linux/Makefrag.am \
+       $(srcdir)/i386/linux/Makefrag.am $(srcdir)/xen/Makefrag.am \
+       $(srcdir)/i386/Makefrag.am $(srcdir)/i386/xen/Makefrag.am \
+       $(srcdir)/tests/Makefrag.am $(srcdir)/doc/Makefrag.am INSTALL \
+       NEWS README AUTHORS ChangeLog $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(srcdir)/config.h.in \
+       $(top_srcdir)/tests/test-mbchk.in $(srcdir)/version.c.in \
+       $(top_srcdir)/build-aux/depcomp \
+       $(top_srcdir)/build-aux/mdate-sh $(srcdir)/doc/version.texi \
+       $(srcdir)/doc/stamp-vti $(top_srcdir)/build-aux/texinfo.tex \
+       $(include_device_HEADERS) $(include_mach_HEADERS) \
+       $(include_mach_eXec_HEADERS) \
+       $(am__include_mach_i386_HEADERS_DIST) \
+       $(top_srcdir)/build-aux/test-driver COPYING build-aux/compile \
+       build-aux/config.guess build-aux/config.sub build-aux/depcomp \
+       build-aux/install-sh build-aux/mdate-sh build-aux/missing \
+       build-aux/texinfo.tex $(top_srcdir)/build-aux/compile \
+       $(top_srcdir)/build-aux/config.guess \
+       $(top_srcdir)/build-aux/config.sub \
+       $(top_srcdir)/build-aux/install-sh \
+       $(top_srcdir)/build-aux/missing
+
+# Do we want the icky kernel debugger?
address@hidden@am__append_2 = \
address@hidden@ ddb/db_access.c \
address@hidden@ ddb/db_access.h \
address@hidden@ ddb/db_aout.c \
address@hidden@ ddb/db_break.c \
address@hidden@ ddb/db_break.h \
address@hidden@ ddb/db_command.c \
address@hidden@ ddb/db_command.h \
address@hidden@ ddb/db_cond.c \
address@hidden@ ddb/db_cond.h \
address@hidden@ ddb/db_examine.c \
address@hidden@ ddb/db_examine.h \
address@hidden@ ddb/db_expr.c \
address@hidden@ ddb/db_expr.h \
address@hidden@ ddb/db_ext_symtab.c \
address@hidden@ ddb/db_input.c \
address@hidden@ ddb/db_input.h \
address@hidden@ ddb/db_lex.c \
address@hidden@ ddb/db_lex.h \
address@hidden@ ddb/db_macro.c \
address@hidden@ ddb/db_macro.h \
address@hidden@ ddb/db_mp.c \
address@hidden@ ddb/db_output.c \
address@hidden@ ddb/db_output.h \
address@hidden@ ddb/db_print.c \
address@hidden@ ddb/db_print.h \
address@hidden@ ddb/db_run.c \
address@hidden@ ddb/db_run.h \
address@hidden@ ddb/db_sym.c \
address@hidden@ ddb/db_sym.h \
address@hidden@ ddb/db_task_thread.c \
address@hidden@ ddb/db_task_thread.h \
address@hidden@ ddb/db_trap.c \
address@hidden@ ddb/db_trap.h \
address@hidden@ ddb/db_variables.c \
address@hidden@ ddb/db_variables.h \
address@hidden@ ddb/db_watch.c \
address@hidden@ ddb/db_watch.h \
address@hidden@ ddb/db_write_cmd.c \
address@hidden@ ddb/nlist.h \
address@hidden@ ddb/stab.h \
address@hidden@ ddb/tr.h
+
+
+# We need frame pointers for trace to work properly.
address@hidden@am__append_3 = -fno-omit-frame-pointer 
-fno-optimize-sibling-calls
+
+#
+# `kmsg' device.
+#
address@hidden@am__append_4 = \
address@hidden@ device/kmsg.c \
address@hidden@ device/kmsg.h
+
address@hidden@am__append_5 = \
address@hidden@ liblinux.a
+
address@hidden@am__append_6 = \
address@hidden@ liblinux.a
+
+
+#
+# Linux device drivers.
+#
address@hidden@am__append_7 = \
address@hidden@ linux/dev/drivers/block/floppy.c
+
address@hidden@am__append_8 = \
address@hidden@ linux/src/drivers/block/cmd640.c \
address@hidden@ linux/src/drivers/block/ide-cd.c \
address@hidden@ linux/src/drivers/block/ide.c \
address@hidden@ linux/src/drivers/block/ide.h \
address@hidden@ linux/dev/drivers/block/ahci.c \
address@hidden@ linux/dev/include/ahci.h \
address@hidden@ linux/src/drivers/block/ide_modes.h \
address@hidden@ linux/src/drivers/block/rz1000.c \
address@hidden@ linux/src/drivers/block/triton.c
+
address@hidden@am__append_9 = \
address@hidden@ linux/src/drivers/scsi/constants.c \
address@hidden@ linux/src/drivers/scsi/constants.h \
address@hidden@ linux/src/drivers/scsi/hosts.c \
address@hidden@ linux/src/drivers/scsi/hosts.h \
address@hidden@ linux/src/drivers/scsi/scsi.c \
address@hidden@ linux/src/drivers/scsi/scsi.h \
address@hidden@ linux/src/drivers/scsi/scsi_ioctl.c \
address@hidden@ linux/src/drivers/scsi/scsi_proc.c \
address@hidden@ linux/src/drivers/scsi/scsicam.c \
address@hidden@ linux/src/drivers/scsi/sd.c \
address@hidden@ linux/src/drivers/scsi/sd.h \
address@hidden@ linux/src/drivers/scsi/sd_ioctl.c \
address@hidden@ linux/src/drivers/scsi/sr.c \
address@hidden@ linux/src/drivers/scsi/sr.h \
address@hidden@ linux/src/drivers/scsi/sr_ioctl.c
+
address@hidden@am__append_10 = \
address@hidden@ linux/src/drivers/scsi/53c7,8xx.h \
address@hidden@ linux/src/drivers/scsi/53c78xx.c \
address@hidden@ linux/src/drivers/scsi/53c8xx_d.h \
address@hidden@ linux/src/drivers/scsi/53c8xx_u.h
+
address@hidden@am__append_11 = \
address@hidden@ linux/src/drivers/scsi/AM53C974.c \
address@hidden@ linux/src/drivers/scsi/AM53C974.h
+
address@hidden@am__append_12 = \
address@hidden@ linux/src/drivers/scsi/BusLogic.c \
address@hidden@ linux/src/drivers/scsi/BusLogic.h
+
address@hidden@am__append_13 = \
address@hidden@ linux/src/drivers/scsi/FlashPoint.c
+
address@hidden@am__append_14 = \
address@hidden@ linux/src/drivers/scsi/NCR53c406a.c \
address@hidden@ linux/src/drivers/scsi/NCR53c406a.h
+
address@hidden@am__append_15 = \
address@hidden@ linux/src/drivers/scsi/advansys.c \
address@hidden@ linux/src/drivers/scsi/advansys.h
+
address@hidden@am__append_16 = \
address@hidden@ linux/src/drivers/scsi/aha152x.c \
address@hidden@ linux/src/drivers/scsi/aha152x.h
+
address@hidden@am__append_17 = \
address@hidden@ linux/src/drivers/scsi/aha1542.c \
address@hidden@ linux/src/drivers/scsi/aha1542.h
+
address@hidden@am__append_18 = \
address@hidden@ linux/src/drivers/scsi/aha1740.c \
address@hidden@ linux/src/drivers/scsi/aha1740.h
+
address@hidden@am__append_19 = \
address@hidden@ linux/src/drivers/scsi/aic7xxx.c \
address@hidden@ linux/src/drivers/scsi/aic7xxx.h \
address@hidden@ linux/src/drivers/scsi/aic7xxx/scsi_message.h \
address@hidden@ linux/src/drivers/scsi/aic7xxx/sequencer.h \
address@hidden@ linux/src/drivers/scsi/aic7xxx_reg.h
+
address@hidden@am__append_20 = \
address@hidden@ linux/src/drivers/scsi/aic7xxx_proc.c \
address@hidden@ linux/src/drivers/scsi/aic7xxx_seq.c
+
address@hidden@am__append_21 = \
address@hidden@ linux/src/drivers/scsi/dtc.c \
address@hidden@ linux/src/drivers/scsi/dtc.h
+
address@hidden@am__append_22 = \
address@hidden@ linux/src/drivers/scsi/eata.c \
address@hidden@ linux/src/drivers/scsi/eata.h \
address@hidden@ linux/src/drivers/scsi/eata_generic.h
+
address@hidden@am__append_23 = \
address@hidden@ linux/dev/drivers/scsi/eata_dma.c \
address@hidden@ linux/src/drivers/scsi/eata_dma.h \
address@hidden@ linux/src/drivers/scsi/eata_dma_proc.h
+
address@hidden@am__append_24 = \
address@hidden@ linux/src/drivers/scsi/eata_dma_proc.c
+
address@hidden@am__append_25 = \
address@hidden@ linux/src/drivers/scsi/eata_pio.c \
address@hidden@ linux/src/drivers/scsi/eata_pio.h
+
address@hidden@am__append_26 = \
address@hidden@ linux/src/drivers/scsi/eata_pio_proc.c
+
address@hidden@am__append_27 = \
address@hidden@ linux/src/drivers/scsi/fdomain.c \
address@hidden@ linux/src/drivers/scsi/fdomain.h
+
address@hidden@am__append_28 = \
address@hidden@ linux/dev/drivers/scsi/g_NCR5380.c \
address@hidden@ linux/src/drivers/scsi/g_NCR5380.h
+
address@hidden@am__append_29 = \
address@hidden@ linux/src/drivers/scsi/gdth.c \
address@hidden@ linux/src/drivers/scsi/gdth.h \
address@hidden@ linux/src/drivers/scsi/gdth_ioctl.h \
address@hidden@ linux/src/drivers/scsi/gdth_proc.h
+
address@hidden@am__append_30 = \
address@hidden@ linux/src/drivers/scsi/gdth_proc.c
+
address@hidden@am__append_31 = \
address@hidden@ linux/src/drivers/scsi/in2000.c \
address@hidden@ linux/src/drivers/scsi/in2000.h
+
address@hidden@am__append_32 = \
address@hidden@ linux/src/drivers/scsi/ncr53c8xx.c \
address@hidden@ linux/src/drivers/scsi/ncr53c8xx.h
+
address@hidden@am__append_33 = \
address@hidden@ linux/src/drivers/scsi/pas16.c \
address@hidden@ linux/src/drivers/scsi/pas16.h
+
address@hidden@am__append_34 = \
address@hidden@ linux/src/drivers/scsi/ppa.c \
address@hidden@ linux/src/drivers/scsi/ppa.h
+
address@hidden@am__append_35 = \
address@hidden@ linux/src/drivers/scsi/qlogicfas.c \
address@hidden@ linux/src/drivers/scsi/qlogicfas.h
+
address@hidden@am__append_36 = \
address@hidden@ linux/src/drivers/scsi/qlogicisp.c \
address@hidden@ linux/src/drivers/scsi/qlogicisp.h
+
address@hidden@am__append_37 = \
address@hidden@ linux/src/drivers/scsi/seagate.c \
address@hidden@ linux/src/drivers/scsi/seagate.h
+
address@hidden@am__append_38 = \
address@hidden@ linux/src/drivers/scsi/sym53c8xx.c \
address@hidden@ linux/src/drivers/scsi/sym53c8xx_comm.h \
address@hidden@ linux/src/drivers/scsi/sym53c8xx.h \
address@hidden@ linux/src/drivers/scsi/sym53c8xx_defs.h
+
address@hidden@am__append_39 = \
address@hidden@ linux/src/drivers/scsi/t128.c \
address@hidden@ linux/src/drivers/scsi/t128.h
+
address@hidden@am__append_40 = \
address@hidden@ linux/src/drivers/scsi/dc390.h \
address@hidden@ linux/src/drivers/scsi/tmscsim.c \
address@hidden@ linux/src/drivers/scsi/tmscsim.h
+
address@hidden@am__append_41 = \
address@hidden@ linux/src/drivers/scsi/scsiiom.c
+
address@hidden@am__append_42 = \
address@hidden@ linux/src/drivers/scsi/u14-34f.c \
address@hidden@ linux/src/drivers/scsi/u14-34f.h
+
address@hidden@am__append_43 = \
address@hidden@ linux/src/drivers/scsi/ultrastor.c \
address@hidden@ linux/src/drivers/scsi/ultrastor.h
+
address@hidden@am__append_44 = \
address@hidden@ linux/src/drivers/scsi/wd7000.c \
address@hidden@ linux/src/drivers/scsi/wd7000.h
+
address@hidden@am__append_45 = \
address@hidden@ linux/dev/drivers/net/auto_irq.c \
address@hidden@ linux/dev/glue/net.c \
address@hidden@ linux/dev/drivers/net/Space.c \
address@hidden@ linux/dev/net/core/dev.c \
address@hidden@ linux/dev/drivers/net/net_init.c \
address@hidden@ linux/src/drivers/net/pci-scan.c \
address@hidden@ linux/src/drivers/net/pci-scan.h
+
address@hidden@am__append_46 = \
address@hidden@ linux/src/drivers/net/3c501.c
+
address@hidden@am__append_47 = \
address@hidden@ linux/src/drivers/net/3c503.c \
address@hidden@ linux/src/drivers/net/3c503.h \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_48 = \
address@hidden@ linux/src/drivers/net/3c505.c \
address@hidden@ linux/src/drivers/net/3c505.h
+
address@hidden@am__append_49 = \
address@hidden@ linux/src/drivers/net/3c507.c
+
address@hidden@am__append_50 = \
address@hidden@ linux/src/drivers/net/3c509.c
+
address@hidden@am__append_51 = \
address@hidden@ linux/src/drivers/net/3c59x.c
+
address@hidden@am__append_52 = \
address@hidden@ linux/src/drivers/net/3c515.c
+
address@hidden@am__append_53 = \
address@hidden@ linux/src/drivers/net/ac3200.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_54 = \
address@hidden@ linux/src/drivers/net/apricot.c
+
address@hidden@am__append_55 = \
address@hidden@ linux/src/drivers/net/at1700.c
+
address@hidden@am__append_56 = \
address@hidden@ linux/src/drivers/net/atp.c \
address@hidden@ linux/src/drivers/net/atp.h
+
+
+#if device_driver_cb_shim
+#liblinux_a_SOURCES += \
+#      linux/src/drivers/net/cb_shim.c
+#endif
address@hidden@am__append_57 = \
address@hidden@ linux/src/drivers/net/de4x5.c \
address@hidden@ linux/src/drivers/net/de4x5.h
+
address@hidden@am__append_58 = \
address@hidden@ linux/src/drivers/net/de600.c
+
address@hidden@am__append_59 = \
address@hidden@ linux/src/drivers/net/de620.c \
address@hidden@ linux/src/drivers/net/de620.h
+
address@hidden@am__append_60 = \
address@hidden@ linux/src/drivers/net/depca.c \
address@hidden@ linux/src/drivers/net/depca.h
+
address@hidden@am__append_61 = \
address@hidden@ linux/src/drivers/net/e2100.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_62 = \
address@hidden@ linux/src/drivers/net/eepro.c
+
address@hidden@am__append_63 = \
address@hidden@ linux/src/drivers/net/eepro100.c
+
address@hidden@am__append_64 = \
address@hidden@ linux/src/drivers/net/eexpress.c \
address@hidden@ linux/src/drivers/net/eth82586.h
+
address@hidden@am__append_65 = \
address@hidden@ linux/src/drivers/net/epic100.c
+
address@hidden@am__append_66 = \
address@hidden@ linux/src/drivers/net/eth16i.c
+
address@hidden@am__append_67 = \
address@hidden@ linux/src/drivers/net/ewrk3.c \
address@hidden@ linux/src/drivers/net/ewrk3.h
+
address@hidden@am__append_68 = \
address@hidden@ linux/src/drivers/net/fmv18x.c
+
address@hidden@am__append_69 = \
address@hidden@ linux/src/drivers/net/hamachi.c
+
address@hidden@am__append_70 = \
address@hidden@ linux/src/drivers/net/hp-plus.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_71 = \
address@hidden@ linux/src/drivers/net/hp.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_72 = \
address@hidden@ linux/src/drivers/net/hp100.c \
address@hidden@ linux/src/drivers/net/hp100.h
+
address@hidden@am__append_73 = \
address@hidden@ linux/src/drivers/net/intel-gige.c
+
address@hidden@am__append_74 = \
address@hidden@ linux/src/drivers/net/lance.c
+
address@hidden@am__append_75 = \
address@hidden@ linux/src/drivers/net/myson803.c
+
address@hidden@am__append_76 = \
address@hidden@ linux/src/drivers/net/natsemi.c
+
address@hidden@am__append_77 = \
address@hidden@ linux/src/drivers/net/ne.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_78 = \
address@hidden@ linux/src/drivers/net/ne2k-pci.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_79 = \
address@hidden@ linux/src/drivers/net/ni52.c \
address@hidden@ linux/src/drivers/net/ni52.h
+
address@hidden@am__append_80 = \
address@hidden@ linux/src/drivers/net/ni65.c \
address@hidden@ linux/src/drivers/net/ni65.h
+
address@hidden@am__append_81 = \
address@hidden@ linux/src/drivers/net/ns820.c
+
address@hidden@am__append_82 = \
address@hidden@ linux/src/drivers/net/pcnet32.c
+
address@hidden@am__append_83 = \
address@hidden@ linux/src/drivers/net/rtl8139.c
+
address@hidden@am__append_84 = \
address@hidden@ linux/src/drivers/net/seeq8005.c \
address@hidden@ linux/src/drivers/net/seeq8005.h
+
address@hidden@am__append_85 = \
address@hidden@ linux/src/drivers/net/sis900.c \
address@hidden@ linux/src/drivers/net/sis900.h
+
address@hidden@am__append_86 = \
address@hidden@ linux/src/drivers/net/sk_g16.c \
address@hidden@ linux/src/drivers/net/sk_g16.h
+
address@hidden@am__append_87 = \
address@hidden@ linux/src/drivers/net/smc-ultra.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_88 = \
address@hidden@ linux/src/drivers/net/smc-ultra32.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_89 = \
address@hidden@ linux/src/drivers/net/starfire.c
+
address@hidden@am__append_90 = \
address@hidden@ linux/src/drivers/net/sundance.c
+
address@hidden@am__append_91 = \
address@hidden@ linux/src/drivers/net/tlan.c \
address@hidden@ linux/src/drivers/net/tlan.h
+
address@hidden@am__append_92 = \
address@hidden@ linux/src/drivers/net/tulip.c
+
address@hidden@am__append_93 = \
address@hidden@ linux/src/drivers/net/via-rhine.c
+
address@hidden@am__append_94 = \
address@hidden@ linux/src/drivers/net/i82586.h \
address@hidden@ linux/src/drivers/net/wavelan.c \
address@hidden@ linux/src/drivers/net/wavelan.h \
address@hidden@ linux/dev/drivers/net/wavelan.p.h
+
address@hidden@am__append_95 = \
address@hidden@ linux/src/drivers/net/wd.c
+
address@hidden@am__append_96 = \
address@hidden@ linux/src/drivers/net/winbond-840.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_97 = \
address@hidden@ linux/src/drivers/net/yellowfin.c
+
address@hidden@am__append_98 = \
address@hidden@ linux/src/drivers/net/znet.c
+
address@hidden@am__append_99 =  \
address@hidden@ liblinux_pcmcia_cs_modules.a \
address@hidden@ liblinux_pcmcia_cs_clients.a \
address@hidden@ liblinux_pcmcia_cs_wireless.a
address@hidden@am__append_100 =  \
address@hidden@ liblinux_pcmcia_cs_modules.a \
address@hidden@ liblinux_pcmcia_cs_clients.a \
address@hidden@ liblinux_pcmcia_cs_wireless.a
address@hidden@am__append_101 = \
address@hidden@ linux/pcmcia-cs/modules/cirrus.h \
address@hidden@ linux/pcmcia-cs/modules/ene.h \
address@hidden@ linux/pcmcia-cs/modules/i82365.c \
address@hidden@ linux/pcmcia-cs/modules/i82365.h \
address@hidden@ linux/pcmcia-cs/modules/o2micro.h \
address@hidden@ linux/pcmcia-cs/modules/ricoh.h \
address@hidden@ linux/pcmcia-cs/modules/smc34c90.h \
address@hidden@ linux/pcmcia-cs/modules/ti113x.h \
address@hidden@ linux/pcmcia-cs/modules/topic.h \
address@hidden@ linux/pcmcia-cs/modules/vg468.h \
address@hidden@ linux/pcmcia-cs/modules/yenta.h
+
address@hidden@am__append_102 = \
address@hidden@ linux/pcmcia-cs/clients/3c574_cs.c
+
address@hidden@am__append_103 = \
address@hidden@ linux/pcmcia-cs/clients/3c589_cs.c
+
address@hidden@am__append_104 = \
address@hidden@ linux/pcmcia-cs/clients/ax8390.h \
address@hidden@ linux/pcmcia-cs/clients/axnet_cs.c
+
address@hidden@am__append_105 = \
address@hidden@ linux/pcmcia-cs/clients/fmvj18x_cs.c
+
address@hidden@am__append_106 = \
address@hidden@ linux/pcmcia-cs/clients/nmclan_cs.c
+
address@hidden@am__append_107 = \
address@hidden@ linux/pcmcia-cs/clients/pcnet_cs.c \
address@hidden@ linux/src/drivers/net/8390.c
+
address@hidden@am__append_108 = \
address@hidden@ linux/pcmcia-cs/clients/ositech.h \
address@hidden@ linux/pcmcia-cs/clients/smc91c92_cs.c
+
address@hidden@am__append_109 = \
address@hidden@ linux/pcmcia-cs/clients/xirc2ps_cs.c
+
address@hidden@am__append_110 = \
address@hidden@ linux/pcmcia-cs/glue/wireless_glue.h \
address@hidden@ linux/pcmcia-cs/wireless/hermes.c \
address@hidden@ linux/pcmcia-cs/wireless/hermes.h \
address@hidden@ linux/pcmcia-cs/wireless/hermes_rid.h \
address@hidden@ linux/pcmcia-cs/wireless/ieee802_11.h \
address@hidden@ linux/pcmcia-cs/wireless/orinoco.c \
address@hidden@ linux/pcmcia-cs/wireless/orinoco.h \
address@hidden@ linux/pcmcia-cs/wireless/orinoco_cs.c
+
address@hidden@am__append_111 = \
address@hidden@ i386/linux/dev/include/linux/autoconf.h \
address@hidden@ linux/src/arch/i386/lib/semaphore.S
+
address@hidden@am__append_112 = \
address@hidden@ xen/public/arch-x86_32.h \
address@hidden@ xen/public/arch-x86_64.h \
address@hidden@ xen/public/arch-x86/xen.h \
address@hidden@ xen/public/arch-x86/xen-mca.h \
address@hidden@ xen/public/arch-x86/xen-x86_32.h \
address@hidden@ xen/public/arch-x86/xen-x86_64.h \
address@hidden@ xen/public/callback.h \
address@hidden@ xen/public/COPYING \
address@hidden@ xen/public/dom0_ops.h \
address@hidden@ xen/public/domctl.h \
address@hidden@ xen/public/elfnote.h \
address@hidden@ xen/public/elfstructs.h \
address@hidden@ xen/public/event_channel.h \
address@hidden@ xen/public/features.h \
address@hidden@ xen/public/grant_table.h \
address@hidden@ xen/public/io/blkif.h \
address@hidden@ xen/public/io/console.h \
address@hidden@ xen/public/io/fbif.h \
address@hidden@ xen/public/io/fsif.h \
address@hidden@ xen/public/io/kbdif.h \
address@hidden@ xen/public/io/netif.h \
address@hidden@ xen/public/io/pciif.h \
address@hidden@ xen/public/io/protocols.h \
address@hidden@ xen/public/io/ring.h \
address@hidden@ xen/public/io/tpmif.h \
address@hidden@ xen/public/io/xenbus.h \
address@hidden@ xen/public/io/xs_wire.h \
address@hidden@ xen/public/kexec.h \
address@hidden@ xen/public/libelf.h \
address@hidden@ xen/public/memory.h \
address@hidden@ xen/public/nmi.h \
address@hidden@ xen/public/physdev.h \
address@hidden@ xen/public/platform.h \
address@hidden@ xen/public/sched.h \
address@hidden@ xen/public/sysctl.h \
address@hidden@ xen/public/trace.h \
address@hidden@ xen/public/vcpu.h \
address@hidden@ xen/public/version.h \
address@hidden@ xen/public/xencomm.h \
address@hidden@ xen/public/xen-compat.h \
address@hidden@ xen/public/xen.h \
address@hidden@ xen/public/xenoprof.h \
address@hidden@ xen/block.c \
address@hidden@ xen/block.h \
address@hidden@ xen/console.c \
address@hidden@ xen/console.h \
address@hidden@ xen/evt.c \
address@hidden@ xen/evt.h \
address@hidden@ xen/grant.c \
address@hidden@ xen/grant.h \
address@hidden@ xen/net.c \
address@hidden@ xen/net.h \
address@hidden@ xen/ring.c \
address@hidden@ xen/ring.h \
address@hidden@ xen/store.c \
address@hidden@ xen/store.h \
address@hidden@ xen/time.c \
address@hidden@ xen/time.h \
address@hidden@ xen/xen.c \
address@hidden@ xen/xen.h
+
address@hidden@am__append_113 = \
address@hidden@ i386/i386at/autoconf.c \
address@hidden@ i386/i386at/autoconf.h \
address@hidden@ i386/i386at/conf.c \
address@hidden@ i386/i386at/cons_conf.c \
address@hidden@ i386/i386at/idt.h \
address@hidden@ i386/i386at/model_dep.c \
address@hidden@ i386/include/mach/sa/stdarg.h
+
address@hidden@@address@hidden = \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/boothdr.S \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/com.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/com.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/comreg.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/cram.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/disk.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/i8250.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/immc.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/int_init.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/int_init.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/interrupt.S \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_event.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_event.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_queue.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_queue.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_mouse.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_mouse.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kdasm.S \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kdsoft.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/mem.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/pic_isa.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/rtc.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/rtc.h
+
+
+#
+# `lpr' device support.
+#
address@hidden@@address@hidden = \
address@hidden@@enable_lpr_TRUE@        i386/i386at/lpr.c \
address@hidden@@enable_lpr_TRUE@        i386/i386at/lprreg.h
+
+
+#
+# Further source files for any i386 kernel.
+#
address@hidden@am__append_116 = \
address@hidden@ i386/i386/ast.h \
address@hidden@ i386/i386/ast_check.c \
address@hidden@ i386/i386/ast_types.h \
address@hidden@ i386/i386/cpu_number.h \
address@hidden@ i386/i386/cswitch.S \
address@hidden@ i386/i386/db_disasm.c \
address@hidden@ i386/i386/db_interface.c \
address@hidden@ i386/i386/db_interface.h \
address@hidden@ i386/i386/db_machdep.h \
address@hidden@ i386/i386/db_trace.c \
address@hidden@ i386/i386/debug.h \
address@hidden@ i386/i386/debug_i386.c \
address@hidden@ i386/i386/debug_trace.S \
address@hidden@ i386/i386/eflags.h \
address@hidden@ i386/i386/fpu.c \
address@hidden@ i386/i386/fpu.h \
address@hidden@ i386/i386/gdt.c \
address@hidden@ i386/i386/gdt.h \
address@hidden@ i386/i386/idt-gen.h \
address@hidden@ i386/i386/idt.c \
address@hidden@ i386/i386/idt_inittab.S \
address@hidden@ i386/i386/io_perm.c \
address@hidden@ i386/i386/io_perm.h \
address@hidden@ i386/i386/ipl.h \
address@hidden@ i386/i386/ktss.c \
address@hidden@ i386/i386/ktss.h \
address@hidden@ i386/i386/kttd_interface.c \
address@hidden@ i386/i386/kttd_machdep.h \
address@hidden@ i386/i386/ldt.c \
address@hidden@ i386/i386/ldt.h \
address@hidden@ i386/i386/lock.h \
address@hidden@ i386/i386/locore.S \
address@hidden@ i386/i386/locore.h \
address@hidden@ i386/i386/loose_ends.c \
address@hidden@ i386/i386/loose_ends.h \
address@hidden@ i386/i386/mach_param.h \
address@hidden@ i386/i386/machine_routines.h \
address@hidden@ i386/i386/machine_task.c \
address@hidden@ i386/i386/machspl.h \
address@hidden@ i386/i386/model_dep.h \
address@hidden@ i386/i386/mp_desc.c \
address@hidden@ i386/i386/mp_desc.h \
address@hidden@ i386/i386/pcb.c \
address@hidden@ i386/i386/pcb.h \
address@hidden@ i386/i386/phys.c \
address@hidden@ i386/i386/pio.h \
address@hidden@ i386/i386/pmap.h \
address@hidden@ i386/i386/proc_reg.h \
address@hidden@ i386/i386/sched_param.h \
address@hidden@ i386/i386/seg.c \
address@hidden@ i386/i386/seg.h \
address@hidden@ i386/i386/setjmp.h \
address@hidden@ i386/i386/spl.S \
address@hidden@ i386/i386/spl.h \
address@hidden@ i386/i386/task.h \
address@hidden@ i386/i386/thread.h \
address@hidden@ i386/i386/time_stamp.h \
address@hidden@ i386/i386/trap.c \
address@hidden@ i386/i386/trap.h \
address@hidden@ i386/i386/tss.h \
address@hidden@ i386/i386/user_ldt.c \
address@hidden@ i386/i386/user_ldt.h \
address@hidden@ i386/i386/vm_param.h \
address@hidden@ i386/i386/vm_tuning.h \
address@hidden@ i386/i386/xpr.h \
address@hidden@ i386/intel/pmap.c \
address@hidden@ i386/intel/pmap.h \
address@hidden@ i386/intel/read_fault.c \
address@hidden@ i386/intel/read_fault.h
+
+#      i386/i386/mach_i386.server.defs
+
+#
+# Architecture specialities.
+#
+
+#
+# Building a distribution.
+#
+
+# Instead of listing each file individually...
address@hidden@am__append_117 = i386/i386/mach_i386.srv \
address@hidden@ i386/i386/i386asm.sym i386/ldscript \
address@hidden@ i386/README-Drivers i386/include
address@hidden@@address@hidden = \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/hardclock.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/io_map.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/pic.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/pic.h \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/pit.c \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/pit.h
+
+
+#
+# KDB support.
+#
address@hidden@@address@hidden = \
address@hidden@@enable_kdb_TRUE@        i386/i386/_setjmp.S
+
+
+#
+# Files from the generic sources that we want.
+#
address@hidden@am__append_120 = \
address@hidden@ chips/busses.c \
address@hidden@ chips/busses.h \
address@hidden@ device/cirbuf.c
+
+
+#
+# Automatically generated source files.
+#
+# See Makerules.mig.am.
+#
address@hidden@am__append_121 = \
address@hidden@ i386/i386/mach_i386.server.defs.c
+
address@hidden@am__append_122 = i386/i386/mach_i386.server.h \
address@hidden@ i386/i386/mach_i386.server.c \
address@hidden@ i386/i386/mach_i386.server.msgids \
address@hidden@ i386/i386/i386asm.h
address@hidden@@address@hidden = \
address@hidden@@PLATFORM_at_TRUE@       --defsym _START=0xC0100000 \
address@hidden@@PLATFORM_at_TRUE@       --defsym _START_MAP=0x100000 \
address@hidden@@PLATFORM_at_TRUE@       -T '$(srcdir)'/i386/ldscript
+
address@hidden@am__append_124 = \
address@hidden@ -mno-3dnow \
address@hidden@ -mno-mmx \
address@hidden@ -mno-sse \
address@hidden@ -mno-sse2
+
+
+#
+# Platform specific parts.
+#
address@hidden@@address@hidden = i386/xen/xen.c \
address@hidden@@PLATFORM_xen_TRUE@      i386/xen/xen_locore.S \
address@hidden@@PLATFORM_xen_TRUE@      i386/xen/xen_boothdr.S \
address@hidden@@PLATFORM_xen_TRUE@      i386/i386/xen.h
address@hidden@@address@hidden = \
address@hidden@@PLATFORM_xen_TRUE@      --defsym _START=0xC0000000 \
address@hidden@@PLATFORM_xen_TRUE@      --defsym _START_MAP=0xC0000000 \
address@hidden@@PLATFORM_xen_TRUE@      -T '$(srcdir)'/i386/ldscript
+
+exec_boot_PROGRAMS = gnumach$(EXEEXT)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/version.m4 \
+       $(top_srcdir)/tests/configfrag.ac \
+       $(top_srcdir)/xen/configfrag.ac \
+       $(top_srcdir)/i386/configfrag.ac $(top_srcdir)/configfrag.ac \
+       $(top_srcdir)/linux/configfrag.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = tests/test-mbchk version.c machine mach/machine \
+       linux/src/include/asm linux/dev/include/asm
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(address@hidden@)
+am__v_AR_ = $(address@hidden@)
+am__v_AR_0 = @echo "  AR      " $@;
+am__v_AR_1 = 
+lib_dep_tr_for_defs_a_AR = $(AR) $(ARFLAGS)
+lib_dep_tr_for_defs_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
address@hidden@am__objects_1 = 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.$(OBJEXT)
+nodist_lib_dep_tr_for_defs_a_OBJECTS = 
vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.$(OBJEXT) \
+       vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.$(OBJEXT) \
+       device/lib_dep_tr_for_defs_a-device_reply.user.defs.$(OBJEXT) \
+       device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.$(OBJEXT) \
+       device/lib_dep_tr_for_defs_a-device.server.defs.$(OBJEXT) \
+       device/lib_dep_tr_for_defs_a-device_pager.server.defs.$(OBJEXT) \
+       ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.$(OBJEXT) \
+       kern/lib_dep_tr_for_defs_a-mach.server.defs.$(OBJEXT) \
+       kern/lib_dep_tr_for_defs_a-mach4.server.defs.$(OBJEXT) \
+       kern/lib_dep_tr_for_defs_a-gnumach.server.defs.$(OBJEXT) \
+       kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.$(OBJEXT) \
+       kern/lib_dep_tr_for_defs_a-mach_host.server.defs.$(OBJEXT) \
+       $(am__objects_1)
+lib_dep_tr_for_defs_a_OBJECTS =  \
+       $(nodist_lib_dep_tr_for_defs_a_OBJECTS)
+libkernel_a_AR = $(AR) $(ARFLAGS)
+libkernel_a_LIBADD =
+am__libkernel_a_SOURCES_DIST = ddb/db_access.c ddb/db_access.h \
+       ddb/db_aout.c ddb/db_break.c ddb/db_break.h ddb/db_command.c \
+       ddb/db_command.h ddb/db_cond.c ddb/db_cond.h ddb/db_examine.c \
+       ddb/db_examine.h ddb/db_expr.c ddb/db_expr.h \
+       ddb/db_ext_symtab.c ddb/db_input.c ddb/db_input.h ddb/db_lex.c \
+       ddb/db_lex.h ddb/db_macro.c ddb/db_macro.h ddb/db_mp.c \
+       ddb/db_output.c ddb/db_output.h ddb/db_print.c ddb/db_print.h \
+       ddb/db_run.c ddb/db_run.h ddb/db_sym.c ddb/db_sym.h \
+       ddb/db_task_thread.c ddb/db_task_thread.h ddb/db_trap.c \
+       ddb/db_trap.h ddb/db_variables.c ddb/db_variables.h \
+       ddb/db_watch.c ddb/db_watch.h ddb/db_write_cmd.c ddb/nlist.h \
+       ddb/stab.h ddb/tr.h ipc/ipc_entry.c ipc/ipc_entry.h \
+       ipc/ipc_hash.c ipc/ipc_hash.h ipc/ipc_init.c ipc/ipc_init.h \
+       ipc/ipc_kmsg.c ipc/ipc_kmsg.h ipc/ipc_kmsg_queue.h \
+       ipc/ipc_machdep.h ipc/ipc_marequest.c ipc/ipc_marequest.h \
+       ipc/ipc_mqueue.c ipc/ipc_mqueue.h ipc/ipc_notify.c \
+       ipc/ipc_notify.h ipc/ipc_object.c ipc/ipc_object.h \
+       ipc/ipc_port.c ipc/ipc_port.h ipc/ipc_pset.c ipc/ipc_pset.h \
+       ipc/ipc_right.c ipc/ipc_right.h ipc/ipc_space.c \
+       ipc/ipc_space.h ipc/ipc_splay.c ipc/ipc_splay.h \
+       ipc/ipc_table.c ipc/ipc_table.h ipc/ipc_target.c \
+       ipc/ipc_target.h ipc/ipc_thread.c ipc/ipc_thread.h \
+       ipc/ipc_types.h ipc/mach_msg.c ipc/mach_msg.h ipc/mach_port.c \
+       ipc/mach_port.h ipc/mach_rpc.c ipc/mach_debug.c ipc/port.h \
+       kern/act.c kern/act.h kern/assert.h kern/ast.c kern/ast.h \
+       kern/boot_script.h kern/bootstrap.c kern/counters.c \
+       kern/counters.h kern/cpu_number.h kern/debug.c kern/debug.h \
+       kern/eventcount.c kern/eventcount.h kern/exception.c \
+       kern/host.c kern/host.h kern/ipc_host.c kern/ipc_host.h \
+       kern/ipc_kobject.c kern/ipc_kobject.h kern/ipc_mig.c \
+       kern/ipc_mig.h kern/ipc_sched.c kern/ipc_sched.h kern/ipc_tt.c \
+       kern/ipc_tt.h kern/kalloc.h kern/kern_types.h kern/list.h \
+       kern/lock.c kern/lock.h kern/lock_mon.c kern/mach_clock.c \
+       kern/mach_clock.h kern/mach_factor.c kern/mach_factor.h \
+       kern/machine.c kern/machine.h kern/macro_help.h \
+       kern/pc_sample.c kern/pc_sample.h kern/printf.c kern/printf.h \
+       kern/priority.c kern/processor.c kern/processor.h \
+       kern/profile.c kern/queue.c kern/queue.h kern/rbtree.c \
+       kern/rbtree.h kern/rbtree_i.h kern/refcount.h kern/slab.c \
+       kern/slab.h kern/sched.h kern/sched_prim.c kern/sched_prim.h \
+       kern/shuttle.h kern/startup.c kern/strings.c \
+       kern/syscall_emulation.c kern/syscall_emulation.h \
+       kern/syscall_subr.c kern/syscall_subr.h kern/syscall_sw.c \
+       kern/syscall_sw.h kern/task.c kern/task.h kern/thread.c \
+       kern/thread.h kern/thread_swap.c kern/thread_swap.h \
+       kern/time_stamp.c kern/time_stamp.h kern/timer.c kern/timer.h \
+       kern/xpr.c kern/xpr.h kern/elf-load.c kern/boot_script.c \
+       util/putchar.c util/putchar.h util/puts.c util/atoi.c \
+       util/atoi.h vm/memory_object_proxy.c vm/memory_object_proxy.h \
+       vm/memory_object.c vm/memory_object.h vm/pmap.h vm/vm_debug.c \
+       vm/vm_external.c vm/vm_external.h vm/vm_fault.c vm/vm_fault.h \
+       vm/vm_init.c vm/vm_kern.c vm/vm_kern.h vm/vm_map.c vm/vm_map.h \
+       vm/vm_object.c vm/vm_object.h vm/vm_page.h vm/vm_pageout.c \
+       vm/vm_pageout.h vm/vm_resident.c vm/vm_resident.h \
+       vm/vm_types.h vm/vm_user.c vm/vm_user.h device/blkio.c \
+       device/buf.h device/chario.c device/cirbuf.h device/conf.h \
+       device/cons.c device/cons.h device/device_emul.h \
+       device/dev_hdr.h device/dev_lookup.c device/dev_master.h \
+       device/dev_name.c device/dev_pager.c device/device_init.c \
+       device/device_port.h device/device_types_kernel.h \
+       device/ds_routines.c device/ds_routines.h device/if_ether.h \
+       device/if_hdr.h device/io_req.h device/net_io.c \
+       device/net_io.h device/param.h device/subrs.c device/subrs.h \
+       device/tty.h device/kmsg.c device/kmsg.h \
+       xen/public/arch-x86_32.h xen/public/arch-x86_64.h \
+       xen/public/arch-x86/xen.h xen/public/arch-x86/xen-mca.h \
+       xen/public/arch-x86/xen-x86_32.h \
+       xen/public/arch-x86/xen-x86_64.h xen/public/callback.h \
+       xen/public/COPYING xen/public/dom0_ops.h xen/public/domctl.h \
+       xen/public/elfnote.h xen/public/elfstructs.h \
+       xen/public/event_channel.h xen/public/features.h \
+       xen/public/grant_table.h xen/public/io/blkif.h \
+       xen/public/io/console.h xen/public/io/fbif.h \
+       xen/public/io/fsif.h xen/public/io/kbdif.h \
+       xen/public/io/netif.h xen/public/io/pciif.h \
+       xen/public/io/protocols.h xen/public/io/ring.h \
+       xen/public/io/tpmif.h xen/public/io/xenbus.h \
+       xen/public/io/xs_wire.h xen/public/kexec.h xen/public/libelf.h \
+       xen/public/memory.h xen/public/nmi.h xen/public/physdev.h \
+       xen/public/platform.h xen/public/sched.h xen/public/sysctl.h \
+       xen/public/trace.h xen/public/vcpu.h xen/public/version.h \
+       xen/public/xencomm.h xen/public/xen-compat.h xen/public/xen.h \
+       xen/public/xenoprof.h xen/block.c xen/block.h xen/console.c \
+       xen/console.h xen/evt.c xen/evt.h xen/grant.c xen/grant.h \
+       xen/net.c xen/net.h xen/ring.c xen/ring.h xen/store.c \
+       xen/store.h xen/time.c xen/time.h xen/xen.c xen/xen.h \
+       i386/i386at/autoconf.c i386/i386at/autoconf.h \
+       i386/i386at/conf.c i386/i386at/cons_conf.c i386/i386at/idt.h \
+       i386/i386at/model_dep.c i386/include/mach/sa/stdarg.h \
+       i386/i386at/boothdr.S i386/i386at/com.c i386/i386at/com.h \
+       i386/i386at/comreg.h i386/i386at/cram.h i386/i386at/disk.h \
+       i386/i386at/i8250.h i386/i386at/immc.c i386/i386at/int_init.c \
+       i386/i386at/int_init.h i386/i386at/interrupt.S \
+       i386/i386at/kd.c i386/i386at/kd.h i386/i386at/kd_event.c \
+       i386/i386at/kd_event.h i386/i386at/kd_queue.c \
+       i386/i386at/kd_queue.h i386/i386at/kd_mouse.c \
+       i386/i386at/kd_mouse.h i386/i386at/kdasm.S \
+       i386/i386at/kdsoft.h i386/i386at/mem.c i386/i386at/pic_isa.c \
+       i386/i386at/rtc.c i386/i386at/rtc.h i386/i386at/lpr.c \
+       i386/i386at/lprreg.h i386/i386/ast.h i386/i386/ast_check.c \
+       i386/i386/ast_types.h i386/i386/cpu_number.h \
+       i386/i386/cswitch.S i386/i386/db_disasm.c \
+       i386/i386/db_interface.c i386/i386/db_interface.h \
+       i386/i386/db_machdep.h i386/i386/db_trace.c i386/i386/debug.h \
+       i386/i386/debug_i386.c i386/i386/debug_trace.S \
+       i386/i386/eflags.h i386/i386/fpu.c i386/i386/fpu.h \
+       i386/i386/gdt.c i386/i386/gdt.h i386/i386/idt-gen.h \
+       i386/i386/idt.c i386/i386/idt_inittab.S i386/i386/io_perm.c \
+       i386/i386/io_perm.h i386/i386/ipl.h i386/i386/ktss.c \
+       i386/i386/ktss.h i386/i386/kttd_interface.c \
+       i386/i386/kttd_machdep.h i386/i386/ldt.c i386/i386/ldt.h \
+       i386/i386/lock.h i386/i386/locore.S i386/i386/locore.h \
+       i386/i386/loose_ends.c i386/i386/loose_ends.h \
+       i386/i386/mach_param.h i386/i386/machine_routines.h \
+       i386/i386/machine_task.c i386/i386/machspl.h \
+       i386/i386/model_dep.h i386/i386/mp_desc.c i386/i386/mp_desc.h \
+       i386/i386/pcb.c i386/i386/pcb.h i386/i386/phys.c \
+       i386/i386/pio.h i386/i386/pmap.h i386/i386/proc_reg.h \
+       i386/i386/sched_param.h i386/i386/seg.c i386/i386/seg.h \
+       i386/i386/setjmp.h i386/i386/spl.S i386/i386/spl.h \
+       i386/i386/task.h i386/i386/thread.h i386/i386/time_stamp.h \
+       i386/i386/trap.c i386/i386/trap.h i386/i386/tss.h \
+       i386/i386/user_ldt.c i386/i386/user_ldt.h i386/i386/vm_param.h \
+       i386/i386/vm_tuning.h i386/i386/xpr.h i386/intel/pmap.c \
+       i386/intel/pmap.h i386/intel/read_fault.c \
+       i386/intel/read_fault.h i386/i386/hardclock.c \
+       i386/i386/io_map.c i386/i386/pic.c i386/i386/pic.h \
+       i386/i386/pit.c i386/i386/pit.h i386/i386/_setjmp.S \
+       chips/busses.c chips/busses.h device/cirbuf.c i386/xen/xen.c \
+       i386/xen/xen_locore.S i386/xen/xen_boothdr.S i386/i386/xen.h
address@hidden@am__objects_2 = ddb/db_access.$(OBJEXT) \
address@hidden@ ddb/db_aout.$(OBJEXT) ddb/db_break.$(OBJEXT) \
address@hidden@ ddb/db_command.$(OBJEXT) \
address@hidden@ ddb/db_cond.$(OBJEXT) \
address@hidden@ ddb/db_examine.$(OBJEXT) \
address@hidden@ ddb/db_expr.$(OBJEXT) \
address@hidden@ ddb/db_ext_symtab.$(OBJEXT) \
address@hidden@ ddb/db_input.$(OBJEXT) ddb/db_lex.$(OBJEXT) \
address@hidden@ ddb/db_macro.$(OBJEXT) ddb/db_mp.$(OBJEXT) \
address@hidden@ ddb/db_output.$(OBJEXT) \
address@hidden@ ddb/db_print.$(OBJEXT) ddb/db_run.$(OBJEXT) \
address@hidden@ ddb/db_sym.$(OBJEXT) \
address@hidden@ ddb/db_task_thread.$(OBJEXT) \
address@hidden@ ddb/db_trap.$(OBJEXT) \
address@hidden@ ddb/db_variables.$(OBJEXT) \
address@hidden@ ddb/db_watch.$(OBJEXT) \
address@hidden@ ddb/db_write_cmd.$(OBJEXT)
address@hidden@am__objects_3 = device/kmsg.$(OBJEXT)
address@hidden@am__objects_4 = xen/block.$(OBJEXT) \
address@hidden@ xen/console.$(OBJEXT) xen/evt.$(OBJEXT) \
address@hidden@ xen/grant.$(OBJEXT) xen/net.$(OBJEXT) \
address@hidden@ xen/ring.$(OBJEXT) xen/store.$(OBJEXT) \
address@hidden@ xen/time.$(OBJEXT) xen/xen.$(OBJEXT)
address@hidden@am__objects_5 = i386/i386at/autoconf.$(OBJEXT) \
address@hidden@ i386/i386at/conf.$(OBJEXT) \
address@hidden@ i386/i386at/cons_conf.$(OBJEXT) \
address@hidden@ i386/i386at/model_dep.$(OBJEXT)
address@hidden@@address@hidden = i386/i386at/boothdr.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/com.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/immc.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/int_init.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/interrupt.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_event.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_queue.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kd_mouse.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/kdasm.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/mem.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/pic_isa.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386at/rtc.$(OBJEXT)
address@hidden@@address@hidden =  \
address@hidden@@enable_lpr_TRUE@        i386/i386at/lpr.$(OBJEXT)
address@hidden@am__objects_8 = i386/i386/ast_check.$(OBJEXT) \
address@hidden@ i386/i386/cswitch.$(OBJEXT) \
address@hidden@ i386/i386/db_disasm.$(OBJEXT) \
address@hidden@ i386/i386/db_interface.$(OBJEXT) \
address@hidden@ i386/i386/db_trace.$(OBJEXT) \
address@hidden@ i386/i386/debug_i386.$(OBJEXT) \
address@hidden@ i386/i386/debug_trace.$(OBJEXT) \
address@hidden@ i386/i386/fpu.$(OBJEXT) \
address@hidden@ i386/i386/gdt.$(OBJEXT) \
address@hidden@ i386/i386/idt.$(OBJEXT) \
address@hidden@ i386/i386/idt_inittab.$(OBJEXT) \
address@hidden@ i386/i386/io_perm.$(OBJEXT) \
address@hidden@ i386/i386/ktss.$(OBJEXT) \
address@hidden@ i386/i386/kttd_interface.$(OBJEXT) \
address@hidden@ i386/i386/ldt.$(OBJEXT) \
address@hidden@ i386/i386/locore.$(OBJEXT) \
address@hidden@ i386/i386/loose_ends.$(OBJEXT) \
address@hidden@ i386/i386/machine_task.$(OBJEXT) \
address@hidden@ i386/i386/mp_desc.$(OBJEXT) \
address@hidden@ i386/i386/pcb.$(OBJEXT) \
address@hidden@ i386/i386/phys.$(OBJEXT) \
address@hidden@ i386/i386/seg.$(OBJEXT) \
address@hidden@ i386/i386/spl.$(OBJEXT) \
address@hidden@ i386/i386/trap.$(OBJEXT) \
address@hidden@ i386/i386/user_ldt.$(OBJEXT) \
address@hidden@ i386/intel/pmap.$(OBJEXT) \
address@hidden@ i386/intel/read_fault.$(OBJEXT)
address@hidden@@address@hidden = i386/i386/hardclock.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/io_map.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/pic.$(OBJEXT) \
address@hidden@@PLATFORM_at_TRUE@       i386/i386/pit.$(OBJEXT)
address@hidden@@address@hidden =  \
address@hidden@@enable_kdb_TRUE@        i386/i386/_setjmp.$(OBJEXT)
address@hidden@am__objects_11 = chips/busses.$(OBJEXT) \
address@hidden@ device/cirbuf.$(OBJEXT)
address@hidden@@address@hidden =  \
address@hidden@@PLATFORM_xen_TRUE@      i386/xen/xen.$(OBJEXT) \
address@hidden@@PLATFORM_xen_TRUE@      i386/xen/xen_locore.$(OBJEXT) \
address@hidden@@PLATFORM_xen_TRUE@      i386/xen/xen_boothdr.$(OBJEXT)
+am_libkernel_a_OBJECTS = $(am__objects_2) ipc/ipc_entry.$(OBJEXT) \
+       ipc/ipc_hash.$(OBJEXT) ipc/ipc_init.$(OBJEXT) \
+       ipc/ipc_kmsg.$(OBJEXT) ipc/ipc_marequest.$(OBJEXT) \
+       ipc/ipc_mqueue.$(OBJEXT) ipc/ipc_notify.$(OBJEXT) \
+       ipc/ipc_object.$(OBJEXT) ipc/ipc_port.$(OBJEXT) \
+       ipc/ipc_pset.$(OBJEXT) ipc/ipc_right.$(OBJEXT) \
+       ipc/ipc_space.$(OBJEXT) ipc/ipc_splay.$(OBJEXT) \
+       ipc/ipc_table.$(OBJEXT) ipc/ipc_target.$(OBJEXT) \
+       ipc/ipc_thread.$(OBJEXT) ipc/mach_msg.$(OBJEXT) \
+       ipc/mach_port.$(OBJEXT) ipc/mach_rpc.$(OBJEXT) \
+       ipc/mach_debug.$(OBJEXT) kern/act.$(OBJEXT) kern/ast.$(OBJEXT) \
+       kern/bootstrap.$(OBJEXT) kern/counters.$(OBJEXT) \
+       kern/debug.$(OBJEXT) kern/eventcount.$(OBJEXT) \
+       kern/exception.$(OBJEXT) kern/host.$(OBJEXT) \
+       kern/ipc_host.$(OBJEXT) kern/ipc_kobject.$(OBJEXT) \
+       kern/ipc_mig.$(OBJEXT) kern/ipc_sched.$(OBJEXT) \
+       kern/ipc_tt.$(OBJEXT) kern/lock.$(OBJEXT) \
+       kern/lock_mon.$(OBJEXT) kern/mach_clock.$(OBJEXT) \
+       kern/mach_factor.$(OBJEXT) kern/machine.$(OBJEXT) \
+       kern/pc_sample.$(OBJEXT) kern/printf.$(OBJEXT) \
+       kern/priority.$(OBJEXT) kern/processor.$(OBJEXT) \
+       kern/profile.$(OBJEXT) kern/queue.$(OBJEXT) \
+       kern/rbtree.$(OBJEXT) kern/slab.$(OBJEXT) \
+       kern/sched_prim.$(OBJEXT) kern/startup.$(OBJEXT) \
+       kern/strings.$(OBJEXT) kern/syscall_emulation.$(OBJEXT) \
+       kern/syscall_subr.$(OBJEXT) kern/syscall_sw.$(OBJEXT) \
+       kern/task.$(OBJEXT) kern/thread.$(OBJEXT) \
+       kern/thread_swap.$(OBJEXT) kern/time_stamp.$(OBJEXT) \
+       kern/timer.$(OBJEXT) kern/xpr.$(OBJEXT) \
+       kern/elf-load.$(OBJEXT) kern/boot_script.$(OBJEXT) \
+       util/putchar.$(OBJEXT) util/puts.$(OBJEXT) util/atoi.$(OBJEXT) \
+       vm/memory_object_proxy.$(OBJEXT) vm/memory_object.$(OBJEXT) \
+       vm/vm_debug.$(OBJEXT) vm/vm_external.$(OBJEXT) \
+       vm/vm_fault.$(OBJEXT) vm/vm_init.$(OBJEXT) \
+       vm/vm_kern.$(OBJEXT) vm/vm_map.$(OBJEXT) \
+       vm/vm_object.$(OBJEXT) vm/vm_pageout.$(OBJEXT) \
+       vm/vm_resident.$(OBJEXT) vm/vm_user.$(OBJEXT) \
+       device/blkio.$(OBJEXT) device/chario.$(OBJEXT) \
+       device/cons.$(OBJEXT) device/dev_lookup.$(OBJEXT) \
+       device/dev_name.$(OBJEXT) device/dev_pager.$(OBJEXT) \
+       device/device_init.$(OBJEXT) device/ds_routines.$(OBJEXT) \
+       device/net_io.$(OBJEXT) device/subrs.$(OBJEXT) \
+       $(am__objects_3) $(am__objects_4) $(am__objects_5) \
+       $(am__objects_6) $(am__objects_7) $(am__objects_8) \
+       $(am__objects_9) $(am__objects_10) $(am__objects_11) \
+       $(am__objects_12)
address@hidden@am__objects_13 = i386/i386/mach_i386.server.$(OBJEXT)
+nodist_libkernel_a_OBJECTS = version.$(OBJEXT) \
+       vm/memory_object_user.user.$(OBJEXT) \
+       vm/memory_object_default.user.$(OBJEXT) \
+       device/device_reply.user.$(OBJEXT) \
+       device/memory_object_reply.user.$(OBJEXT) \
+       device/device.server.$(OBJEXT) \
+       device/device_pager.server.$(OBJEXT) \
+       ipc/mach_port.server.$(OBJEXT) kern/mach.server.$(OBJEXT) \
+       kern/mach4.server.$(OBJEXT) kern/gnumach.server.$(OBJEXT) \
+       kern/mach_debug.server.$(OBJEXT) \
+       kern/mach_host.server.$(OBJEXT) $(am__objects_13)
+libkernel_a_OBJECTS = $(am_libkernel_a_OBJECTS) \
+       $(nodist_libkernel_a_OBJECTS)
+liblinux_a_AR = $(AR) $(ARFLAGS)
+liblinux_a_LIBADD =
+am__liblinux_a_SOURCES_DIST = linux/dev/init/version.c \
+       linux/dev/kernel/softirq.c linux/src/arch/i386/lib/delay.c \
+       linux/dev/kernel/dma.c linux/dev/kernel/resource.c \
+       linux/dev/kernel/printk.c linux/src/arch/i386/kernel/bios32.c \
+       linux/dev/arch/i386/kernel/irq.c linux/src/lib/ctype.c \
+       linux/dev/lib/vsprintf.c linux/dev/init/main.c \
+       linux/dev/glue/misc.c linux/dev/kernel/sched.c \
+       linux/dev/glue/kmem.c linux/dev/glue/block.c \
+       linux/dev/glue/glue.h linux/dev/arch/i386/kernel/setup.c \
+       linux/src/drivers/pci/pci.c linux/dev/drivers/block/genhd.c \
+       linux/dev/drivers/block/floppy.c \
+       linux/src/drivers/block/cmd640.c \
+       linux/src/drivers/block/ide-cd.c linux/src/drivers/block/ide.c \
+       linux/src/drivers/block/ide.h linux/dev/drivers/block/ahci.c \
+       linux/dev/include/ahci.h linux/src/drivers/block/ide_modes.h \
+       linux/src/drivers/block/rz1000.c \
+       linux/src/drivers/block/triton.c \
+       linux/src/drivers/scsi/constants.c \
+       linux/src/drivers/scsi/constants.h \
+       linux/src/drivers/scsi/hosts.c linux/src/drivers/scsi/hosts.h \
+       linux/src/drivers/scsi/scsi.c linux/src/drivers/scsi/scsi.h \
+       linux/src/drivers/scsi/scsi_ioctl.c \
+       linux/src/drivers/scsi/scsi_proc.c \
+       linux/src/drivers/scsi/scsicam.c linux/src/drivers/scsi/sd.c \
+       linux/src/drivers/scsi/sd.h linux/src/drivers/scsi/sd_ioctl.c \
+       linux/src/drivers/scsi/sr.c linux/src/drivers/scsi/sr.h \
+       linux/src/drivers/scsi/sr_ioctl.c \
+       linux/src/drivers/scsi/53c7,8xx.h \
+       linux/src/drivers/scsi/53c78xx.c \
+       linux/src/drivers/scsi/53c8xx_d.h \
+       linux/src/drivers/scsi/53c8xx_u.h \
+       linux/src/drivers/scsi/AM53C974.c \
+       linux/src/drivers/scsi/AM53C974.h \
+       linux/src/drivers/scsi/BusLogic.c \
+       linux/src/drivers/scsi/BusLogic.h \
+       linux/src/drivers/scsi/NCR53c406a.c \
+       linux/src/drivers/scsi/NCR53c406a.h \
+       linux/src/drivers/scsi/advansys.c \
+       linux/src/drivers/scsi/advansys.h \
+       linux/src/drivers/scsi/aha152x.c \
+       linux/src/drivers/scsi/aha152x.h \
+       linux/src/drivers/scsi/aha1542.c \
+       linux/src/drivers/scsi/aha1542.h \
+       linux/src/drivers/scsi/aha1740.c \
+       linux/src/drivers/scsi/aha1740.h \
+       linux/src/drivers/scsi/aic7xxx.c \
+       linux/src/drivers/scsi/aic7xxx.h \
+       linux/src/drivers/scsi/aic7xxx/scsi_message.h \
+       linux/src/drivers/scsi/aic7xxx/sequencer.h \
+       linux/src/drivers/scsi/aic7xxx_reg.h \
+       linux/src/drivers/scsi/dtc.c linux/src/drivers/scsi/dtc.h \
+       linux/src/drivers/scsi/eata.c linux/src/drivers/scsi/eata.h \
+       linux/src/drivers/scsi/eata_generic.h \
+       linux/dev/drivers/scsi/eata_dma.c \
+       linux/src/drivers/scsi/eata_dma.h \
+       linux/src/drivers/scsi/eata_dma_proc.h \
+       linux/src/drivers/scsi/eata_pio.c \
+       linux/src/drivers/scsi/eata_pio.h \
+       linux/src/drivers/scsi/fdomain.c \
+       linux/src/drivers/scsi/fdomain.h \
+       linux/dev/drivers/scsi/g_NCR5380.c \
+       linux/src/drivers/scsi/g_NCR5380.h \
+       linux/src/drivers/scsi/gdth.c linux/src/drivers/scsi/gdth.h \
+       linux/src/drivers/scsi/gdth_ioctl.h \
+       linux/src/drivers/scsi/gdth_proc.h \
+       linux/src/drivers/scsi/in2000.c \
+       linux/src/drivers/scsi/in2000.h \
+       linux/src/drivers/scsi/ncr53c8xx.c \
+       linux/src/drivers/scsi/ncr53c8xx.h \
+       linux/src/drivers/scsi/pas16.c linux/src/drivers/scsi/pas16.h \
+       linux/src/drivers/scsi/ppa.c linux/src/drivers/scsi/ppa.h \
+       linux/src/drivers/scsi/qlogicfas.c \
+       linux/src/drivers/scsi/qlogicfas.h \
+       linux/src/drivers/scsi/qlogicisp.c \
+       linux/src/drivers/scsi/qlogicisp.h \
+       linux/src/drivers/scsi/seagate.c \
+       linux/src/drivers/scsi/seagate.h \
+       linux/src/drivers/scsi/sym53c8xx.c \
+       linux/src/drivers/scsi/sym53c8xx_comm.h \
+       linux/src/drivers/scsi/sym53c8xx.h \
+       linux/src/drivers/scsi/sym53c8xx_defs.h \
+       linux/src/drivers/scsi/t128.c linux/src/drivers/scsi/t128.h \
+       linux/src/drivers/scsi/dc390.h \
+       linux/src/drivers/scsi/tmscsim.c \
+       linux/src/drivers/scsi/tmscsim.h \
+       linux/src/drivers/scsi/u14-34f.c \
+       linux/src/drivers/scsi/u14-34f.h \
+       linux/src/drivers/scsi/ultrastor.c \
+       linux/src/drivers/scsi/ultrastor.h \
+       linux/src/drivers/scsi/wd7000.c \
+       linux/src/drivers/scsi/wd7000.h \
+       linux/dev/drivers/net/auto_irq.c linux/dev/glue/net.c \
+       linux/dev/drivers/net/Space.c linux/dev/net/core/dev.c \
+       linux/dev/drivers/net/net_init.c \
+       linux/src/drivers/net/pci-scan.c \
+       linux/src/drivers/net/pci-scan.h linux/src/drivers/net/3c501.c \
+       linux/src/drivers/net/3c503.c linux/src/drivers/net/3c503.h \
+       linux/src/drivers/net/8390.c linux/src/drivers/net/3c505.c \
+       linux/src/drivers/net/3c505.h linux/src/drivers/net/3c507.c \
+       linux/src/drivers/net/3c509.c linux/src/drivers/net/3c59x.c \
+       linux/src/drivers/net/3c515.c linux/src/drivers/net/ac3200.c \
+       linux/src/drivers/net/apricot.c linux/src/drivers/net/at1700.c \
+       linux/src/drivers/net/atp.c linux/src/drivers/net/atp.h \
+       linux/src/drivers/net/de4x5.c linux/src/drivers/net/de4x5.h \
+       linux/src/drivers/net/de600.c linux/src/drivers/net/de620.c \
+       linux/src/drivers/net/de620.h linux/src/drivers/net/depca.c \
+       linux/src/drivers/net/depca.h linux/src/drivers/net/e2100.c \
+       linux/src/drivers/net/eepro.c linux/src/drivers/net/eepro100.c \
+       linux/src/drivers/net/eexpress.c \
+       linux/src/drivers/net/eth82586.h \
+       linux/src/drivers/net/epic100.c linux/src/drivers/net/eth16i.c \
+       linux/src/drivers/net/ewrk3.c linux/src/drivers/net/ewrk3.h \
+       linux/src/drivers/net/fmv18x.c linux/src/drivers/net/hamachi.c \
+       linux/src/drivers/net/hp-plus.c linux/src/drivers/net/hp.c \
+       linux/src/drivers/net/hp100.c linux/src/drivers/net/hp100.h \
+       linux/src/drivers/net/intel-gige.c \
+       linux/src/drivers/net/lance.c linux/src/drivers/net/myson803.c \
+       linux/src/drivers/net/natsemi.c linux/src/drivers/net/ne.c \
+       linux/src/drivers/net/ne2k-pci.c linux/src/drivers/net/ni52.c \
+       linux/src/drivers/net/ni52.h linux/src/drivers/net/ni65.c \
+       linux/src/drivers/net/ni65.h linux/src/drivers/net/ns820.c \
+       linux/src/drivers/net/pcnet32.c \
+       linux/src/drivers/net/rtl8139.c \
+       linux/src/drivers/net/seeq8005.c \
+       linux/src/drivers/net/seeq8005.h \
+       linux/src/drivers/net/sis900.c linux/src/drivers/net/sis900.h \
+       linux/src/drivers/net/sk_g16.c linux/src/drivers/net/sk_g16.h \
+       linux/src/drivers/net/smc-ultra.c \
+       linux/src/drivers/net/smc-ultra32.c \
+       linux/src/drivers/net/starfire.c \
+       linux/src/drivers/net/sundance.c linux/src/drivers/net/tlan.c \
+       linux/src/drivers/net/tlan.h linux/src/drivers/net/tulip.c \
+       linux/src/drivers/net/via-rhine.c \
+       linux/src/drivers/net/i82586.h linux/src/drivers/net/wavelan.c \
+       linux/src/drivers/net/wavelan.h \
+       linux/dev/drivers/net/wavelan.p.h linux/src/drivers/net/wd.c \
+       linux/src/drivers/net/winbond-840.c \
+       linux/src/drivers/net/yellowfin.c linux/src/drivers/net/znet.c \
+       i386/linux/dev/include/linux/autoconf.h \
+       linux/src/arch/i386/lib/semaphore.S
address@hidden@am__objects_14 = 
linux/dev/drivers/block/liblinux_a-floppy.$(OBJEXT)
address@hidden@am__objects_15 = 
linux/src/drivers/block/liblinux_a-cmd640.$(OBJEXT) \
address@hidden@ linux/src/drivers/block/liblinux_a-ide-cd.$(OBJEXT) \
address@hidden@ linux/src/drivers/block/liblinux_a-ide.$(OBJEXT) \
address@hidden@ linux/dev/drivers/block/liblinux_a-ahci.$(OBJEXT) \
address@hidden@ linux/src/drivers/block/liblinux_a-rz1000.$(OBJEXT) \
address@hidden@ linux/src/drivers/block/liblinux_a-triton.$(OBJEXT)
address@hidden@am__objects_16 = 
linux/src/drivers/scsi/liblinux_a-constants.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-hosts.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-scsi.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-scsi_ioctl.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-scsi_proc.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-scsicam.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-sd.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-sd_ioctl.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-sr.$(OBJEXT) \
address@hidden@ linux/src/drivers/scsi/liblinux_a-sr_ioctl.$(OBJEXT)
address@hidden@am__objects_17 = 
linux/src/drivers/scsi/liblinux_a-53c78xx.$(OBJEXT)
address@hidden@am__objects_18 = 
linux/src/drivers/scsi/liblinux_a-AM53C974.$(OBJEXT)
address@hidden@am__objects_19 = 
linux/src/drivers/scsi/liblinux_a-BusLogic.$(OBJEXT)
address@hidden@am__objects_20 = 
linux/src/drivers/scsi/liblinux_a-NCR53c406a.$(OBJEXT)
address@hidden@am__objects_21 = 
linux/src/drivers/scsi/liblinux_a-advansys.$(OBJEXT)
address@hidden@am__objects_22 = 
linux/src/drivers/scsi/liblinux_a-aha152x.$(OBJEXT)
address@hidden@am__objects_23 = 
linux/src/drivers/scsi/liblinux_a-aha1542.$(OBJEXT)
address@hidden@am__objects_24 = 
linux/src/drivers/scsi/liblinux_a-aha1740.$(OBJEXT)
address@hidden@am__objects_25 = 
linux/src/drivers/scsi/liblinux_a-aic7xxx.$(OBJEXT)
address@hidden@am__objects_26 = linux/src/drivers/scsi/liblinux_a-dtc.$(OBJEXT)
address@hidden@am__objects_27 = linux/src/drivers/scsi/liblinux_a-eata.$(OBJEXT)
address@hidden@am__objects_28 = 
linux/dev/drivers/scsi/liblinux_a-eata_dma.$(OBJEXT)
address@hidden@am__objects_29 = 
linux/src/drivers/scsi/liblinux_a-eata_pio.$(OBJEXT)
address@hidden@am__objects_30 = 
linux/src/drivers/scsi/liblinux_a-fdomain.$(OBJEXT)
address@hidden@am__objects_31 = 
linux/dev/drivers/scsi/liblinux_a-g_NCR5380.$(OBJEXT)
address@hidden@am__objects_32 = linux/src/drivers/scsi/liblinux_a-gdth.$(OBJEXT)
address@hidden@am__objects_33 = 
linux/src/drivers/scsi/liblinux_a-in2000.$(OBJEXT)
address@hidden@am__objects_34 = 
linux/src/drivers/scsi/liblinux_a-ncr53c8xx.$(OBJEXT)
address@hidden@am__objects_35 = 
linux/src/drivers/scsi/liblinux_a-pas16.$(OBJEXT)
address@hidden@am__objects_36 = linux/src/drivers/scsi/liblinux_a-ppa.$(OBJEXT)
address@hidden@am__objects_37 = 
linux/src/drivers/scsi/liblinux_a-qlogicfas.$(OBJEXT)
address@hidden@am__objects_38 = 
linux/src/drivers/scsi/liblinux_a-qlogicisp.$(OBJEXT)
address@hidden@am__objects_39 = 
linux/src/drivers/scsi/liblinux_a-seagate.$(OBJEXT)
address@hidden@am__objects_40 = 
linux/src/drivers/scsi/liblinux_a-sym53c8xx.$(OBJEXT)
address@hidden@am__objects_41 = linux/src/drivers/scsi/liblinux_a-t128.$(OBJEXT)
address@hidden@am__objects_42 = 
linux/src/drivers/scsi/liblinux_a-tmscsim.$(OBJEXT)
address@hidden@am__objects_43 = 
linux/src/drivers/scsi/liblinux_a-u14-34f.$(OBJEXT)
address@hidden@am__objects_44 = 
linux/src/drivers/scsi/liblinux_a-ultrastor.$(OBJEXT)
address@hidden@am__objects_45 = 
linux/src/drivers/scsi/liblinux_a-wd7000.$(OBJEXT)
address@hidden@am__objects_46 = 
linux/dev/drivers/net/liblinux_a-auto_irq.$(OBJEXT) \
address@hidden@ linux/dev/glue/liblinux_a-net.$(OBJEXT) \
address@hidden@ linux/dev/drivers/net/liblinux_a-Space.$(OBJEXT) \
address@hidden@ linux/dev/net/core/liblinux_a-dev.$(OBJEXT) \
address@hidden@ linux/dev/drivers/net/liblinux_a-net_init.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-pci-scan.$(OBJEXT)
address@hidden@am__objects_47 = linux/src/drivers/net/liblinux_a-3c501.$(OBJEXT)
address@hidden@am__objects_48 = 
linux/src/drivers/net/liblinux_a-3c503.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_49 = linux/src/drivers/net/liblinux_a-3c505.$(OBJEXT)
address@hidden@am__objects_50 = linux/src/drivers/net/liblinux_a-3c507.$(OBJEXT)
address@hidden@am__objects_51 = linux/src/drivers/net/liblinux_a-3c509.$(OBJEXT)
address@hidden@am__objects_52 = linux/src/drivers/net/liblinux_a-3c59x.$(OBJEXT)
address@hidden@am__objects_53 = linux/src/drivers/net/liblinux_a-3c515.$(OBJEXT)
address@hidden@am__objects_54 = 
linux/src/drivers/net/liblinux_a-ac3200.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_55 = 
linux/src/drivers/net/liblinux_a-apricot.$(OBJEXT)
address@hidden@am__objects_56 = 
linux/src/drivers/net/liblinux_a-at1700.$(OBJEXT)
address@hidden@am__objects_57 = linux/src/drivers/net/liblinux_a-atp.$(OBJEXT)
address@hidden@am__objects_58 = linux/src/drivers/net/liblinux_a-de4x5.$(OBJEXT)
address@hidden@am__objects_59 = linux/src/drivers/net/liblinux_a-de600.$(OBJEXT)
address@hidden@am__objects_60 = linux/src/drivers/net/liblinux_a-de620.$(OBJEXT)
address@hidden@am__objects_61 = linux/src/drivers/net/liblinux_a-depca.$(OBJEXT)
address@hidden@am__objects_62 = 
linux/src/drivers/net/liblinux_a-e2100.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_63 = linux/src/drivers/net/liblinux_a-eepro.$(OBJEXT)
address@hidden@am__objects_64 = 
linux/src/drivers/net/liblinux_a-eepro100.$(OBJEXT)
address@hidden@am__objects_65 = 
linux/src/drivers/net/liblinux_a-eexpress.$(OBJEXT)
address@hidden@am__objects_66 = 
linux/src/drivers/net/liblinux_a-epic100.$(OBJEXT)
address@hidden@am__objects_67 = 
linux/src/drivers/net/liblinux_a-eth16i.$(OBJEXT)
address@hidden@am__objects_68 = linux/src/drivers/net/liblinux_a-ewrk3.$(OBJEXT)
address@hidden@am__objects_69 = 
linux/src/drivers/net/liblinux_a-fmv18x.$(OBJEXT)
address@hidden@am__objects_70 = 
linux/src/drivers/net/liblinux_a-hamachi.$(OBJEXT)
address@hidden@am__objects_71 = 
linux/src/drivers/net/liblinux_a-hp-plus.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_72 = linux/src/drivers/net/liblinux_a-hp.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_73 = linux/src/drivers/net/liblinux_a-hp100.$(OBJEXT)
address@hidden@am__objects_74 = 
linux/src/drivers/net/liblinux_a-intel-gige.$(OBJEXT)
address@hidden@am__objects_75 = linux/src/drivers/net/liblinux_a-lance.$(OBJEXT)
address@hidden@am__objects_76 = 
linux/src/drivers/net/liblinux_a-myson803.$(OBJEXT)
address@hidden@am__objects_77 = 
linux/src/drivers/net/liblinux_a-natsemi.$(OBJEXT)
address@hidden@am__objects_78 = linux/src/drivers/net/liblinux_a-ne.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_79 = 
linux/src/drivers/net/liblinux_a-ne2k-pci.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_80 = linux/src/drivers/net/liblinux_a-ni52.$(OBJEXT)
address@hidden@am__objects_81 = linux/src/drivers/net/liblinux_a-ni65.$(OBJEXT)
address@hidden@am__objects_82 = linux/src/drivers/net/liblinux_a-ns820.$(OBJEXT)
address@hidden@am__objects_83 = 
linux/src/drivers/net/liblinux_a-pcnet32.$(OBJEXT)
address@hidden@am__objects_84 = 
linux/src/drivers/net/liblinux_a-rtl8139.$(OBJEXT)
address@hidden@am__objects_85 = 
linux/src/drivers/net/liblinux_a-seeq8005.$(OBJEXT)
address@hidden@am__objects_86 = 
linux/src/drivers/net/liblinux_a-sis900.$(OBJEXT)
address@hidden@am__objects_87 = 
linux/src/drivers/net/liblinux_a-sk_g16.$(OBJEXT)
address@hidden@am__objects_88 = 
linux/src/drivers/net/liblinux_a-smc-ultra.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_89 = 
linux/src/drivers/net/liblinux_a-smc-ultra32.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_90 = 
linux/src/drivers/net/liblinux_a-starfire.$(OBJEXT)
address@hidden@am__objects_91 = 
linux/src/drivers/net/liblinux_a-sundance.$(OBJEXT)
address@hidden@am__objects_92 = linux/src/drivers/net/liblinux_a-tlan.$(OBJEXT)
address@hidden@am__objects_93 = linux/src/drivers/net/liblinux_a-tulip.$(OBJEXT)
address@hidden@am__objects_94 = 
linux/src/drivers/net/liblinux_a-via-rhine.$(OBJEXT)
address@hidden@am__objects_95 = 
linux/src/drivers/net/liblinux_a-wavelan.$(OBJEXT)
address@hidden@am__objects_96 = linux/src/drivers/net/liblinux_a-wd.$(OBJEXT)
address@hidden@am__objects_97 = 
linux/src/drivers/net/liblinux_a-winbond-840.$(OBJEXT) \
address@hidden@ linux/src/drivers/net/liblinux_a-8390.$(OBJEXT)
address@hidden@am__objects_98 = 
linux/src/drivers/net/liblinux_a-yellowfin.$(OBJEXT)
address@hidden@am__objects_99 = linux/src/drivers/net/liblinux_a-znet.$(OBJEXT)
address@hidden@am__objects_100 = 
linux/src/arch/i386/lib/liblinux_a-semaphore.$(OBJEXT)
+am_liblinux_a_OBJECTS = linux/dev/init/liblinux_a-version.$(OBJEXT) \
+       linux/dev/kernel/liblinux_a-softirq.$(OBJEXT) \
+       linux/src/arch/i386/lib/liblinux_a-delay.$(OBJEXT) \
+       linux/dev/kernel/liblinux_a-dma.$(OBJEXT) \
+       linux/dev/kernel/liblinux_a-resource.$(OBJEXT) \
+       linux/dev/kernel/liblinux_a-printk.$(OBJEXT) \
+       linux/src/arch/i386/kernel/liblinux_a-bios32.$(OBJEXT) \
+       linux/dev/arch/i386/kernel/liblinux_a-irq.$(OBJEXT) \
+       linux/src/lib/liblinux_a-ctype.$(OBJEXT) \
+       linux/dev/lib/liblinux_a-vsprintf.$(OBJEXT) \
+       linux/dev/init/liblinux_a-main.$(OBJEXT) \
+       linux/dev/glue/liblinux_a-misc.$(OBJEXT) \
+       linux/dev/kernel/liblinux_a-sched.$(OBJEXT) \
+       linux/dev/glue/liblinux_a-kmem.$(OBJEXT) \
+       linux/dev/glue/liblinux_a-block.$(OBJEXT) \
+       linux/dev/arch/i386/kernel/liblinux_a-setup.$(OBJEXT) \
+       linux/src/drivers/pci/liblinux_a-pci.$(OBJEXT) \
+       linux/dev/drivers/block/liblinux_a-genhd.$(OBJEXT) \
+       $(am__objects_14) $(am__objects_15) $(am__objects_16) \
+       $(am__objects_17) $(am__objects_18) $(am__objects_19) \
+       $(am__objects_20) $(am__objects_21) $(am__objects_22) \
+       $(am__objects_23) $(am__objects_24) $(am__objects_25) \
+       $(am__objects_26) $(am__objects_27) $(am__objects_28) \
+       $(am__objects_29) $(am__objects_30) $(am__objects_31) \
+       $(am__objects_32) $(am__objects_33) $(am__objects_34) \
+       $(am__objects_35) $(am__objects_36) $(am__objects_37) \
+       $(am__objects_38) $(am__objects_39) $(am__objects_40) \
+       $(am__objects_41) $(am__objects_42) $(am__objects_43) \
+       $(am__objects_44) $(am__objects_45) $(am__objects_46) \
+       $(am__objects_47) $(am__objects_48) $(am__objects_49) \
+       $(am__objects_50) $(am__objects_51) $(am__objects_52) \
+       $(am__objects_53) $(am__objects_54) $(am__objects_55) \
+       $(am__objects_56) $(am__objects_57) $(am__objects_58) \
+       $(am__objects_59) $(am__objects_60) $(am__objects_61) \
+       $(am__objects_62) $(am__objects_63) $(am__objects_64) \
+       $(am__objects_65) $(am__objects_66) $(am__objects_67) \
+       $(am__objects_68) $(am__objects_69) $(am__objects_70) \
+       $(am__objects_71) $(am__objects_72) $(am__objects_73) \
+       $(am__objects_74) $(am__objects_75) $(am__objects_76) \
+       $(am__objects_77) $(am__objects_78) $(am__objects_79) \
+       $(am__objects_80) $(am__objects_81) $(am__objects_82) \
+       $(am__objects_83) $(am__objects_84) $(am__objects_85) \
+       $(am__objects_86) $(am__objects_87) $(am__objects_88) \
+       $(am__objects_89) $(am__objects_90) $(am__objects_91) \
+       $(am__objects_92) $(am__objects_93) $(am__objects_94) \
+       $(am__objects_95) $(am__objects_96) $(am__objects_97) \
+       $(am__objects_98) $(am__objects_99) $(am__objects_100)
+liblinux_a_OBJECTS = $(am_liblinux_a_OBJECTS)
+liblinux_pcmcia_cs_clients_a_AR = $(AR) $(ARFLAGS)
+liblinux_pcmcia_cs_clients_a_LIBADD =
+am__liblinux_pcmcia_cs_clients_a_SOURCES_DIST =  \
+       linux/pcmcia-cs/clients/3c574_cs.c \
+       linux/pcmcia-cs/clients/3c589_cs.c \
+       linux/pcmcia-cs/clients/ax8390.h \
+       linux/pcmcia-cs/clients/axnet_cs.c \
+       linux/pcmcia-cs/clients/fmvj18x_cs.c \
+       linux/pcmcia-cs/clients/nmclan_cs.c \
+       linux/pcmcia-cs/clients/pcnet_cs.c \
+       linux/src/drivers/net/8390.c linux/pcmcia-cs/clients/ositech.h \
+       linux/pcmcia-cs/clients/smc91c92_cs.c \
+       linux/pcmcia-cs/clients/xirc2ps_cs.c
address@hidden@am__objects_101 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.$(OBJEXT)
address@hidden@am__objects_102 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.$(OBJEXT)
address@hidden@am__objects_103 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.$(OBJEXT)
address@hidden@am__objects_104 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.$(OBJEXT)
address@hidden@am__objects_105 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.$(OBJEXT)
address@hidden@am__objects_106 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.$(OBJEXT) \
address@hidden@ 
linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.$(OBJEXT)
address@hidden@am__objects_107 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.$(OBJEXT)
address@hidden@am__objects_108 = 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.$(OBJEXT)
+am_liblinux_pcmcia_cs_clients_a_OBJECTS = $(am__objects_101) \
+       $(am__objects_102) $(am__objects_103) $(am__objects_104) \
+       $(am__objects_105) $(am__objects_106) $(am__objects_107) \
+       $(am__objects_108)
+liblinux_pcmcia_cs_clients_a_OBJECTS =  \
+       $(am_liblinux_pcmcia_cs_clients_a_OBJECTS)
+liblinux_pcmcia_cs_modules_a_AR = $(AR) $(ARFLAGS)
+liblinux_pcmcia_cs_modules_a_LIBADD =
+am__liblinux_pcmcia_cs_modules_a_SOURCES_DIST =  \
+       linux/pcmcia-cs/glue/pcmcia.c \
+       linux/pcmcia-cs/glue/pcmcia_glue.h \
+       linux/pcmcia-cs/modules/cs.c \
+       linux/pcmcia-cs/modules/cs_internal.h \
+       linux/pcmcia-cs/modules/ds.c \
+       linux/pcmcia-cs/modules/rsrc_mgr.c \
+       linux/pcmcia-cs/modules/bulkmem.c \
+       linux/pcmcia-cs/modules/cistpl.c \
+       linux/pcmcia-cs/modules/pci_fixup.c \
+       linux/pcmcia-cs/modules/cirrus.h linux/pcmcia-cs/modules/ene.h \
+       linux/pcmcia-cs/modules/i82365.c \
+       linux/pcmcia-cs/modules/i82365.h \
+       linux/pcmcia-cs/modules/o2micro.h \
+       linux/pcmcia-cs/modules/ricoh.h \
+       linux/pcmcia-cs/modules/smc34c90.h \
+       linux/pcmcia-cs/modules/ti113x.h \
+       linux/pcmcia-cs/modules/topic.h \
+       linux/pcmcia-cs/modules/vg468.h \
+       linux/pcmcia-cs/modules/yenta.h
address@hidden@am__objects_109 = 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.$(OBJEXT)
+am_liblinux_pcmcia_cs_modules_a_OBJECTS = 
linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.$(OBJEXT) \
+       linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.$(OBJEXT) \
+       linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.$(OBJEXT) \
+       linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.$(OBJEXT) 
\
+       linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.$(OBJEXT) \
+       linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.$(OBJEXT) \
+       
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.$(OBJEXT) \
+       $(am__objects_109)
+liblinux_pcmcia_cs_modules_a_OBJECTS =  \
+       $(am_liblinux_pcmcia_cs_modules_a_OBJECTS)
+liblinux_pcmcia_cs_wireless_a_AR = $(AR) $(ARFLAGS)
+liblinux_pcmcia_cs_wireless_a_LIBADD =
+am__liblinux_pcmcia_cs_wireless_a_SOURCES_DIST =  \
+       linux/pcmcia-cs/glue/wireless_glue.h \
+       linux/pcmcia-cs/wireless/hermes.c \
+       linux/pcmcia-cs/wireless/hermes.h \
+       linux/pcmcia-cs/wireless/hermes_rid.h \
+       linux/pcmcia-cs/wireless/ieee802_11.h \
+       linux/pcmcia-cs/wireless/orinoco.c \
+       linux/pcmcia-cs/wireless/orinoco.h \
+       linux/pcmcia-cs/wireless/orinoco_cs.c
address@hidden@am__objects_110 = 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.$(OBJEXT) \
address@hidden@ 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.$(OBJEXT) \
address@hidden@ 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.$(OBJEXT)
+am_liblinux_pcmcia_cs_wireless_a_OBJECTS = $(am__objects_110)
+liblinux_pcmcia_cs_wireless_a_OBJECTS =  \
+       $(am_liblinux_pcmcia_cs_wireless_a_OBJECTS)
+am__installdirs = "$(DESTDIR)$(exec_bootdir)" "$(DESTDIR)$(infodir)" \
+       "$(DESTDIR)$(exec_msgidsdir)" "$(DESTDIR)$(include_devicedir)" \
+       "$(DESTDIR)$(include_machdir)" \
+       "$(DESTDIR)$(include_mach_eXecdir)" \
+       "$(DESTDIR)$(include_mach_i386dir)"
+PROGRAMS = $(exec_boot_PROGRAMS) $(noinst_PROGRAMS)
+am_gnumach_OBJECTS =
+gnumach_OBJECTS = $(am_gnumach_OBJECTS)
+gnumach_DEPENDENCIES = gnumach.o clib-routines.o
+am_gnumach_o_OBJECTS =
+gnumach_o_OBJECTS = $(am_gnumach_o_OBJECTS)
+gnumach_o_DEPENDENCIES = libkernel.a $(am__append_6) $(am__append_100)
+AM_V_P = $(address@hidden@)
+am__v_P_ = $(address@hidden@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(address@hidden@)
+am__v_GEN_ = $(address@hidden@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(address@hidden@)
+am__v_at_ = $(address@hidden@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = address@hidden@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(address@hidden@)
+am__v_lt_ = $(address@hidden@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
+AM_V_CPPAS = $(address@hidden@)
+am__v_CPPAS_ = $(address@hidden@)
+am__v_CPPAS_0 = @echo "  CPPAS   " $@;
+am__v_CPPAS_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(address@hidden@)
+am__v_CC_ = $(address@hidden@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(address@hidden@)
+am__v_CCLD_ = $(address@hidden@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(nodist_lib_dep_tr_for_defs_a_SOURCES) \
+       $(libkernel_a_SOURCES) $(nodist_libkernel_a_SOURCES) \
+       $(liblinux_a_SOURCES) $(liblinux_pcmcia_cs_clients_a_SOURCES) \
+       $(liblinux_pcmcia_cs_modules_a_SOURCES) \
+       $(liblinux_pcmcia_cs_wireless_a_SOURCES) $(gnumach_SOURCES) \
+       $(gnumach_o_SOURCES)
+DIST_SOURCES = $(am__libkernel_a_SOURCES_DIST) \
+       $(am__liblinux_a_SOURCES_DIST) \
+       $(am__liblinux_pcmcia_cs_clients_a_SOURCES_DIST) \
+       $(am__liblinux_pcmcia_cs_modules_a_SOURCES_DIST) \
+       $(am__liblinux_pcmcia_cs_wireless_a_SOURCES_DIST) \
+       $(gnumach_SOURCES) $(gnumach_o_SOURCES)
+AM_V_DVIPS = $(address@hidden@)
+am__v_DVIPS_ = $(address@hidden@)
+am__v_DVIPS_0 = @echo "  DVIPS   " $@;
+am__v_DVIPS_1 = 
+AM_V_MAKEINFO = $(address@hidden@)
+am__v_MAKEINFO_ = $(address@hidden@)
+am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
+am__v_MAKEINFO_1 = 
+AM_V_INFOHTML = $(address@hidden@)
+am__v_INFOHTML_ = $(address@hidden@)
+am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
+am__v_INFOHTML_1 = 
+AM_V_TEXI2DVI = $(address@hidden@)
+am__v_TEXI2DVI_ = $(address@hidden@)
+am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
+am__v_TEXI2DVI_1 = 
+AM_V_TEXI2PDF = $(address@hidden@)
+am__v_TEXI2PDF_ = $(address@hidden@)
+am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
+am__v_TEXI2PDF_1 = 
+AM_V_texinfo = $(address@hidden@)
+am__v_texinfo_ = $(address@hidden@)
+am__v_texinfo_0 = -q
+am__v_texinfo_1 = 
+AM_V_texidevnull = $(address@hidden@)
+am__v_texidevnull_ = $(address@hidden@)
+am__v_texidevnull_0 = > /dev/null
+am__v_texidevnull_1 = 
+INFO_DEPS = $(srcdir)/doc/mach.info
+TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
+DVIS = doc/mach.dvi
+PDFS = doc/mach.pdf
+PSS = doc/mach.ps
+HTMLS = doc/mach.html
+TEXINFOS = doc/mach.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+DATA = $(exec_msgids_DATA)
+am__include_mach_i386_HEADERS_DIST = i386/include/mach/i386/asm.h \
+       i386/include/mach/i386/boolean.h i386/include/mach/i386/disk.h \
+       i386/include/mach/i386/eflags.h \
+       i386/include/mach/i386/exception.h \
+       i386/include/mach/i386/fp_reg.h \
+       i386/include/mach/i386/ioccom.h \
+       i386/include/mach/i386/kern_return.h \
+       i386/include/mach/i386/mach_i386.defs \
+       i386/include/mach/i386/mach_i386_types.h \
+       i386/include/mach/i386/machine_types.defs \
+       i386/include/mach/i386/multiboot.h \
+       i386/include/mach/i386/rpc.h \
+       i386/include/mach/i386/syscall_sw.h \
+       i386/include/mach/i386/thread_status.h \
+       i386/include/mach/i386/trap.h \
+       i386/include/mach/i386/vm_param.h \
+       i386/include/mach/i386/vm_types.h
+HEADERS = $(include_device_HEADERS) $(include_mach_HEADERS) \
+       $(include_mach_eXec_HEADERS) $(include_mach_i386_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+       cscope check recheck distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+       $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@address@hidden)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+GZIP_ENV = --best
+DIST_TARGETS = dist-bzip2 dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+
+# We need this because we use $(CPP) to preprocess MIG .defs files.
+CPP = @CPP@ -x c
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+GZIP = @GZIP@
+INSTALL = $(install_sh)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MIG = @MIG@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATCH = @PATCH@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_platform = @host_platform@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+
+#
+# Other Tools' Configuration.
+#
+
+# Don't needlessly overwrite files that whose contents haven't changed.  This
+# helps for avoinding unneccessary recompilation cycles when keeping
+# cross-compilation toolchains up-to-date.  Thus, unconditionally use the
+# `install-sh' that is supplied by GNU Automake 1.10.1, as the GNU Coreutils
+# one doesn't provide this functionality yet (TODO: change that).  TODO:
+# `build-aux' is hardcoded.
+install_sh = $(SHELL) $(abs_srcdir)/build-aux/install-sh -C
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+systype = @systype@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = 
+DIST_SUBDIRS = 
+
+# Instead of listing each file individually...
+
+#
+# Building a distribution.
+#
+
+# Instead of listing each file individually...
+
+#
+# Building a distribution.
+#
+EXTRA_DIST = gensym.awk ipc/mach_port.srv kern/mach.srv kern/mach4.srv \
+       kern/gnumach.srv kern/mach_debug.srv kern/mach_host.srv \
+       vm/memory_object_default.cli vm/memory_object_user.cli \
+       device/device.srv device/device_pager.srv \
+       device/device_reply.cli device/memory_object_reply.cli include \
+       $(am__append_13) $(am__append_20) $(am__append_24) \
+       $(am__append_26) $(am__append_30) $(am__append_41) \
+       linux/src/drivers/scsi/NCR5380.c \
+       linux/src/drivers/scsi/NCR5380.h linux/src/drivers/net/8390.h \
+       linux/src/drivers/net/kern_compat.h linux/pcmcia-cs/glue/ds.c \
+       linux/dev/README linux/src/COPYING linux/dev/include \
+       linux/src/include linux/pcmcia-cs/include $(am__append_117) \
+       $(mach_TEXINFOS) config.status.dep.patch DEVELOPMENT
+
+#
+# Building a distribution.
+#
+
+# Enable all available features.
+DISTCHECK_CONFIGURE_FLAGS = --enable-kdb
+
+#
+# The main kernel functionality.
+#
+noinst_LIBRARIES = libkernel.a lib_dep_tr_for_defs.a $(am__append_5) \
+       $(am__append_99)
+TESTS = tests/test-mbchk
+info_TEXINFOS = doc/mach.texi
+#      kern/mach.server.defs
+#      kern/mach4.server.defs
+#      kern/gnumach.server.defs
+#      kern/mach_debug.server.defs
+#      kern/mach_host.server.defs
+
+# rpctrace can make use of that.
+MOSTLYCLEANFILES = $(nodist_libkernel_a_SOURCES) \
+       $(nodist_lib_dep_tr_for_defs_a_SOURCES) gnumach.msgids \
+       gnumach-undef gnumach-undef-bad
+DISTCLEANFILES = Makefile.orig config.status.orig
+
+#
+# Compilation flags
+#
+AM_CPPFLAGS = -nostdinc -imacros config.h -I$(systype) -I. \
+       -I$(top_srcdir)/$(systype) \
+       -I$(top_srcdir)/$(systype)/include/mach/sa \
+       -I$(top_srcdir)/include
+AM_CCASFLAGS = 
+
+# Yes, this makes the eyes hurt.  But perhaps someone will finally take care of
+# all that scruffy Mach code...  Also see <http://savannah.gnu.org/task/?5726>.
+
+# See <http://lists.gnu.org/archive/html/bug-hurd/2006-01/msg00148.html>.
+AM_CFLAGS = -fno-builtin-log -Wall -fno-strict-aliasing \
+       $(am__append_1) $(am__append_3) $(am__append_124)
+AM_LDFLAGS = 
+
+#
+# Silent build support.
+#
+AWK_V = $(AWK_V_$(V))
+AWK_V_ = $(AWK_V_$(AM_DEFAULT_VERBOSITY))
+AWK_V_0 = @echo "  AWK    $@";
+GZIP_V = $(GZIP_V_$(V))
+GZIP_V_ = $(GZIP_V_$(AM_DEFAULT_VERBOSITY))
+GZIP_V_0 = @echo "  GZIP   $@";
+NM_V = $(NM_V_$(V))
+NM_V_ = $(NM_V_$(AM_DEFAULT_VERBOSITY))
+NM_V_0 = @echo "  NM     $@";
+MIGCOM_V = $(MIGCOM_V_$(V))
+MIGCOM_V_ = $(MIGCOM_V_$(AM_DEFAULT_VERBOSITY))
+MIGCOM_V_0 = @echo "  MIG    $@";
+
+#
+# MIG Setup.
+#
+
+# MIGCOM.
+MIGCOM = $(MIG) -n -cc cat - /dev/null
+
+#
+# IPC implementation.
+#
+
+#
+# `kernel' implementation (tasks, threads, trivia, etc.).
+#
+
+#
+# Still more trivia.
+#
+
+#
+# Virtual memory implementation.
+#
+
+#
+# Device driver support.
+#
+
+# These device support files are always needed; the others are needed only if
+# particular drivers want the routines.
+# TODO.  Functions in device/subrs.c should each be moved elsewhere.
+libkernel_a_SOURCES = $(am__append_2) ipc/ipc_entry.c ipc/ipc_entry.h \
+       ipc/ipc_hash.c ipc/ipc_hash.h ipc/ipc_init.c ipc/ipc_init.h \
+       ipc/ipc_kmsg.c ipc/ipc_kmsg.h ipc/ipc_kmsg_queue.h \
+       ipc/ipc_machdep.h ipc/ipc_marequest.c ipc/ipc_marequest.h \
+       ipc/ipc_mqueue.c ipc/ipc_mqueue.h ipc/ipc_notify.c \
+       ipc/ipc_notify.h ipc/ipc_object.c ipc/ipc_object.h \
+       ipc/ipc_port.c ipc/ipc_port.h ipc/ipc_pset.c ipc/ipc_pset.h \
+       ipc/ipc_right.c ipc/ipc_right.h ipc/ipc_space.c \
+       ipc/ipc_space.h ipc/ipc_splay.c ipc/ipc_splay.h \
+       ipc/ipc_table.c ipc/ipc_table.h ipc/ipc_target.c \
+       ipc/ipc_target.h ipc/ipc_thread.c ipc/ipc_thread.h \
+       ipc/ipc_types.h ipc/mach_msg.c ipc/mach_msg.h ipc/mach_port.c \
+       ipc/mach_port.h ipc/mach_rpc.c ipc/mach_debug.c ipc/port.h \
+       kern/act.c kern/act.h kern/assert.h kern/ast.c kern/ast.h \
+       kern/boot_script.h kern/bootstrap.c kern/counters.c \
+       kern/counters.h kern/cpu_number.h kern/debug.c kern/debug.h \
+       kern/eventcount.c kern/eventcount.h kern/exception.c \
+       kern/host.c kern/host.h kern/ipc_host.c kern/ipc_host.h \
+       kern/ipc_kobject.c kern/ipc_kobject.h kern/ipc_mig.c \
+       kern/ipc_mig.h kern/ipc_sched.c kern/ipc_sched.h kern/ipc_tt.c \
+       kern/ipc_tt.h kern/kalloc.h kern/kern_types.h kern/list.h \
+       kern/lock.c kern/lock.h kern/lock_mon.c kern/mach_clock.c \
+       kern/mach_clock.h kern/mach_factor.c kern/mach_factor.h \
+       kern/machine.c kern/machine.h kern/macro_help.h \
+       kern/pc_sample.c kern/pc_sample.h kern/printf.c kern/printf.h \
+       kern/priority.c kern/processor.c kern/processor.h \
+       kern/profile.c kern/queue.c kern/queue.h kern/rbtree.c \
+       kern/rbtree.h kern/rbtree_i.h kern/refcount.h kern/slab.c \
+       kern/slab.h kern/sched.h kern/sched_prim.c kern/sched_prim.h \
+       kern/shuttle.h kern/startup.c kern/strings.c \
+       kern/syscall_emulation.c kern/syscall_emulation.h \
+       kern/syscall_subr.c kern/syscall_subr.h kern/syscall_sw.c \
+       kern/syscall_sw.h kern/task.c kern/task.h kern/thread.c \
+       kern/thread.h kern/thread_swap.c kern/thread_swap.h \
+       kern/time_stamp.c kern/time_stamp.h kern/timer.c kern/timer.h \
+       kern/xpr.c kern/xpr.h kern/elf-load.c kern/boot_script.c \
+       util/putchar.c util/putchar.h util/puts.c util/atoi.c \
+       util/atoi.h vm/memory_object_proxy.c vm/memory_object_proxy.h \
+       vm/memory_object.c vm/memory_object.h vm/pmap.h vm/vm_debug.c \
+       vm/vm_external.c vm/vm_external.h vm/vm_fault.c vm/vm_fault.h \
+       vm/vm_init.c vm/vm_kern.c vm/vm_kern.h vm/vm_map.c vm/vm_map.h \
+       vm/vm_object.c vm/vm_object.h vm/vm_page.h vm/vm_pageout.c \
+       vm/vm_pageout.h vm/vm_resident.c vm/vm_resident.h \
+       vm/vm_types.h vm/vm_user.c vm/vm_user.h device/blkio.c \
+       device/buf.h device/chario.c device/cirbuf.h device/conf.h \
+       device/cons.c device/cons.h device/device_emul.h \
+       device/dev_hdr.h device/dev_lookup.c device/dev_master.h \
+       device/dev_name.c device/dev_pager.c device/device_init.c \
+       device/device_port.h device/device_types_kernel.h \
+       device/ds_routines.c device/ds_routines.h device/if_ether.h \
+       device/if_hdr.h device/io_req.h device/net_io.c \
+       device/net_io.h device/param.h device/subrs.c device/subrs.h \
+       device/tty.h $(am__append_4) $(am__append_112) \
+       $(am__append_113) $(am__append_114) $(am__append_115) \
+       $(am__append_116) $(am__append_118) $(am__append_119) \
+       $(am__append_120) $(am__append_125)
+
+#
+# Version number.
+#
+nodist_libkernel_a_SOURCES = version.c vm/memory_object_user.user.h \
+       vm/memory_object_user.user.c vm/memory_object_user.user.msgids \
+       vm/memory_object_default.user.h \
+       vm/memory_object_default.user.c \
+       vm/memory_object_default.user.msgids \
+       device/device_reply.user.h device/device_reply.user.c \
+       device/device_reply.user.msgids \
+       device/memory_object_reply.user.h \
+       device/memory_object_reply.user.c \
+       device/memory_object_reply.user.msgids device/device.server.h \
+       device/device.server.c device/device.server.msgids \
+       device/device_pager.server.h device/device_pager.server.c \
+       device/device_pager.server.msgids ipc/mach_port.server.h \
+       ipc/mach_port.server.c ipc/mach_port.server.msgids \
+       kern/mach.server.h kern/mach.server.c kern/mach.server.msgids \
+       kern/mach4.server.h kern/mach4.server.c \
+       kern/mach4.server.msgids kern/gnumach.server.h \
+       kern/gnumach.server.c kern/gnumach.server.msgids \
+       kern/mach_debug.server.h kern/mach_debug.server.c \
+       kern/mach_debug.server.msgids kern/mach_host.server.h \
+       kern/mach_host.server.c kern/mach_host.server.msgids \
+       $(am__append_122)
+gnumach_o_LDADD = libkernel.a $(am__append_6) $(am__append_100)
+gnumach_SOURCES = 
+gnumach_LINKFLAGS = $(am__append_123) $(am__append_126)
+
+#
+# Automatically generated source files.
+#
+# See Makerules.mig.am.
+#
+
+# User stubs.
+#      vm/memory_object_user.user.defs
+#      vm/memory_object_default.user.defs
+#      device/device_reply.user.defs
+#      device/memory_object_reply.user.defs
+
+# Server stubs.
+#      device/device.server.defs
+#      device/device_pager.server.defs
+#      ipc/mach_port.server.defs
+nodist_lib_dep_tr_for_defs_a_SOURCES =  \
+       vm/memory_object_user.user.defs.c \
+       vm/memory_object_default.user.defs.c \
+       device/device_reply.user.defs.c \
+       device/memory_object_reply.user.defs.c \
+       device/device.server.defs.c device/device_pager.server.defs.c \
+       ipc/mach_port.server.defs.c kern/mach.server.defs.c \
+       kern/mach4.server.defs.c kern/gnumach.server.defs.c \
+       kern/mach_debug.server.defs.c kern/mach_host.server.defs.c \
+       $(am__append_121)
+# Preprocess only.
+lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \
+       -E
+
+
+#
+# Installation.
+#
+include_devicedir = $(includedir)/device
+include_device_HEADERS = \
+       include/device/audio_status.h \
+       include/device/bpf.h \
+       include/device/device.defs \
+       include/device/device_reply.defs \
+       include/device/device_request.defs \
+       include/device/device_types.defs \
+       include/device/device_types.h \
+       include/device/disk_status.h \
+       include/device/net_status.h \
+       include/device/tape_status.h \
+       include/device/tty_status.h
+
+include_machdir = $(includedir)/mach
+include_mach_HEADERS = \
+       include/mach/bootstrap.defs \
+       include/mach/default_pager.defs \
+       include/mach/default_pager_helper.defs \
+       include/mach/default_pager_types.defs \
+       include/mach/exc.defs \
+       include/mach/mach.defs \
+       include/mach/mach4.defs \
+       include/mach/gnumach.defs \
+       include/mach/mach_host.defs \
+       include/mach/mach_port.defs \
+       include/mach/mach_types.defs \
+       include/mach/memory_object.defs \
+       include/mach/memory_object_default.defs \
+       include/mach/notify.defs \
+       include/mach/std_types.defs \
+       include/mach/alert.h \
+       include/mach/boolean.h \
+       include/mach/boot.h \
+       include/mach/default_pager_types.h \
+       include/mach/exception.h \
+       include/mach/host_info.h \
+       include/mach/kern_return.h \
+       include/mach/mach_param.h \
+       include/mach/mach_types.h \
+       include/mach/machine.h \
+       include/mach/macro_help.h \
+       include/mach/memory_object.h \
+       include/mach/message.h \
+       include/mach/mig_errors.h \
+       include/mach/msg_type.h \
+       include/mach/multiboot.h \
+       include/mach/notify.h \
+       include/mach/pc_sample.h \
+       include/mach/policy.h \
+       include/mach/port.h \
+       include/mach/processor_info.h \
+       include/mach/profil.h \
+       include/mach/profilparam.h \
+       include/mach/rpc.h \
+       include/mach/std_types.h \
+       include/mach/syscall_sw.h \
+       include/mach/task_info.h \
+       include/mach/task_special_ports.h \
+       include/mach/thread_info.h \
+       include/mach/thread_special_ports.h \
+       include/mach/thread_status.h \
+       include/mach/thread_switch.h \
+       include/mach/time_value.h \
+       include/mach/version.h \
+       include/mach/vm_attributes.h \
+       include/mach/vm_cache_statistics.h \
+       include/mach/vm_inherit.h \
+       include/mach/vm_param.h \
+       include/mach/vm_prot.h \
+       include/mach/vm_statistics.h \
+       include/mach/inline.h \
+       include/mach/xen.h
+
+
+# If we name this `*_execdir', Automake won't add it to `install-data'...
+include_mach_eXecdir = $(includedir)/mach/exec
+include_mach_eXec_HEADERS = \
+       include/mach/exec/a.out.h \
+       include/mach/exec/elf.h \
+       include/mach/exec/exec.h
+
+# `exec_' prefix, so that we don't try to build that file during when running
+# `make install-data', as it may fail there, but isn't needed there either.
+exec_msgidsdir = $(datadir)/msgids
+exec_msgids_DATA = gnumach.msgids
+liblinux_a_CPPFLAGS = $(AM_CPPFLAGS) \
+       -I$(srcdir)/$(systype)/linux/dev/include \
+       -I$(top_builddir)/linux/dev/include \
+       -I$(srcdir)/linux/dev/include \
+       -I$(top_builddir)/linux/src/include \
+       -I$(srcdir)/linux/src/include
+
+# Because of the use of `extern inline' in some Linux header files without
+# corresponding text segment definitions, we must always optimize.
+liblinux_a_CFLAGS = -O2 $(AM_CFLAGS)
+# TODO.  Do we really need `-traditional'?
+liblinux_a_CCASFLAGS = $(AM_CCASFLAGS) \
+       -D__ASSEMBLY__ -traditional \
+       $(liblinux_a_CPPFLAGS)
+
+liblinux_a_SOURCES = linux/dev/init/version.c \
+       linux/dev/kernel/softirq.c linux/src/arch/i386/lib/delay.c \
+       linux/dev/kernel/dma.c linux/dev/kernel/resource.c \
+       linux/dev/kernel/printk.c linux/src/arch/i386/kernel/bios32.c \
+       linux/dev/arch/i386/kernel/irq.c linux/src/lib/ctype.c \
+       linux/dev/lib/vsprintf.c linux/dev/init/main.c \
+       linux/dev/glue/misc.c linux/dev/kernel/sched.c \
+       linux/dev/glue/kmem.c linux/dev/glue/block.c \
+       linux/dev/glue/glue.h linux/dev/arch/i386/kernel/setup.c \
+       linux/src/drivers/pci/pci.c linux/dev/drivers/block/genhd.c \
+       $(am__append_7) $(am__append_8) $(am__append_9) \
+       $(am__append_10) $(am__append_11) $(am__append_12) \
+       $(am__append_14) $(am__append_15) $(am__append_16) \
+       $(am__append_17) $(am__append_18) $(am__append_19) \
+       $(am__append_21) $(am__append_22) $(am__append_23) \
+       $(am__append_25) $(am__append_27) $(am__append_28) \
+       $(am__append_29) $(am__append_31) $(am__append_32) \
+       $(am__append_33) $(am__append_34) $(am__append_35) \
+       $(am__append_36) $(am__append_37) $(am__append_38) \
+       $(am__append_39) $(am__append_40) $(am__append_42) \
+       $(am__append_43) $(am__append_44) $(am__append_45) \
+       $(am__append_46) $(am__append_47) $(am__append_48) \
+       $(am__append_49) $(am__append_50) $(am__append_51) \
+       $(am__append_52) $(am__append_53) $(am__append_54) \
+       $(am__append_55) $(am__append_56) $(am__append_57) \
+       $(am__append_58) $(am__append_59) $(am__append_60) \
+       $(am__append_61) $(am__append_62) $(am__append_63) \
+       $(am__append_64) $(am__append_65) $(am__append_66) \
+       $(am__append_67) $(am__append_68) $(am__append_69) \
+       $(am__append_70) $(am__append_71) $(am__append_72) \
+       $(am__append_73) $(am__append_74) $(am__append_75) \
+       $(am__append_76) $(am__append_77) $(am__append_78) \
+       $(am__append_79) $(am__append_80) $(am__append_81) \
+       $(am__append_82) $(am__append_83) $(am__append_84) \
+       $(am__append_85) $(am__append_86) $(am__append_87) \
+       $(am__append_88) $(am__append_89) $(am__append_90) \
+       $(am__append_91) $(am__append_92) $(am__append_93) \
+       $(am__append_94) $(am__append_95) $(am__append_96) \
+       $(am__append_97) $(am__append_98) $(am__append_111)
+
+# pcmcia-cs.
+liblinux_pcmcia_cs_modules_a_CPPFLAGS = $(liblinux_a_CPPFLAGS) \
+       -I$(srcdir)/linux/pcmcia-cs/include
+
+liblinux_pcmcia_cs_modules_a_CFLAGS = $(liblinux_a_CFLAGS) \
+       -include $(srcdir)/linux/pcmcia-cs/glue/pcmcia_glue.h
+
+liblinux_pcmcia_cs_modules_a_SOURCES = linux/pcmcia-cs/glue/pcmcia.c \
+       linux/pcmcia-cs/glue/pcmcia_glue.h \
+       linux/pcmcia-cs/modules/cs.c \
+       linux/pcmcia-cs/modules/cs_internal.h \
+       linux/pcmcia-cs/modules/ds.c \
+       linux/pcmcia-cs/modules/rsrc_mgr.c \
+       linux/pcmcia-cs/modules/bulkmem.c \
+       linux/pcmcia-cs/modules/cistpl.c \
+       linux/pcmcia-cs/modules/pci_fixup.c $(am__append_101)
+liblinux_pcmcia_cs_clients_a_CPPFLAGS = $(liblinux_a_CPPFLAGS) \
+       -DPCMCIA_CLIENT -I$(srcdir)/linux/pcmcia-cs/include
+
+liblinux_pcmcia_cs_clients_a_CFLAGS = $(liblinux_a_CFLAGS) \
+       -include $(srcdir)/linux/pcmcia-cs/glue/pcmcia_glue.h
+
+liblinux_pcmcia_cs_clients_a_SOURCES = $(am__append_102) \
+       $(am__append_103) $(am__append_104) $(am__append_105) \
+       $(am__append_106) $(am__append_107) $(am__append_108) \
+       $(am__append_109)
+liblinux_pcmcia_cs_wireless_a_CPPFLAGS = $(liblinux_a_CPPFLAGS) \
+       -I$(srcdir)/linux/pcmcia-cs/include
+
+liblinux_pcmcia_cs_wireless_a_CFLAGS = $(liblinux_a_CFLAGS) \
+       -include $(srcdir)/linux/pcmcia-cs/glue/wireless_glue.h
+
+liblinux_pcmcia_cs_wireless_a_SOURCES = $(am__append_110)
+
+#
+# Installation.
+#
address@hidden@include_mach_i386dir = $(includedir)/mach/i386
address@hidden@include_mach_i386_HEADERS = \
address@hidden@ i386/include/mach/i386/asm.h \
address@hidden@ i386/include/mach/i386/boolean.h \
address@hidden@ i386/include/mach/i386/disk.h \
address@hidden@ i386/include/mach/i386/eflags.h \
address@hidden@ i386/include/mach/i386/exception.h \
address@hidden@ i386/include/mach/i386/fp_reg.h \
address@hidden@ i386/include/mach/i386/ioccom.h \
address@hidden@ i386/include/mach/i386/kern_return.h \
address@hidden@ i386/include/mach/i386/mach_i386.defs \
address@hidden@ i386/include/mach/i386/mach_i386_types.h \
address@hidden@ i386/include/mach/i386/machine_types.defs \
address@hidden@ i386/include/mach/i386/multiboot.h \
address@hidden@ i386/include/mach/i386/rpc.h \
address@hidden@ i386/include/mach/i386/syscall_sw.h \
address@hidden@ i386/include/mach/i386/thread_status.h \
address@hidden@ i386/include/mach/i386/trap.h \
address@hidden@ i386/include/mach/i386/vm_param.h \
address@hidden@ i386/include/mach/i386/vm_types.h
+
+mach_TEXINFOS = \
+       doc/fdl.texi doc/gpl.texi
+
+
+#
+# Web pages of the GNU Mach Reference Manual.
+#
+web = doc/web
+
+# Makerules: how to do some things.
+
+# Main Makefile fragment.
+
+# Test suite.
+
+# Documentation.
+
+#
+# Kernel Image
+#
+
+# We need the following junk because of the include-files-from-libc.a magic.
+# TODO.  Is the following kosher from a Automake point of view?  (I.e. a
+# program `gnumach.o' that is then later used again as an object file.)
+gnumach_o_SOURCES = 
+# TODO.  ``-u _start''.  System dependent?
+gnumach_o_LINK = $(LD) -u _start -r -o $@
+
+# This is the list of routines we decide is OK to steal from the C library.
+clib_routines := memcmp memcpy memmove                         \
+                strchr strstr strsep strtok                    \
+                htonl htons ntohl ntohs                        \
+                udivdi3 __udivdi3                              \
+                __rel_iplt_start __rel_iplt_end                \
+                _START _start etext _edata end _end # actually ld magic, not 
libc.
+
+gnumach_LINK = $(LD) $(LINKFLAGS) $(gnumach_LINKFLAGS) -o $@
+gnumach_LDADD = gnumach.o clib-routines.o
+
+#
+# Installation.
+#
+exec_bootdir = \
+       $(exec_prefix)/boot
+
+gen_start_commit = e227045b06d62ee7d2fbab9d5ade9030ff43170b
+ChangeLog_files = ChangeLog ChangeLog.0 ChangeLog.00
+all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .S .c .dvi .log .o .obj .ps .test .test$(EXEEXT) .trs
+am--refresh: Makefile
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/Makerules.am 
$(srcdir)/Makerules.mig.am $(srcdir)/Makefrag.am $(srcdir)/linux/Makefrag.am 
$(srcdir)/i386/linux/Makefrag.am $(srcdir)/xen/Makefrag.am 
$(srcdir)/i386/Makefrag.am $(srcdir)/i386/xen/Makefrag.am 
$(srcdir)/tests/Makefrag.am $(srcdir)/doc/Makefrag.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ 
$(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ 
$(am__depfiles_maybe);; \
+       esac;
+$(srcdir)/Makerules.am $(srcdir)/Makerules.mig.am $(srcdir)/Makefrag.am 
$(srcdir)/linux/Makefrag.am $(srcdir)/i386/linux/Makefrag.am 
$(srcdir)/xen/Makefrag.am $(srcdir)/i386/Makefrag.am 
$(srcdir)/i386/xen/Makefrag.am $(srcdir)/tests/Makefrag.am 
$(srcdir)/doc/Makefrag.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure 
$(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+       @if test ! -f $@; then rm -f stamp-h1; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+tests/test-mbchk: $(top_builddir)/config.status 
$(top_srcdir)/tests/test-mbchk.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+version.c: $(top_builddir)/config.status $(srcdir)/version.c.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+vm/$(am__dirstamp):
+       @$(MKDIR_P) vm
+       @: > vm/$(am__dirstamp)
+vm/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) vm/$(DEPDIR)
+       @: > vm/$(DEPDIR)/$(am__dirstamp)
+vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.$(OBJEXT):  \
+       vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.$(OBJEXT):  \
+       vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+device/$(am__dirstamp):
+       @$(MKDIR_P) device
+       @: > device/$(am__dirstamp)
+device/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) device/$(DEPDIR)
+       @: > device/$(DEPDIR)/$(am__dirstamp)
+device/lib_dep_tr_for_defs_a-device_reply.user.defs.$(OBJEXT):  \
+       device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
+device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.$(OBJEXT):  \
+       device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
+device/lib_dep_tr_for_defs_a-device.server.defs.$(OBJEXT):  \
+       device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
+device/lib_dep_tr_for_defs_a-device_pager.server.defs.$(OBJEXT):  \
+       device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
+ipc/$(am__dirstamp):
+       @$(MKDIR_P) ipc
+       @: > ipc/$(am__dirstamp)
+ipc/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) ipc/$(DEPDIR)
+       @: > ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.$(OBJEXT):  \
+       ipc/$(am__dirstamp) ipc/$(DEPDIR)/$(am__dirstamp)
+kern/$(am__dirstamp):
+       @$(MKDIR_P) kern
+       @: > kern/$(am__dirstamp)
+kern/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) kern/$(DEPDIR)
+       @: > kern/$(DEPDIR)/$(am__dirstamp)
+kern/lib_dep_tr_for_defs_a-mach.server.defs.$(OBJEXT):  \
+       kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
+kern/lib_dep_tr_for_defs_a-mach4.server.defs.$(OBJEXT):  \
+       kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
+kern/lib_dep_tr_for_defs_a-gnumach.server.defs.$(OBJEXT):  \
+       kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
+kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.$(OBJEXT):  \
+       kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
+kern/lib_dep_tr_for_defs_a-mach_host.server.defs.$(OBJEXT):  \
+       kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
+i386/i386/$(am__dirstamp):
+       @$(MKDIR_P) i386/i386
+       @: > i386/i386/$(am__dirstamp)
+i386/i386/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) i386/i386/$(DEPDIR)
+       @: > i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.$(OBJEXT):  \
+       i386/i386/$(am__dirstamp) i386/i386/$(DEPDIR)/$(am__dirstamp)
+
+lib_dep_tr_for_defs.a: $(lib_dep_tr_for_defs_a_OBJECTS) 
$(lib_dep_tr_for_defs_a_DEPENDENCIES) 
$(EXTRA_lib_dep_tr_for_defs_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f lib_dep_tr_for_defs.a
+       $(AM_V_AR)$(lib_dep_tr_for_defs_a_AR) lib_dep_tr_for_defs.a 
$(lib_dep_tr_for_defs_a_OBJECTS) $(lib_dep_tr_for_defs_a_LIBADD)
+       $(AM_V_at)$(RANLIB) lib_dep_tr_for_defs.a
+ddb/$(am__dirstamp):
+       @$(MKDIR_P) ddb
+       @: > ddb/$(am__dirstamp)
+ddb/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) ddb/$(DEPDIR)
+       @: > ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_access.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_aout.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_break.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_command.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_cond.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_examine.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_expr.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_ext_symtab.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_input.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_lex.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_macro.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_mp.$(OBJEXT): ddb/$(am__dirstamp) ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_output.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_print.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_run.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_sym.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_task_thread.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_trap.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_variables.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_watch.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ddb/db_write_cmd.$(OBJEXT): ddb/$(am__dirstamp) \
+       ddb/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_entry.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_hash.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_init.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_kmsg.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_marequest.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_mqueue.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_notify.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_object.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_port.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_pset.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_right.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_space.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_splay.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_table.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_target.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/ipc_thread.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/mach_msg.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/mach_port.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/mach_rpc.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+ipc/mach_debug.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+kern/act.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/ast.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/bootstrap.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/counters.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/debug.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/eventcount.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/exception.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/host.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/ipc_host.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/ipc_kobject.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/ipc_mig.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/ipc_sched.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/ipc_tt.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/lock.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/lock_mon.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/mach_clock.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/mach_factor.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/machine.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/pc_sample.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/printf.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/priority.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/processor.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/profile.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/queue.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/rbtree.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/slab.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/sched_prim.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/startup.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/strings.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/syscall_emulation.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/syscall_subr.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/syscall_sw.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/task.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/thread.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/thread_swap.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/time_stamp.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/timer.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/xpr.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/elf-load.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/boot_script.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+util/$(am__dirstamp):
+       @$(MKDIR_P) util
+       @: > util/$(am__dirstamp)
+util/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) util/$(DEPDIR)
+       @: > util/$(DEPDIR)/$(am__dirstamp)
+util/putchar.$(OBJEXT): util/$(am__dirstamp) \
+       util/$(DEPDIR)/$(am__dirstamp)
+util/puts.$(OBJEXT): util/$(am__dirstamp) \
+       util/$(DEPDIR)/$(am__dirstamp)
+util/atoi.$(OBJEXT): util/$(am__dirstamp) \
+       util/$(DEPDIR)/$(am__dirstamp)
+vm/memory_object_proxy.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+vm/memory_object.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_debug.$(OBJEXT): vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_external.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_fault.$(OBJEXT): vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_init.$(OBJEXT): vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_kern.$(OBJEXT): vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_map.$(OBJEXT): vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_object.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_pageout.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_resident.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+vm/vm_user.$(OBJEXT): vm/$(am__dirstamp) vm/$(DEPDIR)/$(am__dirstamp)
+device/blkio.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/chario.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/cons.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/dev_lookup.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/dev_name.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/dev_pager.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/device_init.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/ds_routines.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/net_io.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/subrs.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/kmsg.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+xen/$(am__dirstamp):
+       @$(MKDIR_P) xen
+       @: > xen/$(am__dirstamp)
+xen/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) xen/$(DEPDIR)
+       @: > xen/$(DEPDIR)/$(am__dirstamp)
+xen/block.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+xen/console.$(OBJEXT): xen/$(am__dirstamp) \
+       xen/$(DEPDIR)/$(am__dirstamp)
+xen/evt.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+xen/grant.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+xen/net.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+xen/ring.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+xen/store.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+xen/time.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+xen/xen.$(OBJEXT): xen/$(am__dirstamp) xen/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/$(am__dirstamp):
+       @$(MKDIR_P) i386/i386at
+       @: > i386/i386at/$(am__dirstamp)
+i386/i386at/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) i386/i386at/$(DEPDIR)
+       @: > i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/autoconf.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/conf.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/cons_conf.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/model_dep.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/boothdr.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/com.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/immc.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/int_init.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/interrupt.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/kd.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/kd_event.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/kd_queue.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/kd_mouse.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/kdasm.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/mem.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/pic_isa.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/rtc.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386at/lpr.$(OBJEXT): i386/i386at/$(am__dirstamp) \
+       i386/i386at/$(DEPDIR)/$(am__dirstamp)
+i386/i386/ast_check.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/cswitch.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/db_disasm.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/db_interface.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/db_trace.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/debug_i386.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/debug_trace.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/fpu.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/gdt.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/idt.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/idt_inittab.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/io_perm.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/ktss.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/kttd_interface.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/ldt.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/locore.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/loose_ends.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/machine_task.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/mp_desc.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/pcb.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/phys.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/seg.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/spl.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/trap.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/user_ldt.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/intel/$(am__dirstamp):
+       @$(MKDIR_P) i386/intel
+       @: > i386/intel/$(am__dirstamp)
+i386/intel/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) i386/intel/$(DEPDIR)
+       @: > i386/intel/$(DEPDIR)/$(am__dirstamp)
+i386/intel/pmap.$(OBJEXT): i386/intel/$(am__dirstamp) \
+       i386/intel/$(DEPDIR)/$(am__dirstamp)
+i386/intel/read_fault.$(OBJEXT): i386/intel/$(am__dirstamp) \
+       i386/intel/$(DEPDIR)/$(am__dirstamp)
+i386/i386/hardclock.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/io_map.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/pic.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/pit.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+i386/i386/_setjmp.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+chips/$(am__dirstamp):
+       @$(MKDIR_P) chips
+       @: > chips/$(am__dirstamp)
+chips/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) chips/$(DEPDIR)
+       @: > chips/$(DEPDIR)/$(am__dirstamp)
+chips/busses.$(OBJEXT): chips/$(am__dirstamp) \
+       chips/$(DEPDIR)/$(am__dirstamp)
+device/cirbuf.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+i386/xen/$(am__dirstamp):
+       @$(MKDIR_P) i386/xen
+       @: > i386/xen/$(am__dirstamp)
+i386/xen/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) i386/xen/$(DEPDIR)
+       @: > i386/xen/$(DEPDIR)/$(am__dirstamp)
+i386/xen/xen.$(OBJEXT): i386/xen/$(am__dirstamp) \
+       i386/xen/$(DEPDIR)/$(am__dirstamp)
+i386/xen/xen_locore.$(OBJEXT): i386/xen/$(am__dirstamp) \
+       i386/xen/$(DEPDIR)/$(am__dirstamp)
+i386/xen/xen_boothdr.$(OBJEXT): i386/xen/$(am__dirstamp) \
+       i386/xen/$(DEPDIR)/$(am__dirstamp)
+vm/memory_object_user.user.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+vm/memory_object_default.user.$(OBJEXT): vm/$(am__dirstamp) \
+       vm/$(DEPDIR)/$(am__dirstamp)
+device/device_reply.user.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/memory_object_reply.user.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/device.server.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+device/device_pager.server.$(OBJEXT): device/$(am__dirstamp) \
+       device/$(DEPDIR)/$(am__dirstamp)
+ipc/mach_port.server.$(OBJEXT): ipc/$(am__dirstamp) \
+       ipc/$(DEPDIR)/$(am__dirstamp)
+kern/mach.server.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/mach4.server.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/gnumach.server.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/mach_debug.server.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+kern/mach_host.server.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
+i386/i386/mach_i386.server.$(OBJEXT): i386/i386/$(am__dirstamp) \
+       i386/i386/$(DEPDIR)/$(am__dirstamp)
+
+libkernel.a: $(libkernel_a_OBJECTS) $(libkernel_a_DEPENDENCIES) 
$(EXTRA_libkernel_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libkernel.a
+       $(AM_V_AR)$(libkernel_a_AR) libkernel.a $(libkernel_a_OBJECTS) 
$(libkernel_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libkernel.a
+linux/dev/init/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/init
+       @: > linux/dev/init/$(am__dirstamp)
+linux/dev/init/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/init/$(DEPDIR)
+       @: > linux/dev/init/$(DEPDIR)/$(am__dirstamp)
+linux/dev/init/liblinux_a-version.$(OBJEXT):  \
+       linux/dev/init/$(am__dirstamp) \
+       linux/dev/init/$(DEPDIR)/$(am__dirstamp)
+linux/dev/kernel/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/kernel
+       @: > linux/dev/kernel/$(am__dirstamp)
+linux/dev/kernel/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/kernel/$(DEPDIR)
+       @: > linux/dev/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/dev/kernel/liblinux_a-softirq.$(OBJEXT):  \
+       linux/dev/kernel/$(am__dirstamp) \
+       linux/dev/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/src/arch/i386/lib/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/arch/i386/lib
+       @: > linux/src/arch/i386/lib/$(am__dirstamp)
+linux/src/arch/i386/lib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/arch/i386/lib/$(DEPDIR)
+       @: > linux/src/arch/i386/lib/$(DEPDIR)/$(am__dirstamp)
+linux/src/arch/i386/lib/liblinux_a-delay.$(OBJEXT):  \
+       linux/src/arch/i386/lib/$(am__dirstamp) \
+       linux/src/arch/i386/lib/$(DEPDIR)/$(am__dirstamp)
+linux/dev/kernel/liblinux_a-dma.$(OBJEXT):  \
+       linux/dev/kernel/$(am__dirstamp) \
+       linux/dev/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/dev/kernel/liblinux_a-resource.$(OBJEXT):  \
+       linux/dev/kernel/$(am__dirstamp) \
+       linux/dev/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/dev/kernel/liblinux_a-printk.$(OBJEXT):  \
+       linux/dev/kernel/$(am__dirstamp) \
+       linux/dev/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/src/arch/i386/kernel/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/arch/i386/kernel
+       @: > linux/src/arch/i386/kernel/$(am__dirstamp)
+linux/src/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/arch/i386/kernel/$(DEPDIR)
+       @: > linux/src/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/src/arch/i386/kernel/liblinux_a-bios32.$(OBJEXT):  \
+       linux/src/arch/i386/kernel/$(am__dirstamp) \
+       linux/src/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/dev/arch/i386/kernel/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/arch/i386/kernel
+       @: > linux/dev/arch/i386/kernel/$(am__dirstamp)
+linux/dev/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/arch/i386/kernel/$(DEPDIR)
+       @: > linux/dev/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/dev/arch/i386/kernel/liblinux_a-irq.$(OBJEXT):  \
+       linux/dev/arch/i386/kernel/$(am__dirstamp) \
+       linux/dev/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/src/lib/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/lib
+       @: > linux/src/lib/$(am__dirstamp)
+linux/src/lib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/lib/$(DEPDIR)
+       @: > linux/src/lib/$(DEPDIR)/$(am__dirstamp)
+linux/src/lib/liblinux_a-ctype.$(OBJEXT):  \
+       linux/src/lib/$(am__dirstamp) \
+       linux/src/lib/$(DEPDIR)/$(am__dirstamp)
+linux/dev/lib/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/lib
+       @: > linux/dev/lib/$(am__dirstamp)
+linux/dev/lib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/lib/$(DEPDIR)
+       @: > linux/dev/lib/$(DEPDIR)/$(am__dirstamp)
+linux/dev/lib/liblinux_a-vsprintf.$(OBJEXT):  \
+       linux/dev/lib/$(am__dirstamp) \
+       linux/dev/lib/$(DEPDIR)/$(am__dirstamp)
+linux/dev/init/liblinux_a-main.$(OBJEXT):  \
+       linux/dev/init/$(am__dirstamp) \
+       linux/dev/init/$(DEPDIR)/$(am__dirstamp)
+linux/dev/glue/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/glue
+       @: > linux/dev/glue/$(am__dirstamp)
+linux/dev/glue/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/glue/$(DEPDIR)
+       @: > linux/dev/glue/$(DEPDIR)/$(am__dirstamp)
+linux/dev/glue/liblinux_a-misc.$(OBJEXT):  \
+       linux/dev/glue/$(am__dirstamp) \
+       linux/dev/glue/$(DEPDIR)/$(am__dirstamp)
+linux/dev/kernel/liblinux_a-sched.$(OBJEXT):  \
+       linux/dev/kernel/$(am__dirstamp) \
+       linux/dev/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/dev/glue/liblinux_a-kmem.$(OBJEXT):  \
+       linux/dev/glue/$(am__dirstamp) \
+       linux/dev/glue/$(DEPDIR)/$(am__dirstamp)
+linux/dev/glue/liblinux_a-block.$(OBJEXT):  \
+       linux/dev/glue/$(am__dirstamp) \
+       linux/dev/glue/$(DEPDIR)/$(am__dirstamp)
+linux/dev/arch/i386/kernel/liblinux_a-setup.$(OBJEXT):  \
+       linux/dev/arch/i386/kernel/$(am__dirstamp) \
+       linux/dev/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/pci/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/pci
+       @: > linux/src/drivers/pci/$(am__dirstamp)
+linux/src/drivers/pci/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/pci/$(DEPDIR)
+       @: > linux/src/drivers/pci/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/pci/liblinux_a-pci.$(OBJEXT):  \
+       linux/src/drivers/pci/$(am__dirstamp) \
+       linux/src/drivers/pci/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/block/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/drivers/block
+       @: > linux/dev/drivers/block/$(am__dirstamp)
+linux/dev/drivers/block/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/drivers/block/$(DEPDIR)
+       @: > linux/dev/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/block/liblinux_a-genhd.$(OBJEXT):  \
+       linux/dev/drivers/block/$(am__dirstamp) \
+       linux/dev/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/block/liblinux_a-floppy.$(OBJEXT):  \
+       linux/dev/drivers/block/$(am__dirstamp) \
+       linux/dev/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/block/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/block
+       @: > linux/src/drivers/block/$(am__dirstamp)
+linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/block/$(DEPDIR)
+       @: > linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/block/liblinux_a-cmd640.$(OBJEXT):  \
+       linux/src/drivers/block/$(am__dirstamp) \
+       linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/block/liblinux_a-ide-cd.$(OBJEXT):  \
+       linux/src/drivers/block/$(am__dirstamp) \
+       linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/block/liblinux_a-ide.$(OBJEXT):  \
+       linux/src/drivers/block/$(am__dirstamp) \
+       linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/block/liblinux_a-ahci.$(OBJEXT):  \
+       linux/dev/drivers/block/$(am__dirstamp) \
+       linux/dev/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/block/liblinux_a-rz1000.$(OBJEXT):  \
+       linux/src/drivers/block/$(am__dirstamp) \
+       linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/block/liblinux_a-triton.$(OBJEXT):  \
+       linux/src/drivers/block/$(am__dirstamp) \
+       linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/scsi
+       @: > linux/src/drivers/scsi/$(am__dirstamp)
+linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/scsi/$(DEPDIR)
+       @: > linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-constants.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-hosts.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-scsi.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-scsi_ioctl.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-scsi_proc.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-scsicam.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-sd.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-sd_ioctl.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-sr.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-sr_ioctl.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-53c78xx.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-AM53C974.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-BusLogic.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-NCR53c406a.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-advansys.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-aha152x.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-aha1542.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-aha1740.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-aic7xxx.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-dtc.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-eata.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/scsi/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/drivers/scsi
+       @: > linux/dev/drivers/scsi/$(am__dirstamp)
+linux/dev/drivers/scsi/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/drivers/scsi/$(DEPDIR)
+       @: > linux/dev/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/scsi/liblinux_a-eata_dma.$(OBJEXT):  \
+       linux/dev/drivers/scsi/$(am__dirstamp) \
+       linux/dev/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-eata_pio.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-fdomain.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/scsi/liblinux_a-g_NCR5380.$(OBJEXT):  \
+       linux/dev/drivers/scsi/$(am__dirstamp) \
+       linux/dev/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-gdth.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-in2000.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-ncr53c8xx.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-pas16.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-ppa.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-qlogicfas.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-qlogicisp.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-seagate.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-sym53c8xx.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-t128.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-tmscsim.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-u14-34f.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-ultrastor.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/scsi/liblinux_a-wd7000.$(OBJEXT):  \
+       linux/src/drivers/scsi/$(am__dirstamp) \
+       linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/net/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/drivers/net
+       @: > linux/dev/drivers/net/$(am__dirstamp)
+linux/dev/drivers/net/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/drivers/net/$(DEPDIR)
+       @: > linux/dev/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/net/liblinux_a-auto_irq.$(OBJEXT):  \
+       linux/dev/drivers/net/$(am__dirstamp) \
+       linux/dev/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/dev/glue/liblinux_a-net.$(OBJEXT):  \
+       linux/dev/glue/$(am__dirstamp) \
+       linux/dev/glue/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/net/liblinux_a-Space.$(OBJEXT):  \
+       linux/dev/drivers/net/$(am__dirstamp) \
+       linux/dev/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/dev/net/core/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/net/core
+       @: > linux/dev/net/core/$(am__dirstamp)
+linux/dev/net/core/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/dev/net/core/$(DEPDIR)
+       @: > linux/dev/net/core/$(DEPDIR)/$(am__dirstamp)
+linux/dev/net/core/liblinux_a-dev.$(OBJEXT):  \
+       linux/dev/net/core/$(am__dirstamp) \
+       linux/dev/net/core/$(DEPDIR)/$(am__dirstamp)
+linux/dev/drivers/net/liblinux_a-net_init.$(OBJEXT):  \
+       linux/dev/drivers/net/$(am__dirstamp) \
+       linux/dev/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/net
+       @: > linux/src/drivers/net/$(am__dirstamp)
+linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/src/drivers/net/$(DEPDIR)
+       @: > linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-pci-scan.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-3c501.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-3c503.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-8390.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-3c505.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-3c507.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-3c509.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-3c59x.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-3c515.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-ac3200.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-apricot.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-at1700.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-atp.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-de4x5.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-de600.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-de620.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-depca.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-e2100.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-eepro.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-eepro100.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-eexpress.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-epic100.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-eth16i.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-ewrk3.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-fmv18x.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-hamachi.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-hp-plus.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-hp.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-hp100.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-intel-gige.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-lance.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-myson803.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-natsemi.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-ne.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-ne2k-pci.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-ni52.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-ni65.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-ns820.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-pcnet32.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-rtl8139.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-seeq8005.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-sis900.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-sk_g16.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-smc-ultra.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-smc-ultra32.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-starfire.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-sundance.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-tlan.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-tulip.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-via-rhine.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-wavelan.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-wd.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-winbond-840.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-yellowfin.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_a-znet.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/src/arch/i386/lib/liblinux_a-semaphore.$(OBJEXT):  \
+       linux/src/arch/i386/lib/$(am__dirstamp) \
+       linux/src/arch/i386/lib/$(DEPDIR)/$(am__dirstamp)
+
+liblinux.a: $(liblinux_a_OBJECTS) $(liblinux_a_DEPENDENCIES) 
$(EXTRA_liblinux_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f liblinux.a
+       $(AM_V_AR)$(liblinux_a_AR) liblinux.a $(liblinux_a_OBJECTS) 
$(liblinux_a_LIBADD)
+       $(AM_V_at)$(RANLIB) liblinux.a
+linux/pcmcia-cs/clients/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/clients
+       @: > linux/pcmcia-cs/clients/$(am__dirstamp)
+linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/clients/$(DEPDIR)
+       @: > linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.$(OBJEXT):  \
+       linux/src/drivers/net/$(am__dirstamp) \
+       linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/clients/$(am__dirstamp) \
+       linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+
+liblinux_pcmcia_cs_clients.a: $(liblinux_pcmcia_cs_clients_a_OBJECTS) 
$(liblinux_pcmcia_cs_clients_a_DEPENDENCIES) 
$(EXTRA_liblinux_pcmcia_cs_clients_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f liblinux_pcmcia_cs_clients.a
+       $(AM_V_AR)$(liblinux_pcmcia_cs_clients_a_AR) 
liblinux_pcmcia_cs_clients.a $(liblinux_pcmcia_cs_clients_a_OBJECTS) 
$(liblinux_pcmcia_cs_clients_a_LIBADD)
+       $(AM_V_at)$(RANLIB) liblinux_pcmcia_cs_clients.a
+linux/pcmcia-cs/glue/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/glue
+       @: > linux/pcmcia-cs/glue/$(am__dirstamp)
+linux/pcmcia-cs/glue/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/glue/$(DEPDIR)
+       @: > linux/pcmcia-cs/glue/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.$(OBJEXT):  \
+       linux/pcmcia-cs/glue/$(am__dirstamp) \
+       linux/pcmcia-cs/glue/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/modules
+       @: > linux/pcmcia-cs/modules/$(am__dirstamp)
+linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/modules/$(DEPDIR)
+       @: > linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.$(OBJEXT):  \
+       linux/pcmcia-cs/modules/$(am__dirstamp) \
+       linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.$(OBJEXT):  \
+       linux/pcmcia-cs/modules/$(am__dirstamp) \
+       linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.$(OBJEXT):  \
+       linux/pcmcia-cs/modules/$(am__dirstamp) \
+       linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.$(OBJEXT):  \
+       linux/pcmcia-cs/modules/$(am__dirstamp) \
+       linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.$(OBJEXT):  \
+       linux/pcmcia-cs/modules/$(am__dirstamp) \
+       linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.$(OBJEXT):  \
+       linux/pcmcia-cs/modules/$(am__dirstamp) \
+       linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.$(OBJEXT):  \
+       linux/pcmcia-cs/modules/$(am__dirstamp) \
+       linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+
+liblinux_pcmcia_cs_modules.a: $(liblinux_pcmcia_cs_modules_a_OBJECTS) 
$(liblinux_pcmcia_cs_modules_a_DEPENDENCIES) 
$(EXTRA_liblinux_pcmcia_cs_modules_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f liblinux_pcmcia_cs_modules.a
+       $(AM_V_AR)$(liblinux_pcmcia_cs_modules_a_AR) 
liblinux_pcmcia_cs_modules.a $(liblinux_pcmcia_cs_modules_a_OBJECTS) 
$(liblinux_pcmcia_cs_modules_a_LIBADD)
+       $(AM_V_at)$(RANLIB) liblinux_pcmcia_cs_modules.a
+linux/pcmcia-cs/wireless/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/wireless
+       @: > linux/pcmcia-cs/wireless/$(am__dirstamp)
+linux/pcmcia-cs/wireless/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) linux/pcmcia-cs/wireless/$(DEPDIR)
+       @: > linux/pcmcia-cs/wireless/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.$(OBJEXT):  \
+       linux/pcmcia-cs/wireless/$(am__dirstamp) \
+       linux/pcmcia-cs/wireless/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.$(OBJEXT):  \
+       linux/pcmcia-cs/wireless/$(am__dirstamp) \
+       linux/pcmcia-cs/wireless/$(DEPDIR)/$(am__dirstamp)
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.$(OBJEXT):  \
+       linux/pcmcia-cs/wireless/$(am__dirstamp) \
+       linux/pcmcia-cs/wireless/$(DEPDIR)/$(am__dirstamp)
+
+liblinux_pcmcia_cs_wireless.a: $(liblinux_pcmcia_cs_wireless_a_OBJECTS) 
$(liblinux_pcmcia_cs_wireless_a_DEPENDENCIES) 
$(EXTRA_liblinux_pcmcia_cs_wireless_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f liblinux_pcmcia_cs_wireless.a
+       $(AM_V_AR)$(liblinux_pcmcia_cs_wireless_a_AR) 
liblinux_pcmcia_cs_wireless.a $(liblinux_pcmcia_cs_wireless_a_OBJECTS) 
$(liblinux_pcmcia_cs_wireless_a_LIBADD)
+       $(AM_V_at)$(RANLIB) liblinux_pcmcia_cs_wireless.a
+install-exec_bootPROGRAMS: $(exec_boot_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       @list='$(exec_boot_PROGRAMS)'; test -n "$(exec_bootdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(exec_bootdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(exec_bootdir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+             echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files 
'$(DESTDIR)$(exec_bootdir)$$dir'"; \
+             $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files 
"$(DESTDIR)$(exec_bootdir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-exec_bootPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(exec_boot_PROGRAMS)'; test -n "$(exec_bootdir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(exec_bootdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(exec_bootdir)" && rm -f $$files
+
+clean-exec_bootPROGRAMS:
+       -test -z "$(exec_boot_PROGRAMS)" || rm -f $(exec_boot_PROGRAMS)
+
+clean-noinstPROGRAMS:
+       -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
+gnumach$(EXEEXT): $(gnumach_OBJECTS) $(gnumach_DEPENDENCIES) 
$(EXTRA_gnumach_DEPENDENCIES) 
+       @rm -f gnumach$(EXEEXT)
+       $(AM_V_GEN)$(gnumach_LINK) $(gnumach_OBJECTS) $(gnumach_LDADD) $(LIBS)
+
+gnumach.o$(EXEEXT): $(gnumach_o_OBJECTS) $(gnumach_o_DEPENDENCIES) 
$(EXTRA_gnumach_o_DEPENDENCIES) 
+       @rm -f gnumach.o$(EXEEXT)
+       $(AM_V_GEN)$(gnumach_o_LINK) $(gnumach_o_OBJECTS) $(gnumach_o_LDADD) 
$(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+       -rm -f chips/*.$(OBJEXT)
+       -rm -f ddb/*.$(OBJEXT)
+       -rm -f device/*.$(OBJEXT)
+       -rm -f i386/i386/*.$(OBJEXT)
+       -rm -f i386/i386at/*.$(OBJEXT)
+       -rm -f i386/intel/*.$(OBJEXT)
+       -rm -f i386/xen/*.$(OBJEXT)
+       -rm -f ipc/*.$(OBJEXT)
+       -rm -f kern/*.$(OBJEXT)
+       -rm -f linux/dev/arch/i386/kernel/*.$(OBJEXT)
+       -rm -f linux/dev/drivers/block/*.$(OBJEXT)
+       -rm -f linux/dev/drivers/net/*.$(OBJEXT)
+       -rm -f linux/dev/drivers/scsi/*.$(OBJEXT)
+       -rm -f linux/dev/glue/*.$(OBJEXT)
+       -rm -f linux/dev/init/*.$(OBJEXT)
+       -rm -f linux/dev/kernel/*.$(OBJEXT)
+       -rm -f linux/dev/lib/*.$(OBJEXT)
+       -rm -f linux/dev/net/core/*.$(OBJEXT)
+       -rm -f linux/pcmcia-cs/clients/*.$(OBJEXT)
+       -rm -f linux/pcmcia-cs/glue/*.$(OBJEXT)
+       -rm -f linux/pcmcia-cs/modules/*.$(OBJEXT)
+       -rm -f linux/pcmcia-cs/wireless/*.$(OBJEXT)
+       -rm -f linux/src/arch/i386/kernel/*.$(OBJEXT)
+       -rm -f linux/src/arch/i386/lib/*.$(OBJEXT)
+       -rm -f linux/src/drivers/block/*.$(OBJEXT)
+       -rm -f linux/src/drivers/net/*.$(OBJEXT)
+       -rm -f linux/src/drivers/pci/*.$(OBJEXT)
+       -rm -f linux/src/drivers/scsi/*.$(OBJEXT)
+       -rm -f linux/src/lib/*.$(OBJEXT)
+       -rm -f util/*.$(OBJEXT)
+       -rm -f vm/*.$(OBJEXT)
+       -rm -f xen/*.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/i386at/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/intel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/intel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/xen/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/xen/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/xen/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/arch/i386/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/arch/i386/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/dev/glue/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/dev/glue/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/dev/glue/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/dev/glue/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/dev/init/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/dev/init/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/dev/lib/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/dev/net/core/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/clients/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/glue/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/modules/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/modules/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/modules/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/modules/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/modules/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/modules/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/modules/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/wireless/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/wireless/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/pcmcia-cs/wireless/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/arch/i386/kernel/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/arch/i386/lib/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/arch/i386/lib/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/block/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/net/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/pci/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ 
@address@hidden/src/drivers/scsi/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/src/lib/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
+
+.S.o:
address@hidden@ $(AM_V_CPPAS)depbase=`echo $@ | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
address@hidden@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
address@hidden@ $(am__mv) $$depbase.Tpo $$depbase.Po
address@hidden@@am__fastdepCCAS_FALSE@  $(AM_V_CPPAS)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCCAS_FALSE@  DEPDIR=$(DEPDIR) $(CCASDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CPPASCOMPILE) -c -o $@ $<
+
+.S.obj:
address@hidden@ $(AM_V_CPPAS)depbase=`echo $@ | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
address@hidden@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ 
`$(CYGPATH_W) '$<'` &&\
address@hidden@ $(am__mv) $$depbase.Tpo $$depbase.Po
address@hidden@@am__fastdepCCAS_FALSE@  $(AM_V_CPPAS)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCCAS_FALSE@  DEPDIR=$(DEPDIR) $(CCASDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+linux/src/arch/i386/lib/liblinux_a-semaphore.o: 
linux/src/arch/i386/lib/semaphore.S
address@hidden@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CCASFLAGS) $(CCASFLAGS) -MT 
linux/src/arch/i386/lib/liblinux_a-semaphore.o -MD -MP -MF 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-semaphore.Tpo -c -o 
linux/src/arch/i386/lib/liblinux_a-semaphore.o `test -f 
'linux/src/arch/i386/lib/semaphore.S' || echo 
'$(srcdir)/'`linux/src/arch/i386/lib/semaphore.S
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-semaphore.Tpo 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-semaphore.Po
address@hidden@@am__fastdepCCAS_FALSE@  
$(AM_V_CPPAS)source='linux/src/arch/i386/lib/semaphore.S' 
object='linux/src/arch/i386/lib/liblinux_a-semaphore.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCCAS_FALSE@  DEPDIR=$(DEPDIR) $(CCASDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) 
$(INCLUDES) $(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CCASFLAGS) 
$(CCASFLAGS) -c -o linux/src/arch/i386/lib/liblinux_a-semaphore.o `test -f 
'linux/src/arch/i386/lib/semaphore.S' || echo 
'$(srcdir)/'`linux/src/arch/i386/lib/semaphore.S
+
+linux/src/arch/i386/lib/liblinux_a-semaphore.obj: 
linux/src/arch/i386/lib/semaphore.S
address@hidden@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CCASFLAGS) $(CCASFLAGS) -MT 
linux/src/arch/i386/lib/liblinux_a-semaphore.obj -MD -MP -MF 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-semaphore.Tpo -c -o 
linux/src/arch/i386/lib/liblinux_a-semaphore.obj `if test -f 
'linux/src/arch/i386/lib/semaphore.S'; then $(CYGPATH_W) 
'linux/src/arch/i386/lib/semaphore.S'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/arch/i386/ [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-semaphore.Tpo 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-semaphore.Po
address@hidden@@am__fastdepCCAS_FALSE@  
$(AM_V_CPPAS)source='linux/src/arch/i386/lib/semaphore.S' 
object='linux/src/arch/i386/lib/liblinux_a-semaphore.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCCAS_FALSE@  DEPDIR=$(DEPDIR) $(CCASDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) 
$(INCLUDES) $(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CCASFLAGS) 
$(CCASFLAGS) -c -o linux/src/arch/i386/lib/liblinux_a-semaphore.obj `if test -f 
'linux/src/arch/i386/lib/semaphore.S'; then $(CYGPATH_W) 
'linux/src/arch/i386/lib/semaphore.S'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/arch/i386/lib/semaphore.S'; fi`
+
+.c.o:
address@hidden@ $(AM_V_CC)depbase=`echo $@ | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
address@hidden@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
address@hidden@ $(am__mv) $$depbase.Tpo $$depbase.Po
address@hidden@@am__fastdepCC_FALSE@    $(AM_V_CC)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
address@hidden@ $(AM_V_CC)depbase=`echo $@ | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
address@hidden@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ 
`$(CYGPATH_W) '$<'` &&\
address@hidden@ $(am__mv) $$depbase.Tpo $$depbase.Po
address@hidden@@am__fastdepCC_FALSE@    $(AM_V_CC)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.o: 
vm/memory_object_user.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.o -MD -MP -MF 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_user.user.defs.Tpo -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.o `test -f 
'vm/memory_object_user.user.defs.c' || echo 
'$(srcdir)/'`vm/memory_object_user.user.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_user.user.defs.Tpo 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_user.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='vm/memory_object_user.user.defs.c' 
object='vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.o `test -f 
'vm/memory_object_user.user.defs.c' || echo 
'$(srcdir)/'`vm/memory_object_user.user.defs.c
+
+vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.obj: 
vm/memory_object_user.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.obj -MD -MP -MF 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_user.user.defs.Tpo -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.obj `if test -f 
'vm/memory_object_user.user.defs.c'; then $(CYGPATH_W) 
'vm/memory_object_user.user.defs.c'; else $(CYGPATH_W) '$(srcdir)/vm/memo [...]
address@hidden@ $(AM_V_at)$(am__mv) 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_user.user.defs.Tpo 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_user.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='vm/memory_object_user.user.defs.c' 
object='vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_user.user.defs.obj `if test -f 
'vm/memory_object_user.user.defs.c'; then $(CYGPATH_W) 
'vm/memory_object_user.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/vm/memory_object_user.user.defs.c'; fi`
+
+vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.o: 
vm/memory_object_default.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.o -MD -MP -MF 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_default.user.defs.Tpo -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.o `test -f 
'vm/memory_object_default.user.defs.c' || echo 
'$(srcdir)/'`vm/memory_object_default.user.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_default.user.defs.Tpo 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_default.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='vm/memory_object_default.user.defs.c' 
object='vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.o `test -f 
'vm/memory_object_default.user.defs.c' || echo 
'$(srcdir)/'`vm/memory_object_default.user.defs.c
+
+vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.obj: 
vm/memory_object_default.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.obj -MD -MP -MF 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_default.user.defs.Tpo -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.obj `if test -f 
'vm/memory_object_default.user.defs.c'; then $(CYGPATH_W) 
'vm/memory_object_default.user.defs.c'; else $(CYGPATH_W) '$( [...]
address@hidden@ $(AM_V_at)$(am__mv) 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_default.user.defs.Tpo 
vm/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_default.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='vm/memory_object_default.user.defs.c' 
object='vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.obj `if test -f 
'vm/memory_object_default.user.defs.c'; then $(CYGPATH_W) 
'vm/memory_object_default.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/vm/memory_object_default.user.defs.c'; fi`
+
+device/lib_dep_tr_for_defs_a-device_reply.user.defs.o: 
device/device_reply.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-device_reply.user.defs.o -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_reply.user.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-device_reply.user.defs.o `test -f 
'device/device_reply.user.defs.c' || echo 
'$(srcdir)/'`device/device_reply.user.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_reply.user.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_reply.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/device_reply.user.defs.c' 
object='device/lib_dep_tr_for_defs_a-device_reply.user.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-device_reply.user.defs.o `test -f 
'device/device_reply.user.defs.c' || echo 
'$(srcdir)/'`device/device_reply.user.defs.c
+
+device/lib_dep_tr_for_defs_a-device_reply.user.defs.obj: 
device/device_reply.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-device_reply.user.defs.obj -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_reply.user.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-device_reply.user.defs.obj `if test -f 
'device/device_reply.user.defs.c'; then $(CYGPATH_W) 
'device/device_reply.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/device/device_rep [...]
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_reply.user.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_reply.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/device_reply.user.defs.c' 
object='device/lib_dep_tr_for_defs_a-device_reply.user.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-device_reply.user.defs.obj `if test -f 
'device/device_reply.user.defs.c'; then $(CYGPATH_W) 
'device/device_reply.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/device/device_reply.user.defs.c'; fi`
+
+device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.o: 
device/memory_object_reply.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.o -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.o `test -f 
'device/memory_object_reply.user.defs.c' || echo 
'$(srcdir)/'`device/memory_object_reply.user.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/memory_object_reply.user.defs.c' 
object='device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.o `test -f 
'device/memory_object_reply.user.defs.c' || echo 
'$(srcdir)/'`device/memory_object_reply.user.defs.c
+
+device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj: 
device/memory_object_reply.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj `if test -f 
'device/memory_object_reply.user.defs.c'; then $(CYGPATH_W) 
'device/memory_object_reply.user.defs.c'; else $(CYGP [...]
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/memory_object_reply.user.defs.c' 
object='device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj `if test -f 
'device/memory_object_reply.user.defs.c'; then $(CYGPATH_W) 
'device/memory_object_reply.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/device/memory_object_reply.user.defs.c'; fi`
+
+device/lib_dep_tr_for_defs_a-device.server.defs.o: device/device.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-device.server.defs.o -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-device.server.defs.o `test -f 
'device/device.server.defs.c' || echo '$(srcdir)/'`device/device.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/device.server.defs.c' 
object='device/lib_dep_tr_for_defs_a-device.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-device.server.defs.o `test -f 
'device/device.server.defs.c' || echo '$(srcdir)/'`device/device.server.defs.c
+
+device/lib_dep_tr_for_defs_a-device.server.defs.obj: 
device/device.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-device.server.defs.obj -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-device.server.defs.obj `if test -f 
'device/device.server.defs.c'; then $(CYGPATH_W) 'device/device.server.defs.c'; 
else $(CYGPATH_W) '$(srcdir)/device/device.server.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/device.server.defs.c' 
object='device/lib_dep_tr_for_defs_a-device.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-device.server.defs.obj `if test -f 
'device/device.server.defs.c'; then $(CYGPATH_W) 'device/device.server.defs.c'; 
else $(CYGPATH_W) '$(srcdir)/device/device.server.defs.c'; fi`
+
+device/lib_dep_tr_for_defs_a-device_pager.server.defs.o: 
device/device_pager.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-device_pager.server.defs.o -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_pager.server.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-device_pager.server.defs.o `test -f 
'device/device_pager.server.defs.c' || echo 
'$(srcdir)/'`device/device_pager.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_pager.server.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_pager.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/device_pager.server.defs.c' 
object='device/lib_dep_tr_for_defs_a-device_pager.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-device_pager.server.defs.o `test -f 
'device/device_pager.server.defs.c' || echo 
'$(srcdir)/'`device/device_pager.server.defs.c
+
+device/lib_dep_tr_for_defs_a-device_pager.server.defs.obj: 
device/device_pager.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-device_pager.server.defs.obj -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_pager.server.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-device_pager.server.defs.obj `if test -f 
'device/device_pager.server.defs.c'; then $(CYGPATH_W) 
'device/device_pager.server.defs.c'; else $(CYGPATH_W) '$(srcdir)/device/ [...]
address@hidden@ $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_pager.server.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device_pager.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='device/device_pager.server.defs.c' 
object='device/lib_dep_tr_for_defs_a-device_pager.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
device/lib_dep_tr_for_defs_a-device_pager.server.defs.obj `if test -f 
'device/device_pager.server.defs.c'; then $(CYGPATH_W) 
'device/device_pager.server.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/device/device_pager.server.defs.c'; fi`
+
+ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.o: ipc/mach_port.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.o -MD -MP -MF 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_port.server.defs.Tpo -c -o 
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.o `test -f 
'ipc/mach_port.server.defs.c' || echo '$(srcdir)/'`ipc/mach_port.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_port.server.defs.Tpo 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_port.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='ipc/mach_port.server.defs.c' 
object='ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.o `test -f 
'ipc/mach_port.server.defs.c' || echo '$(srcdir)/'`ipc/mach_port.server.defs.c
+
+ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.obj: 
ipc/mach_port.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.obj -MD -MP -MF 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_port.server.defs.Tpo -c -o 
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.obj `if test -f 
'ipc/mach_port.server.defs.c'; then $(CYGPATH_W) 'ipc/mach_port.server.defs.c'; 
else $(CYGPATH_W) '$(srcdir)/ipc/mach_port.server.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_port.server.defs.Tpo 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_port.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='ipc/mach_port.server.defs.c' 
object='ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.obj `if test -f 
'ipc/mach_port.server.defs.c'; then $(CYGPATH_W) 'ipc/mach_port.server.defs.c'; 
else $(CYGPATH_W) '$(srcdir)/ipc/mach_port.server.defs.c'; fi`
+
+kern/lib_dep_tr_for_defs_a-mach.server.defs.o: kern/mach.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach.server.defs.o -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach.server.defs.o `test -f 
'kern/mach.server.defs.c' || echo '$(srcdir)/'`kern/mach.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach.server.defs.o `test -f 
'kern/mach.server.defs.c' || echo '$(srcdir)/'`kern/mach.server.defs.c
+
+kern/lib_dep_tr_for_defs_a-mach.server.defs.obj: kern/mach.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach.server.defs.obj -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach.server.defs.obj `if test -f 
'kern/mach.server.defs.c'; then $(CYGPATH_W) 'kern/mach.server.defs.c'; else 
$(CYGPATH_W) '$(srcdir)/kern/mach.server.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach.server.defs.obj `if test -f 
'kern/mach.server.defs.c'; then $(CYGPATH_W) 'kern/mach.server.defs.c'; else 
$(CYGPATH_W) '$(srcdir)/kern/mach.server.defs.c'; fi`
+
+kern/lib_dep_tr_for_defs_a-mach4.server.defs.o: kern/mach4.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach4.server.defs.o -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach4.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach4.server.defs.o `test -f 
'kern/mach4.server.defs.c' || echo '$(srcdir)/'`kern/mach4.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach4.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach4.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach4.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach4.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach4.server.defs.o `test -f 
'kern/mach4.server.defs.c' || echo '$(srcdir)/'`kern/mach4.server.defs.c
+
+kern/lib_dep_tr_for_defs_a-mach4.server.defs.obj: kern/mach4.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach4.server.defs.obj -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach4.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach4.server.defs.obj `if test -f 
'kern/mach4.server.defs.c'; then $(CYGPATH_W) 'kern/mach4.server.defs.c'; else 
$(CYGPATH_W) '$(srcdir)/kern/mach4.server.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach4.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach4.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach4.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach4.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach4.server.defs.obj `if test -f 
'kern/mach4.server.defs.c'; then $(CYGPATH_W) 'kern/mach4.server.defs.c'; else 
$(CYGPATH_W) '$(srcdir)/kern/mach4.server.defs.c'; fi`
+
+kern/lib_dep_tr_for_defs_a-gnumach.server.defs.o: kern/gnumach.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-gnumach.server.defs.o -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-gnumach.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-gnumach.server.defs.o `test -f 
'kern/gnumach.server.defs.c' || echo '$(srcdir)/'`kern/gnumach.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-gnumach.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-gnumach.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/gnumach.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-gnumach.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-gnumach.server.defs.o `test -f 
'kern/gnumach.server.defs.c' || echo '$(srcdir)/'`kern/gnumach.server.defs.c
+
+kern/lib_dep_tr_for_defs_a-gnumach.server.defs.obj: kern/gnumach.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-gnumach.server.defs.obj -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-gnumach.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-gnumach.server.defs.obj `if test -f 
'kern/gnumach.server.defs.c'; then $(CYGPATH_W) 'kern/gnumach.server.defs.c'; 
else $(CYGPATH_W) '$(srcdir)/kern/gnumach.server.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-gnumach.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-gnumach.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/gnumach.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-gnumach.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-gnumach.server.defs.obj `if test -f 
'kern/gnumach.server.defs.c'; then $(CYGPATH_W) 'kern/gnumach.server.defs.c'; 
else $(CYGPATH_W) '$(srcdir)/kern/gnumach.server.defs.c'; fi`
+
+kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.o: 
kern/mach_debug.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.o -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_debug.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.o `test -f 
'kern/mach_debug.server.defs.c' || echo 
'$(srcdir)/'`kern/mach_debug.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_debug.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_debug.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach_debug.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.o `test -f 
'kern/mach_debug.server.defs.c' || echo 
'$(srcdir)/'`kern/mach_debug.server.defs.c
+
+kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.obj: 
kern/mach_debug.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.obj -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_debug.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.obj `if test -f 
'kern/mach_debug.server.defs.c'; then $(CYGPATH_W) 
'kern/mach_debug.server.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/kern/mach_debug.server.defs [...]
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_debug.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_debug.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach_debug.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.obj `if test -f 
'kern/mach_debug.server.defs.c'; then $(CYGPATH_W) 
'kern/mach_debug.server.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/kern/mach_debug.server.defs.c'; fi`
+
+kern/lib_dep_tr_for_defs_a-mach_host.server.defs.o: 
kern/mach_host.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.o -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_host.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.o `test -f 
'kern/mach_host.server.defs.c' || echo '$(srcdir)/'`kern/mach_host.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_host.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_host.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach_host.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach_host.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.o `test -f 
'kern/mach_host.server.defs.c' || echo '$(srcdir)/'`kern/mach_host.server.defs.c
+
+kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj: 
kern/mach_host.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_host.server.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj `if test -f 
'kern/mach_host.server.defs.c'; then $(CYGPATH_W) 
'kern/mach_host.server.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/kern/mach_host.server.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_host.server.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_host.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/mach_host.server.defs.c' 
object='kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj `if test -f 
'kern/mach_host.server.defs.c'; then $(CYGPATH_W) 
'kern/mach_host.server.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/kern/mach_host.server.defs.c'; fi`
+
+i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o: 
i386/i386/mach_i386.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o -MD -MP -MF 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo -c -o 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o `test -f 
'i386/i386/mach_i386.server.defs.c' || echo 
'$(srcdir)/'`i386/i386/mach_i386.server.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='i386/i386/mach_i386.server.defs.c' 
object='i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o `test -f 
'i386/i386/mach_i386.server.defs.c' || echo 
'$(srcdir)/'`i386/i386/mach_i386.server.defs.c
+
+i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.obj: 
i386/i386/mach_i386.server.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.obj -MD -MP -MF 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo -c -o 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.obj `if test -f 
'i386/i386/mach_i386.server.defs.c'; then $(CYGPATH_W) 
'i386/i386/mach_i386.server.defs.c'; else $(CYGPATH_W) '$(srcdir)/i386/i3 [...]
address@hidden@ $(AM_V_at)$(am__mv) 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='i386/i386/mach_i386.server.defs.c' 
object='i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.obj `if test -f 
'i386/i386/mach_i386.server.defs.c'; then $(CYGPATH_W) 
'i386/i386/mach_i386.server.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/i386/i386/mach_i386.server.defs.c'; fi`
+
+linux/dev/init/liblinux_a-version.o: linux/dev/init/version.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/init/liblinux_a-version.o -MD -MP -MF 
linux/dev/init/$(DEPDIR)/liblinux_a-version.Tpo -c -o 
linux/dev/init/liblinux_a-version.o `test -f 'linux/dev/init/version.c' || echo 
'$(srcdir)/'`linux/dev/init/version.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/init/$(DEPDIR)/liblinux_a-version.Tpo 
linux/dev/init/$(DEPDIR)/liblinux_a-version.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/init/version.c' 
object='linux/dev/init/liblinux_a-version.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/init/liblinux_a-version.o `test -f 'linux/dev/init/version.c' || echo 
'$(srcdir)/'`linux/dev/init/version.c
+
+linux/dev/init/liblinux_a-version.obj: linux/dev/init/version.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/init/liblinux_a-version.obj -MD -MP -MF 
linux/dev/init/$(DEPDIR)/liblinux_a-version.Tpo -c -o 
linux/dev/init/liblinux_a-version.obj `if test -f 'linux/dev/init/version.c'; 
then $(CYGPATH_W) 'linux/dev/init/version.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/init/version.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/init/$(DEPDIR)/liblinux_a-version.Tpo 
linux/dev/init/$(DEPDIR)/liblinux_a-version.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/init/version.c' 
object='linux/dev/init/liblinux_a-version.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/init/liblinux_a-version.obj `if test -f 'linux/dev/init/version.c'; 
then $(CYGPATH_W) 'linux/dev/init/version.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/init/version.c'; fi`
+
+linux/dev/kernel/liblinux_a-softirq.o: linux/dev/kernel/softirq.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-softirq.o -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-softirq.Tpo -c -o 
linux/dev/kernel/liblinux_a-softirq.o `test -f 'linux/dev/kernel/softirq.c' || 
echo '$(srcdir)/'`linux/dev/kernel/softirq.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-softirq.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-softirq.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/softirq.c' 
object='linux/dev/kernel/liblinux_a-softirq.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-softirq.o `test -f 'linux/dev/kernel/softirq.c' || 
echo '$(srcdir)/'`linux/dev/kernel/softirq.c
+
+linux/dev/kernel/liblinux_a-softirq.obj: linux/dev/kernel/softirq.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-softirq.obj -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-softirq.Tpo -c -o 
linux/dev/kernel/liblinux_a-softirq.obj `if test -f 
'linux/dev/kernel/softirq.c'; then $(CYGPATH_W) 'linux/dev/kernel/softirq.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/dev/kernel/softirq.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-softirq.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-softirq.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/softirq.c' 
object='linux/dev/kernel/liblinux_a-softirq.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-softirq.obj `if test -f 
'linux/dev/kernel/softirq.c'; then $(CYGPATH_W) 'linux/dev/kernel/softirq.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/dev/kernel/softirq.c'; fi`
+
+linux/src/arch/i386/lib/liblinux_a-delay.o: linux/src/arch/i386/lib/delay.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/arch/i386/lib/liblinux_a-delay.o -MD -MP -MF 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-delay.Tpo -c -o 
linux/src/arch/i386/lib/liblinux_a-delay.o `test -f 
'linux/src/arch/i386/lib/delay.c' || echo 
'$(srcdir)/'`linux/src/arch/i386/lib/delay.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-delay.Tpo 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-delay.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/arch/i386/lib/delay.c' 
object='linux/src/arch/i386/lib/liblinux_a-delay.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/arch/i386/lib/liblinux_a-delay.o `test -f 
'linux/src/arch/i386/lib/delay.c' || echo 
'$(srcdir)/'`linux/src/arch/i386/lib/delay.c
+
+linux/src/arch/i386/lib/liblinux_a-delay.obj: linux/src/arch/i386/lib/delay.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/arch/i386/lib/liblinux_a-delay.obj -MD -MP -MF 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-delay.Tpo -c -o 
linux/src/arch/i386/lib/liblinux_a-delay.obj `if test -f 
'linux/src/arch/i386/lib/delay.c'; then $(CYGPATH_W) 
'linux/src/arch/i386/lib/delay.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/arch/i386/lib/delay.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-delay.Tpo 
linux/src/arch/i386/lib/$(DEPDIR)/liblinux_a-delay.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/arch/i386/lib/delay.c' 
object='linux/src/arch/i386/lib/liblinux_a-delay.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/arch/i386/lib/liblinux_a-delay.obj `if test -f 
'linux/src/arch/i386/lib/delay.c'; then $(CYGPATH_W) 
'linux/src/arch/i386/lib/delay.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/arch/i386/lib/delay.c'; fi`
+
+linux/dev/kernel/liblinux_a-dma.o: linux/dev/kernel/dma.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-dma.o -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-dma.Tpo -c -o 
linux/dev/kernel/liblinux_a-dma.o `test -f 'linux/dev/kernel/dma.c' || echo 
'$(srcdir)/'`linux/dev/kernel/dma.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-dma.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-dma.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/dma.c' 
object='linux/dev/kernel/liblinux_a-dma.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-dma.o `test -f 'linux/dev/kernel/dma.c' || echo 
'$(srcdir)/'`linux/dev/kernel/dma.c
+
+linux/dev/kernel/liblinux_a-dma.obj: linux/dev/kernel/dma.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-dma.obj -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-dma.Tpo -c -o 
linux/dev/kernel/liblinux_a-dma.obj `if test -f 'linux/dev/kernel/dma.c'; then 
$(CYGPATH_W) 'linux/dev/kernel/dma.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/kernel/dma.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-dma.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-dma.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/dma.c' 
object='linux/dev/kernel/liblinux_a-dma.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-dma.obj `if test -f 'linux/dev/kernel/dma.c'; then 
$(CYGPATH_W) 'linux/dev/kernel/dma.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/kernel/dma.c'; fi`
+
+linux/dev/kernel/liblinux_a-resource.o: linux/dev/kernel/resource.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-resource.o -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-resource.Tpo -c -o 
linux/dev/kernel/liblinux_a-resource.o `test -f 'linux/dev/kernel/resource.c' 
|| echo '$(srcdir)/'`linux/dev/kernel/resource.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-resource.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-resource.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/resource.c' 
object='linux/dev/kernel/liblinux_a-resource.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-resource.o `test -f 'linux/dev/kernel/resource.c' 
|| echo '$(srcdir)/'`linux/dev/kernel/resource.c
+
+linux/dev/kernel/liblinux_a-resource.obj: linux/dev/kernel/resource.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-resource.obj -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-resource.Tpo -c -o 
linux/dev/kernel/liblinux_a-resource.obj `if test -f 
'linux/dev/kernel/resource.c'; then $(CYGPATH_W) 'linux/dev/kernel/resource.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/dev/kernel/resource.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-resource.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-resource.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/resource.c' 
object='linux/dev/kernel/liblinux_a-resource.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-resource.obj `if test -f 
'linux/dev/kernel/resource.c'; then $(CYGPATH_W) 'linux/dev/kernel/resource.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/dev/kernel/resource.c'; fi`
+
+linux/dev/kernel/liblinux_a-printk.o: linux/dev/kernel/printk.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-printk.o -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-printk.Tpo -c -o 
linux/dev/kernel/liblinux_a-printk.o `test -f 'linux/dev/kernel/printk.c' || 
echo '$(srcdir)/'`linux/dev/kernel/printk.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-printk.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-printk.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/printk.c' 
object='linux/dev/kernel/liblinux_a-printk.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-printk.o `test -f 'linux/dev/kernel/printk.c' || 
echo '$(srcdir)/'`linux/dev/kernel/printk.c
+
+linux/dev/kernel/liblinux_a-printk.obj: linux/dev/kernel/printk.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-printk.obj -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-printk.Tpo -c -o 
linux/dev/kernel/liblinux_a-printk.obj `if test -f 'linux/dev/kernel/printk.c'; 
then $(CYGPATH_W) 'linux/dev/kernel/printk.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/kernel/printk.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-printk.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-printk.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/printk.c' 
object='linux/dev/kernel/liblinux_a-printk.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-printk.obj `if test -f 'linux/dev/kernel/printk.c'; 
then $(CYGPATH_W) 'linux/dev/kernel/printk.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/kernel/printk.c'; fi`
+
+linux/src/arch/i386/kernel/liblinux_a-bios32.o: 
linux/src/arch/i386/kernel/bios32.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/arch/i386/kernel/liblinux_a-bios32.o -MD -MP -MF 
linux/src/arch/i386/kernel/$(DEPDIR)/liblinux_a-bios32.Tpo -c -o 
linux/src/arch/i386/kernel/liblinux_a-bios32.o `test -f 
'linux/src/arch/i386/kernel/bios32.c' || echo 
'$(srcdir)/'`linux/src/arch/i386/kernel/bios32.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/arch/i386/kernel/$(DEPDIR)/liblinux_a-bios32.Tpo 
linux/src/arch/i386/kernel/$(DEPDIR)/liblinux_a-bios32.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/arch/i386/kernel/bios32.c' 
object='linux/src/arch/i386/kernel/liblinux_a-bios32.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/arch/i386/kernel/liblinux_a-bios32.o `test -f 
'linux/src/arch/i386/kernel/bios32.c' || echo 
'$(srcdir)/'`linux/src/arch/i386/kernel/bios32.c
+
+linux/src/arch/i386/kernel/liblinux_a-bios32.obj: 
linux/src/arch/i386/kernel/bios32.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/arch/i386/kernel/liblinux_a-bios32.obj -MD -MP -MF 
linux/src/arch/i386/kernel/$(DEPDIR)/liblinux_a-bios32.Tpo -c -o 
linux/src/arch/i386/kernel/liblinux_a-bios32.obj `if test -f 
'linux/src/arch/i386/kernel/bios32.c'; then $(CYGPATH_W) 
'linux/src/arch/i386/kernel/bios32.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/arch/i386/kernel/bios32 [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/arch/i386/kernel/$(DEPDIR)/liblinux_a-bios32.Tpo 
linux/src/arch/i386/kernel/$(DEPDIR)/liblinux_a-bios32.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/arch/i386/kernel/bios32.c' 
object='linux/src/arch/i386/kernel/liblinux_a-bios32.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/arch/i386/kernel/liblinux_a-bios32.obj `if test -f 
'linux/src/arch/i386/kernel/bios32.c'; then $(CYGPATH_W) 
'linux/src/arch/i386/kernel/bios32.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/arch/i386/kernel/bios32.c'; fi`
+
+linux/dev/arch/i386/kernel/liblinux_a-irq.o: linux/dev/arch/i386/kernel/irq.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/arch/i386/kernel/liblinux_a-irq.o -MD -MP -MF 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-irq.Tpo -c -o 
linux/dev/arch/i386/kernel/liblinux_a-irq.o `test -f 
'linux/dev/arch/i386/kernel/irq.c' || echo 
'$(srcdir)/'`linux/dev/arch/i386/kernel/irq.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-irq.Tpo 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-irq.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/arch/i386/kernel/irq.c' 
object='linux/dev/arch/i386/kernel/liblinux_a-irq.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/arch/i386/kernel/liblinux_a-irq.o `test -f 
'linux/dev/arch/i386/kernel/irq.c' || echo 
'$(srcdir)/'`linux/dev/arch/i386/kernel/irq.c
+
+linux/dev/arch/i386/kernel/liblinux_a-irq.obj: linux/dev/arch/i386/kernel/irq.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/arch/i386/kernel/liblinux_a-irq.obj -MD -MP -MF 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-irq.Tpo -c -o 
linux/dev/arch/i386/kernel/liblinux_a-irq.obj `if test -f 
'linux/dev/arch/i386/kernel/irq.c'; then $(CYGPATH_W) 
'linux/dev/arch/i386/kernel/irq.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/arch/i386/kernel/irq.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-irq.Tpo 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-irq.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/arch/i386/kernel/irq.c' 
object='linux/dev/arch/i386/kernel/liblinux_a-irq.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/arch/i386/kernel/liblinux_a-irq.obj `if test -f 
'linux/dev/arch/i386/kernel/irq.c'; then $(CYGPATH_W) 
'linux/dev/arch/i386/kernel/irq.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/arch/i386/kernel/irq.c'; fi`
+
+linux/src/lib/liblinux_a-ctype.o: linux/src/lib/ctype.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/lib/liblinux_a-ctype.o -MD -MP -MF 
linux/src/lib/$(DEPDIR)/liblinux_a-ctype.Tpo -c -o 
linux/src/lib/liblinux_a-ctype.o `test -f 'linux/src/lib/ctype.c' || echo 
'$(srcdir)/'`linux/src/lib/ctype.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/lib/$(DEPDIR)/liblinux_a-ctype.Tpo 
linux/src/lib/$(DEPDIR)/liblinux_a-ctype.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/lib/ctype.c' 
object='linux/src/lib/liblinux_a-ctype.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/lib/liblinux_a-ctype.o `test -f 'linux/src/lib/ctype.c' || echo 
'$(srcdir)/'`linux/src/lib/ctype.c
+
+linux/src/lib/liblinux_a-ctype.obj: linux/src/lib/ctype.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/lib/liblinux_a-ctype.obj -MD -MP -MF 
linux/src/lib/$(DEPDIR)/liblinux_a-ctype.Tpo -c -o 
linux/src/lib/liblinux_a-ctype.obj `if test -f 'linux/src/lib/ctype.c'; then 
$(CYGPATH_W) 'linux/src/lib/ctype.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/lib/ctype.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/lib/$(DEPDIR)/liblinux_a-ctype.Tpo 
linux/src/lib/$(DEPDIR)/liblinux_a-ctype.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/lib/ctype.c' 
object='linux/src/lib/liblinux_a-ctype.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/lib/liblinux_a-ctype.obj `if test -f 'linux/src/lib/ctype.c'; then 
$(CYGPATH_W) 'linux/src/lib/ctype.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/lib/ctype.c'; fi`
+
+linux/dev/lib/liblinux_a-vsprintf.o: linux/dev/lib/vsprintf.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/lib/liblinux_a-vsprintf.o -MD -MP -MF 
linux/dev/lib/$(DEPDIR)/liblinux_a-vsprintf.Tpo -c -o 
linux/dev/lib/liblinux_a-vsprintf.o `test -f 'linux/dev/lib/vsprintf.c' || echo 
'$(srcdir)/'`linux/dev/lib/vsprintf.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/lib/$(DEPDIR)/liblinux_a-vsprintf.Tpo 
linux/dev/lib/$(DEPDIR)/liblinux_a-vsprintf.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/lib/vsprintf.c' 
object='linux/dev/lib/liblinux_a-vsprintf.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/lib/liblinux_a-vsprintf.o `test -f 'linux/dev/lib/vsprintf.c' || echo 
'$(srcdir)/'`linux/dev/lib/vsprintf.c
+
+linux/dev/lib/liblinux_a-vsprintf.obj: linux/dev/lib/vsprintf.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/lib/liblinux_a-vsprintf.obj -MD -MP -MF 
linux/dev/lib/$(DEPDIR)/liblinux_a-vsprintf.Tpo -c -o 
linux/dev/lib/liblinux_a-vsprintf.obj `if test -f 'linux/dev/lib/vsprintf.c'; 
then $(CYGPATH_W) 'linux/dev/lib/vsprintf.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/lib/vsprintf.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/lib/$(DEPDIR)/liblinux_a-vsprintf.Tpo 
linux/dev/lib/$(DEPDIR)/liblinux_a-vsprintf.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/lib/vsprintf.c' 
object='linux/dev/lib/liblinux_a-vsprintf.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/lib/liblinux_a-vsprintf.obj `if test -f 'linux/dev/lib/vsprintf.c'; 
then $(CYGPATH_W) 'linux/dev/lib/vsprintf.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/lib/vsprintf.c'; fi`
+
+linux/dev/init/liblinux_a-main.o: linux/dev/init/main.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/init/liblinux_a-main.o -MD -MP -MF 
linux/dev/init/$(DEPDIR)/liblinux_a-main.Tpo -c -o 
linux/dev/init/liblinux_a-main.o `test -f 'linux/dev/init/main.c' || echo 
'$(srcdir)/'`linux/dev/init/main.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/init/$(DEPDIR)/liblinux_a-main.Tpo 
linux/dev/init/$(DEPDIR)/liblinux_a-main.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/init/main.c' 
object='linux/dev/init/liblinux_a-main.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/init/liblinux_a-main.o `test -f 'linux/dev/init/main.c' || echo 
'$(srcdir)/'`linux/dev/init/main.c
+
+linux/dev/init/liblinux_a-main.obj: linux/dev/init/main.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/init/liblinux_a-main.obj -MD -MP -MF 
linux/dev/init/$(DEPDIR)/liblinux_a-main.Tpo -c -o 
linux/dev/init/liblinux_a-main.obj `if test -f 'linux/dev/init/main.c'; then 
$(CYGPATH_W) 'linux/dev/init/main.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/init/main.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/init/$(DEPDIR)/liblinux_a-main.Tpo 
linux/dev/init/$(DEPDIR)/liblinux_a-main.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/init/main.c' 
object='linux/dev/init/liblinux_a-main.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/init/liblinux_a-main.obj `if test -f 'linux/dev/init/main.c'; then 
$(CYGPATH_W) 'linux/dev/init/main.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/init/main.c'; fi`
+
+linux/dev/glue/liblinux_a-misc.o: linux/dev/glue/misc.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-misc.o -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-misc.Tpo -c -o 
linux/dev/glue/liblinux_a-misc.o `test -f 'linux/dev/glue/misc.c' || echo 
'$(srcdir)/'`linux/dev/glue/misc.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/glue/$(DEPDIR)/liblinux_a-misc.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-misc.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/glue/misc.c' 
object='linux/dev/glue/liblinux_a-misc.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-misc.o `test -f 'linux/dev/glue/misc.c' || echo 
'$(srcdir)/'`linux/dev/glue/misc.c
+
+linux/dev/glue/liblinux_a-misc.obj: linux/dev/glue/misc.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-misc.obj -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-misc.Tpo -c -o 
linux/dev/glue/liblinux_a-misc.obj `if test -f 'linux/dev/glue/misc.c'; then 
$(CYGPATH_W) 'linux/dev/glue/misc.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/misc.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/glue/$(DEPDIR)/liblinux_a-misc.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-misc.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/glue/misc.c' 
object='linux/dev/glue/liblinux_a-misc.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-misc.obj `if test -f 'linux/dev/glue/misc.c'; then 
$(CYGPATH_W) 'linux/dev/glue/misc.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/misc.c'; fi`
+
+linux/dev/kernel/liblinux_a-sched.o: linux/dev/kernel/sched.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-sched.o -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-sched.Tpo -c -o 
linux/dev/kernel/liblinux_a-sched.o `test -f 'linux/dev/kernel/sched.c' || echo 
'$(srcdir)/'`linux/dev/kernel/sched.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-sched.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-sched.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/sched.c' 
object='linux/dev/kernel/liblinux_a-sched.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-sched.o `test -f 'linux/dev/kernel/sched.c' || echo 
'$(srcdir)/'`linux/dev/kernel/sched.c
+
+linux/dev/kernel/liblinux_a-sched.obj: linux/dev/kernel/sched.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/kernel/liblinux_a-sched.obj -MD -MP -MF 
linux/dev/kernel/$(DEPDIR)/liblinux_a-sched.Tpo -c -o 
linux/dev/kernel/liblinux_a-sched.obj `if test -f 'linux/dev/kernel/sched.c'; 
then $(CYGPATH_W) 'linux/dev/kernel/sched.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/kernel/sched.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/kernel/$(DEPDIR)/liblinux_a-sched.Tpo 
linux/dev/kernel/$(DEPDIR)/liblinux_a-sched.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/kernel/sched.c' 
object='linux/dev/kernel/liblinux_a-sched.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/kernel/liblinux_a-sched.obj `if test -f 'linux/dev/kernel/sched.c'; 
then $(CYGPATH_W) 'linux/dev/kernel/sched.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/kernel/sched.c'; fi`
+
+linux/dev/glue/liblinux_a-kmem.o: linux/dev/glue/kmem.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-kmem.o -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-kmem.Tpo -c -o 
linux/dev/glue/liblinux_a-kmem.o `test -f 'linux/dev/glue/kmem.c' || echo 
'$(srcdir)/'`linux/dev/glue/kmem.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/glue/$(DEPDIR)/liblinux_a-kmem.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-kmem.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/glue/kmem.c' 
object='linux/dev/glue/liblinux_a-kmem.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-kmem.o `test -f 'linux/dev/glue/kmem.c' || echo 
'$(srcdir)/'`linux/dev/glue/kmem.c
+
+linux/dev/glue/liblinux_a-kmem.obj: linux/dev/glue/kmem.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-kmem.obj -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-kmem.Tpo -c -o 
linux/dev/glue/liblinux_a-kmem.obj `if test -f 'linux/dev/glue/kmem.c'; then 
$(CYGPATH_W) 'linux/dev/glue/kmem.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/kmem.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/glue/$(DEPDIR)/liblinux_a-kmem.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-kmem.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/glue/kmem.c' 
object='linux/dev/glue/liblinux_a-kmem.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-kmem.obj `if test -f 'linux/dev/glue/kmem.c'; then 
$(CYGPATH_W) 'linux/dev/glue/kmem.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/kmem.c'; fi`
+
+linux/dev/glue/liblinux_a-block.o: linux/dev/glue/block.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-block.o -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-block.Tpo -c -o 
linux/dev/glue/liblinux_a-block.o `test -f 'linux/dev/glue/block.c' || echo 
'$(srcdir)/'`linux/dev/glue/block.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/glue/$(DEPDIR)/liblinux_a-block.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-block.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/glue/block.c' 
object='linux/dev/glue/liblinux_a-block.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-block.o `test -f 'linux/dev/glue/block.c' || echo 
'$(srcdir)/'`linux/dev/glue/block.c
+
+linux/dev/glue/liblinux_a-block.obj: linux/dev/glue/block.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-block.obj -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-block.Tpo -c -o 
linux/dev/glue/liblinux_a-block.obj `if test -f 'linux/dev/glue/block.c'; then 
$(CYGPATH_W) 'linux/dev/glue/block.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/block.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/glue/$(DEPDIR)/liblinux_a-block.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-block.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/glue/block.c' 
object='linux/dev/glue/liblinux_a-block.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-block.obj `if test -f 'linux/dev/glue/block.c'; then 
$(CYGPATH_W) 'linux/dev/glue/block.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/block.c'; fi`
+
+linux/dev/arch/i386/kernel/liblinux_a-setup.o: 
linux/dev/arch/i386/kernel/setup.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/arch/i386/kernel/liblinux_a-setup.o -MD -MP -MF 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-setup.Tpo -c -o 
linux/dev/arch/i386/kernel/liblinux_a-setup.o `test -f 
'linux/dev/arch/i386/kernel/setup.c' || echo 
'$(srcdir)/'`linux/dev/arch/i386/kernel/setup.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-setup.Tpo 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-setup.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/arch/i386/kernel/setup.c' 
object='linux/dev/arch/i386/kernel/liblinux_a-setup.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/arch/i386/kernel/liblinux_a-setup.o `test -f 
'linux/dev/arch/i386/kernel/setup.c' || echo 
'$(srcdir)/'`linux/dev/arch/i386/kernel/setup.c
+
+linux/dev/arch/i386/kernel/liblinux_a-setup.obj: 
linux/dev/arch/i386/kernel/setup.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/arch/i386/kernel/liblinux_a-setup.obj -MD -MP -MF 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-setup.Tpo -c -o 
linux/dev/arch/i386/kernel/liblinux_a-setup.obj `if test -f 
'linux/dev/arch/i386/kernel/setup.c'; then $(CYGPATH_W) 
'linux/dev/arch/i386/kernel/setup.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/arch/i386/kernel/setup.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-setup.Tpo 
linux/dev/arch/i386/kernel/$(DEPDIR)/liblinux_a-setup.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/arch/i386/kernel/setup.c' 
object='linux/dev/arch/i386/kernel/liblinux_a-setup.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/arch/i386/kernel/liblinux_a-setup.obj `if test -f 
'linux/dev/arch/i386/kernel/setup.c'; then $(CYGPATH_W) 
'linux/dev/arch/i386/kernel/setup.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/arch/i386/kernel/setup.c'; fi`
+
+linux/src/drivers/pci/liblinux_a-pci.o: linux/src/drivers/pci/pci.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/pci/liblinux_a-pci.o -MD -MP -MF 
linux/src/drivers/pci/$(DEPDIR)/liblinux_a-pci.Tpo -c -o 
linux/src/drivers/pci/liblinux_a-pci.o `test -f 'linux/src/drivers/pci/pci.c' 
|| echo '$(srcdir)/'`linux/src/drivers/pci/pci.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/pci/$(DEPDIR)/liblinux_a-pci.Tpo 
linux/src/drivers/pci/$(DEPDIR)/liblinux_a-pci.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/pci/pci.c' 
object='linux/src/drivers/pci/liblinux_a-pci.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/pci/liblinux_a-pci.o `test -f 'linux/src/drivers/pci/pci.c' 
|| echo '$(srcdir)/'`linux/src/drivers/pci/pci.c
+
+linux/src/drivers/pci/liblinux_a-pci.obj: linux/src/drivers/pci/pci.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/pci/liblinux_a-pci.obj -MD -MP -MF 
linux/src/drivers/pci/$(DEPDIR)/liblinux_a-pci.Tpo -c -o 
linux/src/drivers/pci/liblinux_a-pci.obj `if test -f 
'linux/src/drivers/pci/pci.c'; then $(CYGPATH_W) 'linux/src/drivers/pci/pci.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/pci/pci.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/pci/$(DEPDIR)/liblinux_a-pci.Tpo 
linux/src/drivers/pci/$(DEPDIR)/liblinux_a-pci.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/pci/pci.c' 
object='linux/src/drivers/pci/liblinux_a-pci.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/pci/liblinux_a-pci.obj `if test -f 
'linux/src/drivers/pci/pci.c'; then $(CYGPATH_W) 'linux/src/drivers/pci/pci.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/pci/pci.c'; fi`
+
+linux/dev/drivers/block/liblinux_a-genhd.o: linux/dev/drivers/block/genhd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/block/liblinux_a-genhd.o -MD -MP -MF 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-genhd.Tpo -c -o 
linux/dev/drivers/block/liblinux_a-genhd.o `test -f 
'linux/dev/drivers/block/genhd.c' || echo 
'$(srcdir)/'`linux/dev/drivers/block/genhd.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-genhd.Tpo 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-genhd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/block/genhd.c' 
object='linux/dev/drivers/block/liblinux_a-genhd.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/block/liblinux_a-genhd.o `test -f 
'linux/dev/drivers/block/genhd.c' || echo 
'$(srcdir)/'`linux/dev/drivers/block/genhd.c
+
+linux/dev/drivers/block/liblinux_a-genhd.obj: linux/dev/drivers/block/genhd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/block/liblinux_a-genhd.obj -MD -MP -MF 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-genhd.Tpo -c -o 
linux/dev/drivers/block/liblinux_a-genhd.obj `if test -f 
'linux/dev/drivers/block/genhd.c'; then $(CYGPATH_W) 
'linux/dev/drivers/block/genhd.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/block/genhd.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-genhd.Tpo 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-genhd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/block/genhd.c' 
object='linux/dev/drivers/block/liblinux_a-genhd.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/block/liblinux_a-genhd.obj `if test -f 
'linux/dev/drivers/block/genhd.c'; then $(CYGPATH_W) 
'linux/dev/drivers/block/genhd.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/block/genhd.c'; fi`
+
+linux/dev/drivers/block/liblinux_a-floppy.o: linux/dev/drivers/block/floppy.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/block/liblinux_a-floppy.o -MD -MP -MF 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-floppy.Tpo -c -o 
linux/dev/drivers/block/liblinux_a-floppy.o `test -f 
'linux/dev/drivers/block/floppy.c' || echo 
'$(srcdir)/'`linux/dev/drivers/block/floppy.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-floppy.Tpo 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-floppy.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/block/floppy.c' 
object='linux/dev/drivers/block/liblinux_a-floppy.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/block/liblinux_a-floppy.o `test -f 
'linux/dev/drivers/block/floppy.c' || echo 
'$(srcdir)/'`linux/dev/drivers/block/floppy.c
+
+linux/dev/drivers/block/liblinux_a-floppy.obj: linux/dev/drivers/block/floppy.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/block/liblinux_a-floppy.obj -MD -MP -MF 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-floppy.Tpo -c -o 
linux/dev/drivers/block/liblinux_a-floppy.obj `if test -f 
'linux/dev/drivers/block/floppy.c'; then $(CYGPATH_W) 
'linux/dev/drivers/block/floppy.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/block/floppy.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-floppy.Tpo 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-floppy.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/block/floppy.c' 
object='linux/dev/drivers/block/liblinux_a-floppy.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/block/liblinux_a-floppy.obj `if test -f 
'linux/dev/drivers/block/floppy.c'; then $(CYGPATH_W) 
'linux/dev/drivers/block/floppy.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/block/floppy.c'; fi`
+
+linux/src/drivers/block/liblinux_a-cmd640.o: linux/src/drivers/block/cmd640.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-cmd640.o -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-cmd640.Tpo -c -o 
linux/src/drivers/block/liblinux_a-cmd640.o `test -f 
'linux/src/drivers/block/cmd640.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/cmd640.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-cmd640.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-cmd640.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/cmd640.c' 
object='linux/src/drivers/block/liblinux_a-cmd640.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-cmd640.o `test -f 
'linux/src/drivers/block/cmd640.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/cmd640.c
+
+linux/src/drivers/block/liblinux_a-cmd640.obj: linux/src/drivers/block/cmd640.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-cmd640.obj -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-cmd640.Tpo -c -o 
linux/src/drivers/block/liblinux_a-cmd640.obj `if test -f 
'linux/src/drivers/block/cmd640.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/cmd640.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/cmd640.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-cmd640.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-cmd640.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/cmd640.c' 
object='linux/src/drivers/block/liblinux_a-cmd640.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-cmd640.obj `if test -f 
'linux/src/drivers/block/cmd640.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/cmd640.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/cmd640.c'; fi`
+
+linux/src/drivers/block/liblinux_a-ide-cd.o: linux/src/drivers/block/ide-cd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-ide-cd.o -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide-cd.Tpo -c -o 
linux/src/drivers/block/liblinux_a-ide-cd.o `test -f 
'linux/src/drivers/block/ide-cd.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/ide-cd.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide-cd.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide-cd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/ide-cd.c' 
object='linux/src/drivers/block/liblinux_a-ide-cd.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-ide-cd.o `test -f 
'linux/src/drivers/block/ide-cd.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/ide-cd.c
+
+linux/src/drivers/block/liblinux_a-ide-cd.obj: linux/src/drivers/block/ide-cd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-ide-cd.obj -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide-cd.Tpo -c -o 
linux/src/drivers/block/liblinux_a-ide-cd.obj `if test -f 
'linux/src/drivers/block/ide-cd.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/ide-cd.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/ide-cd.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide-cd.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide-cd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/ide-cd.c' 
object='linux/src/drivers/block/liblinux_a-ide-cd.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-ide-cd.obj `if test -f 
'linux/src/drivers/block/ide-cd.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/ide-cd.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/ide-cd.c'; fi`
+
+linux/src/drivers/block/liblinux_a-ide.o: linux/src/drivers/block/ide.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-ide.o -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide.Tpo -c -o 
linux/src/drivers/block/liblinux_a-ide.o `test -f 
'linux/src/drivers/block/ide.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/ide.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/ide.c' 
object='linux/src/drivers/block/liblinux_a-ide.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-ide.o `test -f 
'linux/src/drivers/block/ide.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/ide.c
+
+linux/src/drivers/block/liblinux_a-ide.obj: linux/src/drivers/block/ide.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-ide.obj -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide.Tpo -c -o 
linux/src/drivers/block/liblinux_a-ide.obj `if test -f 
'linux/src/drivers/block/ide.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/ide.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/ide.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-ide.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/ide.c' 
object='linux/src/drivers/block/liblinux_a-ide.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-ide.obj `if test -f 
'linux/src/drivers/block/ide.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/ide.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/ide.c'; fi`
+
+linux/dev/drivers/block/liblinux_a-ahci.o: linux/dev/drivers/block/ahci.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/block/liblinux_a-ahci.o -MD -MP -MF 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-ahci.Tpo -c -o 
linux/dev/drivers/block/liblinux_a-ahci.o `test -f 
'linux/dev/drivers/block/ahci.c' || echo 
'$(srcdir)/'`linux/dev/drivers/block/ahci.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-ahci.Tpo 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-ahci.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/block/ahci.c' 
object='linux/dev/drivers/block/liblinux_a-ahci.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/block/liblinux_a-ahci.o `test -f 
'linux/dev/drivers/block/ahci.c' || echo 
'$(srcdir)/'`linux/dev/drivers/block/ahci.c
+
+linux/dev/drivers/block/liblinux_a-ahci.obj: linux/dev/drivers/block/ahci.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/block/liblinux_a-ahci.obj -MD -MP -MF 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-ahci.Tpo -c -o 
linux/dev/drivers/block/liblinux_a-ahci.obj `if test -f 
'linux/dev/drivers/block/ahci.c'; then $(CYGPATH_W) 
'linux/dev/drivers/block/ahci.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/block/ahci.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-ahci.Tpo 
linux/dev/drivers/block/$(DEPDIR)/liblinux_a-ahci.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/block/ahci.c' 
object='linux/dev/drivers/block/liblinux_a-ahci.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/block/liblinux_a-ahci.obj `if test -f 
'linux/dev/drivers/block/ahci.c'; then $(CYGPATH_W) 
'linux/dev/drivers/block/ahci.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/block/ahci.c'; fi`
+
+linux/src/drivers/block/liblinux_a-rz1000.o: linux/src/drivers/block/rz1000.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-rz1000.o -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-rz1000.Tpo -c -o 
linux/src/drivers/block/liblinux_a-rz1000.o `test -f 
'linux/src/drivers/block/rz1000.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/rz1000.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-rz1000.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-rz1000.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/rz1000.c' 
object='linux/src/drivers/block/liblinux_a-rz1000.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-rz1000.o `test -f 
'linux/src/drivers/block/rz1000.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/rz1000.c
+
+linux/src/drivers/block/liblinux_a-rz1000.obj: linux/src/drivers/block/rz1000.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-rz1000.obj -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-rz1000.Tpo -c -o 
linux/src/drivers/block/liblinux_a-rz1000.obj `if test -f 
'linux/src/drivers/block/rz1000.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/rz1000.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/rz1000.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-rz1000.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-rz1000.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/rz1000.c' 
object='linux/src/drivers/block/liblinux_a-rz1000.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-rz1000.obj `if test -f 
'linux/src/drivers/block/rz1000.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/rz1000.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/rz1000.c'; fi`
+
+linux/src/drivers/block/liblinux_a-triton.o: linux/src/drivers/block/triton.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-triton.o -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-triton.Tpo -c -o 
linux/src/drivers/block/liblinux_a-triton.o `test -f 
'linux/src/drivers/block/triton.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/triton.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-triton.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-triton.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/triton.c' 
object='linux/src/drivers/block/liblinux_a-triton.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-triton.o `test -f 
'linux/src/drivers/block/triton.c' || echo 
'$(srcdir)/'`linux/src/drivers/block/triton.c
+
+linux/src/drivers/block/liblinux_a-triton.obj: linux/src/drivers/block/triton.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/block/liblinux_a-triton.obj -MD -MP -MF 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-triton.Tpo -c -o 
linux/src/drivers/block/liblinux_a-triton.obj `if test -f 
'linux/src/drivers/block/triton.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/triton.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/triton.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-triton.Tpo 
linux/src/drivers/block/$(DEPDIR)/liblinux_a-triton.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/block/triton.c' 
object='linux/src/drivers/block/liblinux_a-triton.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/block/liblinux_a-triton.obj `if test -f 
'linux/src/drivers/block/triton.c'; then $(CYGPATH_W) 
'linux/src/drivers/block/triton.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/block/triton.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-constants.o: 
linux/src/drivers/scsi/constants.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-constants.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-constants.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-constants.o `test -f 
'linux/src/drivers/scsi/constants.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/constants.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-constants.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-constants.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/constants.c' 
object='linux/src/drivers/scsi/liblinux_a-constants.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-constants.o `test -f 
'linux/src/drivers/scsi/constants.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/constants.c
+
+linux/src/drivers/scsi/liblinux_a-constants.obj: 
linux/src/drivers/scsi/constants.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-constants.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-constants.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-constants.obj `if test -f 
'linux/src/drivers/scsi/constants.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/constants.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/constants.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-constants.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-constants.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/constants.c' 
object='linux/src/drivers/scsi/liblinux_a-constants.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-constants.obj `if test -f 
'linux/src/drivers/scsi/constants.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/constants.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/constants.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-hosts.o: linux/src/drivers/scsi/hosts.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-hosts.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-hosts.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-hosts.o `test -f 
'linux/src/drivers/scsi/hosts.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/hosts.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-hosts.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-hosts.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/hosts.c' 
object='linux/src/drivers/scsi/liblinux_a-hosts.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-hosts.o `test -f 
'linux/src/drivers/scsi/hosts.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/hosts.c
+
+linux/src/drivers/scsi/liblinux_a-hosts.obj: linux/src/drivers/scsi/hosts.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-hosts.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-hosts.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-hosts.obj `if test -f 
'linux/src/drivers/scsi/hosts.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/hosts.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/hosts.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-hosts.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-hosts.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/hosts.c' 
object='linux/src/drivers/scsi/liblinux_a-hosts.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-hosts.obj `if test -f 
'linux/src/drivers/scsi/hosts.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/hosts.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/hosts.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-scsi.o: linux/src/drivers/scsi/scsi.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsi.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsi.o `test -f 
'linux/src/drivers/scsi/scsi.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsi.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsi.c' 
object='linux/src/drivers/scsi/liblinux_a-scsi.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsi.o `test -f 
'linux/src/drivers/scsi/scsi.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsi.c
+
+linux/src/drivers/scsi/liblinux_a-scsi.obj: linux/src/drivers/scsi/scsi.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsi.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsi.obj `if test -f 
'linux/src/drivers/scsi/scsi.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsi.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsi.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsi.c' 
object='linux/src/drivers/scsi/liblinux_a-scsi.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsi.obj `if test -f 
'linux/src/drivers/scsi/scsi.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsi.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsi.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-scsi_ioctl.o: 
linux/src/drivers/scsi/scsi_ioctl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsi_ioctl.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_ioctl.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_ioctl.o `test -f 
'linux/src/drivers/scsi/scsi_ioctl.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsi_ioctl.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_ioctl.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_ioctl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsi_ioctl.c' 
object='linux/src/drivers/scsi/liblinux_a-scsi_ioctl.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_ioctl.o `test -f 
'linux/src/drivers/scsi/scsi_ioctl.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsi_ioctl.c
+
+linux/src/drivers/scsi/liblinux_a-scsi_ioctl.obj: 
linux/src/drivers/scsi/scsi_ioctl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsi_ioctl.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_ioctl.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_ioctl.obj `if test -f 
'linux/src/drivers/scsi/scsi_ioctl.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsi_ioctl.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsi_ioctl [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_ioctl.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_ioctl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsi_ioctl.c' 
object='linux/src/drivers/scsi/liblinux_a-scsi_ioctl.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_ioctl.obj `if test -f 
'linux/src/drivers/scsi/scsi_ioctl.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsi_ioctl.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsi_ioctl.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-scsi_proc.o: 
linux/src/drivers/scsi/scsi_proc.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsi_proc.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_proc.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_proc.o `test -f 
'linux/src/drivers/scsi/scsi_proc.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsi_proc.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_proc.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_proc.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsi_proc.c' 
object='linux/src/drivers/scsi/liblinux_a-scsi_proc.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_proc.o `test -f 
'linux/src/drivers/scsi/scsi_proc.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsi_proc.c
+
+linux/src/drivers/scsi/liblinux_a-scsi_proc.obj: 
linux/src/drivers/scsi/scsi_proc.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsi_proc.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_proc.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_proc.obj `if test -f 
'linux/src/drivers/scsi/scsi_proc.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsi_proc.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsi_proc.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_proc.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsi_proc.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsi_proc.c' 
object='linux/src/drivers/scsi/liblinux_a-scsi_proc.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsi_proc.obj `if test -f 
'linux/src/drivers/scsi/scsi_proc.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsi_proc.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsi_proc.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-scsicam.o: linux/src/drivers/scsi/scsicam.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsicam.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsicam.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsicam.o `test -f 
'linux/src/drivers/scsi/scsicam.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsicam.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsicam.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsicam.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsicam.c' 
object='linux/src/drivers/scsi/liblinux_a-scsicam.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsicam.o `test -f 
'linux/src/drivers/scsi/scsicam.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/scsicam.c
+
+linux/src/drivers/scsi/liblinux_a-scsicam.obj: linux/src/drivers/scsi/scsicam.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-scsicam.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsicam.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-scsicam.obj `if test -f 
'linux/src/drivers/scsi/scsicam.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsicam.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsicam.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsicam.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-scsicam.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/scsicam.c' 
object='linux/src/drivers/scsi/liblinux_a-scsicam.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-scsicam.obj `if test -f 
'linux/src/drivers/scsi/scsicam.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/scsicam.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/scsicam.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-sd.o: linux/src/drivers/scsi/sd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sd.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sd.o `test -f 'linux/src/drivers/scsi/sd.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/sd.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sd.c' 
object='linux/src/drivers/scsi/liblinux_a-sd.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sd.o `test -f 'linux/src/drivers/scsi/sd.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/sd.c
+
+linux/src/drivers/scsi/liblinux_a-sd.obj: linux/src/drivers/scsi/sd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sd.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sd.obj `if test -f 
'linux/src/drivers/scsi/sd.c'; then $(CYGPATH_W) 'linux/src/drivers/scsi/sd.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/scsi/sd.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sd.c' 
object='linux/src/drivers/scsi/liblinux_a-sd.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sd.obj `if test -f 
'linux/src/drivers/scsi/sd.c'; then $(CYGPATH_W) 'linux/src/drivers/scsi/sd.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/scsi/sd.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-sd_ioctl.o: linux/src/drivers/scsi/sd_ioctl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sd_ioctl.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd_ioctl.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sd_ioctl.o `test -f 
'linux/src/drivers/scsi/sd_ioctl.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/sd_ioctl.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd_ioctl.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd_ioctl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sd_ioctl.c' 
object='linux/src/drivers/scsi/liblinux_a-sd_ioctl.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sd_ioctl.o `test -f 
'linux/src/drivers/scsi/sd_ioctl.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/sd_ioctl.c
+
+linux/src/drivers/scsi/liblinux_a-sd_ioctl.obj: 
linux/src/drivers/scsi/sd_ioctl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sd_ioctl.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd_ioctl.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sd_ioctl.obj `if test -f 
'linux/src/drivers/scsi/sd_ioctl.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/sd_ioctl.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/sd_ioctl.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd_ioctl.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sd_ioctl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sd_ioctl.c' 
object='linux/src/drivers/scsi/liblinux_a-sd_ioctl.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sd_ioctl.obj `if test -f 
'linux/src/drivers/scsi/sd_ioctl.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/sd_ioctl.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/sd_ioctl.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-sr.o: linux/src/drivers/scsi/sr.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sr.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sr.o `test -f 'linux/src/drivers/scsi/sr.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/sr.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sr.c' 
object='linux/src/drivers/scsi/liblinux_a-sr.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sr.o `test -f 'linux/src/drivers/scsi/sr.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/sr.c
+
+linux/src/drivers/scsi/liblinux_a-sr.obj: linux/src/drivers/scsi/sr.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sr.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sr.obj `if test -f 
'linux/src/drivers/scsi/sr.c'; then $(CYGPATH_W) 'linux/src/drivers/scsi/sr.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/scsi/sr.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sr.c' 
object='linux/src/drivers/scsi/liblinux_a-sr.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sr.obj `if test -f 
'linux/src/drivers/scsi/sr.c'; then $(CYGPATH_W) 'linux/src/drivers/scsi/sr.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/scsi/sr.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-sr_ioctl.o: linux/src/drivers/scsi/sr_ioctl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sr_ioctl.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr_ioctl.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sr_ioctl.o `test -f 
'linux/src/drivers/scsi/sr_ioctl.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/sr_ioctl.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr_ioctl.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr_ioctl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sr_ioctl.c' 
object='linux/src/drivers/scsi/liblinux_a-sr_ioctl.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sr_ioctl.o `test -f 
'linux/src/drivers/scsi/sr_ioctl.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/sr_ioctl.c
+
+linux/src/drivers/scsi/liblinux_a-sr_ioctl.obj: 
linux/src/drivers/scsi/sr_ioctl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sr_ioctl.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr_ioctl.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sr_ioctl.obj `if test -f 
'linux/src/drivers/scsi/sr_ioctl.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/sr_ioctl.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/sr_ioctl.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr_ioctl.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sr_ioctl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sr_ioctl.c' 
object='linux/src/drivers/scsi/liblinux_a-sr_ioctl.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sr_ioctl.obj `if test -f 
'linux/src/drivers/scsi/sr_ioctl.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/sr_ioctl.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/sr_ioctl.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-53c78xx.o: linux/src/drivers/scsi/53c78xx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-53c78xx.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-53c78xx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-53c78xx.o `test -f 
'linux/src/drivers/scsi/53c78xx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/53c78xx.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-53c78xx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-53c78xx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/53c78xx.c' 
object='linux/src/drivers/scsi/liblinux_a-53c78xx.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-53c78xx.o `test -f 
'linux/src/drivers/scsi/53c78xx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/53c78xx.c
+
+linux/src/drivers/scsi/liblinux_a-53c78xx.obj: linux/src/drivers/scsi/53c78xx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-53c78xx.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-53c78xx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-53c78xx.obj `if test -f 
'linux/src/drivers/scsi/53c78xx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/53c78xx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/53c78xx.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-53c78xx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-53c78xx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/53c78xx.c' 
object='linux/src/drivers/scsi/liblinux_a-53c78xx.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-53c78xx.obj `if test -f 
'linux/src/drivers/scsi/53c78xx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/53c78xx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/53c78xx.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-AM53C974.o: linux/src/drivers/scsi/AM53C974.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-AM53C974.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-AM53C974.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-AM53C974.o `test -f 
'linux/src/drivers/scsi/AM53C974.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/AM53C974.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-AM53C974.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-AM53C974.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/AM53C974.c' 
object='linux/src/drivers/scsi/liblinux_a-AM53C974.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-AM53C974.o `test -f 
'linux/src/drivers/scsi/AM53C974.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/AM53C974.c
+
+linux/src/drivers/scsi/liblinux_a-AM53C974.obj: 
linux/src/drivers/scsi/AM53C974.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-AM53C974.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-AM53C974.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-AM53C974.obj `if test -f 
'linux/src/drivers/scsi/AM53C974.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/AM53C974.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/AM53C974.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-AM53C974.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-AM53C974.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/AM53C974.c' 
object='linux/src/drivers/scsi/liblinux_a-AM53C974.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-AM53C974.obj `if test -f 
'linux/src/drivers/scsi/AM53C974.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/AM53C974.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/AM53C974.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-BusLogic.o: linux/src/drivers/scsi/BusLogic.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-BusLogic.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-BusLogic.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-BusLogic.o `test -f 
'linux/src/drivers/scsi/BusLogic.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/BusLogic.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-BusLogic.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-BusLogic.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/BusLogic.c' 
object='linux/src/drivers/scsi/liblinux_a-BusLogic.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-BusLogic.o `test -f 
'linux/src/drivers/scsi/BusLogic.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/BusLogic.c
+
+linux/src/drivers/scsi/liblinux_a-BusLogic.obj: 
linux/src/drivers/scsi/BusLogic.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-BusLogic.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-BusLogic.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-BusLogic.obj `if test -f 
'linux/src/drivers/scsi/BusLogic.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/BusLogic.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/BusLogic.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-BusLogic.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-BusLogic.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/BusLogic.c' 
object='linux/src/drivers/scsi/liblinux_a-BusLogic.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-BusLogic.obj `if test -f 
'linux/src/drivers/scsi/BusLogic.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/BusLogic.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/BusLogic.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-NCR53c406a.o: 
linux/src/drivers/scsi/NCR53c406a.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-NCR53c406a.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-NCR53c406a.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-NCR53c406a.o `test -f 
'linux/src/drivers/scsi/NCR53c406a.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/NCR53c406a.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-NCR53c406a.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-NCR53c406a.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/NCR53c406a.c' 
object='linux/src/drivers/scsi/liblinux_a-NCR53c406a.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-NCR53c406a.o `test -f 
'linux/src/drivers/scsi/NCR53c406a.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/NCR53c406a.c
+
+linux/src/drivers/scsi/liblinux_a-NCR53c406a.obj: 
linux/src/drivers/scsi/NCR53c406a.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-NCR53c406a.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-NCR53c406a.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-NCR53c406a.obj `if test -f 
'linux/src/drivers/scsi/NCR53c406a.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/NCR53c406a.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/NCR53c406a [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-NCR53c406a.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-NCR53c406a.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/NCR53c406a.c' 
object='linux/src/drivers/scsi/liblinux_a-NCR53c406a.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-NCR53c406a.obj `if test -f 
'linux/src/drivers/scsi/NCR53c406a.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/NCR53c406a.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/NCR53c406a.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-advansys.o: linux/src/drivers/scsi/advansys.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-advansys.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-advansys.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-advansys.o `test -f 
'linux/src/drivers/scsi/advansys.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/advansys.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-advansys.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-advansys.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/advansys.c' 
object='linux/src/drivers/scsi/liblinux_a-advansys.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-advansys.o `test -f 
'linux/src/drivers/scsi/advansys.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/advansys.c
+
+linux/src/drivers/scsi/liblinux_a-advansys.obj: 
linux/src/drivers/scsi/advansys.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-advansys.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-advansys.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-advansys.obj `if test -f 
'linux/src/drivers/scsi/advansys.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/advansys.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/advansys.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-advansys.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-advansys.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/advansys.c' 
object='linux/src/drivers/scsi/liblinux_a-advansys.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-advansys.obj `if test -f 
'linux/src/drivers/scsi/advansys.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/advansys.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/advansys.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-aha152x.o: linux/src/drivers/scsi/aha152x.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aha152x.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha152x.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aha152x.o `test -f 
'linux/src/drivers/scsi/aha152x.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aha152x.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha152x.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha152x.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aha152x.c' 
object='linux/src/drivers/scsi/liblinux_a-aha152x.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aha152x.o `test -f 
'linux/src/drivers/scsi/aha152x.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aha152x.c
+
+linux/src/drivers/scsi/liblinux_a-aha152x.obj: linux/src/drivers/scsi/aha152x.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aha152x.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha152x.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aha152x.obj `if test -f 
'linux/src/drivers/scsi/aha152x.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aha152x.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aha152x.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha152x.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha152x.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aha152x.c' 
object='linux/src/drivers/scsi/liblinux_a-aha152x.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aha152x.obj `if test -f 
'linux/src/drivers/scsi/aha152x.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aha152x.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aha152x.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-aha1542.o: linux/src/drivers/scsi/aha1542.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aha1542.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1542.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aha1542.o `test -f 
'linux/src/drivers/scsi/aha1542.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aha1542.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1542.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1542.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aha1542.c' 
object='linux/src/drivers/scsi/liblinux_a-aha1542.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aha1542.o `test -f 
'linux/src/drivers/scsi/aha1542.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aha1542.c
+
+linux/src/drivers/scsi/liblinux_a-aha1542.obj: linux/src/drivers/scsi/aha1542.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aha1542.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1542.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aha1542.obj `if test -f 
'linux/src/drivers/scsi/aha1542.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aha1542.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aha1542.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1542.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1542.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aha1542.c' 
object='linux/src/drivers/scsi/liblinux_a-aha1542.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aha1542.obj `if test -f 
'linux/src/drivers/scsi/aha1542.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aha1542.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aha1542.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-aha1740.o: linux/src/drivers/scsi/aha1740.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aha1740.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1740.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aha1740.o `test -f 
'linux/src/drivers/scsi/aha1740.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aha1740.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1740.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1740.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aha1740.c' 
object='linux/src/drivers/scsi/liblinux_a-aha1740.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aha1740.o `test -f 
'linux/src/drivers/scsi/aha1740.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aha1740.c
+
+linux/src/drivers/scsi/liblinux_a-aha1740.obj: linux/src/drivers/scsi/aha1740.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aha1740.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1740.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aha1740.obj `if test -f 
'linux/src/drivers/scsi/aha1740.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aha1740.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aha1740.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1740.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aha1740.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aha1740.c' 
object='linux/src/drivers/scsi/liblinux_a-aha1740.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aha1740.obj `if test -f 
'linux/src/drivers/scsi/aha1740.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aha1740.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aha1740.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-aic7xxx.o: linux/src/drivers/scsi/aic7xxx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aic7xxx.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aic7xxx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aic7xxx.o `test -f 
'linux/src/drivers/scsi/aic7xxx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aic7xxx.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aic7xxx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aic7xxx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aic7xxx.c' 
object='linux/src/drivers/scsi/liblinux_a-aic7xxx.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aic7xxx.o `test -f 
'linux/src/drivers/scsi/aic7xxx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/aic7xxx.c
+
+linux/src/drivers/scsi/liblinux_a-aic7xxx.obj: linux/src/drivers/scsi/aic7xxx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-aic7xxx.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aic7xxx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-aic7xxx.obj `if test -f 
'linux/src/drivers/scsi/aic7xxx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aic7xxx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aic7xxx.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aic7xxx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-aic7xxx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/aic7xxx.c' 
object='linux/src/drivers/scsi/liblinux_a-aic7xxx.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-aic7xxx.obj `if test -f 
'linux/src/drivers/scsi/aic7xxx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/aic7xxx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/aic7xxx.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-dtc.o: linux/src/drivers/scsi/dtc.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-dtc.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-dtc.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-dtc.o `test -f 'linux/src/drivers/scsi/dtc.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/dtc.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-dtc.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-dtc.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/dtc.c' 
object='linux/src/drivers/scsi/liblinux_a-dtc.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-dtc.o `test -f 'linux/src/drivers/scsi/dtc.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/dtc.c
+
+linux/src/drivers/scsi/liblinux_a-dtc.obj: linux/src/drivers/scsi/dtc.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-dtc.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-dtc.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-dtc.obj `if test -f 
'linux/src/drivers/scsi/dtc.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/dtc.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/dtc.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-dtc.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-dtc.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/dtc.c' 
object='linux/src/drivers/scsi/liblinux_a-dtc.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-dtc.obj `if test -f 
'linux/src/drivers/scsi/dtc.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/dtc.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/dtc.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-eata.o: linux/src/drivers/scsi/eata.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-eata.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-eata.o `test -f 
'linux/src/drivers/scsi/eata.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/eata.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/eata.c' 
object='linux/src/drivers/scsi/liblinux_a-eata.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-eata.o `test -f 
'linux/src/drivers/scsi/eata.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/eata.c
+
+linux/src/drivers/scsi/liblinux_a-eata.obj: linux/src/drivers/scsi/eata.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-eata.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-eata.obj `if test -f 
'linux/src/drivers/scsi/eata.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/eata.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/eata.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/eata.c' 
object='linux/src/drivers/scsi/liblinux_a-eata.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-eata.obj `if test -f 
'linux/src/drivers/scsi/eata.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/eata.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/eata.c'; fi`
+
+linux/dev/drivers/scsi/liblinux_a-eata_dma.o: linux/dev/drivers/scsi/eata_dma.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/scsi/liblinux_a-eata_dma.o -MD -MP -MF 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-eata_dma.Tpo -c -o 
linux/dev/drivers/scsi/liblinux_a-eata_dma.o `test -f 
'linux/dev/drivers/scsi/eata_dma.c' || echo 
'$(srcdir)/'`linux/dev/drivers/scsi/eata_dma.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-eata_dma.Tpo 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-eata_dma.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/scsi/eata_dma.c' 
object='linux/dev/drivers/scsi/liblinux_a-eata_dma.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/scsi/liblinux_a-eata_dma.o `test -f 
'linux/dev/drivers/scsi/eata_dma.c' || echo 
'$(srcdir)/'`linux/dev/drivers/scsi/eata_dma.c
+
+linux/dev/drivers/scsi/liblinux_a-eata_dma.obj: 
linux/dev/drivers/scsi/eata_dma.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/scsi/liblinux_a-eata_dma.obj -MD -MP -MF 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-eata_dma.Tpo -c -o 
linux/dev/drivers/scsi/liblinux_a-eata_dma.obj `if test -f 
'linux/dev/drivers/scsi/eata_dma.c'; then $(CYGPATH_W) 
'linux/dev/drivers/scsi/eata_dma.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/scsi/eata_dma.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-eata_dma.Tpo 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-eata_dma.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/scsi/eata_dma.c' 
object='linux/dev/drivers/scsi/liblinux_a-eata_dma.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/scsi/liblinux_a-eata_dma.obj `if test -f 
'linux/dev/drivers/scsi/eata_dma.c'; then $(CYGPATH_W) 
'linux/dev/drivers/scsi/eata_dma.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/scsi/eata_dma.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-eata_pio.o: linux/src/drivers/scsi/eata_pio.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-eata_pio.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata_pio.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-eata_pio.o `test -f 
'linux/src/drivers/scsi/eata_pio.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/eata_pio.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata_pio.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata_pio.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/eata_pio.c' 
object='linux/src/drivers/scsi/liblinux_a-eata_pio.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-eata_pio.o `test -f 
'linux/src/drivers/scsi/eata_pio.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/eata_pio.c
+
+linux/src/drivers/scsi/liblinux_a-eata_pio.obj: 
linux/src/drivers/scsi/eata_pio.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-eata_pio.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata_pio.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-eata_pio.obj `if test -f 
'linux/src/drivers/scsi/eata_pio.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/eata_pio.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/eata_pio.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata_pio.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-eata_pio.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/eata_pio.c' 
object='linux/src/drivers/scsi/liblinux_a-eata_pio.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-eata_pio.obj `if test -f 
'linux/src/drivers/scsi/eata_pio.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/eata_pio.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/eata_pio.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-fdomain.o: linux/src/drivers/scsi/fdomain.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-fdomain.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-fdomain.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-fdomain.o `test -f 
'linux/src/drivers/scsi/fdomain.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/fdomain.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-fdomain.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-fdomain.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/fdomain.c' 
object='linux/src/drivers/scsi/liblinux_a-fdomain.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-fdomain.o `test -f 
'linux/src/drivers/scsi/fdomain.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/fdomain.c
+
+linux/src/drivers/scsi/liblinux_a-fdomain.obj: linux/src/drivers/scsi/fdomain.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-fdomain.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-fdomain.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-fdomain.obj `if test -f 
'linux/src/drivers/scsi/fdomain.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/fdomain.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/fdomain.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-fdomain.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-fdomain.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/fdomain.c' 
object='linux/src/drivers/scsi/liblinux_a-fdomain.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-fdomain.obj `if test -f 
'linux/src/drivers/scsi/fdomain.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/fdomain.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/fdomain.c'; fi`
+
+linux/dev/drivers/scsi/liblinux_a-g_NCR5380.o: 
linux/dev/drivers/scsi/g_NCR5380.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/scsi/liblinux_a-g_NCR5380.o -MD -MP -MF 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-g_NCR5380.Tpo -c -o 
linux/dev/drivers/scsi/liblinux_a-g_NCR5380.o `test -f 
'linux/dev/drivers/scsi/g_NCR5380.c' || echo 
'$(srcdir)/'`linux/dev/drivers/scsi/g_NCR5380.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-g_NCR5380.Tpo 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-g_NCR5380.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/scsi/g_NCR5380.c' 
object='linux/dev/drivers/scsi/liblinux_a-g_NCR5380.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/scsi/liblinux_a-g_NCR5380.o `test -f 
'linux/dev/drivers/scsi/g_NCR5380.c' || echo 
'$(srcdir)/'`linux/dev/drivers/scsi/g_NCR5380.c
+
+linux/dev/drivers/scsi/liblinux_a-g_NCR5380.obj: 
linux/dev/drivers/scsi/g_NCR5380.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/scsi/liblinux_a-g_NCR5380.obj -MD -MP -MF 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-g_NCR5380.Tpo -c -o 
linux/dev/drivers/scsi/liblinux_a-g_NCR5380.obj `if test -f 
'linux/dev/drivers/scsi/g_NCR5380.c'; then $(CYGPATH_W) 
'linux/dev/drivers/scsi/g_NCR5380.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/scsi/g_NCR5380.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-g_NCR5380.Tpo 
linux/dev/drivers/scsi/$(DEPDIR)/liblinux_a-g_NCR5380.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/scsi/g_NCR5380.c' 
object='linux/dev/drivers/scsi/liblinux_a-g_NCR5380.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/scsi/liblinux_a-g_NCR5380.obj `if test -f 
'linux/dev/drivers/scsi/g_NCR5380.c'; then $(CYGPATH_W) 
'linux/dev/drivers/scsi/g_NCR5380.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/scsi/g_NCR5380.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-gdth.o: linux/src/drivers/scsi/gdth.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-gdth.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-gdth.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-gdth.o `test -f 
'linux/src/drivers/scsi/gdth.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/gdth.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-gdth.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-gdth.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/gdth.c' 
object='linux/src/drivers/scsi/liblinux_a-gdth.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-gdth.o `test -f 
'linux/src/drivers/scsi/gdth.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/gdth.c
+
+linux/src/drivers/scsi/liblinux_a-gdth.obj: linux/src/drivers/scsi/gdth.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-gdth.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-gdth.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-gdth.obj `if test -f 
'linux/src/drivers/scsi/gdth.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/gdth.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/gdth.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-gdth.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-gdth.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/gdth.c' 
object='linux/src/drivers/scsi/liblinux_a-gdth.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-gdth.obj `if test -f 
'linux/src/drivers/scsi/gdth.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/gdth.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/gdth.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-in2000.o: linux/src/drivers/scsi/in2000.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-in2000.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-in2000.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-in2000.o `test -f 
'linux/src/drivers/scsi/in2000.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/in2000.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-in2000.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-in2000.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/in2000.c' 
object='linux/src/drivers/scsi/liblinux_a-in2000.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-in2000.o `test -f 
'linux/src/drivers/scsi/in2000.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/in2000.c
+
+linux/src/drivers/scsi/liblinux_a-in2000.obj: linux/src/drivers/scsi/in2000.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-in2000.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-in2000.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-in2000.obj `if test -f 
'linux/src/drivers/scsi/in2000.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/in2000.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/in2000.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-in2000.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-in2000.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/in2000.c' 
object='linux/src/drivers/scsi/liblinux_a-in2000.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-in2000.obj `if test -f 
'linux/src/drivers/scsi/in2000.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/in2000.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/in2000.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-ncr53c8xx.o: 
linux/src/drivers/scsi/ncr53c8xx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-ncr53c8xx.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ncr53c8xx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-ncr53c8xx.o `test -f 
'linux/src/drivers/scsi/ncr53c8xx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/ncr53c8xx.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ncr53c8xx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ncr53c8xx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/ncr53c8xx.c' 
object='linux/src/drivers/scsi/liblinux_a-ncr53c8xx.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-ncr53c8xx.o `test -f 
'linux/src/drivers/scsi/ncr53c8xx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/ncr53c8xx.c
+
+linux/src/drivers/scsi/liblinux_a-ncr53c8xx.obj: 
linux/src/drivers/scsi/ncr53c8xx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-ncr53c8xx.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ncr53c8xx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-ncr53c8xx.obj `if test -f 
'linux/src/drivers/scsi/ncr53c8xx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/ncr53c8xx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/ncr53c8xx.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ncr53c8xx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ncr53c8xx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/ncr53c8xx.c' 
object='linux/src/drivers/scsi/liblinux_a-ncr53c8xx.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-ncr53c8xx.obj `if test -f 
'linux/src/drivers/scsi/ncr53c8xx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/ncr53c8xx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/ncr53c8xx.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-pas16.o: linux/src/drivers/scsi/pas16.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-pas16.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-pas16.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-pas16.o `test -f 
'linux/src/drivers/scsi/pas16.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/pas16.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-pas16.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-pas16.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/pas16.c' 
object='linux/src/drivers/scsi/liblinux_a-pas16.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-pas16.o `test -f 
'linux/src/drivers/scsi/pas16.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/pas16.c
+
+linux/src/drivers/scsi/liblinux_a-pas16.obj: linux/src/drivers/scsi/pas16.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-pas16.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-pas16.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-pas16.obj `if test -f 
'linux/src/drivers/scsi/pas16.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/pas16.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/pas16.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-pas16.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-pas16.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/pas16.c' 
object='linux/src/drivers/scsi/liblinux_a-pas16.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-pas16.obj `if test -f 
'linux/src/drivers/scsi/pas16.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/pas16.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/pas16.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-ppa.o: linux/src/drivers/scsi/ppa.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-ppa.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ppa.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-ppa.o `test -f 'linux/src/drivers/scsi/ppa.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/ppa.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ppa.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ppa.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/ppa.c' 
object='linux/src/drivers/scsi/liblinux_a-ppa.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-ppa.o `test -f 'linux/src/drivers/scsi/ppa.c' 
|| echo '$(srcdir)/'`linux/src/drivers/scsi/ppa.c
+
+linux/src/drivers/scsi/liblinux_a-ppa.obj: linux/src/drivers/scsi/ppa.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-ppa.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ppa.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-ppa.obj `if test -f 
'linux/src/drivers/scsi/ppa.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/ppa.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/ppa.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ppa.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ppa.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/ppa.c' 
object='linux/src/drivers/scsi/liblinux_a-ppa.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-ppa.obj `if test -f 
'linux/src/drivers/scsi/ppa.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/ppa.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/ppa.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-qlogicfas.o: 
linux/src/drivers/scsi/qlogicfas.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-qlogicfas.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicfas.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicfas.o `test -f 
'linux/src/drivers/scsi/qlogicfas.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/qlogicfas.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicfas.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicfas.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/qlogicfas.c' 
object='linux/src/drivers/scsi/liblinux_a-qlogicfas.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicfas.o `test -f 
'linux/src/drivers/scsi/qlogicfas.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/qlogicfas.c
+
+linux/src/drivers/scsi/liblinux_a-qlogicfas.obj: 
linux/src/drivers/scsi/qlogicfas.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-qlogicfas.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicfas.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicfas.obj `if test -f 
'linux/src/drivers/scsi/qlogicfas.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/qlogicfas.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/qlogicfas.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicfas.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicfas.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/qlogicfas.c' 
object='linux/src/drivers/scsi/liblinux_a-qlogicfas.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicfas.obj `if test -f 
'linux/src/drivers/scsi/qlogicfas.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/qlogicfas.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/qlogicfas.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-qlogicisp.o: 
linux/src/drivers/scsi/qlogicisp.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-qlogicisp.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicisp.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicisp.o `test -f 
'linux/src/drivers/scsi/qlogicisp.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/qlogicisp.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicisp.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicisp.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/qlogicisp.c' 
object='linux/src/drivers/scsi/liblinux_a-qlogicisp.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicisp.o `test -f 
'linux/src/drivers/scsi/qlogicisp.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/qlogicisp.c
+
+linux/src/drivers/scsi/liblinux_a-qlogicisp.obj: 
linux/src/drivers/scsi/qlogicisp.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-qlogicisp.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicisp.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicisp.obj `if test -f 
'linux/src/drivers/scsi/qlogicisp.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/qlogicisp.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/qlogicisp.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicisp.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-qlogicisp.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/qlogicisp.c' 
object='linux/src/drivers/scsi/liblinux_a-qlogicisp.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-qlogicisp.obj `if test -f 
'linux/src/drivers/scsi/qlogicisp.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/qlogicisp.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/qlogicisp.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-seagate.o: linux/src/drivers/scsi/seagate.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-seagate.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-seagate.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-seagate.o `test -f 
'linux/src/drivers/scsi/seagate.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/seagate.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-seagate.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-seagate.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/seagate.c' 
object='linux/src/drivers/scsi/liblinux_a-seagate.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-seagate.o `test -f 
'linux/src/drivers/scsi/seagate.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/seagate.c
+
+linux/src/drivers/scsi/liblinux_a-seagate.obj: linux/src/drivers/scsi/seagate.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-seagate.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-seagate.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-seagate.obj `if test -f 
'linux/src/drivers/scsi/seagate.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/seagate.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/seagate.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-seagate.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-seagate.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/seagate.c' 
object='linux/src/drivers/scsi/liblinux_a-seagate.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-seagate.obj `if test -f 
'linux/src/drivers/scsi/seagate.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/seagate.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/seagate.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-sym53c8xx.o: 
linux/src/drivers/scsi/sym53c8xx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sym53c8xx.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sym53c8xx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sym53c8xx.o `test -f 
'linux/src/drivers/scsi/sym53c8xx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/sym53c8xx.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sym53c8xx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sym53c8xx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sym53c8xx.c' 
object='linux/src/drivers/scsi/liblinux_a-sym53c8xx.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sym53c8xx.o `test -f 
'linux/src/drivers/scsi/sym53c8xx.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/sym53c8xx.c
+
+linux/src/drivers/scsi/liblinux_a-sym53c8xx.obj: 
linux/src/drivers/scsi/sym53c8xx.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-sym53c8xx.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sym53c8xx.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-sym53c8xx.obj `if test -f 
'linux/src/drivers/scsi/sym53c8xx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/sym53c8xx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/sym53c8xx.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sym53c8xx.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-sym53c8xx.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/sym53c8xx.c' 
object='linux/src/drivers/scsi/liblinux_a-sym53c8xx.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-sym53c8xx.obj `if test -f 
'linux/src/drivers/scsi/sym53c8xx.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/sym53c8xx.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/sym53c8xx.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-t128.o: linux/src/drivers/scsi/t128.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-t128.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-t128.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-t128.o `test -f 
'linux/src/drivers/scsi/t128.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/t128.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-t128.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-t128.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/t128.c' 
object='linux/src/drivers/scsi/liblinux_a-t128.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-t128.o `test -f 
'linux/src/drivers/scsi/t128.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/t128.c
+
+linux/src/drivers/scsi/liblinux_a-t128.obj: linux/src/drivers/scsi/t128.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-t128.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-t128.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-t128.obj `if test -f 
'linux/src/drivers/scsi/t128.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/t128.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/t128.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-t128.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-t128.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/t128.c' 
object='linux/src/drivers/scsi/liblinux_a-t128.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-t128.obj `if test -f 
'linux/src/drivers/scsi/t128.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/t128.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/t128.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-tmscsim.o: linux/src/drivers/scsi/tmscsim.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-tmscsim.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-tmscsim.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-tmscsim.o `test -f 
'linux/src/drivers/scsi/tmscsim.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/tmscsim.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-tmscsim.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-tmscsim.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/tmscsim.c' 
object='linux/src/drivers/scsi/liblinux_a-tmscsim.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-tmscsim.o `test -f 
'linux/src/drivers/scsi/tmscsim.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/tmscsim.c
+
+linux/src/drivers/scsi/liblinux_a-tmscsim.obj: linux/src/drivers/scsi/tmscsim.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-tmscsim.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-tmscsim.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-tmscsim.obj `if test -f 
'linux/src/drivers/scsi/tmscsim.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/tmscsim.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/tmscsim.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-tmscsim.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-tmscsim.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/tmscsim.c' 
object='linux/src/drivers/scsi/liblinux_a-tmscsim.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-tmscsim.obj `if test -f 
'linux/src/drivers/scsi/tmscsim.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/tmscsim.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/tmscsim.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-u14-34f.o: linux/src/drivers/scsi/u14-34f.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-u14-34f.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-u14-34f.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-u14-34f.o `test -f 
'linux/src/drivers/scsi/u14-34f.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/u14-34f.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-u14-34f.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-u14-34f.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/u14-34f.c' 
object='linux/src/drivers/scsi/liblinux_a-u14-34f.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-u14-34f.o `test -f 
'linux/src/drivers/scsi/u14-34f.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/u14-34f.c
+
+linux/src/drivers/scsi/liblinux_a-u14-34f.obj: linux/src/drivers/scsi/u14-34f.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-u14-34f.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-u14-34f.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-u14-34f.obj `if test -f 
'linux/src/drivers/scsi/u14-34f.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/u14-34f.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/u14-34f.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-u14-34f.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-u14-34f.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/u14-34f.c' 
object='linux/src/drivers/scsi/liblinux_a-u14-34f.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-u14-34f.obj `if test -f 
'linux/src/drivers/scsi/u14-34f.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/u14-34f.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/u14-34f.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-ultrastor.o: 
linux/src/drivers/scsi/ultrastor.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-ultrastor.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ultrastor.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-ultrastor.o `test -f 
'linux/src/drivers/scsi/ultrastor.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/ultrastor.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ultrastor.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ultrastor.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/ultrastor.c' 
object='linux/src/drivers/scsi/liblinux_a-ultrastor.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-ultrastor.o `test -f 
'linux/src/drivers/scsi/ultrastor.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/ultrastor.c
+
+linux/src/drivers/scsi/liblinux_a-ultrastor.obj: 
linux/src/drivers/scsi/ultrastor.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-ultrastor.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ultrastor.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-ultrastor.obj `if test -f 
'linux/src/drivers/scsi/ultrastor.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/ultrastor.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/ultrastor.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ultrastor.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-ultrastor.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/ultrastor.c' 
object='linux/src/drivers/scsi/liblinux_a-ultrastor.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-ultrastor.obj `if test -f 
'linux/src/drivers/scsi/ultrastor.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/ultrastor.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/ultrastor.c'; fi`
+
+linux/src/drivers/scsi/liblinux_a-wd7000.o: linux/src/drivers/scsi/wd7000.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-wd7000.o -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-wd7000.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-wd7000.o `test -f 
'linux/src/drivers/scsi/wd7000.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/wd7000.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-wd7000.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-wd7000.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/wd7000.c' 
object='linux/src/drivers/scsi/liblinux_a-wd7000.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-wd7000.o `test -f 
'linux/src/drivers/scsi/wd7000.c' || echo 
'$(srcdir)/'`linux/src/drivers/scsi/wd7000.c
+
+linux/src/drivers/scsi/liblinux_a-wd7000.obj: linux/src/drivers/scsi/wd7000.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/scsi/liblinux_a-wd7000.obj -MD -MP -MF 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-wd7000.Tpo -c -o 
linux/src/drivers/scsi/liblinux_a-wd7000.obj `if test -f 
'linux/src/drivers/scsi/wd7000.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/wd7000.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/wd7000.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-wd7000.Tpo 
linux/src/drivers/scsi/$(DEPDIR)/liblinux_a-wd7000.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/scsi/wd7000.c' 
object='linux/src/drivers/scsi/liblinux_a-wd7000.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/scsi/liblinux_a-wd7000.obj `if test -f 
'linux/src/drivers/scsi/wd7000.c'; then $(CYGPATH_W) 
'linux/src/drivers/scsi/wd7000.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/scsi/wd7000.c'; fi`
+
+linux/dev/drivers/net/liblinux_a-auto_irq.o: linux/dev/drivers/net/auto_irq.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/net/liblinux_a-auto_irq.o -MD -MP -MF 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-auto_irq.Tpo -c -o 
linux/dev/drivers/net/liblinux_a-auto_irq.o `test -f 
'linux/dev/drivers/net/auto_irq.c' || echo 
'$(srcdir)/'`linux/dev/drivers/net/auto_irq.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-auto_irq.Tpo 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-auto_irq.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/net/auto_irq.c' 
object='linux/dev/drivers/net/liblinux_a-auto_irq.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/net/liblinux_a-auto_irq.o `test -f 
'linux/dev/drivers/net/auto_irq.c' || echo 
'$(srcdir)/'`linux/dev/drivers/net/auto_irq.c
+
+linux/dev/drivers/net/liblinux_a-auto_irq.obj: linux/dev/drivers/net/auto_irq.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/net/liblinux_a-auto_irq.obj -MD -MP -MF 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-auto_irq.Tpo -c -o 
linux/dev/drivers/net/liblinux_a-auto_irq.obj `if test -f 
'linux/dev/drivers/net/auto_irq.c'; then $(CYGPATH_W) 
'linux/dev/drivers/net/auto_irq.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/net/auto_irq.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-auto_irq.Tpo 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-auto_irq.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/net/auto_irq.c' 
object='linux/dev/drivers/net/liblinux_a-auto_irq.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/net/liblinux_a-auto_irq.obj `if test -f 
'linux/dev/drivers/net/auto_irq.c'; then $(CYGPATH_W) 
'linux/dev/drivers/net/auto_irq.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/net/auto_irq.c'; fi`
+
+linux/dev/glue/liblinux_a-net.o: linux/dev/glue/net.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-net.o -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-net.Tpo -c -o 
linux/dev/glue/liblinux_a-net.o `test -f 'linux/dev/glue/net.c' || echo 
'$(srcdir)/'`linux/dev/glue/net.c
address@hidden@ $(AM_V_at)$(am__mv) linux/dev/glue/$(DEPDIR)/liblinux_a-net.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-net.Po
address@hidden@@am__fastdepCC_FALSE@    $(AM_V_CC)source='linux/dev/glue/net.c' 
object='linux/dev/glue/liblinux_a-net.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-net.o `test -f 'linux/dev/glue/net.c' || echo 
'$(srcdir)/'`linux/dev/glue/net.c
+
+linux/dev/glue/liblinux_a-net.obj: linux/dev/glue/net.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/glue/liblinux_a-net.obj -MD -MP -MF 
linux/dev/glue/$(DEPDIR)/liblinux_a-net.Tpo -c -o 
linux/dev/glue/liblinux_a-net.obj `if test -f 'linux/dev/glue/net.c'; then 
$(CYGPATH_W) 'linux/dev/glue/net.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/net.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) linux/dev/glue/$(DEPDIR)/liblinux_a-net.Tpo 
linux/dev/glue/$(DEPDIR)/liblinux_a-net.Po
address@hidden@@am__fastdepCC_FALSE@    $(AM_V_CC)source='linux/dev/glue/net.c' 
object='linux/dev/glue/liblinux_a-net.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/glue/liblinux_a-net.obj `if test -f 'linux/dev/glue/net.c'; then 
$(CYGPATH_W) 'linux/dev/glue/net.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/glue/net.c'; fi`
+
+linux/dev/drivers/net/liblinux_a-Space.o: linux/dev/drivers/net/Space.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/net/liblinux_a-Space.o -MD -MP -MF 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-Space.Tpo -c -o 
linux/dev/drivers/net/liblinux_a-Space.o `test -f 
'linux/dev/drivers/net/Space.c' || echo 
'$(srcdir)/'`linux/dev/drivers/net/Space.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-Space.Tpo 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-Space.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/net/Space.c' 
object='linux/dev/drivers/net/liblinux_a-Space.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/net/liblinux_a-Space.o `test -f 
'linux/dev/drivers/net/Space.c' || echo 
'$(srcdir)/'`linux/dev/drivers/net/Space.c
+
+linux/dev/drivers/net/liblinux_a-Space.obj: linux/dev/drivers/net/Space.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/net/liblinux_a-Space.obj -MD -MP -MF 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-Space.Tpo -c -o 
linux/dev/drivers/net/liblinux_a-Space.obj `if test -f 
'linux/dev/drivers/net/Space.c'; then $(CYGPATH_W) 
'linux/dev/drivers/net/Space.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/net/Space.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-Space.Tpo 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-Space.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/net/Space.c' 
object='linux/dev/drivers/net/liblinux_a-Space.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/net/liblinux_a-Space.obj `if test -f 
'linux/dev/drivers/net/Space.c'; then $(CYGPATH_W) 
'linux/dev/drivers/net/Space.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/net/Space.c'; fi`
+
+linux/dev/net/core/liblinux_a-dev.o: linux/dev/net/core/dev.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/net/core/liblinux_a-dev.o -MD -MP -MF 
linux/dev/net/core/$(DEPDIR)/liblinux_a-dev.Tpo -c -o 
linux/dev/net/core/liblinux_a-dev.o `test -f 'linux/dev/net/core/dev.c' || echo 
'$(srcdir)/'`linux/dev/net/core/dev.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/net/core/$(DEPDIR)/liblinux_a-dev.Tpo 
linux/dev/net/core/$(DEPDIR)/liblinux_a-dev.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/net/core/dev.c' 
object='linux/dev/net/core/liblinux_a-dev.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/net/core/liblinux_a-dev.o `test -f 'linux/dev/net/core/dev.c' || echo 
'$(srcdir)/'`linux/dev/net/core/dev.c
+
+linux/dev/net/core/liblinux_a-dev.obj: linux/dev/net/core/dev.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/net/core/liblinux_a-dev.obj -MD -MP -MF 
linux/dev/net/core/$(DEPDIR)/liblinux_a-dev.Tpo -c -o 
linux/dev/net/core/liblinux_a-dev.obj `if test -f 'linux/dev/net/core/dev.c'; 
then $(CYGPATH_W) 'linux/dev/net/core/dev.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/net/core/dev.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/net/core/$(DEPDIR)/liblinux_a-dev.Tpo 
linux/dev/net/core/$(DEPDIR)/liblinux_a-dev.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/net/core/dev.c' 
object='linux/dev/net/core/liblinux_a-dev.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/net/core/liblinux_a-dev.obj `if test -f 'linux/dev/net/core/dev.c'; 
then $(CYGPATH_W) 'linux/dev/net/core/dev.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/net/core/dev.c'; fi`
+
+linux/dev/drivers/net/liblinux_a-net_init.o: linux/dev/drivers/net/net_init.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/net/liblinux_a-net_init.o -MD -MP -MF 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-net_init.Tpo -c -o 
linux/dev/drivers/net/liblinux_a-net_init.o `test -f 
'linux/dev/drivers/net/net_init.c' || echo 
'$(srcdir)/'`linux/dev/drivers/net/net_init.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-net_init.Tpo 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-net_init.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/net/net_init.c' 
object='linux/dev/drivers/net/liblinux_a-net_init.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/net/liblinux_a-net_init.o `test -f 
'linux/dev/drivers/net/net_init.c' || echo 
'$(srcdir)/'`linux/dev/drivers/net/net_init.c
+
+linux/dev/drivers/net/liblinux_a-net_init.obj: linux/dev/drivers/net/net_init.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/dev/drivers/net/liblinux_a-net_init.obj -MD -MP -MF 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-net_init.Tpo -c -o 
linux/dev/drivers/net/liblinux_a-net_init.obj `if test -f 
'linux/dev/drivers/net/net_init.c'; then $(CYGPATH_W) 
'linux/dev/drivers/net/net_init.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/net/net_init.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-net_init.Tpo 
linux/dev/drivers/net/$(DEPDIR)/liblinux_a-net_init.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/dev/drivers/net/net_init.c' 
object='linux/dev/drivers/net/liblinux_a-net_init.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/dev/drivers/net/liblinux_a-net_init.obj `if test -f 
'linux/dev/drivers/net/net_init.c'; then $(CYGPATH_W) 
'linux/dev/drivers/net/net_init.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/dev/drivers/net/net_init.c'; fi`
+
+linux/src/drivers/net/liblinux_a-pci-scan.o: linux/src/drivers/net/pci-scan.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-pci-scan.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pci-scan.Tpo -c -o 
linux/src/drivers/net/liblinux_a-pci-scan.o `test -f 
'linux/src/drivers/net/pci-scan.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/pci-scan.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pci-scan.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pci-scan.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/pci-scan.c' 
object='linux/src/drivers/net/liblinux_a-pci-scan.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-pci-scan.o `test -f 
'linux/src/drivers/net/pci-scan.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/pci-scan.c
+
+linux/src/drivers/net/liblinux_a-pci-scan.obj: linux/src/drivers/net/pci-scan.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-pci-scan.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pci-scan.Tpo -c -o 
linux/src/drivers/net/liblinux_a-pci-scan.obj `if test -f 
'linux/src/drivers/net/pci-scan.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/pci-scan.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/pci-scan.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pci-scan.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pci-scan.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/pci-scan.c' 
object='linux/src/drivers/net/liblinux_a-pci-scan.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-pci-scan.obj `if test -f 
'linux/src/drivers/net/pci-scan.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/pci-scan.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/pci-scan.c'; fi`
+
+linux/src/drivers/net/liblinux_a-3c501.o: linux/src/drivers/net/3c501.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c501.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c501.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c501.o `test -f 
'linux/src/drivers/net/3c501.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c501.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c501.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c501.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c501.c' 
object='linux/src/drivers/net/liblinux_a-3c501.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c501.o `test -f 
'linux/src/drivers/net/3c501.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c501.c
+
+linux/src/drivers/net/liblinux_a-3c501.obj: linux/src/drivers/net/3c501.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c501.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c501.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c501.obj `if test -f 
'linux/src/drivers/net/3c501.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c501.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c501.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c501.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c501.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c501.c' 
object='linux/src/drivers/net/liblinux_a-3c501.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c501.obj `if test -f 
'linux/src/drivers/net/3c501.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c501.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c501.c'; fi`
+
+linux/src/drivers/net/liblinux_a-3c503.o: linux/src/drivers/net/3c503.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c503.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c503.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c503.o `test -f 
'linux/src/drivers/net/3c503.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c503.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c503.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c503.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c503.c' 
object='linux/src/drivers/net/liblinux_a-3c503.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c503.o `test -f 
'linux/src/drivers/net/3c503.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c503.c
+
+linux/src/drivers/net/liblinux_a-3c503.obj: linux/src/drivers/net/3c503.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c503.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c503.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c503.obj `if test -f 
'linux/src/drivers/net/3c503.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c503.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c503.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c503.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c503.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c503.c' 
object='linux/src/drivers/net/liblinux_a-3c503.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c503.obj `if test -f 
'linux/src/drivers/net/3c503.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c503.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c503.c'; fi`
+
+linux/src/drivers/net/liblinux_a-8390.o: linux/src/drivers/net/8390.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-8390.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-8390.Tpo -c -o 
linux/src/drivers/net/liblinux_a-8390.o `test -f 'linux/src/drivers/net/8390.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/8390.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-8390.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-8390.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/8390.c' 
object='linux/src/drivers/net/liblinux_a-8390.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-8390.o `test -f 'linux/src/drivers/net/8390.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/8390.c
+
+linux/src/drivers/net/liblinux_a-8390.obj: linux/src/drivers/net/8390.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-8390.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-8390.Tpo -c -o 
linux/src/drivers/net/liblinux_a-8390.obj `if test -f 
'linux/src/drivers/net/8390.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/8390.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/8390.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-8390.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-8390.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/8390.c' 
object='linux/src/drivers/net/liblinux_a-8390.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-8390.obj `if test -f 
'linux/src/drivers/net/8390.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/8390.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/8390.c'; fi`
+
+linux/src/drivers/net/liblinux_a-3c505.o: linux/src/drivers/net/3c505.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c505.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c505.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c505.o `test -f 
'linux/src/drivers/net/3c505.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c505.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c505.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c505.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c505.c' 
object='linux/src/drivers/net/liblinux_a-3c505.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c505.o `test -f 
'linux/src/drivers/net/3c505.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c505.c
+
+linux/src/drivers/net/liblinux_a-3c505.obj: linux/src/drivers/net/3c505.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c505.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c505.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c505.obj `if test -f 
'linux/src/drivers/net/3c505.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c505.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c505.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c505.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c505.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c505.c' 
object='linux/src/drivers/net/liblinux_a-3c505.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c505.obj `if test -f 
'linux/src/drivers/net/3c505.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c505.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c505.c'; fi`
+
+linux/src/drivers/net/liblinux_a-3c507.o: linux/src/drivers/net/3c507.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c507.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c507.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c507.o `test -f 
'linux/src/drivers/net/3c507.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c507.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c507.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c507.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c507.c' 
object='linux/src/drivers/net/liblinux_a-3c507.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c507.o `test -f 
'linux/src/drivers/net/3c507.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c507.c
+
+linux/src/drivers/net/liblinux_a-3c507.obj: linux/src/drivers/net/3c507.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c507.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c507.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c507.obj `if test -f 
'linux/src/drivers/net/3c507.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c507.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c507.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c507.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c507.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c507.c' 
object='linux/src/drivers/net/liblinux_a-3c507.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c507.obj `if test -f 
'linux/src/drivers/net/3c507.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c507.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c507.c'; fi`
+
+linux/src/drivers/net/liblinux_a-3c509.o: linux/src/drivers/net/3c509.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c509.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c509.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c509.o `test -f 
'linux/src/drivers/net/3c509.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c509.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c509.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c509.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c509.c' 
object='linux/src/drivers/net/liblinux_a-3c509.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c509.o `test -f 
'linux/src/drivers/net/3c509.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c509.c
+
+linux/src/drivers/net/liblinux_a-3c509.obj: linux/src/drivers/net/3c509.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c509.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c509.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c509.obj `if test -f 
'linux/src/drivers/net/3c509.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c509.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c509.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c509.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c509.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c509.c' 
object='linux/src/drivers/net/liblinux_a-3c509.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c509.obj `if test -f 
'linux/src/drivers/net/3c509.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c509.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c509.c'; fi`
+
+linux/src/drivers/net/liblinux_a-3c59x.o: linux/src/drivers/net/3c59x.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c59x.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c59x.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c59x.o `test -f 
'linux/src/drivers/net/3c59x.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c59x.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c59x.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c59x.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c59x.c' 
object='linux/src/drivers/net/liblinux_a-3c59x.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c59x.o `test -f 
'linux/src/drivers/net/3c59x.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c59x.c
+
+linux/src/drivers/net/liblinux_a-3c59x.obj: linux/src/drivers/net/3c59x.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c59x.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c59x.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c59x.obj `if test -f 
'linux/src/drivers/net/3c59x.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c59x.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c59x.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c59x.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c59x.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c59x.c' 
object='linux/src/drivers/net/liblinux_a-3c59x.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c59x.obj `if test -f 
'linux/src/drivers/net/3c59x.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c59x.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c59x.c'; fi`
+
+linux/src/drivers/net/liblinux_a-3c515.o: linux/src/drivers/net/3c515.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c515.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c515.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c515.o `test -f 
'linux/src/drivers/net/3c515.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c515.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c515.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c515.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c515.c' 
object='linux/src/drivers/net/liblinux_a-3c515.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c515.o `test -f 
'linux/src/drivers/net/3c515.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/3c515.c
+
+linux/src/drivers/net/liblinux_a-3c515.obj: linux/src/drivers/net/3c515.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-3c515.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c515.Tpo -c -o 
linux/src/drivers/net/liblinux_a-3c515.obj `if test -f 
'linux/src/drivers/net/3c515.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c515.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c515.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c515.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-3c515.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/3c515.c' 
object='linux/src/drivers/net/liblinux_a-3c515.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-3c515.obj `if test -f 
'linux/src/drivers/net/3c515.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/3c515.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/3c515.c'; fi`
+
+linux/src/drivers/net/liblinux_a-ac3200.o: linux/src/drivers/net/ac3200.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ac3200.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ac3200.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ac3200.o `test -f 
'linux/src/drivers/net/ac3200.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ac3200.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ac3200.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ac3200.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ac3200.c' 
object='linux/src/drivers/net/liblinux_a-ac3200.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ac3200.o `test -f 
'linux/src/drivers/net/ac3200.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ac3200.c
+
+linux/src/drivers/net/liblinux_a-ac3200.obj: linux/src/drivers/net/ac3200.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ac3200.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ac3200.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ac3200.obj `if test -f 
'linux/src/drivers/net/ac3200.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ac3200.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ac3200.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ac3200.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ac3200.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ac3200.c' 
object='linux/src/drivers/net/liblinux_a-ac3200.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ac3200.obj `if test -f 
'linux/src/drivers/net/ac3200.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ac3200.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ac3200.c'; fi`
+
+linux/src/drivers/net/liblinux_a-apricot.o: linux/src/drivers/net/apricot.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-apricot.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-apricot.Tpo -c -o 
linux/src/drivers/net/liblinux_a-apricot.o `test -f 
'linux/src/drivers/net/apricot.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/apricot.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-apricot.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-apricot.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/apricot.c' 
object='linux/src/drivers/net/liblinux_a-apricot.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-apricot.o `test -f 
'linux/src/drivers/net/apricot.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/apricot.c
+
+linux/src/drivers/net/liblinux_a-apricot.obj: linux/src/drivers/net/apricot.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-apricot.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-apricot.Tpo -c -o 
linux/src/drivers/net/liblinux_a-apricot.obj `if test -f 
'linux/src/drivers/net/apricot.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/apricot.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/apricot.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-apricot.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-apricot.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/apricot.c' 
object='linux/src/drivers/net/liblinux_a-apricot.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-apricot.obj `if test -f 
'linux/src/drivers/net/apricot.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/apricot.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/apricot.c'; fi`
+
+linux/src/drivers/net/liblinux_a-at1700.o: linux/src/drivers/net/at1700.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-at1700.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-at1700.Tpo -c -o 
linux/src/drivers/net/liblinux_a-at1700.o `test -f 
'linux/src/drivers/net/at1700.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/at1700.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-at1700.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-at1700.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/at1700.c' 
object='linux/src/drivers/net/liblinux_a-at1700.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-at1700.o `test -f 
'linux/src/drivers/net/at1700.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/at1700.c
+
+linux/src/drivers/net/liblinux_a-at1700.obj: linux/src/drivers/net/at1700.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-at1700.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-at1700.Tpo -c -o 
linux/src/drivers/net/liblinux_a-at1700.obj `if test -f 
'linux/src/drivers/net/at1700.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/at1700.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/at1700.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-at1700.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-at1700.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/at1700.c' 
object='linux/src/drivers/net/liblinux_a-at1700.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-at1700.obj `if test -f 
'linux/src/drivers/net/at1700.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/at1700.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/at1700.c'; fi`
+
+linux/src/drivers/net/liblinux_a-atp.o: linux/src/drivers/net/atp.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-atp.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-atp.Tpo -c -o 
linux/src/drivers/net/liblinux_a-atp.o `test -f 'linux/src/drivers/net/atp.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/atp.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-atp.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-atp.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/atp.c' 
object='linux/src/drivers/net/liblinux_a-atp.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-atp.o `test -f 'linux/src/drivers/net/atp.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/atp.c
+
+linux/src/drivers/net/liblinux_a-atp.obj: linux/src/drivers/net/atp.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-atp.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-atp.Tpo -c -o 
linux/src/drivers/net/liblinux_a-atp.obj `if test -f 
'linux/src/drivers/net/atp.c'; then $(CYGPATH_W) 'linux/src/drivers/net/atp.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/atp.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-atp.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-atp.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/atp.c' 
object='linux/src/drivers/net/liblinux_a-atp.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-atp.obj `if test -f 
'linux/src/drivers/net/atp.c'; then $(CYGPATH_W) 'linux/src/drivers/net/atp.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/atp.c'; fi`
+
+linux/src/drivers/net/liblinux_a-de4x5.o: linux/src/drivers/net/de4x5.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-de4x5.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de4x5.Tpo -c -o 
linux/src/drivers/net/liblinux_a-de4x5.o `test -f 
'linux/src/drivers/net/de4x5.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/de4x5.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de4x5.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de4x5.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/de4x5.c' 
object='linux/src/drivers/net/liblinux_a-de4x5.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-de4x5.o `test -f 
'linux/src/drivers/net/de4x5.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/de4x5.c
+
+linux/src/drivers/net/liblinux_a-de4x5.obj: linux/src/drivers/net/de4x5.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-de4x5.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de4x5.Tpo -c -o 
linux/src/drivers/net/liblinux_a-de4x5.obj `if test -f 
'linux/src/drivers/net/de4x5.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/de4x5.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/de4x5.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de4x5.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de4x5.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/de4x5.c' 
object='linux/src/drivers/net/liblinux_a-de4x5.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-de4x5.obj `if test -f 
'linux/src/drivers/net/de4x5.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/de4x5.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/de4x5.c'; fi`
+
+linux/src/drivers/net/liblinux_a-de600.o: linux/src/drivers/net/de600.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-de600.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de600.Tpo -c -o 
linux/src/drivers/net/liblinux_a-de600.o `test -f 
'linux/src/drivers/net/de600.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/de600.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de600.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de600.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/de600.c' 
object='linux/src/drivers/net/liblinux_a-de600.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-de600.o `test -f 
'linux/src/drivers/net/de600.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/de600.c
+
+linux/src/drivers/net/liblinux_a-de600.obj: linux/src/drivers/net/de600.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-de600.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de600.Tpo -c -o 
linux/src/drivers/net/liblinux_a-de600.obj `if test -f 
'linux/src/drivers/net/de600.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/de600.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/de600.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de600.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de600.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/de600.c' 
object='linux/src/drivers/net/liblinux_a-de600.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-de600.obj `if test -f 
'linux/src/drivers/net/de600.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/de600.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/de600.c'; fi`
+
+linux/src/drivers/net/liblinux_a-de620.o: linux/src/drivers/net/de620.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-de620.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de620.Tpo -c -o 
linux/src/drivers/net/liblinux_a-de620.o `test -f 
'linux/src/drivers/net/de620.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/de620.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de620.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de620.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/de620.c' 
object='linux/src/drivers/net/liblinux_a-de620.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-de620.o `test -f 
'linux/src/drivers/net/de620.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/de620.c
+
+linux/src/drivers/net/liblinux_a-de620.obj: linux/src/drivers/net/de620.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-de620.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de620.Tpo -c -o 
linux/src/drivers/net/liblinux_a-de620.obj `if test -f 
'linux/src/drivers/net/de620.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/de620.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/de620.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de620.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-de620.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/de620.c' 
object='linux/src/drivers/net/liblinux_a-de620.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-de620.obj `if test -f 
'linux/src/drivers/net/de620.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/de620.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/de620.c'; fi`
+
+linux/src/drivers/net/liblinux_a-depca.o: linux/src/drivers/net/depca.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-depca.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-depca.Tpo -c -o 
linux/src/drivers/net/liblinux_a-depca.o `test -f 
'linux/src/drivers/net/depca.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/depca.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-depca.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-depca.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/depca.c' 
object='linux/src/drivers/net/liblinux_a-depca.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-depca.o `test -f 
'linux/src/drivers/net/depca.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/depca.c
+
+linux/src/drivers/net/liblinux_a-depca.obj: linux/src/drivers/net/depca.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-depca.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-depca.Tpo -c -o 
linux/src/drivers/net/liblinux_a-depca.obj `if test -f 
'linux/src/drivers/net/depca.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/depca.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/depca.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-depca.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-depca.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/depca.c' 
object='linux/src/drivers/net/liblinux_a-depca.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-depca.obj `if test -f 
'linux/src/drivers/net/depca.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/depca.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/depca.c'; fi`
+
+linux/src/drivers/net/liblinux_a-e2100.o: linux/src/drivers/net/e2100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-e2100.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-e2100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-e2100.o `test -f 
'linux/src/drivers/net/e2100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/e2100.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-e2100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-e2100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/e2100.c' 
object='linux/src/drivers/net/liblinux_a-e2100.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-e2100.o `test -f 
'linux/src/drivers/net/e2100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/e2100.c
+
+linux/src/drivers/net/liblinux_a-e2100.obj: linux/src/drivers/net/e2100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-e2100.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-e2100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-e2100.obj `if test -f 
'linux/src/drivers/net/e2100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/e2100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/e2100.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-e2100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-e2100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/e2100.c' 
object='linux/src/drivers/net/liblinux_a-e2100.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-e2100.obj `if test -f 
'linux/src/drivers/net/e2100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/e2100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/e2100.c'; fi`
+
+linux/src/drivers/net/liblinux_a-eepro.o: linux/src/drivers/net/eepro.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eepro.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eepro.o `test -f 
'linux/src/drivers/net/eepro.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eepro.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eepro.c' 
object='linux/src/drivers/net/liblinux_a-eepro.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eepro.o `test -f 
'linux/src/drivers/net/eepro.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eepro.c
+
+linux/src/drivers/net/liblinux_a-eepro.obj: linux/src/drivers/net/eepro.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eepro.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eepro.obj `if test -f 
'linux/src/drivers/net/eepro.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eepro.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eepro.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eepro.c' 
object='linux/src/drivers/net/liblinux_a-eepro.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eepro.obj `if test -f 
'linux/src/drivers/net/eepro.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eepro.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eepro.c'; fi`
+
+linux/src/drivers/net/liblinux_a-eepro100.o: linux/src/drivers/net/eepro100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eepro100.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eepro100.o `test -f 
'linux/src/drivers/net/eepro100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eepro100.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eepro100.c' 
object='linux/src/drivers/net/liblinux_a-eepro100.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eepro100.o `test -f 
'linux/src/drivers/net/eepro100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eepro100.c
+
+linux/src/drivers/net/liblinux_a-eepro100.obj: linux/src/drivers/net/eepro100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eepro100.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eepro100.obj `if test -f 
'linux/src/drivers/net/eepro100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eepro100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eepro100.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eepro100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eepro100.c' 
object='linux/src/drivers/net/liblinux_a-eepro100.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eepro100.obj `if test -f 
'linux/src/drivers/net/eepro100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eepro100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eepro100.c'; fi`
+
+linux/src/drivers/net/liblinux_a-eexpress.o: linux/src/drivers/net/eexpress.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eexpress.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eexpress.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eexpress.o `test -f 
'linux/src/drivers/net/eexpress.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eexpress.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eexpress.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eexpress.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eexpress.c' 
object='linux/src/drivers/net/liblinux_a-eexpress.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eexpress.o `test -f 
'linux/src/drivers/net/eexpress.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eexpress.c
+
+linux/src/drivers/net/liblinux_a-eexpress.obj: linux/src/drivers/net/eexpress.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eexpress.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eexpress.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eexpress.obj `if test -f 
'linux/src/drivers/net/eexpress.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eexpress.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eexpress.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eexpress.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eexpress.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eexpress.c' 
object='linux/src/drivers/net/liblinux_a-eexpress.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eexpress.obj `if test -f 
'linux/src/drivers/net/eexpress.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eexpress.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eexpress.c'; fi`
+
+linux/src/drivers/net/liblinux_a-epic100.o: linux/src/drivers/net/epic100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-epic100.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-epic100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-epic100.o `test -f 
'linux/src/drivers/net/epic100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/epic100.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-epic100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-epic100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/epic100.c' 
object='linux/src/drivers/net/liblinux_a-epic100.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-epic100.o `test -f 
'linux/src/drivers/net/epic100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/epic100.c
+
+linux/src/drivers/net/liblinux_a-epic100.obj: linux/src/drivers/net/epic100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-epic100.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-epic100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-epic100.obj `if test -f 
'linux/src/drivers/net/epic100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/epic100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/epic100.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-epic100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-epic100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/epic100.c' 
object='linux/src/drivers/net/liblinux_a-epic100.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-epic100.obj `if test -f 
'linux/src/drivers/net/epic100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/epic100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/epic100.c'; fi`
+
+linux/src/drivers/net/liblinux_a-eth16i.o: linux/src/drivers/net/eth16i.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eth16i.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eth16i.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eth16i.o `test -f 
'linux/src/drivers/net/eth16i.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eth16i.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eth16i.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eth16i.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eth16i.c' 
object='linux/src/drivers/net/liblinux_a-eth16i.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eth16i.o `test -f 
'linux/src/drivers/net/eth16i.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/eth16i.c
+
+linux/src/drivers/net/liblinux_a-eth16i.obj: linux/src/drivers/net/eth16i.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-eth16i.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eth16i.Tpo -c -o 
linux/src/drivers/net/liblinux_a-eth16i.obj `if test -f 
'linux/src/drivers/net/eth16i.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eth16i.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eth16i.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eth16i.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-eth16i.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/eth16i.c' 
object='linux/src/drivers/net/liblinux_a-eth16i.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-eth16i.obj `if test -f 
'linux/src/drivers/net/eth16i.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/eth16i.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/eth16i.c'; fi`
+
+linux/src/drivers/net/liblinux_a-ewrk3.o: linux/src/drivers/net/ewrk3.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ewrk3.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ewrk3.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ewrk3.o `test -f 
'linux/src/drivers/net/ewrk3.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ewrk3.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ewrk3.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ewrk3.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ewrk3.c' 
object='linux/src/drivers/net/liblinux_a-ewrk3.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ewrk3.o `test -f 
'linux/src/drivers/net/ewrk3.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ewrk3.c
+
+linux/src/drivers/net/liblinux_a-ewrk3.obj: linux/src/drivers/net/ewrk3.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ewrk3.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ewrk3.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ewrk3.obj `if test -f 
'linux/src/drivers/net/ewrk3.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ewrk3.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ewrk3.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ewrk3.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ewrk3.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ewrk3.c' 
object='linux/src/drivers/net/liblinux_a-ewrk3.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ewrk3.obj `if test -f 
'linux/src/drivers/net/ewrk3.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ewrk3.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ewrk3.c'; fi`
+
+linux/src/drivers/net/liblinux_a-fmv18x.o: linux/src/drivers/net/fmv18x.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-fmv18x.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-fmv18x.Tpo -c -o 
linux/src/drivers/net/liblinux_a-fmv18x.o `test -f 
'linux/src/drivers/net/fmv18x.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/fmv18x.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-fmv18x.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-fmv18x.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/fmv18x.c' 
object='linux/src/drivers/net/liblinux_a-fmv18x.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-fmv18x.o `test -f 
'linux/src/drivers/net/fmv18x.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/fmv18x.c
+
+linux/src/drivers/net/liblinux_a-fmv18x.obj: linux/src/drivers/net/fmv18x.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-fmv18x.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-fmv18x.Tpo -c -o 
linux/src/drivers/net/liblinux_a-fmv18x.obj `if test -f 
'linux/src/drivers/net/fmv18x.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/fmv18x.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/fmv18x.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-fmv18x.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-fmv18x.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/fmv18x.c' 
object='linux/src/drivers/net/liblinux_a-fmv18x.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-fmv18x.obj `if test -f 
'linux/src/drivers/net/fmv18x.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/fmv18x.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/fmv18x.c'; fi`
+
+linux/src/drivers/net/liblinux_a-hamachi.o: linux/src/drivers/net/hamachi.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hamachi.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hamachi.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hamachi.o `test -f 
'linux/src/drivers/net/hamachi.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/hamachi.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hamachi.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hamachi.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hamachi.c' 
object='linux/src/drivers/net/liblinux_a-hamachi.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hamachi.o `test -f 
'linux/src/drivers/net/hamachi.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/hamachi.c
+
+linux/src/drivers/net/liblinux_a-hamachi.obj: linux/src/drivers/net/hamachi.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hamachi.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hamachi.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hamachi.obj `if test -f 
'linux/src/drivers/net/hamachi.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/hamachi.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/hamachi.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hamachi.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hamachi.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hamachi.c' 
object='linux/src/drivers/net/liblinux_a-hamachi.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hamachi.obj `if test -f 
'linux/src/drivers/net/hamachi.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/hamachi.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/hamachi.c'; fi`
+
+linux/src/drivers/net/liblinux_a-hp-plus.o: linux/src/drivers/net/hp-plus.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hp-plus.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp-plus.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hp-plus.o `test -f 
'linux/src/drivers/net/hp-plus.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/hp-plus.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp-plus.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp-plus.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hp-plus.c' 
object='linux/src/drivers/net/liblinux_a-hp-plus.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hp-plus.o `test -f 
'linux/src/drivers/net/hp-plus.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/hp-plus.c
+
+linux/src/drivers/net/liblinux_a-hp-plus.obj: linux/src/drivers/net/hp-plus.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hp-plus.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp-plus.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hp-plus.obj `if test -f 
'linux/src/drivers/net/hp-plus.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/hp-plus.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/hp-plus.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp-plus.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp-plus.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hp-plus.c' 
object='linux/src/drivers/net/liblinux_a-hp-plus.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hp-plus.obj `if test -f 
'linux/src/drivers/net/hp-plus.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/hp-plus.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/hp-plus.c'; fi`
+
+linux/src/drivers/net/liblinux_a-hp.o: linux/src/drivers/net/hp.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hp.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hp.o `test -f 'linux/src/drivers/net/hp.c' || 
echo '$(srcdir)/'`linux/src/drivers/net/hp.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hp.c' 
object='linux/src/drivers/net/liblinux_a-hp.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hp.o `test -f 'linux/src/drivers/net/hp.c' || 
echo '$(srcdir)/'`linux/src/drivers/net/hp.c
+
+linux/src/drivers/net/liblinux_a-hp.obj: linux/src/drivers/net/hp.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hp.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hp.obj `if test -f 
'linux/src/drivers/net/hp.c'; then $(CYGPATH_W) 'linux/src/drivers/net/hp.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/hp.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hp.c' 
object='linux/src/drivers/net/liblinux_a-hp.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hp.obj `if test -f 
'linux/src/drivers/net/hp.c'; then $(CYGPATH_W) 'linux/src/drivers/net/hp.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/hp.c'; fi`
+
+linux/src/drivers/net/liblinux_a-hp100.o: linux/src/drivers/net/hp100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hp100.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hp100.o `test -f 
'linux/src/drivers/net/hp100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/hp100.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hp100.c' 
object='linux/src/drivers/net/liblinux_a-hp100.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hp100.o `test -f 
'linux/src/drivers/net/hp100.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/hp100.c
+
+linux/src/drivers/net/liblinux_a-hp100.obj: linux/src/drivers/net/hp100.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-hp100.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp100.Tpo -c -o 
linux/src/drivers/net/liblinux_a-hp100.obj `if test -f 
'linux/src/drivers/net/hp100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/hp100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/hp100.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp100.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-hp100.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/hp100.c' 
object='linux/src/drivers/net/liblinux_a-hp100.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-hp100.obj `if test -f 
'linux/src/drivers/net/hp100.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/hp100.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/hp100.c'; fi`
+
+linux/src/drivers/net/liblinux_a-intel-gige.o: 
linux/src/drivers/net/intel-gige.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-intel-gige.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-intel-gige.Tpo -c -o 
linux/src/drivers/net/liblinux_a-intel-gige.o `test -f 
'linux/src/drivers/net/intel-gige.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/intel-gige.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-intel-gige.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-intel-gige.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/intel-gige.c' 
object='linux/src/drivers/net/liblinux_a-intel-gige.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-intel-gige.o `test -f 
'linux/src/drivers/net/intel-gige.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/intel-gige.c
+
+linux/src/drivers/net/liblinux_a-intel-gige.obj: 
linux/src/drivers/net/intel-gige.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-intel-gige.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-intel-gige.Tpo -c -o 
linux/src/drivers/net/liblinux_a-intel-gige.obj `if test -f 
'linux/src/drivers/net/intel-gige.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/intel-gige.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/intel-gige.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-intel-gige.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-intel-gige.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/intel-gige.c' 
object='linux/src/drivers/net/liblinux_a-intel-gige.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-intel-gige.obj `if test -f 
'linux/src/drivers/net/intel-gige.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/intel-gige.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/intel-gige.c'; fi`
+
+linux/src/drivers/net/liblinux_a-lance.o: linux/src/drivers/net/lance.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-lance.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-lance.Tpo -c -o 
linux/src/drivers/net/liblinux_a-lance.o `test -f 
'linux/src/drivers/net/lance.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/lance.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-lance.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-lance.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/lance.c' 
object='linux/src/drivers/net/liblinux_a-lance.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-lance.o `test -f 
'linux/src/drivers/net/lance.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/lance.c
+
+linux/src/drivers/net/liblinux_a-lance.obj: linux/src/drivers/net/lance.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-lance.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-lance.Tpo -c -o 
linux/src/drivers/net/liblinux_a-lance.obj `if test -f 
'linux/src/drivers/net/lance.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/lance.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/lance.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-lance.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-lance.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/lance.c' 
object='linux/src/drivers/net/liblinux_a-lance.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-lance.obj `if test -f 
'linux/src/drivers/net/lance.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/lance.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/lance.c'; fi`
+
+linux/src/drivers/net/liblinux_a-myson803.o: linux/src/drivers/net/myson803.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-myson803.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-myson803.Tpo -c -o 
linux/src/drivers/net/liblinux_a-myson803.o `test -f 
'linux/src/drivers/net/myson803.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/myson803.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-myson803.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-myson803.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/myson803.c' 
object='linux/src/drivers/net/liblinux_a-myson803.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-myson803.o `test -f 
'linux/src/drivers/net/myson803.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/myson803.c
+
+linux/src/drivers/net/liblinux_a-myson803.obj: linux/src/drivers/net/myson803.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-myson803.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-myson803.Tpo -c -o 
linux/src/drivers/net/liblinux_a-myson803.obj `if test -f 
'linux/src/drivers/net/myson803.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/myson803.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/myson803.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-myson803.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-myson803.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/myson803.c' 
object='linux/src/drivers/net/liblinux_a-myson803.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-myson803.obj `if test -f 
'linux/src/drivers/net/myson803.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/myson803.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/myson803.c'; fi`
+
+linux/src/drivers/net/liblinux_a-natsemi.o: linux/src/drivers/net/natsemi.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-natsemi.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-natsemi.Tpo -c -o 
linux/src/drivers/net/liblinux_a-natsemi.o `test -f 
'linux/src/drivers/net/natsemi.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/natsemi.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-natsemi.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-natsemi.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/natsemi.c' 
object='linux/src/drivers/net/liblinux_a-natsemi.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-natsemi.o `test -f 
'linux/src/drivers/net/natsemi.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/natsemi.c
+
+linux/src/drivers/net/liblinux_a-natsemi.obj: linux/src/drivers/net/natsemi.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-natsemi.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-natsemi.Tpo -c -o 
linux/src/drivers/net/liblinux_a-natsemi.obj `if test -f 
'linux/src/drivers/net/natsemi.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/natsemi.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/natsemi.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-natsemi.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-natsemi.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/natsemi.c' 
object='linux/src/drivers/net/liblinux_a-natsemi.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-natsemi.obj `if test -f 
'linux/src/drivers/net/natsemi.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/natsemi.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/natsemi.c'; fi`
+
+linux/src/drivers/net/liblinux_a-ne.o: linux/src/drivers/net/ne.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ne.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ne.o `test -f 'linux/src/drivers/net/ne.c' || 
echo '$(srcdir)/'`linux/src/drivers/net/ne.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ne.c' 
object='linux/src/drivers/net/liblinux_a-ne.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ne.o `test -f 'linux/src/drivers/net/ne.c' || 
echo '$(srcdir)/'`linux/src/drivers/net/ne.c
+
+linux/src/drivers/net/liblinux_a-ne.obj: linux/src/drivers/net/ne.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ne.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ne.obj `if test -f 
'linux/src/drivers/net/ne.c'; then $(CYGPATH_W) 'linux/src/drivers/net/ne.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/ne.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ne.c' 
object='linux/src/drivers/net/liblinux_a-ne.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ne.obj `if test -f 
'linux/src/drivers/net/ne.c'; then $(CYGPATH_W) 'linux/src/drivers/net/ne.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/ne.c'; fi`
+
+linux/src/drivers/net/liblinux_a-ne2k-pci.o: linux/src/drivers/net/ne2k-pci.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ne2k-pci.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne2k-pci.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ne2k-pci.o `test -f 
'linux/src/drivers/net/ne2k-pci.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ne2k-pci.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne2k-pci.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne2k-pci.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ne2k-pci.c' 
object='linux/src/drivers/net/liblinux_a-ne2k-pci.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ne2k-pci.o `test -f 
'linux/src/drivers/net/ne2k-pci.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ne2k-pci.c
+
+linux/src/drivers/net/liblinux_a-ne2k-pci.obj: linux/src/drivers/net/ne2k-pci.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ne2k-pci.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne2k-pci.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ne2k-pci.obj `if test -f 
'linux/src/drivers/net/ne2k-pci.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ne2k-pci.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ne2k-pci.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne2k-pci.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ne2k-pci.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ne2k-pci.c' 
object='linux/src/drivers/net/liblinux_a-ne2k-pci.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ne2k-pci.obj `if test -f 
'linux/src/drivers/net/ne2k-pci.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ne2k-pci.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ne2k-pci.c'; fi`
+
+linux/src/drivers/net/liblinux_a-ni52.o: linux/src/drivers/net/ni52.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ni52.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni52.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ni52.o `test -f 'linux/src/drivers/net/ni52.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/ni52.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni52.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni52.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ni52.c' 
object='linux/src/drivers/net/liblinux_a-ni52.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ni52.o `test -f 'linux/src/drivers/net/ni52.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/ni52.c
+
+linux/src/drivers/net/liblinux_a-ni52.obj: linux/src/drivers/net/ni52.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ni52.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni52.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ni52.obj `if test -f 
'linux/src/drivers/net/ni52.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ni52.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ni52.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni52.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni52.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ni52.c' 
object='linux/src/drivers/net/liblinux_a-ni52.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ni52.obj `if test -f 
'linux/src/drivers/net/ni52.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ni52.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ni52.c'; fi`
+
+linux/src/drivers/net/liblinux_a-ni65.o: linux/src/drivers/net/ni65.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ni65.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni65.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ni65.o `test -f 'linux/src/drivers/net/ni65.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/ni65.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni65.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni65.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ni65.c' 
object='linux/src/drivers/net/liblinux_a-ni65.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ni65.o `test -f 'linux/src/drivers/net/ni65.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/ni65.c
+
+linux/src/drivers/net/liblinux_a-ni65.obj: linux/src/drivers/net/ni65.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ni65.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni65.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ni65.obj `if test -f 
'linux/src/drivers/net/ni65.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ni65.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ni65.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni65.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ni65.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ni65.c' 
object='linux/src/drivers/net/liblinux_a-ni65.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ni65.obj `if test -f 
'linux/src/drivers/net/ni65.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ni65.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ni65.c'; fi`
+
+linux/src/drivers/net/liblinux_a-ns820.o: linux/src/drivers/net/ns820.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ns820.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ns820.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ns820.o `test -f 
'linux/src/drivers/net/ns820.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ns820.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ns820.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ns820.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ns820.c' 
object='linux/src/drivers/net/liblinux_a-ns820.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ns820.o `test -f 
'linux/src/drivers/net/ns820.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/ns820.c
+
+linux/src/drivers/net/liblinux_a-ns820.obj: linux/src/drivers/net/ns820.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-ns820.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ns820.Tpo -c -o 
linux/src/drivers/net/liblinux_a-ns820.obj `if test -f 
'linux/src/drivers/net/ns820.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ns820.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ns820.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ns820.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-ns820.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/ns820.c' 
object='linux/src/drivers/net/liblinux_a-ns820.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-ns820.obj `if test -f 
'linux/src/drivers/net/ns820.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/ns820.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/ns820.c'; fi`
+
+linux/src/drivers/net/liblinux_a-pcnet32.o: linux/src/drivers/net/pcnet32.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-pcnet32.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pcnet32.Tpo -c -o 
linux/src/drivers/net/liblinux_a-pcnet32.o `test -f 
'linux/src/drivers/net/pcnet32.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/pcnet32.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pcnet32.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pcnet32.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/pcnet32.c' 
object='linux/src/drivers/net/liblinux_a-pcnet32.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-pcnet32.o `test -f 
'linux/src/drivers/net/pcnet32.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/pcnet32.c
+
+linux/src/drivers/net/liblinux_a-pcnet32.obj: linux/src/drivers/net/pcnet32.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-pcnet32.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pcnet32.Tpo -c -o 
linux/src/drivers/net/liblinux_a-pcnet32.obj `if test -f 
'linux/src/drivers/net/pcnet32.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/pcnet32.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/pcnet32.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pcnet32.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-pcnet32.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/pcnet32.c' 
object='linux/src/drivers/net/liblinux_a-pcnet32.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-pcnet32.obj `if test -f 
'linux/src/drivers/net/pcnet32.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/pcnet32.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/pcnet32.c'; fi`
+
+linux/src/drivers/net/liblinux_a-rtl8139.o: linux/src/drivers/net/rtl8139.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-rtl8139.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-rtl8139.Tpo -c -o 
linux/src/drivers/net/liblinux_a-rtl8139.o `test -f 
'linux/src/drivers/net/rtl8139.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/rtl8139.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-rtl8139.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-rtl8139.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/rtl8139.c' 
object='linux/src/drivers/net/liblinux_a-rtl8139.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-rtl8139.o `test -f 
'linux/src/drivers/net/rtl8139.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/rtl8139.c
+
+linux/src/drivers/net/liblinux_a-rtl8139.obj: linux/src/drivers/net/rtl8139.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-rtl8139.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-rtl8139.Tpo -c -o 
linux/src/drivers/net/liblinux_a-rtl8139.obj `if test -f 
'linux/src/drivers/net/rtl8139.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/rtl8139.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/rtl8139.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-rtl8139.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-rtl8139.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/rtl8139.c' 
object='linux/src/drivers/net/liblinux_a-rtl8139.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-rtl8139.obj `if test -f 
'linux/src/drivers/net/rtl8139.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/rtl8139.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/rtl8139.c'; fi`
+
+linux/src/drivers/net/liblinux_a-seeq8005.o: linux/src/drivers/net/seeq8005.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-seeq8005.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-seeq8005.Tpo -c -o 
linux/src/drivers/net/liblinux_a-seeq8005.o `test -f 
'linux/src/drivers/net/seeq8005.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/seeq8005.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-seeq8005.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-seeq8005.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/seeq8005.c' 
object='linux/src/drivers/net/liblinux_a-seeq8005.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-seeq8005.o `test -f 
'linux/src/drivers/net/seeq8005.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/seeq8005.c
+
+linux/src/drivers/net/liblinux_a-seeq8005.obj: linux/src/drivers/net/seeq8005.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-seeq8005.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-seeq8005.Tpo -c -o 
linux/src/drivers/net/liblinux_a-seeq8005.obj `if test -f 
'linux/src/drivers/net/seeq8005.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/seeq8005.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/seeq8005.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-seeq8005.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-seeq8005.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/seeq8005.c' 
object='linux/src/drivers/net/liblinux_a-seeq8005.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-seeq8005.obj `if test -f 
'linux/src/drivers/net/seeq8005.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/seeq8005.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/seeq8005.c'; fi`
+
+linux/src/drivers/net/liblinux_a-sis900.o: linux/src/drivers/net/sis900.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-sis900.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sis900.Tpo -c -o 
linux/src/drivers/net/liblinux_a-sis900.o `test -f 
'linux/src/drivers/net/sis900.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/sis900.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sis900.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sis900.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/sis900.c' 
object='linux/src/drivers/net/liblinux_a-sis900.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-sis900.o `test -f 
'linux/src/drivers/net/sis900.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/sis900.c
+
+linux/src/drivers/net/liblinux_a-sis900.obj: linux/src/drivers/net/sis900.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-sis900.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sis900.Tpo -c -o 
linux/src/drivers/net/liblinux_a-sis900.obj `if test -f 
'linux/src/drivers/net/sis900.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/sis900.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/sis900.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sis900.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sis900.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/sis900.c' 
object='linux/src/drivers/net/liblinux_a-sis900.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-sis900.obj `if test -f 
'linux/src/drivers/net/sis900.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/sis900.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/sis900.c'; fi`
+
+linux/src/drivers/net/liblinux_a-sk_g16.o: linux/src/drivers/net/sk_g16.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-sk_g16.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sk_g16.Tpo -c -o 
linux/src/drivers/net/liblinux_a-sk_g16.o `test -f 
'linux/src/drivers/net/sk_g16.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/sk_g16.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sk_g16.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sk_g16.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/sk_g16.c' 
object='linux/src/drivers/net/liblinux_a-sk_g16.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-sk_g16.o `test -f 
'linux/src/drivers/net/sk_g16.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/sk_g16.c
+
+linux/src/drivers/net/liblinux_a-sk_g16.obj: linux/src/drivers/net/sk_g16.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-sk_g16.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sk_g16.Tpo -c -o 
linux/src/drivers/net/liblinux_a-sk_g16.obj `if test -f 
'linux/src/drivers/net/sk_g16.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/sk_g16.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/sk_g16.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sk_g16.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sk_g16.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/sk_g16.c' 
object='linux/src/drivers/net/liblinux_a-sk_g16.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-sk_g16.obj `if test -f 
'linux/src/drivers/net/sk_g16.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/sk_g16.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/sk_g16.c'; fi`
+
+linux/src/drivers/net/liblinux_a-smc-ultra.o: linux/src/drivers/net/smc-ultra.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-smc-ultra.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra.Tpo -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra.o `test -f 
'linux/src/drivers/net/smc-ultra.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/smc-ultra.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/smc-ultra.c' 
object='linux/src/drivers/net/liblinux_a-smc-ultra.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra.o `test -f 
'linux/src/drivers/net/smc-ultra.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/smc-ultra.c
+
+linux/src/drivers/net/liblinux_a-smc-ultra.obj: 
linux/src/drivers/net/smc-ultra.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-smc-ultra.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra.Tpo -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra.obj `if test -f 
'linux/src/drivers/net/smc-ultra.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/smc-ultra.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/smc-ultra.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/smc-ultra.c' 
object='linux/src/drivers/net/liblinux_a-smc-ultra.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra.obj `if test -f 
'linux/src/drivers/net/smc-ultra.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/smc-ultra.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/smc-ultra.c'; fi`
+
+linux/src/drivers/net/liblinux_a-smc-ultra32.o: 
linux/src/drivers/net/smc-ultra32.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-smc-ultra32.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra32.Tpo -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra32.o `test -f 
'linux/src/drivers/net/smc-ultra32.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/smc-ultra32.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra32.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra32.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/smc-ultra32.c' 
object='linux/src/drivers/net/liblinux_a-smc-ultra32.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra32.o `test -f 
'linux/src/drivers/net/smc-ultra32.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/smc-ultra32.c
+
+linux/src/drivers/net/liblinux_a-smc-ultra32.obj: 
linux/src/drivers/net/smc-ultra32.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-smc-ultra32.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra32.Tpo -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra32.obj `if test -f 
'linux/src/drivers/net/smc-ultra32.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/smc-ultra32.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/smc-ultra32 [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra32.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-smc-ultra32.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/smc-ultra32.c' 
object='linux/src/drivers/net/liblinux_a-smc-ultra32.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-smc-ultra32.obj `if test -f 
'linux/src/drivers/net/smc-ultra32.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/smc-ultra32.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/smc-ultra32.c'; fi`
+
+linux/src/drivers/net/liblinux_a-starfire.o: linux/src/drivers/net/starfire.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-starfire.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-starfire.Tpo -c -o 
linux/src/drivers/net/liblinux_a-starfire.o `test -f 
'linux/src/drivers/net/starfire.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/starfire.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-starfire.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-starfire.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/starfire.c' 
object='linux/src/drivers/net/liblinux_a-starfire.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-starfire.o `test -f 
'linux/src/drivers/net/starfire.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/starfire.c
+
+linux/src/drivers/net/liblinux_a-starfire.obj: linux/src/drivers/net/starfire.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-starfire.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-starfire.Tpo -c -o 
linux/src/drivers/net/liblinux_a-starfire.obj `if test -f 
'linux/src/drivers/net/starfire.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/starfire.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/starfire.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-starfire.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-starfire.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/starfire.c' 
object='linux/src/drivers/net/liblinux_a-starfire.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-starfire.obj `if test -f 
'linux/src/drivers/net/starfire.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/starfire.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/starfire.c'; fi`
+
+linux/src/drivers/net/liblinux_a-sundance.o: linux/src/drivers/net/sundance.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-sundance.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sundance.Tpo -c -o 
linux/src/drivers/net/liblinux_a-sundance.o `test -f 
'linux/src/drivers/net/sundance.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/sundance.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sundance.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sundance.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/sundance.c' 
object='linux/src/drivers/net/liblinux_a-sundance.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-sundance.o `test -f 
'linux/src/drivers/net/sundance.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/sundance.c
+
+linux/src/drivers/net/liblinux_a-sundance.obj: linux/src/drivers/net/sundance.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-sundance.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sundance.Tpo -c -o 
linux/src/drivers/net/liblinux_a-sundance.obj `if test -f 
'linux/src/drivers/net/sundance.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/sundance.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/sundance.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sundance.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-sundance.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/sundance.c' 
object='linux/src/drivers/net/liblinux_a-sundance.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-sundance.obj `if test -f 
'linux/src/drivers/net/sundance.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/sundance.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/sundance.c'; fi`
+
+linux/src/drivers/net/liblinux_a-tlan.o: linux/src/drivers/net/tlan.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-tlan.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tlan.Tpo -c -o 
linux/src/drivers/net/liblinux_a-tlan.o `test -f 'linux/src/drivers/net/tlan.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/tlan.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tlan.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tlan.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/tlan.c' 
object='linux/src/drivers/net/liblinux_a-tlan.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-tlan.o `test -f 'linux/src/drivers/net/tlan.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/tlan.c
+
+linux/src/drivers/net/liblinux_a-tlan.obj: linux/src/drivers/net/tlan.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-tlan.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tlan.Tpo -c -o 
linux/src/drivers/net/liblinux_a-tlan.obj `if test -f 
'linux/src/drivers/net/tlan.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/tlan.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/tlan.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tlan.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tlan.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/tlan.c' 
object='linux/src/drivers/net/liblinux_a-tlan.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-tlan.obj `if test -f 
'linux/src/drivers/net/tlan.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/tlan.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/tlan.c'; fi`
+
+linux/src/drivers/net/liblinux_a-tulip.o: linux/src/drivers/net/tulip.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-tulip.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tulip.Tpo -c -o 
linux/src/drivers/net/liblinux_a-tulip.o `test -f 
'linux/src/drivers/net/tulip.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/tulip.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tulip.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tulip.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/tulip.c' 
object='linux/src/drivers/net/liblinux_a-tulip.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-tulip.o `test -f 
'linux/src/drivers/net/tulip.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/tulip.c
+
+linux/src/drivers/net/liblinux_a-tulip.obj: linux/src/drivers/net/tulip.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-tulip.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tulip.Tpo -c -o 
linux/src/drivers/net/liblinux_a-tulip.obj `if test -f 
'linux/src/drivers/net/tulip.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/tulip.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/tulip.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tulip.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-tulip.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/tulip.c' 
object='linux/src/drivers/net/liblinux_a-tulip.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-tulip.obj `if test -f 
'linux/src/drivers/net/tulip.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/tulip.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/tulip.c'; fi`
+
+linux/src/drivers/net/liblinux_a-via-rhine.o: linux/src/drivers/net/via-rhine.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-via-rhine.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-via-rhine.Tpo -c -o 
linux/src/drivers/net/liblinux_a-via-rhine.o `test -f 
'linux/src/drivers/net/via-rhine.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/via-rhine.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-via-rhine.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-via-rhine.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/via-rhine.c' 
object='linux/src/drivers/net/liblinux_a-via-rhine.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-via-rhine.o `test -f 
'linux/src/drivers/net/via-rhine.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/via-rhine.c
+
+linux/src/drivers/net/liblinux_a-via-rhine.obj: 
linux/src/drivers/net/via-rhine.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-via-rhine.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-via-rhine.Tpo -c -o 
linux/src/drivers/net/liblinux_a-via-rhine.obj `if test -f 
'linux/src/drivers/net/via-rhine.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/via-rhine.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/via-rhine.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-via-rhine.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-via-rhine.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/via-rhine.c' 
object='linux/src/drivers/net/liblinux_a-via-rhine.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-via-rhine.obj `if test -f 
'linux/src/drivers/net/via-rhine.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/via-rhine.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/via-rhine.c'; fi`
+
+linux/src/drivers/net/liblinux_a-wavelan.o: linux/src/drivers/net/wavelan.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-wavelan.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wavelan.Tpo -c -o 
linux/src/drivers/net/liblinux_a-wavelan.o `test -f 
'linux/src/drivers/net/wavelan.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/wavelan.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wavelan.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wavelan.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/wavelan.c' 
object='linux/src/drivers/net/liblinux_a-wavelan.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-wavelan.o `test -f 
'linux/src/drivers/net/wavelan.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/wavelan.c
+
+linux/src/drivers/net/liblinux_a-wavelan.obj: linux/src/drivers/net/wavelan.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-wavelan.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wavelan.Tpo -c -o 
linux/src/drivers/net/liblinux_a-wavelan.obj `if test -f 
'linux/src/drivers/net/wavelan.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/wavelan.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/wavelan.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wavelan.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wavelan.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/wavelan.c' 
object='linux/src/drivers/net/liblinux_a-wavelan.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-wavelan.obj `if test -f 
'linux/src/drivers/net/wavelan.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/wavelan.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/wavelan.c'; fi`
+
+linux/src/drivers/net/liblinux_a-wd.o: linux/src/drivers/net/wd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-wd.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wd.Tpo -c -o 
linux/src/drivers/net/liblinux_a-wd.o `test -f 'linux/src/drivers/net/wd.c' || 
echo '$(srcdir)/'`linux/src/drivers/net/wd.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wd.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/wd.c' 
object='linux/src/drivers/net/liblinux_a-wd.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-wd.o `test -f 'linux/src/drivers/net/wd.c' || 
echo '$(srcdir)/'`linux/src/drivers/net/wd.c
+
+linux/src/drivers/net/liblinux_a-wd.obj: linux/src/drivers/net/wd.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-wd.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wd.Tpo -c -o 
linux/src/drivers/net/liblinux_a-wd.obj `if test -f 
'linux/src/drivers/net/wd.c'; then $(CYGPATH_W) 'linux/src/drivers/net/wd.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/wd.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wd.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-wd.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/wd.c' 
object='linux/src/drivers/net/liblinux_a-wd.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-wd.obj `if test -f 
'linux/src/drivers/net/wd.c'; then $(CYGPATH_W) 'linux/src/drivers/net/wd.c'; 
else $(CYGPATH_W) '$(srcdir)/linux/src/drivers/net/wd.c'; fi`
+
+linux/src/drivers/net/liblinux_a-winbond-840.o: 
linux/src/drivers/net/winbond-840.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-winbond-840.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-winbond-840.Tpo -c -o 
linux/src/drivers/net/liblinux_a-winbond-840.o `test -f 
'linux/src/drivers/net/winbond-840.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/winbond-840.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-winbond-840.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-winbond-840.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/winbond-840.c' 
object='linux/src/drivers/net/liblinux_a-winbond-840.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-winbond-840.o `test -f 
'linux/src/drivers/net/winbond-840.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/winbond-840.c
+
+linux/src/drivers/net/liblinux_a-winbond-840.obj: 
linux/src/drivers/net/winbond-840.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-winbond-840.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-winbond-840.Tpo -c -o 
linux/src/drivers/net/liblinux_a-winbond-840.obj `if test -f 
'linux/src/drivers/net/winbond-840.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/winbond-840.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/winbond-840 [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-winbond-840.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-winbond-840.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/winbond-840.c' 
object='linux/src/drivers/net/liblinux_a-winbond-840.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-winbond-840.obj `if test -f 
'linux/src/drivers/net/winbond-840.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/winbond-840.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/winbond-840.c'; fi`
+
+linux/src/drivers/net/liblinux_a-yellowfin.o: linux/src/drivers/net/yellowfin.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-yellowfin.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-yellowfin.Tpo -c -o 
linux/src/drivers/net/liblinux_a-yellowfin.o `test -f 
'linux/src/drivers/net/yellowfin.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/yellowfin.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-yellowfin.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-yellowfin.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/yellowfin.c' 
object='linux/src/drivers/net/liblinux_a-yellowfin.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-yellowfin.o `test -f 
'linux/src/drivers/net/yellowfin.c' || echo 
'$(srcdir)/'`linux/src/drivers/net/yellowfin.c
+
+linux/src/drivers/net/liblinux_a-yellowfin.obj: 
linux/src/drivers/net/yellowfin.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-yellowfin.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-yellowfin.Tpo -c -o 
linux/src/drivers/net/liblinux_a-yellowfin.obj `if test -f 
'linux/src/drivers/net/yellowfin.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/yellowfin.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/yellowfin.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-yellowfin.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-yellowfin.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/yellowfin.c' 
object='linux/src/drivers/net/liblinux_a-yellowfin.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-yellowfin.obj `if test -f 
'linux/src/drivers/net/yellowfin.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/yellowfin.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/yellowfin.c'; fi`
+
+linux/src/drivers/net/liblinux_a-znet.o: linux/src/drivers/net/znet.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-znet.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-znet.Tpo -c -o 
linux/src/drivers/net/liblinux_a-znet.o `test -f 'linux/src/drivers/net/znet.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/znet.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-znet.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-znet.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/znet.c' 
object='linux/src/drivers/net/liblinux_a-znet.o' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-znet.o `test -f 'linux/src/drivers/net/znet.c' 
|| echo '$(srcdir)/'`linux/src/drivers/net/znet.c
+
+linux/src/drivers/net/liblinux_a-znet.obj: linux/src/drivers/net/znet.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_a-znet.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-znet.Tpo -c -o 
linux/src/drivers/net/liblinux_a-znet.obj `if test -f 
'linux/src/drivers/net/znet.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/znet.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/znet.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-znet.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_a-znet.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/znet.c' 
object='linux/src/drivers/net/liblinux_a-znet.obj' libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_a_CPPFLAGS) $(CPPFLAGS) $(liblinux_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_a-znet.obj `if test -f 
'linux/src/drivers/net/znet.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/znet.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/znet.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.o: 
linux/pcmcia-cs/clients/3c574_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c574_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.o `test -f 
'linux/pcmcia-cs/clients/3c574_cs.c' || echo '$(srcdir)/'`linux/pcmcia-cs/clie 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c574_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c574_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/3c574_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.o `test -f 
'linux/pcmcia-cs/clients/3c574_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/3c574_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.obj: 
linux/pcmcia-cs/clients/3c574_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.obj -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c574_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.obj `if test 
-f 'linux/pcmcia-cs/clients/3c574_cs.c'; then $(CYGPATH_W) 'linux/pcmcia-c [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c574_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c574_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/3c574_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c574_cs.obj `if test -f 
'linux/pcmcia-cs/clients/3c574_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/3c574_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/3c574_cs.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.o: 
linux/pcmcia-cs/clients/3c589_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c589_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.o `test -f 
'linux/pcmcia-cs/clients/3c589_cs.c' || echo '$(srcdir)/'`linux/pcmcia-cs/clie 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c589_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c589_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/3c589_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.o `test -f 
'linux/pcmcia-cs/clients/3c589_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/3c589_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.obj: 
linux/pcmcia-cs/clients/3c589_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.obj -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c589_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.obj `if test 
-f 'linux/pcmcia-cs/clients/3c589_cs.c'; then $(CYGPATH_W) 'linux/pcmcia-c [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c589_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-3c589_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/3c589_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-3c589_cs.obj `if test -f 
'linux/pcmcia-cs/clients/3c589_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/3c589_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/3c589_cs.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.o: 
linux/pcmcia-cs/clients/axnet_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-axnet_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.o `test -f 
'linux/pcmcia-cs/clients/axnet_cs.c' || echo '$(srcdir)/'`linux/pcmcia-cs/clie 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-axnet_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-axnet_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/axnet_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.o `test -f 
'linux/pcmcia-cs/clients/axnet_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/axnet_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.obj: 
linux/pcmcia-cs/clients/axnet_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.obj -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-axnet_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.obj `if test 
-f 'linux/pcmcia-cs/clients/axnet_cs.c'; then $(CYGPATH_W) 'linux/pcmcia-c [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-axnet_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-axnet_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/axnet_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-axnet_cs.obj `if test -f 
'linux/pcmcia-cs/clients/axnet_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/axnet_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/axnet_cs.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.o: 
linux/pcmcia-cs/clients/fmvj18x_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.Tpo 
-c -o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.o `test 
-f 'linux/pcmcia-cs/clients/fmvj18x_cs.c' || echo '$(srcdir)/'`linux/pcmcia 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/fmvj18x_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.o `test -f 
'linux/pcmcia-cs/clients/fmvj18x_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/fmvj18x_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.obj: 
linux/pcmcia-cs/clients/fmvj18x_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.obj -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.Tpo 
-c -o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.obj `if 
test -f 'linux/pcmcia-cs/clients/fmvj18x_cs.c'; then $(CYGPATH_W) 'linux/ [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/fmvj18x_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-fmvj18x_cs.obj `if test -f 
'linux/pcmcia-cs/clients/fmvj18x_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/fmvj18x_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/fmvj18x_cs.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.o: 
linux/pcmcia-cs/clients/nmclan_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-nmclan_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.o `test -f 
'linux/pcmcia-cs/clients/nmclan_cs.c' || echo '$(srcdir)/'`linux/pcmcia-cs/ 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-nmclan_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-nmclan_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/nmclan_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.o `test -f 
'linux/pcmcia-cs/clients/nmclan_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/nmclan_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.obj: 
linux/pcmcia-cs/clients/nmclan_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.obj -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-nmclan_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.obj `if test 
-f 'linux/pcmcia-cs/clients/nmclan_cs.c'; then $(CYGPATH_W) 'linux/pcmc [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-nmclan_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-nmclan_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/nmclan_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-nmclan_cs.obj `if test -f 
'linux/pcmcia-cs/clients/nmclan_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/nmclan_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/nmclan_cs.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.o: 
linux/pcmcia-cs/clients/pcnet_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-pcnet_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.o `test -f 
'linux/pcmcia-cs/clients/pcnet_cs.c' || echo '$(srcdir)/'`linux/pcmcia-cs/clie 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-pcnet_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-pcnet_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/pcnet_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.o `test -f 
'linux/pcmcia-cs/clients/pcnet_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/pcnet_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.obj: 
linux/pcmcia-cs/clients/pcnet_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.obj -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-pcnet_cs.Tpo -c 
-o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.obj `if test 
-f 'linux/pcmcia-cs/clients/pcnet_cs.c'; then $(CYGPATH_W) 'linux/pcmcia-c [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-pcnet_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-pcnet_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/pcnet_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-pcnet_cs.obj `if test -f 
'linux/pcmcia-cs/clients/pcnet_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/pcnet_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/pcnet_cs.c'; fi`
+
+linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.o: 
linux/src/drivers/net/8390.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.o -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-8390.Tpo -c -o 
linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.o `test -f 
'linux/src/drivers/net/8390.c' || echo '$(srcdir)/'`linux/src/drivers/net/8390.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-8390.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-8390.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/8390.c' 
object='linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.o `test -f 
'linux/src/drivers/net/8390.c' || echo '$(srcdir)/'`linux/src/drivers/net/8390.c
+
+linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.obj: 
linux/src/drivers/net/8390.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.obj -MD -MP -MF 
linux/src/drivers/net/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-8390.Tpo -c -o 
linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.obj `if test -f 
'linux/src/drivers/net/8390.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/8390.c'; else $( [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/src/drivers/net/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-8390.Tpo 
linux/src/drivers/net/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-8390.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/src/drivers/net/8390.c' 
object='linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/src/drivers/net/liblinux_pcmcia_cs_clients_a-8390.obj `if test -f 
'linux/src/drivers/net/8390.c'; then $(CYGPATH_W) 
'linux/src/drivers/net/8390.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/src/drivers/net/8390.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.o: 
linux/pcmcia-cs/clients/smc91c92_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-smc91c92_cs.Tpo 
-c -o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.o `test 
-f 'linux/pcmcia-cs/clients/smc91c92_cs.c' || echo '$(srcdir)/'`linux/pc [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-smc91c92_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-smc91c92_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/smc91c92_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.o `test -f 
'linux/pcmcia-cs/clients/smc91c92_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/smc91c92_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.obj: 
linux/pcmcia-cs/clients/smc91c92_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.obj -MD -MP 
-MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-smc91c92_cs.Tpo 
-c -o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.obj `if 
test -f 'linux/pcmcia-cs/clients/smc91c92_cs.c'; then $(CYGPATH_W) 'li [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-smc91c92_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-smc91c92_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/smc91c92_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-smc91c92_cs.obj `if test 
-f 'linux/pcmcia-cs/clients/smc91c92_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/smc91c92_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/smc91c92_cs.c'; fi`
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.o: 
linux/pcmcia-cs/clients/xirc2ps_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.o -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.Tpo 
-c -o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.o `test 
-f 'linux/pcmcia-cs/clients/xirc2ps_cs.c' || echo '$(srcdir)/'`linux/pcmcia 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/xirc2ps_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.o `test -f 
'linux/pcmcia-cs/clients/xirc2ps_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/clients/xirc2ps_cs.c
+
+linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.obj: 
linux/pcmcia-cs/clients/xirc2ps_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.obj -MD -MP -MF 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.Tpo 
-c -o linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.obj `if 
test -f 'linux/pcmcia-cs/clients/xirc2ps_cs.c'; then $(CYGPATH_W) 'linux/ [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.Tpo 
linux/pcmcia-cs/clients/$(DEPDIR)/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/clients/xirc2ps_cs.c' 
object='linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_clients_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_clients_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/clients/liblinux_pcmcia_cs_clients_a-xirc2ps_cs.obj `if test -f 
'linux/pcmcia-cs/clients/xirc2ps_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/clients/xirc2ps_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/clients/xirc2ps_cs.c'; fi`
+
+linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.o: 
linux/pcmcia-cs/glue/pcmcia.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.o -MD -MP -MF 
linux/pcmcia-cs/glue/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pcmcia.Tpo -c -o 
linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.o `test -f 
'linux/pcmcia-cs/glue/pcmcia.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/glue/pcmcia.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/glue/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pcmcia.Tpo 
linux/pcmcia-cs/glue/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pcmcia.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/glue/pcmcia.c' 
object='linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.o `test -f 
'linux/pcmcia-cs/glue/pcmcia.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/glue/pcmcia.c
+
+linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.obj: 
linux/pcmcia-cs/glue/pcmcia.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.obj -MD -MP -MF 
linux/pcmcia-cs/glue/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pcmcia.Tpo -c -o 
linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.obj `if test -f 
'linux/pcmcia-cs/glue/pcmcia.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/glue/pcmcia.c'; el [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/glue/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pcmcia.Tpo 
linux/pcmcia-cs/glue/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pcmcia.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/glue/pcmcia.c' 
object='linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/glue/liblinux_pcmcia_cs_modules_a-pcmcia.obj `if test -f 
'linux/pcmcia-cs/glue/pcmcia.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/glue/pcmcia.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/glue/pcmcia.c'; fi`
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.o: 
linux/pcmcia-cs/modules/cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.o -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cs.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.o `test -f 
'linux/pcmcia-cs/modules/cs.c' || echo '$(srcdir)/'`linux/pcmcia-cs/modules/cs.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cs.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/cs.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.o `test -f 
'linux/pcmcia-cs/modules/cs.c' || echo '$(srcdir)/'`linux/pcmcia-cs/modules/cs.c
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.obj: 
linux/pcmcia-cs/modules/cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.obj -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cs.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.obj `if test -f 
'linux/pcmcia-cs/modules/cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/cs.c'; else $( [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cs.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/cs.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cs.obj `if test -f 
'linux/pcmcia-cs/modules/cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/modules/cs.c'; fi`
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.o: 
linux/pcmcia-cs/modules/ds.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.o -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-ds.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.o `test -f 
'linux/pcmcia-cs/modules/ds.c' || echo '$(srcdir)/'`linux/pcmcia-cs/modules/ds.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-ds.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-ds.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/ds.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.o `test -f 
'linux/pcmcia-cs/modules/ds.c' || echo '$(srcdir)/'`linux/pcmcia-cs/modules/ds.c
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.obj: 
linux/pcmcia-cs/modules/ds.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.obj -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-ds.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.obj `if test -f 
'linux/pcmcia-cs/modules/ds.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/ds.c'; else $( [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-ds.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-ds.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/ds.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-ds.obj `if test -f 
'linux/pcmcia-cs/modules/ds.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/ds.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/modules/ds.c'; fi`
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.o: 
linux/pcmcia-cs/modules/rsrc_mgr.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.o -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-rsrc_mgr.Tpo -c 
-o linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.o `test -f 
'linux/pcmcia-cs/modules/rsrc_mgr.c' || echo '$(srcdir)/'`linux/pcmcia-cs/modu 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-rsrc_mgr.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-rsrc_mgr.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/rsrc_mgr.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.o `test -f 
'linux/pcmcia-cs/modules/rsrc_mgr.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/rsrc_mgr.c
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.obj: 
linux/pcmcia-cs/modules/rsrc_mgr.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.obj -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-rsrc_mgr.Tpo -c 
-o linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.obj `if test 
-f 'linux/pcmcia-cs/modules/rsrc_mgr.c'; then $(CYGPATH_W) 'linux/pcmcia-c [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-rsrc_mgr.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-rsrc_mgr.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/rsrc_mgr.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-rsrc_mgr.obj `if test -f 
'linux/pcmcia-cs/modules/rsrc_mgr.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/rsrc_mgr.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/modules/rsrc_mgr.c'; fi`
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.o: 
linux/pcmcia-cs/modules/bulkmem.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.o -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-bulkmem.Tpo -c 
-o linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.o `test -f 
'linux/pcmcia-cs/modules/bulkmem.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/ [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-bulkmem.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-bulkmem.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/bulkmem.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.o `test -f 
'linux/pcmcia-cs/modules/bulkmem.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/bulkmem.c
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.obj: 
linux/pcmcia-cs/modules/bulkmem.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.obj -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-bulkmem.Tpo -c 
-o linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.obj `if test -f 
'linux/pcmcia-cs/modules/bulkmem.c'; then $(CYGPATH_W) 'linux/pcmcia-cs/mo [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-bulkmem.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-bulkmem.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/bulkmem.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-bulkmem.obj `if test -f 
'linux/pcmcia-cs/modules/bulkmem.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/bulkmem.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/modules/bulkmem.c'; fi`
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.o: 
linux/pcmcia-cs/modules/cistpl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.o -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cistpl.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.o `test -f 
'linux/pcmcia-cs/modules/cistpl.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/cistpl.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cistpl.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cistpl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/cistpl.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.o `test -f 
'linux/pcmcia-cs/modules/cistpl.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/cistpl.c
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.obj: 
linux/pcmcia-cs/modules/cistpl.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.obj -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cistpl.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.obj `if test -f 
'linux/pcmcia-cs/modules/cistpl.c'; then $(CYGPATH_W) 'linux/pcmcia-cs/module 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cistpl.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-cistpl.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/cistpl.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-cistpl.obj `if test -f 
'linux/pcmcia-cs/modules/cistpl.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/cistpl.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/modules/cistpl.c'; fi`
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.o: 
linux/pcmcia-cs/modules/pci_fixup.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.o -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pci_fixup.Tpo -c 
-o linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.o `test -f 
'linux/pcmcia-cs/modules/pci_fixup.c' || echo '$(srcdir)/'`linux/pcmcia-cs/ 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pci_fixup.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pci_fixup.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/pci_fixup.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.o `test -f 
'linux/pcmcia-cs/modules/pci_fixup.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/pci_fixup.c
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.obj: 
linux/pcmcia-cs/modules/pci_fixup.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.obj -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pci_fixup.Tpo -c 
-o linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.obj `if test 
-f 'linux/pcmcia-cs/modules/pci_fixup.c'; then $(CYGPATH_W) 'linux/pcmc [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pci_fixup.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-pci_fixup.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/pci_fixup.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-pci_fixup.obj `if test -f 
'linux/pcmcia-cs/modules/pci_fixup.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/pci_fixup.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/modules/pci_fixup.c'; fi`
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.o: 
linux/pcmcia-cs/modules/i82365.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.o -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-i82365.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.o `test -f 
'linux/pcmcia-cs/modules/i82365.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/i82365.c
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-i82365.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-i82365.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/i82365.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.o `test -f 
'linux/pcmcia-cs/modules/i82365.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/modules/i82365.c
+
+linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.obj: 
linux/pcmcia-cs/modules/i82365.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.obj -MD -MP -MF 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-i82365.Tpo -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.obj `if test -f 
'linux/pcmcia-cs/modules/i82365.c'; then $(CYGPATH_W) 'linux/pcmcia-cs/module 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-i82365.Tpo 
linux/pcmcia-cs/modules/$(DEPDIR)/liblinux_pcmcia_cs_modules_a-i82365.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/modules/i82365.c' 
object='linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_modules_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_modules_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/modules/liblinux_pcmcia_cs_modules_a-i82365.obj `if test -f 
'linux/pcmcia-cs/modules/i82365.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/modules/i82365.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/modules/i82365.c'; fi`
+
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.o: 
linux/pcmcia-cs/wireless/hermes.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.o -MD -MP -MF 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-hermes.Tpo -c 
-o linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.o `test -f 
'linux/pcmcia-cs/wireless/hermes.c' || echo '$(srcdir)/'`linux/pcmcia-cs/wir 
[...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-hermes.Tpo 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-hermes.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/wireless/hermes.c' 
object='linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.o `test -f 
'linux/pcmcia-cs/wireless/hermes.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/wireless/hermes.c
+
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.obj: 
linux/pcmcia-cs/wireless/hermes.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.obj -MD -MP -MF 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-hermes.Tpo -c 
-o linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.obj `if test 
-f 'linux/pcmcia-cs/wireless/hermes.c'; then $(CYGPATH_W) 'linux/pcmcia- [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-hermes.Tpo 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-hermes.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/wireless/hermes.c' 
object='linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-hermes.obj `if test -f 
'linux/pcmcia-cs/wireless/hermes.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/wireless/hermes.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/wireless/hermes.c'; fi`
+
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.o: 
linux/pcmcia-cs/wireless/orinoco.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.o -MD -MP -MF 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco.Tpo -c 
-o linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.o `test -f 
'linux/pcmcia-cs/wireless/orinoco.c' || echo '$(srcdir)/'`linux/pcmcia-cs [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco.Tpo 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/wireless/orinoco.c' 
object='linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.o `test -f 
'linux/pcmcia-cs/wireless/orinoco.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/wireless/orinoco.c
+
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.obj: 
linux/pcmcia-cs/wireless/orinoco.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.obj -MD -MP -MF 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco.Tpo -c 
-o linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.obj `if test 
-f 'linux/pcmcia-cs/wireless/orinoco.c'; then $(CYGPATH_W) 'linux/pcm [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco.Tpo 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/wireless/orinoco.c' 
object='linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco.obj `if test -f 
'linux/pcmcia-cs/wireless/orinoco.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/wireless/orinoco.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/wireless/orinoco.c'; fi`
+
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.o: 
linux/pcmcia-cs/wireless/orinoco_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.o -MD -MP -MF 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco_cs.Tpo 
-c -o linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.o `test 
-f 'linux/pcmcia-cs/wireless/orinoco_cs.c' || echo '$(srcdir)/'`lin [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco_cs.Tpo 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/wireless/orinoco_cs.c' 
object='linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.o' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.o `test -f 
'linux/pcmcia-cs/wireless/orinoco_cs.c' || echo 
'$(srcdir)/'`linux/pcmcia-cs/wireless/orinoco_cs.c
+
+linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.obj: 
linux/pcmcia-cs/wireless/orinoco_cs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -MT 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.obj -MD -MP 
-MF 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco_cs.Tpo 
-c -o linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.obj `if 
test -f 'linux/pcmcia-cs/wireless/orinoco_cs.c'; then $(CYGPATH_W [...]
address@hidden@ $(AM_V_at)$(am__mv) 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco_cs.Tpo 
linux/pcmcia-cs/wireless/$(DEPDIR)/liblinux_pcmcia_cs_wireless_a-orinoco_cs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='linux/pcmcia-cs/wireless/orinoco_cs.c' 
object='linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.obj' 
libtool=no @AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(liblinux_pcmcia_cs_wireless_a_CPPFLAGS) $(CPPFLAGS) 
$(liblinux_pcmcia_cs_wireless_a_CFLAGS) $(CFLAGS) -c -o 
linux/pcmcia-cs/wireless/liblinux_pcmcia_cs_wireless_a-orinoco_cs.obj `if test 
-f 'linux/pcmcia-cs/wireless/orinoco_cs.c'; then $(CYGPATH_W) 
'linux/pcmcia-cs/wireless/orinoco_cs.c'; else $(CYGPATH_W) 
'$(srcdir)/linux/pcmcia-cs/wireless/orinoco_cs.c'; fi`
+doc/$(am__dirstamp):
+       @$(MKDIR_P) doc
+       @: > doc/$(am__dirstamp)
+
+$(srcdir)/doc/mach.info: doc/mach.texi $(srcdir)/doc/version.texi
+       $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+       am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+       rm -rf $$backupdir && mkdir $$backupdir && \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ address@hidden address@hidden $(@:.info=).i[0-9] 
$(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
+       cd "$$am__cwd"; \
+       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I 
$(srcdir)/doc \
+        -o $@ $(srcdir)/doc/mach.texi; \
+       then \
+         rc=0; \
+         $(am__cd) $(srcdir); \
+       else \
+         rc=$$?; \
+         $(am__cd) $(srcdir) && \
+         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+       fi; \
+       rm -rf $$backupdir; exit $$rc
+
+doc/mach.dvi: doc/mach.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+       
$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I 
$(srcdir)/doc' \
+       $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ 
$(AM_V_texidevnull) \
+       `test -f 'doc/mach.texi' || echo '$(srcdir)/'`doc/mach.texi
+
+doc/mach.pdf: doc/mach.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+       
$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I 
$(srcdir)/doc' \
+       $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ 
$(AM_V_texidevnull) \
+       `test -f 'doc/mach.texi' || echo '$(srcdir)/'`doc/mach.texi
+
+doc/mach.html: doc/mach.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+       $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
+       $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) 
-I doc -I $(srcdir)/doc \
+        -o $(@:.html=.htp) `test -f 'doc/mach.texi' || echo 
'$(srcdir)/'`doc/mach.texi; \
+       then \
+         rm -rf $@; \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+       else \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+         exit 1; \
+       fi
+$(srcdir)/doc/stamp-vti: doc/mach.texi $(top_srcdir)/configure
+       test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) 
doc/$(am__dirstamp)
+       @(dir=.; test -f ./doc/mach.texi || dir=$(srcdir); \
+       set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/doc/mach.texi`; \
+       echo "@set UPDATED $$1 $$2 $$3"; \
+       echo "@set UPDATED-MONTH $$2 $$3"; \
+       echo "@set EDITION $(VERSION)"; \
+       echo "@set VERSION $(VERSION)") > vti.tmp
+       @cmp -s vti.tmp $(srcdir)/doc/version.texi \
+         || (echo "Updating $(srcdir)/doc/version.texi"; \
+             cp vti.tmp $(srcdir)/doc/version.texi)
+       address@hidden -f vti.tmp
+       @cp $(srcdir)/doc/version.texi $@
+
+mostlyclean-vti:
+       -rm -f vti.tmp
+
+maintainer-clean-vti:
+       -rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
+.dvi.ps:
+       
$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       $(DVIPS) $(AM_V_texinfo) -o $@ $<
+
+uninstall-dvi-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+         rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+
+uninstall-html-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+         rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+       done
+
+uninstall-info-am:
+       @$(PRE_UNINSTALL)
+       @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
+         list='$(INFO_DEPS)'; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove 
'$(DESTDIR)$(infodir)/$$relfile'"; \
+           if install-info --info-dir="$(DESTDIR)$(infodir)" --remove 
"$(DESTDIR)$(infodir)/$$relfile"; \
+           then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; 
fi; \
+         done; \
+       else :; fi
+       @$(NORMAL_UNINSTALL)
+       @list='$(INFO_DEPS)'; \
+       for file in $$list; do \
+         relfile=`echo "$$file" | sed 's|^.*/||'`; \
+         relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+         (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then 
\
+            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile 
$$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+            rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] 
$$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+          else :; fi); \
+       done
+
+uninstall-pdf-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+
+uninstall-ps-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(psdir)/$$f"; \
+       done
+
+dist-info: $(INFO_DEPS)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; \
+       for base in $$list; do \
+         case $$base in \
+           $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$base; then d=.; else d=$(srcdir); fi; \
+         base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] 
$$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+           if test -f $$file; then \
+             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+             test -f "$(distdir)/$$relfile" || \
+               cp -p $$file "$(distdir)/$$relfile"; \
+           else :; fi; \
+         done; \
+       done
+
+mostlyclean-aminfo:
+       -rm -rf doc/mach.t2d doc/mach.t2p
+
+clean-aminfo:
+       -test -z "doc/mach.dvi doc/mach.pdf doc/mach.ps doc/mach.html" \
+       || rm -rf doc/mach.dvi doc/mach.pdf doc/mach.ps doc/mach.html
+
+maintainer-clean-aminfo:
+       @list='$(INFO_DEPS)'; for i in $$list; do \
+         i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+         echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] 
$$i_i[0-9][0-9]"; \
+         rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+       done
+install-exec_msgidsDATA: $(exec_msgids_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(exec_msgids_DATA)'; test -n "$(exec_msgidsdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(exec_msgidsdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(exec_msgidsdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(exec_msgidsdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(exec_msgidsdir)" || exit $$?; \
+       done
+
+uninstall-exec_msgidsDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(exec_msgids_DATA)'; test -n "$(exec_msgidsdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(exec_msgidsdir)'; $(am__uninstall_files_from_dir)
+install-include_deviceHEADERS: $(include_device_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(include_device_HEADERS)'; test -n "$(include_devicedir)" || 
list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(include_devicedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(include_devicedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_devicedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_devicedir)" || exit 
$$?; \
+       done
+
+uninstall-include_deviceHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_device_HEADERS)'; test -n "$(include_devicedir)" || 
list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(include_devicedir)'; $(am__uninstall_files_from_dir)
+install-include_machHEADERS: $(include_mach_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(include_mach_HEADERS)'; test -n "$(include_machdir)" || list=; 
\
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(include_machdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(include_machdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_machdir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_machdir)" || exit $$?; 
\
+       done
+
+uninstall-include_machHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_mach_HEADERS)'; test -n "$(include_machdir)" || list=; 
\
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(include_machdir)'; $(am__uninstall_files_from_dir)
+install-include_mach_eXecHEADERS: $(include_mach_eXec_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(include_mach_eXec_HEADERS)'; test -n "$(include_mach_eXecdir)" 
|| list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(include_mach_eXecdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(include_mach_eXecdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files 
'$(DESTDIR)$(include_mach_eXecdir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_mach_eXecdir)" || exit 
$$?; \
+       done
+
+uninstall-include_mach_eXecHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_mach_eXec_HEADERS)'; test -n "$(include_mach_eXecdir)" 
|| list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(include_mach_eXecdir)'; $(am__uninstall_files_from_dir)
+install-include_mach_i386HEADERS: $(include_mach_i386_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(include_mach_i386_HEADERS)'; test -n "$(include_mach_i386dir)" 
|| list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(include_mach_i386dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(include_mach_i386dir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files 
'$(DESTDIR)$(include_mach_i386dir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_mach_i386dir)" || exit 
$$?; \
+       done
+
+uninstall-include_mach_i386HEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_mach_i386_HEADERS)'; test -n "$(include_mach_i386dir)" 
|| list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(include_mach_i386dir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+       @fail=; \
+       if $(am__make_keepgoing); then \
+         failcom='fail=yes'; \
+       else \
+         failcom='exit 1'; \
+       fi; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       $(am__define_uniq_tagged_files); \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files 
$(CSCOPE_ARGS)
+clean-cscope:
+       -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+       @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+         fi; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       else \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
+           else \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+           fi; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
+           else \
+             color_start= color_end=; \
+           fi; \
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS:
+       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+       exit $$?;
+recheck: all 
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       bases=`for i in $$bases; do echo $$i; done \
+                | $(am__list_recheck_tests)` || exit 1; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       log_list=`echo $$log_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+               am__force_recheck=am--force-recheck \
+               TEST_LOGS="$$log_list"; \
+       exit $$?
+tests/test-mbchk.log: tests/test-mbchk
+       @p='tests/test-mbchk'; \
+       b='tests/test-mbchk'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) 
-- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) 
$(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
address@hidden@.test$(EXEEXT).log:
address@hidden@ @p='$<'; \
address@hidden@ $(am__set_b); \
address@hidden@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
address@hidden@ --log-file $$b.log --trs-file $$b.trs \
address@hidden@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) 
$(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
address@hidden@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx 
{} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx 
{} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) 
top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: 
am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-info dist-hook
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c 
>$(distdir).tar.gz
+       $(am__post_remove_distdir)
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c 
>$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} 
>$(distdir).tar.lz
+       $(am__post_remove_distdir)
+
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c 
>$(distdir).tar.xz
+       $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__post_remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__post_remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__post_remove_distdir)
+
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 
's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" 
\
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile $(INFO_DEPS) $(LIBRARIES) $(PROGRAMS) $(DATA) \
+               $(HEADERS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(exec_bootdir)" "$(DESTDIR)$(infodir)" 
"$(DESTDIR)$(exec_msgidsdir)" "$(DESTDIR)$(include_devicedir)" 
"$(DESTDIR)$(include_machdir)" "$(DESTDIR)$(include_mach_eXecdir)" 
"$(DESTDIR)$(include_mach_i386dir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s 
\
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s 
\
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f 
$(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f chips/$(DEPDIR)/$(am__dirstamp)
+       -rm -f chips/$(am__dirstamp)
+       -rm -f ddb/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ddb/$(am__dirstamp)
+       -rm -f device/$(DEPDIR)/$(am__dirstamp)
+       -rm -f device/$(am__dirstamp)
+       -rm -f doc/$(am__dirstamp)
+       -rm -f i386/i386/$(DEPDIR)/$(am__dirstamp)
+       -rm -f i386/i386/$(am__dirstamp)
+       -rm -f i386/i386at/$(DEPDIR)/$(am__dirstamp)
+       -rm -f i386/i386at/$(am__dirstamp)
+       -rm -f i386/intel/$(DEPDIR)/$(am__dirstamp)
+       -rm -f i386/intel/$(am__dirstamp)
+       -rm -f i386/xen/$(DEPDIR)/$(am__dirstamp)
+       -rm -f i386/xen/$(am__dirstamp)
+       -rm -f ipc/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ipc/$(am__dirstamp)
+       -rm -f kern/$(DEPDIR)/$(am__dirstamp)
+       -rm -f kern/$(am__dirstamp)
+       -rm -f linux/dev/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/arch/i386/kernel/$(am__dirstamp)
+       -rm -f linux/dev/drivers/block/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/drivers/block/$(am__dirstamp)
+       -rm -f linux/dev/drivers/net/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/drivers/net/$(am__dirstamp)
+       -rm -f linux/dev/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/drivers/scsi/$(am__dirstamp)
+       -rm -f linux/dev/glue/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/glue/$(am__dirstamp)
+       -rm -f linux/dev/init/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/init/$(am__dirstamp)
+       -rm -f linux/dev/kernel/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/kernel/$(am__dirstamp)
+       -rm -f linux/dev/lib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/lib/$(am__dirstamp)
+       -rm -f linux/dev/net/core/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/dev/net/core/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/clients/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/clients/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/glue/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/glue/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/modules/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/modules/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/wireless/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/pcmcia-cs/wireless/$(am__dirstamp)
+       -rm -f linux/src/arch/i386/kernel/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/src/arch/i386/kernel/$(am__dirstamp)
+       -rm -f linux/src/arch/i386/lib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/src/arch/i386/lib/$(am__dirstamp)
+       -rm -f linux/src/drivers/block/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/src/drivers/block/$(am__dirstamp)
+       -rm -f linux/src/drivers/net/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/src/drivers/net/$(am__dirstamp)
+       -rm -f linux/src/drivers/pci/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/src/drivers/pci/$(am__dirstamp)
+       -rm -f linux/src/drivers/scsi/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/src/drivers/scsi/$(am__dirstamp)
+       -rm -f linux/src/lib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f linux/src/lib/$(am__dirstamp)
+       -rm -f util/$(DEPDIR)/$(am__dirstamp)
+       -rm -f util/$(am__dirstamp)
+       -rm -f vm/$(DEPDIR)/$(am__dirstamp)
+       -rm -f vm/$(am__dirstamp)
+       -rm -f xen/$(DEPDIR)/$(am__dirstamp)
+       -rm -f xen/$(am__dirstamp)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-aminfo clean-exec_bootPROGRAMS clean-generic \
+       clean-noinstLIBRARIES clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf ./$(DEPDIR) chips/$(DEPDIR) ddb/$(DEPDIR) device/$(DEPDIR) 
i386/i386/$(DEPDIR) i386/i386at/$(DEPDIR) i386/intel/$(DEPDIR) 
i386/xen/$(DEPDIR) ipc/$(DEPDIR) kern/$(DEPDIR) 
linux/dev/arch/i386/kernel/$(DEPDIR) linux/dev/drivers/block/$(DEPDIR) 
linux/dev/drivers/net/$(DEPDIR) linux/dev/drivers/scsi/$(DEPDIR) 
linux/dev/glue/$(DEPDIR) linux/dev/init/$(DEPDIR) linux/dev/kernel/$(DEPDIR) 
linux/dev/lib/$(DEPDIR) linux/dev/net/core/$(DEPDIR) 
linux/pcmcia-cs/clients/$(DEPDIR) linux/pcmcia- [...]
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am: $(DVIS)
+
+html: html-recursive
+
+html-am: $(HTMLS) html-local
+
+info: info-recursive
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-include_deviceHEADERS \
+       install-include_machHEADERS install-include_mach_eXecHEADERS \
+       install-include_mach_i386HEADERS install-info-am
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-recursive
+
+install-dvi-am: $(DVIS)
+       @$(NORMAL_INSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+       done
+install-exec-am: install-exec_bootPROGRAMS install-exec_msgidsDATA
+
+install-html: install-html-recursive
+
+install-html-am: $(HTMLS)
+       @$(NORMAL_INSTALL)
+       @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__strip_dir) \
+         d2=$$d$$p; \
+         if test -d "$$d2"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+         else \
+           list2="$$list2 $$d2"; \
+         fi; \
+       done; \
+       test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+       done; }
+install-info: install-info-recursive
+
+install-info-am: $(INFO_DEPS)
+       @$(NORMAL_INSTALL)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+       fi; \
+       for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$file; then d=.; else d=$(srcdir); fi; \
+         file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                      $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+           if test -f $$ifile; then \
+             echo "$$ifile"; \
+           else : ; fi; \
+         done; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+       @$(POST_INSTALL)
+       @if $(am__can_run_installinfo); then \
+         list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' 
'$(DESTDIR)$(infodir)/$$relfile'";\
+           install-info --info-dir="$(DESTDIR)$(infodir)" 
"$(DESTDIR)$(infodir)/$$relfile" || :;\
+         done; \
+       else : ; fi
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am: $(PDFS)
+       @$(NORMAL_INSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-recursive
+
+install-ps-am: $(PSS)
+       @$(NORMAL_INSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -rm -rf ./$(DEPDIR) chips/$(DEPDIR) ddb/$(DEPDIR) device/$(DEPDIR) 
i386/i386/$(DEPDIR) i386/i386at/$(DEPDIR) i386/intel/$(DEPDIR) 
i386/xen/$(DEPDIR) ipc/$(DEPDIR) kern/$(DEPDIR) 
linux/dev/arch/i386/kernel/$(DEPDIR) linux/dev/drivers/block/$(DEPDIR) 
linux/dev/drivers/net/$(DEPDIR) linux/dev/drivers/scsi/$(DEPDIR) 
linux/dev/glue/$(DEPDIR) linux/dev/init/$(DEPDIR) linux/dev/kernel/$(DEPDIR) 
linux/dev/lib/$(DEPDIR) linux/dev/net/core/$(DEPDIR) 
linux/pcmcia-cs/clients/$(DEPDIR) linux/pcmcia- [...]
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+       maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
+       mostlyclean-generic mostlyclean-vti
+
+pdf: pdf-recursive
+
+pdf-am: $(PDFS) pdf-local
+
+ps: ps-recursive
+
+ps-am: $(PSS) ps-local
+
+uninstall-am: uninstall-dvi-am uninstall-exec_bootPROGRAMS \
+       uninstall-exec_msgidsDATA uninstall-html-am \
+       uninstall-include_deviceHEADERS uninstall-include_machHEADERS \
+       uninstall-include_mach_eXecHEADERS \
+       uninstall-include_mach_i386HEADERS uninstall-info-am \
+       uninstall-pdf-am uninstall-ps-am
+
+.MAKE: $(am__recursive_targets) all check-am install-am \
+       install-data-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--refresh check check-TESTS check-am clean clean-aminfo \
+       clean-cscope clean-exec_bootPROGRAMS clean-generic \
+       clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
+       cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+       dist-gzip dist-hook dist-info dist-lzip dist-shar dist-tarZ \
+       dist-xz dist-zip distcheck distclean distclean-compile \
+       distclean-generic distclean-hdr distclean-tags distcleancheck \
+       distdir distuninstallcheck dvi dvi-am html html-am html-local \
+       info info-am install install-am install-data install-data-am \
+       install-data-hook install-dvi install-dvi-am install-exec \
+       install-exec-am install-exec_bootPROGRAMS \
+       install-exec_msgidsDATA install-html install-html-am \
+       install-include_deviceHEADERS install-include_machHEADERS \
+       install-include_mach_eXecHEADERS \
+       install-include_mach_i386HEADERS install-info install-info-am \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-aminfo maintainer-clean-generic \
+       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+       mostlyclean-compile mostlyclean-generic mostlyclean-vti pdf \
+       pdf-am pdf-local ps ps-am ps-local recheck tags tags-am \
+       uninstall uninstall-am uninstall-dvi-am \
+       uninstall-exec_bootPROGRAMS uninstall-exec_msgidsDATA \
+       uninstall-html-am uninstall-include_deviceHEADERS \
+       uninstall-include_machHEADERS \
+       uninstall-include_mach_eXecHEADERS \
+       uninstall-include_mach_i386HEADERS uninstall-info-am \
+       uninstall-pdf-am uninstall-ps-am
+
+%.symc: %.sym gensym.awk
+       $(AWK_V) $(AWK) -f $(word 2,$^) $< > $@
+%.symc.o: %.symc
+       $(AM_V_CC) $(COMPILE) -S -x c -o $@ $<
+%.h: %.symc.o
+       $(AM_V_GEN) sed < $< > $@               \
+         -e 's/^[^*].*$$//'                    \
+         -e 's/^[*]/#define/'                  \
+         -e 's/mAgIc[^-0-9]*//'
+
+%.server.defs.c: %.srv
+       $(AM_V_at) rm -f $@
+       $(AM_V_GEN) cp -p $< $@
+%.user.defs.c: %.cli
+       $(AM_V_at) rm -f $@
+       $(AM_V_GEN) cp -p $< $@
+%.server.h %.server.c %.server.msgids: 
lib_dep_tr_for_defs_a-%.server.defs.$(OBJEXT)
+       $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS)    \
+         -sheader $*.server.h -server $*.server.c              \
+         -list $*.server.msgids                                \
+         < $<
+%.user.h %.user.c %.user.msgids: lib_dep_tr_for_defs_a-%.user.defs.$(OBJEXT)
+       $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMUFLAGS)    \
+         -user $*.user.c -header $*.user.h                     \
+         -list $*.user.msgids                                  \
+         < $<
+
+# This is how it should be done, but this is not integrated into GNU Automake
+# and is missing automatic inter-file dependency management because of that.
+
+# These chained rules could be (and used to be) single rules using pipes or
+# could even --- if you dare to --- use the `mig' shell script, but it's
+# convenient to be able to explicitly make the intermediate files when you want
+# to deal with a problem in the MIG stub generator.
+
+# TODO.  Get rid of the .srv files and rather use .defs files and MIG*SFLAGS?
+#%.server.defs: %.srv
+#      $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -o $@ $<
+#%.server.defs: %.defs
+#      $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) $(MIGSFLAGS) -o $@ $<
+#%.server.h %.server.c %.server.msgids: %.server.defs
+#      $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS)        \
+#        -sheader $*.server.h -server $*.server.c      \
+#        -list $*.server.msgids                        \
+#        < $<
+# TODO.  Get rid of the .cli files and rather use .defs files and MIG*UFLAGS?
+#%.user.defs: %.cli
+#      $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -o $@ $<
+#%.user.defs: %.defs
+#      $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) $(MIGUFLAGS) -o $@ $<
+#%.user.h %.user.c %.user.msgids: %.user.defs
+#      $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMUFLAGS)        \
+#        -user $*.user.c -header $*.user.h             \
+#        -list $*.user.msgids                          \
+#        < $<
+
+# Makerules.mig: how to do some MIG-related things.
+
+#
+# gzip files.
+#
+
+%.gz: %
+       $(GZIP_V) $(GZIP) -9 < $< > $@
+
+#
+# strip files.
+#
+
+%.stripped: %
+       $(STRIP) -o $@ $<
+
+#
+# Echo target.
+#
+
+echo-%:
+       @echo '$* = `$($*)'\'
+
+# mach-debug-headers:= $(addprefix mach_debug/, hash_info.h ipc_info.h \
+#              mach_debug.defs mach_debug_types.defs mach_debug_types.h \
+#              pc_info.h vm_info.h slab_info.h)
+
+# Other headers for the distribution.  We don't install these, because the
+# GNU C library has correct versions for users to use.
+# other-sys-headers := types.h time.h reboot.h ioctl.h
+# other-mach-headers := mig_support.h mach_traps.h error.h
+# other-headers := alloca.h
+
+install-data-hook:
+       rm -f '$(DESTDIR)$(include_machdir)'/machine
+       ln -s '$(systype)' '$(DESTDIR)$(include_machdir)'/machine
+gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES))
+       $(AM_V_at) cat $^ > address@hidden
+       $(AM_V_GEN) mv address@hidden $@
+dist-hook: dist-hook-linux
+.PHONY: dist-hook-linux
+dist-hook-linux:
+# These symbolic links are copied from the build directory due to including
+# `linux/dev/include linux/src/include' to `EXTRA_DIST' above.
+       rm -f                                   \
+         $(distdir)/linux/dev/include/asm      \
+         $(distdir)/linux/src/include/asm
+
+#
+# Architecture specific parts.
+#
+
+#
+# Specific code.
+#
+
+# Linux device drivers and the glue code.
+
+#
+# Platform specific parts.
+#
+
+# Xen.
+
+#
+# Architecture specific parts.
+#
+
+# ix86.
+
+# Prepare a checkout in `$(web)/' of the web pages of the GNU Mach Reference
+# Manual, using the same account that was used for the source code.  Then
+# install the potentially updated files into `$(web)/'.
+.PHONY: $(web)
+$(web):
+       if test -d $@/CVS; then :; else         \
+         mkdir -p $@ $@/CVS &&                 \
+         sed -e s%cvsroot%web%                 \
+           < $(top_srcdir)/CVS/Root            \
+           > $@/CVS/Root &&                    \
+         echo hurd/gnumach-doc                 \
+           > $@/CVS/Repository &&              \
+         : > $@/CVS/Entries;                   \
+       fi
+       cd $@/ &&                               \
+       cvs update
+       $(MAKE) $(AM_MAKEFLAGS)                 \
+         html                                  \
+         ps                                    \
+         pdf
+
+# Update the files, if such a checkout exists.
+html-local:
+       if test -d $(web); then                                         \
+         ( cd $(web)/ &&                                               \
+           for f in *.html; do                                         \
+             if test -f ../../$(HTMLS)/"$$f"; then :; else             \
+               echo "\`$$f' isn't anymore.  Removing." &&              \
+               rm "$$f" &&                                             \
+               cvs remove "$$f";                                       \
+             fi;                                                       \
+           done ) &&                                                   \
+         cp $(HTMLS)/*.html $(web)/ &&                                 \
+         cd $(web)/ &&                                                 \
+         { cvs add *.html || :; };                                     \
+       fi
+ps-local:
+       if test -d $(web); then                                         \
+         ( cd $(web)/ &&                                               \
+           for f in *.ps; do                                           \
+             case \ $(PSS)\  in                                        \
+               \ doc/"$$f"\ ) :;;                                      \
+               *) echo "\`$$f' isn't anymore.  Removing." &&           \
+                  rm -f "$$f" "$$f".ps &&                              \
+                  cvs remove "$$f" "$$f".ps ;;                         \
+             esac;                                                     \
+           done ) &&                                                   \
+         cp $(PSS) $(web)/ &&                                          \
+         cd $(web)/ &&                                                 \
+         for f in *.ps; do                                             \
+           gzip -9 < "$$f" > "$$f".gz;                                 \
+         done &&                                                       \
+         { cvs add *.ps *.ps.gz || :; };                               \
+       fi
+pdf-local:
+       if test -d $(web); then                                         \
+         ( cd $(web)/ &&                                               \
+           for f in *.pdf; do                                          \
+             case \ $(PDFS)\  in                                       \
+               \ doc/"$$f"\ ) :;;                                      \
+               *) echo "\`$$f' isn't anymore.  Removing." &&           \
+                  rm "$$f" &&                                          \
+                  cvs remove "$$f";;                                   \
+             esac;                                                     \
+           done ) &&                                                   \
+         cp $(PDFS) $(web)/ &&                                         \
+         cd $(web)/ &&                                                 \
+         { cvs add *.pdf || :; };                                      \
+       fi
+# TODO.  There doesn't seem to be a hook or `-local' target suitable for this.
+$(srcdir)/doc/version.texi: $(srcdir)/doc/stamp-vti
+       @if test -d $(web); then :;                                     \
+       elif grep 2> /dev/null                                          \
+              -q :ext: $(top_srcdir)/CVS/Root 2> /dev/null &&          \
+            grep 2> /dev/null                                          \
+              -q ^Tgnumach-1-branch$$ $(top_srcdir)/CVS/Tag;           \
+       then                                                            \
+         echo "*** As it seems that you'd be allowed to check in the"  \
+           "possible resulting fixes, you may consider running"        \
+           " \`make $(web)' to get a checkout of the web pages of the" \
+           "GNU Mach manual and have possible changes installed into"  \
+           "\`$(web)/', ready for checking them in in there." &&       \
+         sleep 2;                                                      \
+       fi
+gnumach-undef: gnumach.$(OBJEXT)
+       $(NM_V) $(NM) -u $< | sed 's/  *U  *//' | sort -u > $@
+gnumach-undef-bad: gnumach-undef Makefile
+       $(AM_V_GEN) sed '$(foreach r,$(clib_routines),/^$r$$/d;)' $< > $@
+clib-routines.o: gnumach-undef gnumach-undef-bad
+       $(AM_V_at) if test -s gnumach-undef-bad; \
+       then cat gnumach-undef-bad; exit 2; else true; fi
+       $(AM_V_CCLD) $(CCLD) -nostdlib -nostartfiles -r -static \
+         -o $@ `sed 's/^/-Wl,-u,/' < $<` -x c /dev/null -lc -lgcc
+
+dist-hook: dist-rm-CVS gen-ChangeLog
+
+.PHONY: dist-rm-CVS
+dist-rm-CVS:
+# Try to be very safe with respect to spuriously removing various directories
+# in case of an error.
+       find $(distdir)/ -type d -name CVS | while read d; do   \
+         rm -f "$$d"/{Entries,Repository,Root,Tag} &&          \
+         rmdir "$$d";                                          \
+       done
+.PHONY: gen-ChangeLog
+gen-ChangeLog:
+       $(AM_V_GEN)if test -d $(top_srcdir)/.git; then                  \
+         (cd $(top_srcdir)/ &&                                         \
+         ./gitlog-to-changelog --strip-tab                             \
+           $(gen_start_commit).. &&                                    \
+         echo) >> $(distdir)/cl-t &&                                   \
+         for f in $(ChangeLog_files); do                               \
+           (cd $(top_srcdir)/ &&                                       \
+           git show $(gen_start_commit):$$f) >> $(distdir)/cl-t &&     \
+           rm -f $(distdir)/$$f &&                                     \
+           mv $(distdir)/cl-t $(distdir)/$$f                           \
+           || exit $$?;                                                \
+         done;                                                         \
+       fi
+
+#
+# Legacy support.
+#
+
+install-headers: install-data
+       @echo '*****************************************************'
+       @echo '* As you can see above, I was so kind to rewrite your'
+       @echo '* `make $@'\'
+       @echo '* into'
+       @echo '* `make $^'\'
+       @echo '* which is how it is to be spelled these days.'
+       @echo '*'
+       @echo '* Please get your instructions fixed.'
+       @echo '*****************************************************'
+       @echo
+       @echo 'Penalty:'
+       sleep 20
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/README b/README
index 6c0ea5b..2d7724a 100644
--- a/README
+++ b/README
@@ -28,7 +28,7 @@ drivers for IDE, SCSI and AHCI disks.
 
 If you want the in-kernel debugger compiled in, specify --enable-kdb
 to configure.  This is only useful if you actually anticipate
-debugging the kernel, of course.  We don't turn it on by default
+debugging the kernel, of course.  We don't turn it on be default
 because it adds considerably to the unpageable memory footprint of the
 kernel.
 
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..4d4fb78
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1091 @@
+# generated automatically by aclocal 1.13.3 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], 
[])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 
'autoreconf'.])])
+
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.13'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.13.3], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.13.3])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# Figure out how to run the assembler.                      -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_AS
+# ----------
+AC_DEFUN([AM_PROG_AS],
+[# By default we simply use the C compiler to build assembly code.
+AC_REQUIRE([AC_PROG_CC])
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
+AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
+])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 
2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" 
there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES([CC])],
+                 [m4_define([AC_PROG_CC],
+                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES([CXX])],
+                 [m4_define([AC_PROG_CXX],
+                            
m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [m4_define([AC_PROG_OBJC],
+                            
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+                 [_AM_DEPENDENCIES([OBJCXX])],
+                 [m4_define([AC_PROG_OBJCXX],
+                            
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" 
>`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - 
"'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - 
"'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/build-aux/compile b/build-aux/compile
new file mode 100755
index 0000000..531136b
--- /dev/null
+++ b/build-aux/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <address@hidden>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <address@hidden> or send patches to
+# <address@hidden>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <address@hidden>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/config.guess b/build-aux/config.guess
new file mode 100755
index 0000000..b79252d
--- /dev/null
+++ b/build-aux/config.guess
@@ -0,0 +1,1558 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
+
+timestamp='2013-06-10'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner.
+#
+# You can get the latest version of this script from:
+# 
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to address@hidden
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <address@hidden>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2013 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && 
exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 
;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n 
"$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) 
; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating 
insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } 
;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (address@hidden 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+       # If the system lacks a compiler, then just pick glibc.
+       # We could probably try harder.
+       LIBC=gnu
+
+       eval $set_cc_for_build
+       cat <<-EOF > $dummy.c
+       #include <features.h>
+       #if defined(__UCLIBC__)
+       LIBC=uclibc
+       #elif defined(__dietlibc__)
+       LIBC=dietlibc
+       #else
+       LIBC=gnu
+       #endif
+       EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       ;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep -q __ELF__
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out 
(netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit ;;
+    *:Bitrig:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+       exit ;;
+    *:OpenBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       exit ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit ;;
+    *:SolidBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       exit ;;
+    macppc:MirBSD:*:*)
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) 
processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 
's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+       exitcode=$?
+       trap '' 0
+       exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit ;;
+    *:OS400:*:*)
+       echo powerpc-ibm-os400
+       exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+       echo arm-unknown-riscos
+       exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # address@hidden (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7; exit ;;
+       esac ;;
+    s390x:SunOS:*:*)
+       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 
's/[^.]*//'`
+       exit ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+       echo i386-pc-auroraux${UNAME_RELEASE}
+       exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+       eval $set_cc_for_build
+       SUN_ARCH="i386"
+       # If there is a compiler, see if it is configured for 64-bit objects.
+       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+       # This test works for both compilers.
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               SUN_ARCH="x86_64"
+           fi
+       fi
+       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 
2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+       echo m68k-milan-mint${UNAME_RELEASE}
+       exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+       echo m68k-hades-mint${UNAME_RELEASE}
+       exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+       echo m68k-unknown-mint${UNAME_RELEASE}
+       exit ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c &&
+         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`$dummy $dummyarg` &&
+           { echo "$SYSTEM_NAME"; exit; }
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit ;;
+    AViiON:dgux:*:*)
+       # DG/UX returns AViiON for all architectures
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               then
+                       echo "$SYSTEM_NAME"
+               else
+                       echo rs6000-ibm-aix3.2.5
+               fi
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit ;;
+    *:AIX:*:[4567])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk 
'{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; 
then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                   case "${sc_cpu_version}" in
+                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                     532)                      # CPU_PA_RISC2_0
+                       case "${sc_kernel_bits}" in
+                         32) HP_ARCH="hppa2.0n" ;;
+                         64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                       esac ;;
+                   esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^            //' << EOF >$dummy.c
+
+               #define _HPUX_SOURCE
+               #include <stdlib.h>
+               #include <unistd.h>
+
+               int main ()
+               {
+               #if defined(_SC_KERNEL_BITS)
+                   long bits = sysconf(_SC_KERNEL_BITS);
+               #endif
+                   long cpu  = sysconf (_SC_CPU_VERSION);
+
+                   switch (cpu)
+                       {
+                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+                       case CPU_PA_RISC2_0:
+               #if defined(_SC_KERNEL_BITS)
+                           switch (bits)
+                               {
+                               case 64: puts ("hppa2.0w"); break;
+                               case 32: puts ("hppa2.0n"); break;
+                               default: puts ("hppa2.0"); break;
+                               } break;
+               #else  /* !defined(_SC_KERNEL_BITS) */
+                           puts ("hppa2.0"); break;
+               #endif
+                       default: puts ("hppa1.0"); break;
+                       }
+                   exit (0);
+               }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && 
HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           eval $set_cc_for_build
+
+           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+           # generating 64-bit code.  GNU and HP use different nomenclature:
+           #
+           # $ CC_FOR_BUILD=cc ./config.guess
+           # => hppa2.0w-hp-hpux11.23
+           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+           # => hppa64-hp-hpux11.23
+
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+               grep -q __LP64__
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+               { echo "$SYSTEM_NAME"; exit; }
+       echo unknown-hitachi-hiuxwe2
+       exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+       exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+       exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+       exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+       exit ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz'`
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    5000:UNIX_System_V:4.*:*)
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:FreeBSD:*:*)
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       case ${UNAME_PROCESSOR} in
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 
's/[-(].*//'` ;;
+           *)
+               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo 
${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       esac
+       exit ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit ;;
+    *:MINGW64*:*)
+       echo ${UNAME_MACHINE}-pc-mingw64
+       exit ;;
+    *:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit ;;
+    i*:MSYS*:*)
+       echo ${UNAME_MACHINE}-pc-msys
+       exit ;;
+    i*:windows32*:*)
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
+       exit ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit ;;
+    *:Interix*:*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           authenticamd | genuineintel | EM64T)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit ;;
+    8664:Windows_NT:*)
+       echo x86_64-pc-mks
+       exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 
's/[^.]*//'`
+       exit ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo 
${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' 
| tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+       exit ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit ;;
+    aarch64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    aarch64_be:Linux:*:*)
+       UNAME_MACHINE=aarch64_be
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+       esac
+       objdump --private-headers /bin/sh | grep -q ld.so.1
+       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    arm*:Linux:*:*)
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       else
+           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+               | grep -q __ARM_PCS_VFP
+           then
+               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+           else
+               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+           fi
+       fi
+       exit ;;
+    avr32*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    cris:Linux:*:*)
+       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       exit ;;
+    crisv32:Linux:*:*)
+       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       exit ;;
+    frv:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    hexagon:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    i*86:Linux:*:*)
+       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+       exit ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef ${UNAME_MACHINE}
+       #undef ${UNAME_MACHINE}el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || 
defined(MIPSEL)
+       CPU=${UNAME_MACHINE}el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || 
defined(MIPSEB)
+       CPU=${UNAME_MACHINE}
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+       ;;
+    or1k:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    or32:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    padre:Linux:*:*)
+       echo sparc-unknown-linux-${LIBC}
+       exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-${LIBC}
+       exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+         *)    echo hppa-unknown-linux-${LIBC} ;;
+       esac
+       exit ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-${LIBC}
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-${LIBC}
+       exit ;;
+    ppc64le:Linux:*:*)
+       echo powerpc64le-unknown-linux-${LIBC}
+       exit ;;
+    ppcle:Linux:*:*)
+       echo powerpcle-unknown-linux-${LIBC}
+       exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+       exit ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    tile*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    vax:Linux:*:*)
+       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+       exit ;;
+    x86_64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+       # Unixware is an offshoot of SVR4, but it has its own version
+       # number series starting with 2...
+       # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+       # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit ;;
+    i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit ;;
+    i*86:*:5:[678]*)
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo 
${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+       # uname -m prints for DJGPP always 'pc', but it prints nothing about
+       # the processor, so we play safe by assuming i586.
+       # Note: whatever this is, it MUST be the same as what config.sub
+       # prints for the "djgpp" host, or else GDB configury will decide that
+       # this is a cross-build.
+       echo i586-pc-msdosdjgpp
+       exit ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 
3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | 
SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+       OS_REL='.3'
+       test -r /etc/.relid \
+           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < 
/etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit ;;
+    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                       # says <address@hidden>
+       echo i586-unisys-sysv4
+       exit ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <address@hidden>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit ;;
+    *:*:*:FTX*)
+       # From address@hidden
+       echo i860-stratus-sysv4
+       exit ;;
+    i*86:VOS:*:*)
+       # From address@hidden
+       echo ${UNAME_MACHINE}-stratus-vos
+       exit ;;
+    *:VOS:*:*)
+       # From address@hidden
+       echo hppa1.1-stratus-vos
+       exit ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+       exit ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
+    x86_64:Haiku:*:*)
+       echo x86_64-unknown-haiku
+       exit ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       eval $set_cc_for_build
+       if test "$UNAME_PROCESSOR" = unknown ; then
+           UNAME_PROCESSOR=powerpc
+       fi
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               case $UNAME_PROCESSOR in
+                   i386) UNAME_PROCESSOR=x86_64 ;;
+                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
+               esac
+           fi
+       fi
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit ;;
+    SEI:*:*:SEIUX)
+       echo mips-sei-seiux${UNAME_RELEASE}
+       exit ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 
's/[-(].*//'`
+       exit ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms ; exit ;;
+           I*) echo ia64-dec-vms ; exit ;;
+           V*) echo vax-dec-vms ; exit ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit ;;
+    i*86:skyos:*:*)
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ 
.*$//'
+       exit ;;
+    i*86:rdos:*:*)
+       echo ${UNAME_MACHINE}-pc-rdos
+       exit ;;
+    i*86:AROS:*:*)
+       echo ${UNAME_MACHINE}-pc-aros
+       exit ;;
+    x86_64:VMkernel:*:*)
+       echo ${UNAME_MACHINE}-unknown-esx
+       exit ;;
+esac
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+       "4"
+#else
+       ""
+#endif
+       ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <address@hidden> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755
index 0000000..9633db7
--- /dev/null
+++ b/build-aux/config.sub
@@ -0,0 +1,1791 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
+
+timestamp='2013-08-10'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches with a ChangeLog entry to address@hidden
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# 
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <address@hidden>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2013 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | 
kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray | -microblaze*)
+               os=
+               basic_machine=$1
+               ;;
+       -bluegene*)
+               os=-cnk
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco6)
+               os=-sco5v6
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*178)
+               os=-lynxos178
+               ;;
+       -lynx*5)
+               os=-lynxos5
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | aarch64 | aarch64_be \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | 
alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arceb \
+       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+       | avr | avr32 \
+       | be32 | be64 \
+       | bfin \
+       | c4x | c8051 | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | epiphany \
+       | fido | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | hexagon \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | le32 | le64 \
+       | lm32 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64octeon | mips64octeonel \
+       | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mips64vr5900 | mips64vr5900el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipsr5900 | mipsr5900el \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | moxie \
+       | mt \
+       | msp430 \
+       | nds32 | nds32le | nds32be \
+       | nios | nios2 | nios2eb | nios2el \
+       | ns16k | ns32k \
+       | open8 \
+       | or1k | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle \
+       | pyramid \
+       | rl78 | rx \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | 
shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | 
sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu \
+       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+       | ubicom32 \
+       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+       | we32k \
+       | x86 | xc16x | xstormy16 | xtensa \
+       | z8k | z80)
+               basic_machine=$basic_machine-unknown
+               ;;
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
+               ;;
+       c6x)
+               basic_machine=tic6x-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+       ms1)
+               basic_machine=mt-unknown
+               ;;
+
+       strongarm | thumb | xscale)
+               basic_machine=arm-unknown
+               ;;
+       xgate)
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       xscaleeb)
+               basic_machine=armeb-unknown
+               ;;
+
+       xscaleel)
+               basic_machine=armel-unknown
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' 
not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | aarch64-* | aarch64_be-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* | avr32-* \
+       | be32-* | be64-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
+       | c8051-* | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | hexagon-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | le32-* | le64-* \
+       | lm32-* \
+       | m32c-* | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+       | microblaze-* | microblazeel-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64octeon-* | mips64octeonel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mips64vr5900-* | mips64vr5900el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipsr5900-* | mipsr5900el-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | mt-* \
+       | msp430-* \
+       | nds32-* | nds32le-* | nds32be-* \
+       | nios-* | nios2-* | nios2eb-* | nios2el-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | open8-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+       | pyramid-* \
+       | rl78-* | romp-* | rs6000-* | rx-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* 
| sheb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | 
sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+       | tahoe-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tile*-* \
+       | tron-* \
+       | ubicom32-* \
+       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+       | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* \
+       | xstormy16-* | xtensa*-* \
+       | ymp-* \
+       | z8k-* | z80-*)
+               ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       bluegene*)
+               basic_machine=powerpc-ibm
+               os=-cnk
+               ;;
+       c54x-*)
+               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16 | cr16-*)
+               basic_machine=cr16-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | 
decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | 
hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       microblaze*)
+               basic_machine=microblaze-xilinx
+               ;;
+       mingw64)
+               basic_machine=x86_64-pc
+               os=-mingw64
+               ;;
+       mingw32)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 
's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       ms1-*)
+               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+               ;;
+       msys)
+               basic_machine=i686-pc
+               os=-msys
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       nacl)
+               basic_machine=le32-unknown
+               os=-nacl
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+       nse-tandem)
+               basic_machine=nse-tandem
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       openrisc | openrisc-*)
+               basic_machine=or32-unknown
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pc98)
+               basic_machine=i386-pc
+               ;;
+       pc98-*)
+               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc | ppcbe)    basic_machine=powerpc-unknown
+               ;;
+       ppc-* | ppcbe-*)
+               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 
's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 
's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 
's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rdos | rdos64)
+               basic_machine=x86_64-pc
+               os=-rdos
+               ;;
+       rdos32)
+               basic_machine=i386-pc
+               os=-rdos
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       strongarm-* | thumb-*)
+               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tile*)
+               basic_machine=$basic_machine-unknown
+               os=-linux-gnu
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       xscale-* | xscalee[bl]-*)
+               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       z80-*-coff)
+               basic_machine=z80-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' 
not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+       # First match some system type aliases
+       # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -auroraux)
+               os=-auroraux
+               ;;
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | 
-sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | 
-solaris* \
+             | -sym* | -kopensolaris* | -plan9* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* | -aros* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+             | -bitrig* | -openbsd* | -solidbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* | -cegcc* \
+             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* 
\
+             | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* 
\
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+       -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -dicos*)
+               os=-dicos
+               ;;
+       -nacl*)
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not 
recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       score-*)
+               os=-elf
+               ;;
+       spu-*)
+               os=-elf
+               ;;
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+       c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       c8051-*)
+               os=-elf
+               ;;
+       hexagon-*)
+               os=-elf
+               ;;
+       tic54x-*)
+               os=-coff
+               ;;
+       tic55x-*)
+               os=-coff
+               ;;
+       tic6x-*)
+               os=-coff
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mep-*)
+               os=-elf
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or1k-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-haiku)
+               os=-haiku
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -cnk*|-aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/depcomp b/build-aux/depcomp
new file mode 100755
index 0000000..4ebd5b3
--- /dev/null
+++ b/build-aux/depcomp
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <address@hidden>.
+
+case $1 in
+  '')
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <address@hidden>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='  '
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  set_dir_from "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\' :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  set_dir_from  "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+        set fnord "$@"
+        shift
+        shift
+        ;;
+    *)
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > 
"$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> 
"$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/install-sh b/build-aux/install-sh
new file mode 100755
index 0000000..377bb86
--- /dev/null
+++ b/build-aux/install-sh
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-11-20.07; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""       $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification 
time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+       shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
+
+    -o) chowncmd="$chownprog $2"
+       shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+       # Protect names problematic for 'test' and other utilities.
+       case $dst_arg in
+         -* | [=\(\)!]) dst_arg=./$dst_arg;;
+       esac
+       shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)        shift
+       break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from 
address@hidden
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+       /*) prefix='/';;
+       [-=\(\)!]*) prefix='./';;
+       *)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test X"$d" = X && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+       # Now remove or move aside any old file at destination location.
+       # We try this two ways since rm can't unlink itself on some
+       # systems and the destination file might be busy for other
+       # reasons.  In this case, the final cleanup might fail but the new
+       # file should still install successfully.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
new file mode 100755
index 0000000..b3719cf
--- /dev/null
+++ b/build-aux/mdate-sh
@@ -0,0 +1,224 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2010-08-21.06; # UTC
+
+# Copyright (C) 1995-2013 Free Software Foundation, Inc.
+# written by Ulrich Drepper <address@hidden>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <address@hidden> or send patches to
+# <address@hidden>.
+
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+fi
+
+case $1 in
+  '')
+     echo "$0: No file.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification day of FILE, in the format:
+1 January 1970
+
+Report bugs to <address@hidden>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+error ()
+{
+  echo "$0: $1" >&2
+  exit 1
+}
+
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume 'unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+  ls_command="$ls_command -n"
+fi
+
+# A 'ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named "Jan", or "Feb", etc.  However, it's unlikely that '/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  test $# -gt 0 || error "failed parsing '$ls_command /' output"
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+test -n "$month" || error "failed parsing '$ls_command /' output"
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+        Jan) nummonthtod=1;;
+        Feb) nummonthtod=2;;
+        Mar) nummonthtod=3;;
+        Apr) nummonthtod=4;;
+        May) nummonthtod=5;;
+        Jun) nummonthtod=6;;
+        Jul) nummonthtod=7;;
+        Aug) nummonthtod=8;;
+        Sep) nummonthtod=9;;
+        Oct) nummonthtod=10;;
+        Nov) nummonthtod=11;;
+        Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+        year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/missing b/build-aux/missing
new file mode 100755
index 0000000..cdea514
--- /dev/null
+++ b/build-aux/missing
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2012-06-26.16; # UTC
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <address@hidden>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try '$0 --help' for more information"
+  exit 1
+fi
+
+case $1 in
+
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
+
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+
+Supported PROGRAM values:
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <address@hidden>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
+
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'automa4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/test-driver b/build-aux/test-driver
new file mode 100755
index 0000000..32bf39e
--- /dev/null
+++ b/build-aux/test-driver
@@ -0,0 +1,127 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <address@hidden> or send patches to
+# <address@hidden>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='' # Red.
+  grn='' # Green.
+  lgn='' # Light green.
+  blu='' # Blue.
+  mgn='' # Magenta.
+  std=''     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
new file mode 100644
index 0000000..85f184c
--- /dev/null
+++ b/build-aux/texinfo.tex
@@ -0,0 +1,10079 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+% 
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2013-02-01.11}
+%
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+%
+% This texinfo.tex file is free software: you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction. This Exception is an additional permission under section 7
+% of the GNU General Public License, version 3 ("GPLv3").
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+%   http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page)
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to address@hidden  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexraggedright=\raggedright
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
+\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is 
empty)}\fi
+\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index 
is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined 
\gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\ampChar   = `\&
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\hashChar  = `\#
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\slashChar = `\/
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt }
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+% 
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page.  The solution is
+% described on page 260 of The TeXbook.  It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after.  I won't pretend I can describe this better than DEK...
+\def\domark{%
+  \toks0=\expandafter{\lastchapterdefs}%
+  \toks2=\expandafter{\lastsectiondefs}%
+  \toks4=\expandafter{\prevchapterdefs}%
+  \toks6=\expandafter{\prevsectiondefs}%
+  \toks8=\expandafter{\lastcolordefs}%
+  \mark{%
+                   \the\toks0 \the\toks2
+      \noexpand\or \the\toks4 \the\toks6
+    \noexpand\else \the\toks8
+  }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+  %
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  %
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  %
+  {%
+    % Have to do this stuff outside the \shipout because we want it to
+    % take effect in \write's, yet the group defined by the \vbox ends
+    % before the \shipout runs.
+    %
+    \indexdummies         % don't expand commands in the output.
+    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
+               % the page break happens to be in the middle of an example.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be
+               % {\code {{\tt \backslashcurfont }acronym}
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \vskip\topandbottommargin
+        \line\bgroup
+          \hfil % center the page within the outer (page) hsize.
+          \ifodd\pageno\hskip\bindingoffset\fi
+          \vbox\bgroup
+      \fi
+      %
+      \unvbox\headlinebox
+      \pagebody{#1}%
+      \ifdim\ht\footlinebox > 0pt
+        % Only leave this space if the footline is nonempty.
+        % (We lessened \vsize for it in \oddfootingyyy.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 24pt
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \line{%
+            \vbox{\moveleft\cornerthick\nsbot}%
+            \hfill
+            \vbox{\moveright\cornerthick\nsbot}%
+          }%
+          \nointerlineskip
+          \line{\ewbot\hfil\ewbot}%
+        }%
+      \egroup % \vbox from first cropmarks clause
+      \fi
+    }% end of \shipout\vbox
+  }% end of group with \indexdummies
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, address@hidden (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+  \rlap{\kern\hsize\vbox address@hidden \vss}}\fi
address@hidden \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
address@hidden \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.  The argument is the rest of
+% the input line (except we remove a trailing comment).  #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\argtorun{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%      is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty address@hidden \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    outside of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal.
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using address@hidden directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = address@hidden
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
+  \fi\fi
+}
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    address@hidden invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % Do @comment since we are called inside an environment such as
+    % @example, where each end-of-line in the input causes an
+    % end-of-line in the output.  We don't want the end-of-line after
+    % the address@hidden' to put extra space in the output.  Since @group
+    % should appear on a line by itself (according to the Texinfo
+    % manual), we don't worry about eating any user text.
+    \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing address@hidden can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\vfil}%
+    %
+    % TeX does not even consider page breaks if a penalty added to the
+    % main vertical list is 10000 or more.  But in order to see if the
+    % empty box we just added fits on the page, we must make it consider
+    % page breaks.  On the other hand, we don't want to actually break the
+    % page after the empty box.  So we use a penalty of 9999.
+    %
+    % There is an extremely small chance that TeX will actually break the
+    % page at this \penalty, if there are no other feasible breakpoints in
+    % sight.  (If the user is using lots of big @group commands, which
+    % almost-but-not-quite fill up a page, TeX will have a hard time doing
+    % good page breaking, for example.)  However, I could not construct an
+    % example where a page broke at this \penalty; if it happens in a real
+    % document, then we can reconsider our strategy.
+    \penalty9999
+    %
+    % Back up by the size of the box, whether we did a page break or not.
+    \kern -#1\mil
+    %
+    % Do not allow a page break right after this kern.
+    \nobreak
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).  This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable  % we want to expand any @value in FILE.
+    \turnoffactive        % and allow special characters in the expansion
+    \indexnofonts         % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @include of #1^^J}%
+    \edef\temp{\noexpand\input #1 }%
+    %
+    % This trickery is to read FILE outside of a group, in case it makes
+    % definitions, etc.
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+%
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\centersub\centerH
+  \else
+    \let\centersub\centerV
+  \fi
+  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+  \let\centersub\relax % don't let the definition persist, just in case
+}
+\def\centerH#1{{%
+  \hfil\break
+  \advance\hsize by -\leftskip
+  \advance\hsize by -\rightskip
+  \line{#1}%
+  \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+  % The idea here is the same as in \startdefun, \cartouche, etc.: if
+  % @center is the first thing after a section heading, we need to wipe
+  % out the negative parskip inserted by \sectionheading, but still
+  % prevent a page break here.
+  \centerpenalty = \lastpenalty
+  \ifnum\centerpenalty>10000 \vskip\parskip \fi
+  \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+  \line{\kern\leftskip #1\kern\rightskip}%
+}
+
+% @sp n   outputs n lines of vertical space
+%
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+%
+\def\comment{\begingroup \catcode`\^^M=\other%
address@hidden \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+%
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% 
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages.  The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+  \ifx\pdfescapestring\thisisundefined
+    % No primitive available; should we give a warning or log?
+    % Many times it won't matter.
+  \else
+    % The expandable \pdfescapestring primitive escapes parentheses,
+    % backslashes, and other special chars.
+    \xdef#1{\pdfescapestring{#1}}%
+  \fi
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+  %
+  % Color manipulation macros based on pdfcolor.tex,
+  % except using rgb instead of cmyk; the latter is said to render as a
+  % very dark gray on-screen and a very dark halftone in print, instead
+  % of actual black.
+  \def\rgbDarkRed{0.50 0.09 0.12}
+  \def\rgbBlack{0 0 0}
+  %
+  % k sets the color for filling (usual text, etc.);
+  % K sets the color for stroking (thin rules, e.g., normal _'s).
+  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
+  %
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\setcolor#1{%
+    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+    \domark
+    \pdfsetcolor{#1}%
+  }
+  %
+  \def\maincolor{\rgbBlack}
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\lastcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  %
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+  \def\dopdfimage#1#2#3{%
+    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+    % others).  Let's try in that order, PDF first since if
+    % someone has a scalable image, presumably better to use that than a
+    % bitmap.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.pdf \ifeof 1
+        \openin 1 #1.PDF \ifeof 1
+          \openin 1 #1.png \ifeof 1
+            \openin 1 #1.jpg \ifeof 1
+              \openin 1 #1.jpeg \ifeof 1
+                \openin 1 #1.JPG \ifeof 1
+                  \errhelp = \nopdfimagehelp
+                  \errmessage{Could not find image file #1 for pdf}%
+                \else \gdef\pdfimgext{JPG}%
+                \fi
+              \else \gdef\pdfimgext{jpeg}%
+              \fi
+            \else \gdef\pdfimgext{jpg}%
+            \fi
+          \else \gdef\pdfimgext{png}%
+          \fi
+        \else \gdef\pdfimgext{PDF}%
+        \fi
+      \else \gdef\pdfimgext{pdf}%
+      \fi
+      \closein 1
+    \endgroup
+    %
+    % without \immediate, ancient pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifdim \wd0 >0pt width \pdfimagewidth \fi
+      \ifdim \wd2 >0pt height \pdfimageheight \fi
+      \ifnum\pdftexversion<13
+         #1.\pdfimgext
+       \else
+         {#1.\pdfimgext}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  %
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \indexnofonts
+    \turnoffactive
+    \makevalueexpandable
+    \def\pdfdestname{#1}%
+    \txiescapepdf\pdfdestname
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}
+  %
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  \def\urlcolor{\rgbDarkRed}
+  \def\linkcolor{\rgbDarkRed}
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
+  %
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \edef\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      \txiescapepdf\pdfoutlinedest
+    \fi
+    %
+    % Also escape PDF chars in the display string.
+    \edef\pdfoutlinetext{#1}%
+    \txiescapepdf\pdfoutlinetext
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\partentry##1##2##3##4{}% ignore parts in the outlines
+      \def\numchapentry##1##2##3##4{%
+       \def\thischapnum{##2}%
+       \def\thissecnum{0}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+       \advancenumber{chap\thischapnum}%
+       \def\thissecnum{##2}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+       \advancenumber{sec\thissecnum}%
+       \def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+       \advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % TODO this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Too
+      % much work for too little return.  Just use the ASCII equivalents
+      % we use for the index sort strings.
+      % 
+      \indexnofonts
+      \setupdatafile
+      % We can have normal brace characters in the PDF outlines, unlike
+      % Texinfo index files.  So set that up.
+      \def\{{\lbracecharliteral}%
+      \def\}{\rbracecharliteral}%
+      \catcode`\\=\active \otherbackslash
+      \input \tocreadfilename
+    \endgroup
+  }
+  {\catcode`[=1 \catcode`]=2
+   \catcode`{=\other \catcode`}=\other
+   \gdef\lbracecharliteral[{]%
+   \gdef\rbracecharliteral[}]%
+  ]
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \addtokens{\filename}{\PP}%
+      \advance\filenamelength by 1
+    \fi
+    \nextsp}
+  \def\getfilename#1{%
+    \filenamelength=0
+    % If we don't expand the argument now, \skipspaces will get
+    % snagged on things like "@value{foo}".
+    \edef\temp{#1}%
+    \expandafter\skipspaces\temp|\relax
+  }
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      %
+      \normalturnoffactive
+      address@hidden@}%
+      \let\/=\empty
+      \makevalueexpandable
+      % do we want to go so far as to use \indexnofonts instead of just
+      % special-casing \var here?
+      \def\var##1{##1}%
+      %
+      \leavevmode\setcolor{\urlcolor}%
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \setcolor{\linkcolor}#1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  % non-pdf mode
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\setcolor = \gobble
+  \let\pdfsetcolor = \gobble
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @address@hidden prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold.  Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly.  There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\newdimen\textleading
+\def\setleading#1{%
+  \dimen0 = #1\relax
+  \normalbaselineskip = \baselinefactor\dimen0
+  \normallineskip = \lineskipfactor\normalbaselineskip
+  \normalbaselines
+  \setbox\strutbox =\hbox{%
+    \vrule width0pt height\strutheightpercent\baselineskip
+                    depth \strutdepthpercent \baselineskip
+  }%
+}
+
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\thisisundefined \else
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named \fontprefix#2.
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
+% Example:
+% #1 = \textrm
+% #2 = \rmshape
+% #3 = 10
+% #4 = \mainmagstep
+% #5 = OT1
+%
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+%
+% (end of cmaps)
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\thisisundefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               % where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt.  (The default in Texinfo.)
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 11pt text font size definitions, \definetextfontsizexi
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+\divide\parskip by 2  % reduce space between paragraphs
+\textleading = 12pt   % line spacing for 10pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 10pt text font size definitions, \definetextfontsizex
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+%
+\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  %\wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  %
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    address@hidden only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+  \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+  \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \resetmathfonts \setleading{27pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+% --karl, 24jan03.
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+  \csname markup#1true\endcsname
+  \def\currentmarkupstyle{#1}%
+  \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+  \expandafter\def\expandafter\markupstylesetup
+    \expandafter{\markupstylesetup #1}%
+  \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+  \expandafter\let\expandafter \temp
+    \csname markupsetuplq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+  \expandafter\let\expandafter \temp
+    \csname markupsetuprq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+%
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqkbd     \markupsetcodequoteleft
+\let\markupsetuprqkbd     \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+%
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report.  xpdf does work with the regular 0x27.
+%
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      % [Knuth] pp. 380,381,391
+      % \relax disables Spanish ligatures ?` and !` of \tt font.
+      \relax`%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+
+% Commands to set the quote options.
+% 
+\parseargdef\codequoteundirected{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+  \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+  \fi\fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+  \ifusingtt 
+    {{\ttsl #2}\let\next=\relax}%
+    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+  \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
+
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+  \ifx\next,%
+  \else\ifx\next-%
+  \else\ifx\next.%
+  \else\ptexslash
+  \fi\fi\fi
+  \aftersmartic
+}
+
+% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
+\def\ttslanted#1{{\ttsl #1}}
+
+% @cite is like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @b, explicit bold.  Also @strong.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph.  Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
address@hidden
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  address@hidden address@hidden address@hidden
+    address@hidden \sfcode\semiChar address@hidden \sfcode\commaChar 
address@hidden
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
address@hidden
+\def\endofsentencespacefactor{3000}% default
+
+% @t, explicit typewriter.
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% @indicateurl is \samp, that is, with quotes.
+\let\indicateurl=\samp
+
+% @code (and similar) prints in typewriter, but with spaces the same
+% size as normal in the surrounding text, without hyphenation, etc.
+% This is a subroutine for that.
+\def\tclose#1{%
+  {%
+    % Change normal interword space to be same as for the current font.
+    \spaceskip = \fontdimen2\font
+    %
+    % Switch to typewriter.
+    \tt
+    %
+    % But `\ ' produces the large typewriter interword space.
+    \def\ {{\spaceskip = 0pt{} }}%
+    %
+    % Turn off hyphenation.
+    \nohyphenation
+    %
+    \rawbackslash
+    \plainfrenchspacing
+    #1%
+  }%
+  \null % reset spacefactor to 1000
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+%
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+%  -- rms.
+{
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
+  \global\let'=\rq \global\let`=\lq  % default definitions
+  %
+  \global\def\code{\begingroup
+    \setupmarkupstyle{code}%
+    % The following should really be moved into \setupmarkupstyle handlers.
+    \catcode\dashChar=\active  \catcode\underChar=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\normaldash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\codex #1{\tclose{#1}\endgroup}
+
+\def\normaldash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @address@hidden can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is bad.
+% @allowcodebreaks provides a document-level way to turn breaking at -
+% and _ on and off.
+%
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
+  \fi\fi
+}
+
+% For @command, @env, @file, @option quotes seem unnecessary,
+% so use \code rather than \samp.
+\let\command=\code
+\let\env=\code
+\let\file=\code
+\let\option=\code
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \urefcode{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+  \catcode\ampChar=\active   \catcode\dotChar=\active
+  \catcode\hashChar=\active  \catcode\questChar=\active
+  \catcode\slashChar=\active
+}
+{
+  \urefcatcodes
+  %
+  \global\def\urefcode{\begingroup
+    \setupmarkupstyle{code}%
+    \urefcatcodes
+    \let&\urefcodeamp
+    \let.\urefcodedot
+    \let#\urefcodehash
+    \let?\urefcodequest
+    \let/\urefcodeslash
+    \codex
+  }
+  %
+  % By default, they are just regular characters.
+  \global\def&{\normalamp}
+  \global\def.{\normaldot}
+  \global\def#{\normalhash}
+  \global\def?{\normalquest}
+  \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's.  The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+  \catcode`\/=\active
+  \global\def\urefcodeslashfinish{%
+    \urefprestretch \slashChar
+    % Allow line break only after the final / in a sequence of
+    % slashes, to avoid line break between the slashes in http://.
+    \ifx\next/\else \urefpoststretch \fi
+  }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that.  Also allow no breaking at all, for manual control.
+% 
+\parseargdef\urefbreakstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\wordnone
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordbefore
+    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordafter
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
+\def\xkey{\key}
+\def\kbdsub#1#2#3\par{%
+  \def\one{#1}\def\three{#3}\def\threex{??}%
+  \ifx\one\xkey\ifx\threex\three \key{#2}%
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+}
+
+% definition of @key that produces a lozenge.  Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+%    \vbox{\hrule\kern-0.4pt
+%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+%    \kern-0.4pt\hrule}%
+%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+  \null % reset \spacefactor=1000
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+  \null % reset \spacefactor=1000
+}
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @address@hidden + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
+% ctrl is no longer a Texinfo command, but leave this definition for fun.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+% 
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+  \def\inlinefmtname{#1}%
+  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely.  Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored.  But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too.  We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+% 
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+  \def\inlinerawname{#1}%
+  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+  \endgroup % close group opened by \tex.
+}
+
+
+\message{glyphs,}
+% and logos.
+
+% @@ prints an @, as does @atchar{}.
address@hidden }
+\let\atchar=\@
+
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  address@hidden
+  address@hidden
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else address@hidden can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{%
+     \ifx\textnominalsize\xwordpt
+       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+       % Revert to plain's \scriptsize, which is 7pt.
+       \count255=\the\fam $\fam\count255 \scriptstyle A$%
+     \else
+       % For 11pt, we can use our lllsize.
+       \selectfonts\lllsize A%
+     \fi
+     }%
+     \vss
+  }}%
+  \kern-.15em
+  \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  %
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  %
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  %
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% Glyphs from the EC fonts.  We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases.  We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+  \def\temp{#1}%
+  \ifx\temp\macrocharA\Aogonek
+  \else\ifx\temp\macrochara\aogonek
+  \else\ifx\temp\macrocharE\Eogonek
+  \else\ifx\temp\macrochare\eogonek
+  \else
+    \ecfont \setbox0=\hbox{#1}%
+    \ifdim\ht0=1ex\accent"0C #1%
+    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+    \fi
+  \fi\fi\fi\fi
+  }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
+\def\ecfont{%
+  % We can't distinguish serif/sans and italic/slanted, but this
+  % is used for crude hacks anyway (like adding French and German
+  % quotes to documents typeset with CM, where we lose kerning), so
+  % hopefully nobody will notice/care.
+  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+  \ifmonospace
+    % typewriter:
+    \font\thisecfont = ectt\ecsize \space at \nominalsize
+  \else
+    \ifx\curfontstyle\bfstylename
+      % bold:
+      \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+    \else
+      % regular:
+      \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+    \fi
+  \fi
+  \thisecfont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\thisisundefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{%
+  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+  \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
+      \iffinishedtitlepage\else
+        \finishtitlepage
+      \fi
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\def\Etitlepage{%
+    \iffinishedtitlepage\else
+       \finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+% Settings used for typesetting titles: no hyphenation, no indentation,
+% don't worry much about spacing, ragged right.  This should be used
+% inside a \vbox, and fonts need to be set appropriately first.  Because
+% it is always used for titles, nothing else, we call \rmisbold.  \par
+% should be specified before the end of the \vbox, since a vbox is a group.
+% 
+\def\raggedtitlesettings{%
+  \rmisbold
+  \hyphenpenalty=10000
+  \parindent=0pt
+  \tolerance=5000
+  \ptexraggedright
+}
+
+% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \vbox{\titlefonts \raggedtitlesettings #1\par}%
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\secfonts\rmisbold \leftline{#1}}%
+  \fi
+}
+
+
+% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+  %
+  % Leave some space for the footline.  Hopefully ok to assume
+  % @evenfooting will not be used by itself.
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top     \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+                          \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+                          \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+  \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\headingsoff{% non-global headings elimination
+  \evenheadline={\hfil}\evenfootline={\hfil}%
+   \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff  % it's the default
+
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\thisisundefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    %
+    % Make this a paragraph so we get the \parskip glue and wrapping,
+    % but leave it ragged-right.
+    \begingroup
+      \advance\leftskip by-\tableindent
+      \advance\hsize by\tableindent
+      \advance\rightskip by0pt plus1fil\relax
+      \leavevmode\unhbox0\par
+    \endgroup
+    %
+    % We're going to be starting a paragraph, but we don't want the
+    % \parskip glue -- logically it's part of the @item we just started.
+    \nobreak \vskip-\parskip
+    %
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    %
+    \penalty 10001
+    \endgroup
+    \itemxneedsnegativevskipfalse
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
address@hidden while not in a list environment}}
address@hidden while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  %
+  % Try typesetting the item mark that if the document erroneously says
+  % something like @itemize @samp (intending @table), there's an error
+  % right away at the @itemize.  It's not the best error message in the
+  % world, but it's better than leaving it to the @item.  This means if
+  % the user wants an empty mark, they have to say @w{} not just @w.
+  \def\itemcontents{#1}%
+  \setbox0 = \hbox{\itemcontents}%
+  %
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  %
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   %
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    %
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    %
+    \ifnum\lccode\expandafter`\thearg=0\relax
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+%   @multitable @columnfractions .25 .3 .45
+%   @item ...
+%
+%   Numbers following @columnfractions are the percent of the total
+%   current hsize to be used for each column. You may use as many
+%   columns as desired.
+
+
+% Or use a template:
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item ...
+%   using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @address@hidden@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item first col stuff @tab second col stuff @tab third col
+%   @item
+%   first col stuff
+%   @tab
+%   second col stuff
+%   @tab
+%   third col
+%   @item first col stuff @tab second col stuff
+%   @tab Many paragraphs of text may be used in any column.
+%
+%         They will wrap at the width determined by the template.
+%   @address@hidden@tab This will be in third column.
+%   @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+  \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+  \def\firstarg{#1}%
+  \ifx\firstarg\xendsetuptable
+    \let\go = \relax
+  \else
+    \ifx\firstarg\xcolumnfractions
+      \global\setpercenttrue
+    \else
+      \ifsetpercent
+         \let\go\pickupwholefraction
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+                   % separator; typically that is always in the input, anyway.
+         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+      \fi
+    \fi
+    \ifx\go\pickupwholefraction
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+  \checkenv\multitable
+  \crcr
+  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+  \the\everytab % for the first item
+}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we again encounter the problem the 1sp was intended to solve.
+%                                      --karl, address@hidden, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+       % Maybe so, but it also creates really weird page breaks when the
+       % table breaks over pages. Wouldn't \vfil be better?  Wait until the
+       % problem manifests itself, so it can be fixed for real --karl.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+       % The first column will be indented with the surrounding text.
+       \advance\hsize by\leftskip
+      \else
+       \ifsetpercent \else
+         % If user has not set preamble in terms of percent of \hsize
+         % we will advance \hsize by \multitablecolspace.
+         \advance\hsize by \multitablecolspace
+       \fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+%        If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line address@hidden #1', keeping track of nested 
conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \obeylines
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching address@hidden #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next address@hidden #1'.
+    address@hidden #1{%
+      address@hidden
+    %
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line address@hidden @ifset', for
+    % example, to count as an @ifset for nesting.)
+    address@hidden
+    %
+    % And now expand that command.
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty                      % Nothing found.
+    \let\next\doignoretextzzz
+  \else                                        % Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy          % ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0     % We have just found the outermost @end.
+    \let\next\enddoignore
+  \else                                % Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+  % Ignore anything after the last address@hidden #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @address@hidden, though.
+    % So \let them to their normal equivalents.
+    \let-\normaldash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of address@hidden ifset,' call \makeond and the 
redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end executes the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
+% without the @) is in fact defined.  We can only feasibly check at the
+% TeX level, so something like `mathcode' is going to considered
+% defined even though it is not a Texinfo command.
+% 
+\makecond{ifcommanddefined}
+\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
+%
+\def\doifcmddefined#1#2{{%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname #2\endcsname\relax
+      #1% If not defined, \let\next as above.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
+
+% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
+\makecond{ifcommandnotdefined}
+\def\ifcommandnotdefined{%
+  \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
+\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
+
+% Set the `txicommandconditionals' variable, so documents have a way to
+% test if the @ifcommand...defined conditionals are available.
+\set txicommandconditionals
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \relax
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  address@hidden@}% change to @@ when we switch to @ as escape char in index 
files.
+  \def\ {\realbackslash\space }%
+  %
+  % Need these unexpandable (because we define \tt as a dummy)
+  % definitions when @{ or @} appear in index entry text.  Also, more
+  % complicated, when \tex is in effect and \{ is a \delimiter again.
+  % We can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.  Perhaps we
+  % should define @lbrace and @rbrace commands a la @comma.
+  \def\{{{\tt\char123}}%
+  \def\}{{\tt\char125}}%
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  %
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  %
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  %
+  % Sample whatsit resulting:
+  % address@hidden@folio address@hidden address@hidden }}}
+  %
+  % So:
+  \let\endinput = \empty
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  address@hidden@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  \definedummyletter\-%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\DH
+  \definedummyword\L
+  \definedummyword\O
+  \definedummyword\OE
+  \definedummyword\TH
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\dh
+  \definedummyword\exclamdown
+  \definedummyword\l
+  \definedummyword\o
+  \definedummyword\oe
+  \definedummyword\ordf
+  \definedummyword\ordm
+  \definedummyword\questiondown
+  \definedummyword\ss
+  \definedummyword\th
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\arrow
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\entrybreak
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\geq
+  \definedummyword\guillemetleft
+  \definedummyword\guillemetright
+  \definedummyword\guilsinglleft
+  \definedummyword\guilsinglright
+  \definedummyword\lbracechar
+  \definedummyword\leq
+  \definedummyword\minus
+  \definedummyword\ogonek
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\quotedblbase
+  \definedummyword\quotedblleft
+  \definedummyword\quotedblright
+  \definedummyword\quoteleft
+  \definedummyword\quoteright
+  \definedummyword\quotesinglbase
+  \definedummyword\rbracechar
+  \definedummyword\result
+  \definedummyword\textdegree
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ogonek
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sansserif
+  \definedummyword\sc
+  \definedummyword\slanted
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\abbr
+  \definedummyword\acronym
+  \definedummyword\anchor
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\dmn
+  \definedummyword\email
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\image
+  \definedummyword\indicateurl
+  \definedummyword\inforef
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % All control words become @asis by default; overrides below.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  address@hidden@}%
+  \def\_{\normalunderscore}%
+  \def\-{}% @- shouldn't affect sorting
+  %
+  % Unfortunately, texindex is not prepared to handle braces in the
+  % content at all.  So for index sorting, we map @{ and @} to strings
+  % starting with |, since that ASCII character is between ASCII { and }.
+  \def\{{|a}%
+  \def\lbracechar{|a}%
+  %
+  \def\}{|b}%
+  \def\rbracechar{|b}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\DH{DZZ}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\TH{ZZZ}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\dh{dzz}%
+  \def\exclamdown{!}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  \def\o{o}%
+  \def\questiondown{?}%
+  \def\ss{ss}%
+  \def\th{zzz}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\arrow{->}%
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\expansion{==>}%
+  \def\geq{>=}%
+  \def\guillemetleft{<<}%
+  \def\guillemetright{>>}%
+  \def\guilsinglleft{<}%
+  \def\guilsinglright{>}%
+  \def\leq{<=}%
+  \def\minus{-}%
+  \def\point{.}%
+  \def\pounds{pounds}%
+  \def\print{-|}%
+  \def\quotedblbase{"}%
+  \def\quotedblleft{"}%
+  \def\quotedblright{"}%
+  \def\quoteleft{`}%
+  \def\quoteright{'}%
+  \def\quotesinglbase{,}%
+  \def\registeredsymbol{R}%
+  \def\result{=>}%
+  \def\textdegree{o}%
+  %
+  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+  \else \indexlquoteignore \fi
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  %
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  %
+  \macrolist
+}
+
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \safewhatsit\dosubindwrite
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname address@hidden
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{\ifhmode
+  #1%
+ \else
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \whatsitskip = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \whatsitpenalty = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\whatsitskip glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\whatsitskip
+  \fi
+  %
+  #1%
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\whatsitskip
+  \fi
+\fi}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \plainfrenchspacing
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial address@hidden
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
+  \openin 1 \jobname.#1s
+  \ifeof 1
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    \putwordIndexNonexistent
+  \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      \putwordIndexIsEmpty
+    \else
+      % Index files are almost Texinfo source, but we use \ as the escape
+      % character.  It would be better to use @, but that's too big a change
+      % to make right now.
+      \def\indexbackslash{\backslashcurfont}%
+      \catcode`\\ = 0
+      \escapechar = `\\
+      \begindoublecolumns
+      \input \jobname.#1s
+      \enddoublecolumns
+    \fi
+  \fi
+  \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%      \def\entry#1#2{...
+% But this freezes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
+    %
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % When reading the text of entry, convert explicit line breaks
+    % from @* into spaces.  The user might give these in long section
+    % titles, for instance.
+    \def\*{\unskip\space\ignorespaces}%
+    \def\entrybreak{\hfil\break}%
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\entrybreak{\unskip\space\ignorespaces}%
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
+      \ %
+    \else
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+       \pdfgettoks#1.%
+       \ \the\toksA
+      \else
+       \ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+  \parfillskip=0in
+  \parskip=0in
+  \hangindent=1in
+  \hangafter=1
+  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
address@hidden
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % Grab any single-column material above us.
+  \output = {%
+    %
+    % Here is a possibility not foreseen in manmac: if we accumulate a
+    % whole lot of material, we might end up calling this \output
+    % routine twice in a row (see the doublecol-lose test, which is
+    % essentially a couple of indexes with @setchapternewpage off).  In
+    % that case we just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % Use the double-column output routine for subsequent pages.
+  \output = {\doublecolumnout}%
+  %
+  % Change the page size parameters.  We could do this once outside this
+  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+  % format, but then we repeat the same computation.  Repeating a couple
+  % of assignments once per index is clearly meaningless for the
+  % execution time, so we may as well do it in one place.
+  %
+  % First we halve the line length, less a little for the gutter between
+  % the columns.  We compute the gutter based on the line length, so it
+  % changes automatically with the paper format.  The magic constant
+  % below is chosen so that the gutter has the same value (well, +-<1pt)
+  % as it did when we hard-coded it.
+  %
+  % We put the result in a separate register, \doublecolumhsize, so we
+  % can restore it in \pagesofar, after \hsize itself has (potentially)
+  % been clobbered.
+  %
+  \doublecolumnhsize = \hsize
+    \advance\doublecolumnhsize by -.04154\hsize
+    \divide\doublecolumnhsize by 2
+  \hsize = \doublecolumnhsize
+  %
+  % Double the \vsize as well.  (We don't need a separate register here,
+  % since nobody clobbers \vsize.)
+  \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@ = \vsize
+  \divide\dimen@ by 2
+  \advance\dimen@ by -\ht\partialpage
+  %
+  % box0 will be the left-hand column, box2 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255
+  \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, address@hidden
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {%
+    \vbadness = 10000
+    \loop
+      \global\setbox3 = \copy0
+      \global\setbox1 = \vsplit3 to \dimen@
+    \ifdim\ht3>\dimen@
+      \global\advance\dimen@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox address@hidden
+  \setbox2=\vbox address@hidden
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+  \chapoddpage
+  \null
+  \vskip.3\vsize  % move it down on the page a bit
+  \begingroup
+    \noindent \titlefonts\rmisbold #1\par % the text
+    \let\lastnode=\empty      % no node to associate with
+    \writetocentry{part}{#1}{}% but put it in the toc
+    \headingsoff              % no headline or footline on the part page
+    \chapoddpage
+  \endgroup
+}
+
+% \unnumberedno is an oxymoron.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno        \secno=0
+\newcount\subsecno     \subsecno=0
+\newcount\subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno  \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter.  Page headings and footings can use
+% these.  @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unnlevel
+      \chardef\unnlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+       address@hidden within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unnlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unnlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+       \unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+         \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+         \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  % \putwordChapter can contain complex things in translations.
+  \toks0=\expandafter{\putwordChapter}%
+  \message{\the\toks0 \space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  % \putwordAppendix can contain complex things in translations.
+  \toks0=\expandafter{\putwordAppendix}%
+  \message{\the\toks0 \space \appendixletter}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % This used to be simply \message{#1}, but TeX fully expands the
+  % argument to \message.  Therefore, if #1 contained @-commands, TeX
+  % expanded them.  For example, in address@hidden The @cite{Book}', TeX
+  % expanded @cite (which turns out to cause errors because \cite is meant
+  % to be executed, not expanded).
+  %
+  % Anyway, we don't want the fully-expanded definition of @cite to appear
+  % as a result of the \message, we just want address@hidden' itself.  We use
+  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:                --kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+% 
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+% 
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+% 
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+\def\majorheading{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip \nobreak
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+% Parameter controlling skip before chapter headings (if needed)
+\newskip\chapheadingskip
+
+% Define plain chapter starts, and page on/off switching for it.
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong.  But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+  \chappager
+  \ifodd\pageno \else
+    \begingroup
+      \headingsoff
+      \null
+      \chappager
+    \endgroup
+  \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  % Insert the first mark before the heading break (see notes for \domark).
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+                        \gdef\thissection{}}%
+  %
+  \def\temptype{#2}%
+  \ifx\temptype\Ynothingkeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{\thischaptername}}%
+  \else\ifx\temptype\Yomitfromtockeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{}}%
+  \else\ifx\temptype\Yappendixkeyword
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\appendixletter}%
+      % \noexpand\putwordAppendix avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \else
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\the\chapno}%
+      % \noexpand\putwordChapter avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \fi\fi\fi
+  %
+  % Output the mark.  Pass it through \safewhatsit, to take care of
+  % the preceding space.
+  \safewhatsit\domark
+  %
+  % Insert the chapter heading break.
+  \pchapsepmacro
+  %
+  % Now the second mark, after the heading break.  No break points
+  % between here and the heading.
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \domark
+  %
+  {%
+    \chapfonts \rmisbold
+    %
+    % Have to define \lastsection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\lastsection{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \nobreak % Avoid page breaks at the interline glue.
+    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
+  \nobreak\bigskip \nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    \checkenv{}% should not be in an environment.
+    %
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rmisbold
+    %
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    % Insert first mark before the heading break (see notes for \domark).
+    \let\prevsectiondefs=\lastsectiondefs
+    \ifx\temptype\Ynothingkeyword
+      \ifx\sectionlevel\seckeyword
+        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+                              \gdef\thissection{\thissectionname}}%
+      \fi
+    \else\ifx\temptype\Yomitfromtockeyword
+      % Don't redefine \thissection.
+    \else\ifx\temptype\Yappendixkeyword
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \else
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \fi\fi\fi
+    %
+    % Go into vertical mode.  Usually we'll already be there, but we
+    % don't want the following whatsit to end up in a preceding paragraph
+    % if the document didn't happen to have a blank line.
+    \par
+    %
+    % Output the mark.  Pass it through \safewhatsit, to take care of
+    % the preceding space.
+    \safewhatsit\domark
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Now the second mark, after the heading break.  No break points
+    % between here and the heading.
+    \let\prevsectiondefs=\lastsectiondefs
+    \domark
+    %
+    % Only insert the space after the number if we have a section number.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\lastsection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \lastsection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\lastsection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\lastsection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chapmacro.
+    \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)  However, when a paragraph is not started next
+  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+  % or the negative glue will cause weirdly wrong output, typically
+  % obscuring the section heading with something else.
+  \vskip-\parskip
+  %
+  % This is so the last item on the main vertical list is a known
+  % \penalty > 10000, so \startdefun, etc., can recognize the situation
+  % and do the needful.
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         address@hidden
+       \temp
+      }%
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <address@hidden>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\partentry = \shortpartentry
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Parts, in the main contents.  Replace the part number, which doesn't
+% exist, with an empty box.  Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+  \penalty-300
+  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+   \begingroup
+     \chapentryfonts
+     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @tex ... @end tex    escapes into raw TeX temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain @ character.
+
+\envdef\tex{%
+  \setupmarkupstyle{tex}%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+  \escapechar=`\\
+  %
+  % ' is active in math mode (mathcode"8000).  So reset it, and all our
+  % other math active characters (just in case), to plain's definitions.
+  \mathactive
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \expandafter \let\csname top\endcsname=\ptextop  % outer
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  address@hidden@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments.  \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical.  We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+                               % side, and for 6pt waste from
+                               % each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing = t%
+  %
+  % If this cartouche directly follows a sectioning command, we need the
+  % \parskip glue (backspaced over by default) or the cartouche can
+  % collide with the section heading.
+  \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+  %
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+         \hskip\lskip
+         \vrule\kern3pt
+         \vbox\bgroup
+             \kern3pt
+             \hsize=\cartinner
+             \baselineskip=\normbskip
+             \lineskip=\normlskip
+             \parskip=\normpskip
+             \vskip -\parskip
+             \comment % For explanation, see the end of def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+             \kern3pt
+         \egroup
+         \kern3pt\vrule
+         \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\newdimen\nonfillparindent
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \let\par = \lisppar % don't ignore blank lines
+  \obeylines % each line of input is a line of output
+  \parskip = 0pt
+  % Turn off paragraph indentation but redefine \indent to emulate
+  % the normal \indent.
+  \nonfillparindent=\parindent
+  \parindent = 0pt
+  \let\indent\nonfillindent
+  %
+  \emergencystretch = 0pt % don't try to avoid overfull boxes
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it in one command.  #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+  \makedispenvdef{#1}{#3}%
+  \makedispenvdef{#2}{#3}%
+}
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by address@hidden
+%
+\maketwodispenvdef{lisp}{example}{%
+  \nonfillstart
+  \tt\setupmarkupstyle{example}%
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenvdef{display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenvdef{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill\relax
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @raggedright does more-or-less normal line breaking but no right
+% justification.  From plain.tex.
+\envdef\raggedright{%
+  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+  \parindent=0pt \leftskip0pt plus2em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\makedispenvdef{quotation}{\quotationstart}
+%
+\def\quotationstart{%
+  \indentedblockstart % same as \indentedblock, but increase right margin too.
+  \ifx\nonarrowing\relax
+    \advance\rightskip by \lispnarrowing
+  \fi
+  \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\thisisundefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallquotation{\Equotation}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+% @indentedblock is like @quotation, but indents only on the left and
+% has no optional argument.
+% 
+\makedispenvdef{indentedblock}{\indentedblockstart}
+%
+\def\indentedblockstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+}
+
+% Keep a nonzero parskip for the environment, since we're doing normal filling.
+%
+\def\Eindentedblock{%
+  \par
+  {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallindentedblock{\Eindentedblock}
+
+
+% LaTeX-like @address@hidden verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% address@hidden' would look like the '@verbx' command.  address@hidden
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|address@hidden"%
+  % Don't do the quotes -- if we do, @set txicodequoteundirected and
+  % @set txicodequotebacktick will not have effect on @verb and
+  % @verbatim, and ?` and !` ligatures won't get disabled.
+  %\do\`\do\'%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \setupmarkupstyle{verb}%
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion.
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs.  The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group.  Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset.  Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
+%
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+      \divide\dimen\verbbox by\tabw
+      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
+      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
+    }%
+  }
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \tt % easiest (and conventionally used) font for verbatim
+  % The \leavevmode here is for blank lines.  Otherwise, we would
+  % never \starttabox and the \egroup would end verbatim mode.
+  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
+  \tabexpand
+  \setupmarkupstyle{verbatim}%
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count.
+  % Must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     address@hidden verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  address@hidden verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \indexnofonts       % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
address@hidden copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \printdefunline, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    %
+    % As a further refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil\relax
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \doingtypefnfalse    % distinguish typed functions from all else
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+\newif\ifdoingtypefn       % doing typed function?
+\newif\ifrettypeownline    % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line.  This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+% 
+\parseargdef\deftypefnnewline{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @txideftypefnnl value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \doingtypefntrue
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+% Types:
+
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  \par
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % Determine if we are typesetting the return type of a typed function
+  % on a line by itself.
+  \rettypeownlinefalse
+  \ifdoingtypefn  % doing a typed function specifically?
+    % then check user option for putting return type on its own line:
+    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+      \rettypeownlinetrue
+    \fi
+  \fi
+  %
+  % How we'll format the category name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.  We'll always have at
+  % least two.
+  \tempnum = 2
+  %
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  %
+  % If doing a return type on its own line, we'll have another line.
+  \ifrettypeownline
+    \advance\tempnum by 1
+    \def\maybeshapeline{0in \hsize}%
+  \else
+    \def\maybeshapeline{}%
+  \fi
+  %
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  %
+  % The final paragraph shape:
+  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
+  %
+  % Put the category name at the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% text of the return type
+    \ifx\temp\empty\else
+      \tclose{\temp}% typeset the return type
+      \ifrettypeownline
+        % put return type on its own line; prohibit line break following:
+        \hfil\vadjust{\nobreak}\break  
+      \else
+        \space  % type on same line, so just followed by a space
+      \fi
+    \fi           % no return type
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  We used to recommend @var for that, so
+  % leave the code in, but it's strange for @var to lead to typewriter.
+  % Nowadays we recommend @code, since the difference between a ttsl hyphen
+  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
+  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+  \message{Warning: unbalanced parentheses in @def...}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \message{Warning: unbalanced square brackets in @def...}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\thisisundefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{\begingroup
+  \newlinechar`\^^M
+  \let\xeatspaces\eatspaces
+  %
+  % Undo catcode changes of \startcontents and \doprintindex
+  % When called from @insertcopying or (short)caption, we need active
+  % backslash to get it printed correctly.  Previously, we had
+  % \catcode`\\=\other instead.  We'll see whether a problem appears
+  % with macro expansion.                              --kasal, 19aug04
+  address@hidden \catcode`\\=\active \escapechar=`\@
+  %
+  % ... and for \example:
+  \spaceisspace
+  %
+  % The \empty here causes a following catcode 5 newline to be eaten as
+  % part of reading whitespace after a control sequence.  It does not
+  % eat a catcode 13 newline.  There's no good way to handle the two
+  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+  % would then have different behavior).  See the Macro Details node in
+  % the manual for the workaround we recommend for macros and
+  % line-oriented commands.
+  % 
+  \scantokens{#1\empty}%
+\endgroup}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
address@hidden
+\gdef\eatspaces address@hidden }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } address@hidden
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+%
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+%
+\def\scanctxt{% used as subroutine
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  address@hidden
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{% used for copying and captions, not macros.
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{% used for @macro definitions
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{% used when scanning invocations
+  \scanctxt
+  \catcode`\\=0
+}
+% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }.  Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+% 
+% We already have @{ and @}.  For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+% 
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent.  Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+%
address@hidden @address@hidden@active
+ @address@hidden@address@hidden
+ @address@hidden@csname address@hidden
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\margbackslash#1{\char`\#1 }
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}% now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0\relax
+  \else
+     \expandafter\parsemargdef \argl;%
+     \if\paramno>256\relax
+       \ifx\eTeXversion\thisisundefined
+         \errhelp = \EMsimple
+         \errmessage{You need eTeX to compile a file with macros with more 
than 256 arguments}
+       \fi
+     \fi
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname#1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% For macro processing make @ a letter so that we can make Texinfo private 
macro names.
address@hidden
+\catcode address@hidden
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded.  If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.  
+%
+% That gets used by \mbodybackslash (above).
+%
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX: let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef  the body (nothing else will expand because 
of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
+\def\parsemargdef#1;{%
+  \paramno=0\def\paramlist{}%
+  \let\hash\relax
+  \let\xeatspaces\relax
+  \parsemargdefxxx#1,;,%
+  % In case that there are 10 or more arguments we parse again the arguments
+  % list to set new definitions for the \macarg.BLAH macros corresponding to
+  % each BLAH argument. It was anyhow needed to parse already once this list
+  % in order to count the arguments, and as macros with at most 9 arguments
+  % are by far more frequent than macro with 10 or more arguments, defining
+  % twice the \macarg.BLAH macros does not cost too much processing power.
+  \ifnum\paramno<10\relax\else
+    \paramno0\relax
+    \parsemmanyargdef@@#1,;,% 10 or more arguments
+  \fi
+}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+\def\parsemmanyargdef@@#1,{%
+  \if#1;\let\next=\relax
+  \else 
+    \let\next=\parsemmanyargdef@@
+    \edef\tempb{\eatspaces{#1}}%
+    \expandafter\def\expandafter\tempa
+       \expandafter{\csname macarg.\tempb\endcsname}%
+    % Note that we need some extra \noexpand\noexpand, this is because we
+    % don't want \the  to be expanded in the \parsermacbody  as it uses an
+    % \xdef .
+    \expandafter\edef\tempa
+      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+    \advance\paramno by 1\relax
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+%
+
+\catcode address@hidden
address@hidden macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
address@hidden rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode address@hidden
+
address@hidden
address@hidden
address@hidden@}%
address@hidden@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition.  It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
address@hidden
+  address@hidden
+  address@hidden Need to keep a copy for parameter expansion.
+  \def\paramlist{#2,address@hidden
+  \def\macroname{#1}%
+  \begingroup
+  \macroargctxt
+  \def\argvaluelist{#3,address@hidden
+  address@hidden
+  address@hidden
+    \setemptyargvalues@
+  \else
+    \getargvals@@
+  \fi
+}
+
+% 
+\def\getargvals@@{%
+  \ifx\paramlist\nilm@
+      % Some sanity check needed here that \argvaluelist is also empty.
+      \ifx\argvaluelist\nillm@
+      \else
+        \errhelp = \EMsimple
+        \errmessage{Too many arguments in macro `\macroname'!}%
+      \fi
+      \let\next\macargexpandinbody@
+  \else
+    \ifx\argvaluelist\nillm@
+       % No more arguments values passed to macro.  Set remaining named-arg
+       % macros to empty.
+       \let\next\setemptyargvalues@
+    \else
+      % pop current arg name into address@hidden
+      address@hidden@address@hidden@}%
+      address@hidden
+       % pop current argument value into address@hidden
+      address@hidden@address@hidden@}%
+      address@hidden
+       % Here address@hidden is the current arg name and address@hidden is the 
current arg value.
+       % First place the new argument macro definition into address@hidden
+       address@hidden
+       \expandafter\let\csname address@hidden
+       address@hidden
+         \csname address@hidden
+       address@hidden@tempe{\the\macname}}%
+       address@hidden@tempd\macargdeflist@
+       \let\next\getargvals@@
+    \fi
+  \fi
+  \next
+}
+
address@hidden
+  \expandafter\expandafter\expandafter\def
+  \expandafter\expandafter\expandafter#2%
+  \expandafter\expandafter\expandafter{%
+  \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro address@hidden
address@hidden
+  %  To do this we use the property that token registers that are \the'ed
+  % within an \edef  expand only once. So we are going to place all argument
+  % values into respective token registers.
+  %
+  % First we save the token context, and initialize argument numbering.
+  \begingroup
+    \paramno0\relax
+    % Then, for each argument number #N, we place the corresponding argument
+    % value into a new token list register \toks#N
+    address@hidden@,;,%
+    % Then, we expand the body so that argument are replaced by their
+    % values. The trick for values not to be expanded themselves is that they
+    % are within tokens and that tokens expand only once in an \edef .
+    address@hidden mac.\macroname .body\endcsname}%
+    % Now we restore the token stack pointer to free the token list registers
+    % which we have used, but we make sure that expanded body is saved after
+    % group.
+    \expandafter
+  \endgroup
+  address@hidden@tempc}%
+  }
+
address@hidden 
+  %% Define the named-macro outside of this group and then close this group. 
+  \expandafter
+  \endgroup
+  \macargdeflist@
+  % First the replace in body the macro arguments by their values, the result
+  % is in address@hidden .
+  \macvalstoargs@
+  % Then we point at the \norecurse or \gobble (for recursive) macro value
+  % with address@hidden .
+  address@hidden mac.\macroname .recurse\endcsname
+  % Depending on whether it is recursive or not, we need some tailing
+  % \egroup .
+  address@hidden
+     address@hidden
+  \else
+     address@hidden
+  \fi
+  % And now we do the real job:
+  address@hidden@address@hidden@tempc}%
+  address@hidden
+}
+
address@hidden,{%
+  \if#1;\let\next\relax
+  \else
+    \let\next\putargsintokens@
+    % First we allocate the new token list register, and give it a temporary
+    % alias address@hidden .
+    address@hidden
+    % Then we place the argument value into that token list register.
+    address@hidden macarg.#1\endcsname
+    address@hidden@tempa}%
+    \advance\paramno by 1\relax
+  \fi
+  \next
+}
+
+% Save the token stack pointer into macro #1
address@hidden
+% Restore the token stack pointer from number in macro #1
address@hidden
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef address@hidden
+
+% Tailing missing arguments are set to empty
address@hidden
+  \ifx\paramlist\nilm@
+    \let\next\macargexpandinbody@
+  \else
+    address@hidden@
+    \let\next\setemptyargvalues@
+  \fi
+  \next
+}
+
address@hidden,address@hidden
+  address@hidden
+    \expandafter\def\csname macarg.#1\endcsname{}}%
+  address@hidden@tempa\macargdeflist@
+  \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
address@hidden,address@hidden
+   \def#1{#3}%
+   \def#2{#4}%
+}
address@hidden,address@hidden
+   \long\def#1{#3}%
+   \long\def#2{#4}%
+}
+
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+%
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else
+      \ifnum\paramno<10\relax % at most 9
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+          \csname\the\macname xxx\endcsname
+            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+      \else % 10 or more
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          address@hidden
+        }%    
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname 
.recurse\endcsname\gobble
+      \fi
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % at most 9
+      \ifnum\paramno<10\relax
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \expandafter\noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+        \paramlist{%
+            \egroup
+            \noexpand\norecurse{\the\macname}%
+            \noexpand\scanmacro{\temp}\egroup}%
+      \else % 10 or more:
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          address@hidden
+        }%
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname 
.recurse\endcsname\norecurse
+      \fi
+    \fi
+  \fi}
+
+\catcode address@hidden
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg).
+% 
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Make them active and then expand them all to nothing.
+%
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs    % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{%
+  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+       address@hidden #1 of \setref, expanded by the \edef
+         ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\lastsection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
+    }%
+  \fi
+}
+
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+% 
+\parseargdef\xrefautomaticsectiontitle{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% 
+% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual.  All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+  \unsepspaces
+  %
+  % Get args without leading/trailing spaces.
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+  %
+  \def\infofilename{\ignorespaces #4}%
+  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+  %
+  \def\printedmanual{\ignorespaces #5}%
+  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
+  %
+  % If the printed reference name (arg #3) was not explicitly given in
+  % the @xref, figure out what we want to use.
+  \ifdim \wd\printedrefnamebox = 0pt
+    % No printed node name was explicitly given.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+      % Not auto section-title: use node name inside the square brackets.
+      \def\printedrefname{\ignorespaces #1}%
+    \else
+      % Auto section-title: use chapter/section title inside
+      % the square brackets if we have it.
+      \ifdim \wd\printedmanualbox > 0pt
+        % It is in another manual, so we don't have it; use node name.
+        \def\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We (should) know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    {\indexnofonts
+     \turnoffactive
+     \makevalueexpandable
+     % This expands tokens, so do it after making catcode changes, so _
+     % etc. don't get their TeX definitions.  This ignores all spaces in
+     % #4, including (wrongly) those in the middle of the filename.
+     \getfilename{#4}%
+     %
+     % This (wrongly) does not take account of leading or trailing
+     % spaces in #1, which should be ignored.
+     \edef\pdfxrefdest{#1}%
+     \ifx\pdfxrefdest\empty
+       \def\pdfxrefdest{Top}% no empty targets
+     \else
+       \txiescapepdf\pdfxrefdest  % escape PDF special chars
+     \fi
+     %
+     \leavevmode
+     \startlink attr{/Border [0 0 0]}%
+     \ifnum\filenamelength>0
+       goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \setcolor{\linkcolor}%
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd\printedrefnamebox = 0pt
+      \refx{#1-snt}{}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % If the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd\printedmanualbox > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    % 
+    % If we use \unhbox to print the node names, TeX does not insert
+    % empty discretionaries after hyphens, which means that it will not
+    % find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens,
+    % this is a loss.  Therefore, we give the text of the node name
+    % again, so it is as if TeX is seeing it for the first time.
+    % 
+    \ifdim \wd\printedmanualbox > 0pt
+      % Cross-manual reference with a printed manual name.
+      % 
+      \crossmanualxref{\cite{\printedmanual\unskip}}%
+    %
+    \else\ifdim \wd\infofilenamebox > 0pt
+      % Cross-manual reference with only an info filename (arg 4), no
+      % printed manual name (arg 5).  This is essentially the same as
+      % the case above; we output the filename, since we have nothing else.
+      % 
+      \crossmanualxref{\code{\infofilename\unskip}}%
+    %
+    \else
+      % Reference within this manual.
+      %
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via the macro below so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi\fi
+  \fi
+  \endlink
+\endgroup}
+
+% Output a cross-manual xref to #1.  Used just above (twice).
+% 
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+% 
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input.  By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font).  Hopefully it will never happen in practice.
+% 
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+% 
+\def\crossmanualxref#1{%
+  \setbox\toprefbox = \hbox{Top\kern7sp}%
+  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+  \ifdim \wd2 > 7sp  % nonempty?
+    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
+      \putwordSection{} ``\printedrefname'' \putwordin{}\space
+    \fi
+  \fi
+  #1%
+}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    address@hidden \the\chapno
+  \else \ifnum\subsecno=0
+    address@hidden \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    address@hidden \the\chapno.\the\secno.\the\subsecno
+  \else
+    address@hidden \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     address@hidden @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     address@hidden @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    address@hidden @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    address@hidden
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        {\toks0 = {#1}% avoid expansion of possibly-complex value
+         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  address@hidden
+  \catcode`\^^A=\other
+  \catcode`\^^B=\other
+  \catcode`\^^C=\other
+  \catcode`\^^D=\other
+  \catcode`\^^E=\other
+  \catcode`\^^F=\other
+  \catcode`\^^G=\other
+  \catcode`\^^H=\other
+  \catcode`\^^K=\other
+  \catcode`\^^L=\other
+  \catcode`\^^N=\other
+  \catcode`\^^P=\other
+  \catcode`\^^Q=\other
+  \catcode`\^^R=\other
+  \catcode`\^^S=\other
+  \catcode`\^^T=\other
+  \catcode`\^^U=\other
+  \catcode`\^^V=\other
+  \catcode`\^^W=\other
+  \catcode`\^^X=\other
+  \catcode`\^^Z=\other
+  \catcode`\^^[=\other
+  \catcode`\^^\=\other
+  \catcode`\^^]=\other
+  \catcode`\^^^=\other
+  \catcode`\^^_=\other
+  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
+  % supported in the main text, it doesn't seem desirable.  Furthermore,
+  % that is not enough: for node names that actually contain a ^
+  % character, we would end up writing a line like this: 'xrdef {'hat
+  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+  % argument, and \hat is not an expandable control sequence.  It could
+  % all be worked out, but why?  Either we support ^^ or we don't.
+  %
+  % The other change necessary for this was to define \auxhat:
+  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+  % and then to call \auxhat in \setq.
+  %
+  \catcode`\^=\other
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \catcode`\[=\other
+  \catcode`\]=\other
+  \catcode`\"=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\$=\other
+  \catcode`\#=\other
+  \catcode`\&=\other
+  \catcode`\%=\other
+  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  address@hidden
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for Info output only.
+\let\footnotestyle=\comment
+
+{\catcode address@hidden
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \global\advance\footnoteno by address@hidden
+  \edef\thisfootno{$^{\the\footnoteno}$}%
+  %
+  % In case the footnote comes at the end of a sentence, preserve the
+  % extra spacing after we do the footnote number.
+  address@hidden
+  address@hidden
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  address@hidden
+  \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter.  Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \insert\footins\bgroup
+  % We want to typeset this text as a normal paragraph, even if the
+  % footnote reference occurs in (for example) a display environment.
+  % So reset some parameters.
+  \hsize=\pagewidth
+  \interlinepenalty\interfootnotelinepenalty
+  \splittopskip\ht\strutbox % top baseline for broken footnotes
+  \splitmaxdepth\dp\strutbox
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  \parindent\defaultparindent
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\hang}%
+  \textindent{\thisfootno}%
+  %
+  % Don't crash into the line above the footnote text.  Since this
+  % expands into a box, it must come within the paragraph, lest it
+  % provide a place where TeX can split the footnote.
+  \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
+  address@hidden
+}
+}%end \catcode address@hidden
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image.  We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front.  If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+  work.  It is also included in the Texinfo distribution, or you can get
+  it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+  \ifx\epsfbox\thisisundefined
+    \ifwarnednoepsf \else
+      \errhelp = \noepsfhelp
+      \errmessage{epsf.tex not found, images will be ignored}%
+      \global\warnednoepsftrue
+    \fi
+  \else
+    \imagexxx #1,,,,,\finish
+  \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+  \else \ifx\centersub\centerV
+    % for @center @image, we need a vbox so we can have our vertical space
+    \imagevmodetrue
+    \vbox\bgroup % vbox has better behavior than vtop herev
+  \fi\fi
+  %
+  \ifimagevmode
+    \nobreak\medskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+  \fi
+  %
+  % Leave vertical mode so that indentation from an enclosing
+  %  environment such as @quotation is respected.
+  % However, if we're at the top level, we don't want the
+  %  normal paragraph indentation.
+  % On the other hand, if we are in the case of @center @image, we don't
+  %  want to start a paragraph, which will create a hsize-width box and
+  %  eradicate the centering.
+  \ifx\centersub\centerV\else \noindent \fi
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \epsfbox itself resets \epsf?size at each figure.
+    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+    \epsfbox{#1.eps}%
+  \fi
+  %
+  \ifimagevmode
+    \medskip  % space after a standalone image
+  \fi  
+  \ifx\centersub\centerV \egroup \fi
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \lastsection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\lastsection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+       \appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+       \scanexp{%
+         \xdef\noexpand\gtemp{%
+           \ifx\thisshortcaption\empty
+             \thiscaption
+           \else
+             \thisshortcaption
+           \fi
+         }%
+       }%
+        address@hidden
+         \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
address@hidden \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+
+\message{localization,}
+
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding.  Single argument is the language
+% (de) or locale (de_DE) abbreviation.
+%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file by the name they passed if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
+    \else
+      \globaldefs = 1  % everything in the txi-LL files needs to persist
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup % end raw TeX
+\endgroup}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \globaldefs = 1  % everything in the txi-LL files needs to persist
+    \input txi-#1.tex
+  \fi
+  \closein 1
+}
+}% end of special _ catcode
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages.  This means we can support hyphenation in
+% Texinfo, at least to some extent.  (This still doesn't solve the
+% accented characters problem.)
+%
address@hidden
+\def\txisetlanguage#1#2#3{%
+  % do not set the language if the name is undefined in the current TeX.
+  \expandafter\ifx\csname address@hidden \relax
+    \message{no patterns for #1}%
+  \else
+    \global\language = \csname address@hidden
+  \fi
+  % but there is no harm in adjusting the hyphenmin values regardless.
+  \global\lefthyphenmin = #2\relax
+  \global\righthyphenmin = #3\relax
+}
+
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{\tie}
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}}
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\copyright}
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\guillemetleft}
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-}
+  \gdef^^ae{\registeredsymbol}
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\guillemetright}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A}
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\TH}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\th}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{\tie}
+  \gdef^^a1{\ogonek{A}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\ogonek{a}}
+  \gdef^^b2{\ogonek{ }}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\ogonek{E}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U}
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\ogonek{e}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'{\dotless{i}}}
+  \gdef^^ee{\^{\dotless{i}}}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BB}{\guillemetright}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D0}{\DH}
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DE}{\TH}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F0}{\dh}
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FE}{\th}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2018}{\quoteleft}
+  \DeclareUnicodeCharacter{2019}{\quoteright}
+  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+  \DeclareUnicodeCharacter{201C}{\quotedblleft}
+  \DeclareUnicodeCharacter{201D}{\quotedblright}
+  \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+  \DeclareUnicodeCharacter{203A}{\guilsinglright}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{607.2pt}{6in}% that's 46 lines
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {-.2in}{0in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From address@hidden, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1\relax
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
address@hidden
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @address@hidden @address@hidden
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active  % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C).  We can't use " for the
+% usual hex value because it has already been made active.
address@hidden@address@hidden @ifmmode @mathchar29020 @else @backslashcurfont 
@fi}}
address@hidden@backslashchar = @normalbackslash % @backslashchar{} is for user 
documents.
+
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.  We switch back and forth between these.
address@hidden@address@hidden@backslashcurfont}
address@hidden@address@hidden@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.  Also revert - to its normal character, in
+% case the active - from code has slipped in.
+%
address@hidden = @active
+ @address@hidden
+   @address@hidden
+   @let"address@hidden
+   @address@hidden %$ font-lock fix
+   @address@hidden
+   @let<address@hidden
+   @let>address@hidden
+   @address@hidden
+   @address@hidden
+   @address@hidden
+   @let|address@hidden
+   @address@hidden
+   @markupsetuplqdefault
+   @markupsetuprqdefault
+   @unsepspaces
+ }
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
address@hidden
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
address@hidden@eatinput input address@hidden
address@hidden@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
address@hidden@fixbackslash{%
+  @address@hidden @let\ = @normalbackslash @fi
+  @address@hidden
+  @address@hidden@active
+}
+
+% Say @foo, not \foo, in error messages.
address@hidden = `@@
+
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
address@hidden@normaldot{.}
address@hidden@normalquest{?}
address@hidden@normalslash{/}
+
+% These look ok in all fonts, so just make them not special.
+% @hashchar{} gets its own user-level command, because of #line.
address@hidden@& = @other @address@hidden&}
address@hidden@# = @other @address@hidden
address@hidden@% = @other @address@hidden
+
address@hidden @hashchar = @normalhash
+
address@hidden Finally, make ` and ' active, so that txicodequoteundirected and
address@hidden txicodequotebacktick work right in, e.g., @address@hidden'}}.  
If we
address@hidden don't make ` and ' active, @code will not get them as active 
chars.
address@hidden Do this last of all since we use ` in the previous @catcode 
assignments.
address@hidden@'address@hidden
address@hidden@address@hidden
address@hidden
address@hidden
+
address@hidden Local variables:
address@hidden eval: (add-hook 'write-file-hooks 'time-stamp)
address@hidden page-delimiter: "^\\\\message"
address@hidden time-stamp-start: "def\\\\texinfoversion{"
address@hidden time-stamp-format: "%:y-%02m-%02d.%02H"
address@hidden time-stamp-end: "}"
address@hidden End:
+
address@hidden vim:sw=2:
+
address@hidden
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
address@hidden ignore
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..1a04572
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,576 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* AT386 */
+#undef AT386
+
+/* BOOTSTRAP_SYMBOLS */
+#undef BOOTSTRAP_SYMBOLS
+
+/* CMU */
+#undef CMU
+
+/* option 3c515: Linux device driver for Ethernet controller 3Com 515 ISA Fast
+   EtherLink; on ix86-at enabled by default */
+#undef CONFIG_3C515
+
+/* option 3c574_cs: Linux device driver for 3Com 3c574 ``RoadRunner'' PCMCIA
+   Ethernet; on ix86-at enabled by default */
+#undef CONFIG_3C574_CS
+
+/* option 3c589_cs: Linux device driver for 3Com 3c589 PCMCIA Ethernet card;
+   on ix86-at enabled by default */
+#undef CONFIG_3C589_CS
+
+/* option ac3200: Linux device driver for Ethernet controller Ansel
+   Communications EISA 3200; on ix86-at enabled by default */
+#undef CONFIG_AC3200
+
+/* option apricot: Linux device driver for Ethernet controller Apricot XEN-II
+   on board ethernet; on ix86-at enabled by default */
+#undef CONFIG_APRICOT
+
+/* option at1700: Linux device driver for Ethernet controller AT1700 (Fujitsu
+   86965); on ix86-at enabled by default */
+#undef CONFIG_AT1700
+
+/* option atp: Linux device driver for Ethernet controller AT-LAN-TEC/RealTek
+   pocket adaptor */
+#undef CONFIG_ATP
+
+/* option axnet_cs: Linux device driver for Asix AX88190-based PCMCIA Ethernet
+   adapters; on ix86-at enabled by default */
+#undef CONFIG_AXNET_CS
+
+/* option floppy: Linux device driver for PC floppy; on ix86-at enabled by
+   default and for qemu */
+#undef CONFIG_BLK_DEV_FD
+
+/* Force DMA on IDE block devices */
+#undef CONFIG_BLK_DEV_FORCE_DMA
+
+/* option ide: Linux device driver for IDE disk controllers; on ix86-at
+   enabled by default and for qemu */
+#undef CONFIG_BLK_DEV_IDE
+
+/* option de4x5: Linux device driver for Ethernet controller DE4x5 (de4x5,
+   de425, de434, de435, de450, de500); on ix86-at enabled by default */
+#undef CONFIG_DE4X5
+
+/* option de600: Linux device driver for Ethernet controller D-Link DE-600; on
+   ix86-at enabled by default */
+#undef CONFIG_DE600
+
+/* option de620: Linux device driver for Ethernet controller D-Link DE-620; on
+   ix86-at enabled by default */
+#undef CONFIG_DE620
+
+/* option tulip: Linux device driver for Ethernet controller DECchip Tulip
+   (dc21x4x) PCI (elcp, tulip); on ix86-at enabled by default */
+#undef CONFIG_DEC_ELCP
+
+/* option depca: Linux device driver for Ethernet controller DEPCA (de100,
+   de101, de200, de201, de202, de210, de422); on ix86-at enabled by default */
+#undef CONFIG_DEPCA
+
+/* option e2100: Linux device driver for Ethernet controller Cabletron E21xx;
+   on ix86-at enabled by default */
+#undef CONFIG_E2100
+
+/* option eexpress: Linux device driver for Ethernet controller EtherExpress
+   16; on ix86-at enabled by default */
+#undef CONFIG_EEXPRESS
+
+/* option eepro: Linux device driver for Ethernet controller EtherExpressPro;
+   on ix86-at enabled by default */
+#undef CONFIG_EEXPRESS_PRO
+
+/* option eepro100: Linux device driver for Ethernet controller Intel
+   EtherExpressPro PCI 10+/100B/100+; on ix86-at enabled by default */
+#undef CONFIG_EEXPRESS_PRO100B
+
+/* option 3c501: Linux device driver for Ethernet controller 3COM 501 (3c501)
+   / Etherlink I; on ix86-at enabled by default */
+#undef CONFIG_EL1
+
+/* option 3c507: Linux device driver for Ethernet controller 3Com 507 (3c507,
+   el16); on ix86-at enabled by default */
+#undef CONFIG_EL16
+
+/* option 3c503: Linux device driver for Ethernet controller 3Com 503 (3c503)
+   / Etherlink II; on ix86-at enabled by default */
+#undef CONFIG_EL2
+
+/* option 3c509: Linux device driver for Ethernet controller 3Com 509/579
+   (3c509, 3c579) / Etherlink III; on ix86-at enabled by default */
+#undef CONFIG_EL3
+
+/* option 3c505: Linux device driver for Ethernet controller 3Com 505 (3c505,
+   elplus); on ix86-at enabled by default */
+#undef CONFIG_ELPLUS
+
+/* option epic100: Linux device driver for Ethernet controller SMC 83c170/175
+   EPIC/100 (epic, epic100) / EtherPower II; on ix86-at enabled by default */
+#undef CONFIG_EPIC
+
+/* option eth16i: Linux device driver for Ethernet controller ICL EtherTeam
+   16i/32 (eth16i, eth32); on ix86-at enabled by default */
+#undef CONFIG_ETH16I
+
+/* option ewrk3: Linux device driver for Ethernet controller EtherWORKS 3
+   (ewrk3, de203, de204, de205); on ix86-at enabled by default */
+#undef CONFIG_EWRK3
+
+/* option fmv18x: Linux device driver for Ethernet controller
+   FMV-181/182/183/184; on ix86-at enabled by default */
+#undef CONFIG_FMV18X
+
+/* option fmvj18x_cs: Linux device driver for fmvj18x chipset based PCMCIA
+   Ethernet cards; on ix86-at enabled by default */
+#undef CONFIG_FMVJ18X_CS
+
+/* option hamachi: Linux device driver for Ethernet controller Packet Engines
+   "Hamachi" GNIC-2 Gigabit Ethernet; on ix86-at enabled by default */
+#undef CONFIG_HAMACHI
+
+/* option hp100: Linux device driver for Ethernet controller HP 10/100VG PCLAN
+   (ISA, EISA, PCI) (hp100, hpj2577, hpj2573, hpj2585, hp27248b); on ix86-at
+   enabled by default */
+#undef CONFIG_HP100
+
+/* option hp: Linux device driver for Ethernet controller HP PCLAN (27245 and
+   other 27xxx series); on ix86-at enabled by default */
+#undef CONFIG_HPLAN
+
+/* option hp-plus: Linux device driver for Ethernet controller HP PCLAN+
+   (27247B and 27252A); on ix86-at enabled by default */
+#undef CONFIG_HPLAN_PLUS
+
+/* option i82365: Linux device driver for Intel 82365 PC Card controller; on
+   ix86-at enabled by default */
+#undef CONFIG_I82365
+
+/* CONFIG_INET */
+#undef CONFIG_INET
+
+/* option intel-gige: Linux device driver for Ethernet controller Intel PCI
+   Gigabit Ethernet; on ix86-at enabled by default */
+#undef CONFIG_INTEL_GIGE
+
+/* option pcmcia-isa: isa bus support in the pcmcia core; on ix86-at enabled
+   by default */
+#undef CONFIG_ISA
+
+/* option lance: Linux device driver for Ethernet controller AMD LANCE and
+   PCnet (at1500, ne2100); on ix86-at enabled by default */
+#undef CONFIG_LANCE
+
+/* 386 */
+#undef CONFIG_M386
+
+/* 486 */
+#undef CONFIG_M486
+
+/* 586 */
+#undef CONFIG_M586
+
+/* 686 */
+#undef CONFIG_M686
+
+/* option myson803: Linux device driver for Ethernet controller Myson MTD803
+   Ethernet adapter series; on ix86-at enabled by default */
+#undef CONFIG_MYSON803
+
+/* option natsemi: Linux device driver for Ethernet controller National
+   Semiconductor DP8381x series PCI Ethernet; on ix86-at enabled by default */
+#undef CONFIG_NATSEMI
+
+/* option ne: Linux device driver for Ethernet controller NE2000/NE1000 ISA
+   (ne, ne1000, ne2000); on ix86-at enabled by default and for qemu */
+#undef CONFIG_NE2000
+
+/* option ne2k-pci: Linux device driver for Ethernet controller PCI NE2000; on
+   ix86-at enabled by default */
+#undef CONFIG_NE2K_PCI
+
+/* option ni52: Linux device driver for Ethernet controller NI5210; on ix86-at
+   enabled by default */
+#undef CONFIG_NI52
+
+/* option ni65: Linux device driver for Ethernet controller NI6510; on ix86-at
+   enabled by default */
+#undef CONFIG_NI65
+
+/* option nmclan_cs: Linux device driver for New Media Ethernet LAN PCMCIA
+   cards; on ix86-at enabled by default */
+#undef CONFIG_NMCLAN_CS
+
+/* option ns820: Linux device driver for Ethernet controller National
+   Semiconductor DP8382x series PCI Ethernet; on ix86-at enabled by default */
+#undef CONFIG_NS820
+
+/* option orinoco_cs: Linux device driver for Hermes or Prism 2 PCMCIA
+   Wireless adapters (Orinoco); on ix86-at enabled by default */
+#undef CONFIG_ORINOCO_CS
+
+/* CONFIG_PCMCIA */
+#undef CONFIG_PCMCIA
+
+/* option pcnet32: Linux device driver for Ethernet controller AMD PCI PCnet32
+   (PCI bus NE2100 cards); on ix86-at enabled by default */
+#undef CONFIG_PCNET32
+
+/* option pcnet_cs: Linux device driver for NS8390-based PCMCIA cards; on
+   ix86-at enabled by default */
+#undef CONFIG_PCNET_CS
+
+/* option rtl8139: Linux device driver for Ethernet controller RealTek
+   8129/8139 (rtl8129, rtl8139) (not 8019/8029!); on ix86-at enabled by
+   default */
+#undef CONFIG_RTL8139
+
+/* CONFIG_SCSI */
+#undef CONFIG_SCSI
+
+/* option wd7000: Linux device driver for SCSI controller WD 7000; on ix86-at
+   enabled by default */
+#undef CONFIG_SCSI_7000FASST
+
+/* option advansys: Linux device driver for SCSI controller AdvanSys; on
+   ix86-at enabled by default */
+#undef CONFIG_SCSI_ADVANSYS
+
+/* option aha152x: Linux device driver for SCSI controller Adaptec
+   AHA-152x/2825 (aha152x, aha2825); on ix86-at enabled by default */
+#undef CONFIG_SCSI_AHA152X
+
+/* option aha1542: Linux device driver for SCSI controller Adaptec AHA-1542;
+   on ix86-at enabled by default */
+#undef CONFIG_SCSI_AHA1542
+
+/* option aha1740: Linux device driver for SCSI controller Adaptec AHA-1740;
+   on ix86-at enabled by default */
+#undef CONFIG_SCSI_AHA1740
+
+/* option aic7xxx: Linux device driver for SCSI controller Adaptec AIC7xxx */
+#undef CONFIG_SCSI_AIC7XXX
+
+/* option AM53C974: Linux device driver for SCSI controller AM53/79C974
+   (am53c974, am79c974); on ix86-at enabled by default */
+#undef CONFIG_SCSI_AM53C974
+
+/* option BusLogic: Linux device driver for SCSI controller BusLogic; on
+   ix86-at enabled by default */
+#undef CONFIG_SCSI_BUSLOGIC
+
+/* option tmscsim: Linux device driver for SCSI controller Tekram DC-390(T)
+   (dc390, dc390t); on ix86-at enabled by default */
+#undef CONFIG_SCSI_DC390T
+
+/* option dtc: Linux device driver for SCSI controller DTC3180/3280 (dtc3180,
+   dtc3280); on ix86-at enabled by default */
+#undef CONFIG_SCSI_DTC3280
+
+/* option eata: Linux device driver for SCSI controller EATA ISA/EISA/PCI (DPT
+   and generic EATA/DMA-compliant boards); on ix86-at enabled by default */
+#undef CONFIG_SCSI_EATA
+
+/* option eata_dma: Linux device driver for SCSI controller EATA-DMA (DPT,
+   NEC, AT&T, SNI, AST, Olivetti, Alphatronix) */
+#undef CONFIG_SCSI_EATA_DMA
+
+/* option eata_pio: Linux device driver for SCSI controller EATA-PIO (old DPT
+   PM2001, PM2012A); on ix86-at enabled by default */
+#undef CONFIG_SCSI_EATA_PIO
+
+/* option fdomain: Linux device driver for SCSI controller Future Domain 16xx;
+   on ix86-at enabled by default */
+#undef CONFIG_SCSI_FUTURE_DOMAIN
+
+/* option gdth: Linux device driver for GDT SCSI Disk Array Controller */
+#undef CONFIG_SCSI_GDTH
+
+/* option g_NCR5380: Linux device driver for SCSI controller Generic
+   NCR5380/53c400 (ncr5380, ncr53c400) */
+#undef CONFIG_SCSI_GENERIC_NCR5380
+
+/* option in2000: Linux device driver for SCSI controller Always IN 2000; on
+   ix86-at enabled by default */
+#undef CONFIG_SCSI_IN2000
+
+/* option NCR53c406a: Linux device driver for SCSI controller NCR53c406a chip
+   */
+#undef CONFIG_SCSI_NCR53C406A
+
+/* option 53c78xx: Linux device driver for SCSI controller NCR 53C7,8xx */
+#undef CONFIG_SCSI_NCR53C7xx
+
+/* option ncr53c8xx: Linux device driver for SCSI controller NCR53C8XX
+   (ncr53c8xx, dc390f, dc390u, dc390w); on ix86-at enabled by default */
+#undef CONFIG_SCSI_NCR53C8XX
+
+/* scsi omit flashpoint */
+#undef CONFIG_SCSI_OMIT_FLASHPOINT
+
+/* option pas16: Linux device driver for SCSI controller PAS16; on ix86-at
+   enabled by default */
+#undef CONFIG_SCSI_PASS16
+
+/* option ppa: Linux device driver for IOMEGA Parallel Port ZIP drive; on
+   ix86-at enabled by default */
+#undef CONFIG_SCSI_PPA
+
+/* option qlogicfas: Linux device driver for SCSI controller Qlogic FAS; on
+   ix86-at enabled by default */
+#undef CONFIG_SCSI_QLOGIC_FAS
+
+/* option qlogicisp: Linux device driver for SCSI controller Qlogic ISP; on
+   ix86-at enabled by default */
+#undef CONFIG_SCSI_QLOGIC_ISP
+
+/* option seagate: Linux device driver for SCSI controller Seagate ST02,
+   Future Domain TMC-8xx; on ix86-at enabled by default */
+#undef CONFIG_SCSI_SEAGATE
+
+/* option sym53c8xx: Linux device driver for SCSI controller Symbios 53C8XX;
+   on ix86-at enabled by default */
+#undef CONFIG_SCSI_SYM53C8XX
+
+/* option t128: Linux device driver for SCSI controller Trantor
+   T128/T128F/T228 (t128, t128f, t228); on ix86-at enabled by default */
+#undef CONFIG_SCSI_T128
+
+/* option u14-34f: Linux device driver for SCSI controller UltraStor 14F/34F;
+   on ix86-at enabled by default */
+#undef CONFIG_SCSI_U14_34F
+
+/* option ultrastor: Linux device driver for SCSI controller UltraStor; on
+   ix86-at enabled by default */
+#undef CONFIG_SCSI_ULTRASTOR
+
+/* option seeq8005: Linux device driver for Ethernet controller Seeq8005; on
+   ix86-at enabled by default */
+#undef CONFIG_SEEQ8005
+
+/* option sis900: Linux device driver for Ethernet controller SiS 900; on
+   ix86-at enabled by default */
+#undef CONFIG_SIS900
+
+/* option sk_g16: Linux device driver for Ethernet controller Schneider & Koch
+   G16; on ix86-at enabled by default */
+#undef CONFIG_SK_G16
+
+/* option smc91c92_cs: Linux device driver for SMC91c92-based PCMCIA cards; on
+   ix86-at enabled by default */
+#undef CONFIG_SMC91C92_CS
+
+/* option starfire: Linux device driver for Ethernet controller Adaptec
+   Starfire network adapter; on ix86-at enabled by default */
+#undef CONFIG_STARFIRE
+
+/* option sundance: Linux device driver for Ethernet controller Sundance ST201
+   "Alta" PCI Ethernet; on ix86-at enabled by default */
+#undef CONFIG_SUNDANCE
+
+/* option tlan: Linux device driver for Ethernet controller TI ThunderLAN; on
+   ix86-at enabled by default */
+#undef CONFIG_TLAN
+
+/* option smc-ultra: Linux device driver for Ethernet controller SMC Ultra; on
+   ix86-at enabled by default */
+#undef CONFIG_ULTRA
+
+/* option smc-ultra32: Linux device driver for Ethernet controller SMC
+   Ultra32; on ix86-at enabled by default */
+#undef CONFIG_ULTRA32
+
+/* option via-rhine: Linux device driver for Ethernet controller VIA Rhine; on
+   ix86-at enabled by default */
+#undef CONFIG_VIA_RHINE
+
+/* option 3c59x: Linux device driver for Ethernet controller 3Com 59x/90x
+   (3c59x, 3c590, 3c592, 3c595, 3c597, 3c90x, 3c900, 3c905)
+   "Vortex/Boomerang"; on ix86-at enabled by default */
+#undef CONFIG_VORTEX
+
+/* option wavelan: Linux device driver for Ethernet controller AT&T WaveLAN &
+   DEC RoamAbout DS */
+#undef CONFIG_WAVELAN
+
+/* option wd: Linux device driver for Ethernet controller WD80x3; on ix86-at
+   enabled by default */
+#undef CONFIG_WD80x3
+
+/* option winbond-840: Linux device driver for Ethernet controller Winbond
+   W89c840 PCI Ethernet; on ix86-at enabled by default */
+#undef CONFIG_WINBOND840
+
+/* CONFIG_WIRELESS */
+#undef CONFIG_WIRELESS
+
+/* option xirc2ps_cs: Linux device driver for Xircom CreditCard and Realport
+   PCMCIA ethernet; on ix86-at enabled by default */
+#undef CONFIG_XIRC2PS_CS
+
+/* option yellowfin: Linux device driver for Ethernet controller Packet
+   Engines Yellowfin Gigabit-NIC; on ix86-at enabled by default */
+#undef CONFIG_YELLOWFIN
+
+/* option znet: Linux device driver for Ethernet controller Zenith Z-Note
+   (znet, znote); on ix86-at enabled by default */
+#undef CONFIG_ZNET
+
+/* CPU */
+#undef CPU
+
+/* CPU_L1_SHIFT */
+#undef CPU_L1_SHIFT
+
+/* FAST_TAS */
+#undef FAST_TAS
+
+/* HW_FOOTPRINT */
+#undef HW_FOOTPRINT
+
+/* KERNEL */
+#undef KERNEL
+
+/* Linux device drivers. */
+#undef LINUX_DEV
+
+/* MACH */
+#undef MACH
+
+/* MACH_COUNTERS */
+#undef MACH_COUNTERS
+
+/* MACH_DEBUG */
+#undef MACH_DEBUG
+
+/* MACH_FIXPRI */
+#undef MACH_FIXPRI
+
+/* MACH_HOST */
+#undef MACH_HOST
+
+/* be a hypervisor guest */
+#undef MACH_HYP
+
+/* MACH_IPC_DEBUG */
+#undef MACH_IPC_DEBUG
+
+/* MACH_IPC_TEST */
+#undef MACH_IPC_TEST
+
+/* Use the in-kernel debugger? */
+#undef MACH_KDB
+
+/* Standalone MACH kernel */
+#undef MACH_KERNEL
+
+/* enable use of kmsg device */
+#undef MACH_KMSG
+
+/* MACH_LDEBUG */
+#undef MACH_LDEBUG
+
+/* MACH_LOCK_MON */
+#undef MACH_LOCK_MON
+
+/* lpr device */
+#undef MACH_LPR
+
+/* MACH_MACHINE_ROUTINES */
+#undef MACH_MACHINE_ROUTINES
+
+/* MACH_MP_DEBUG */
+#undef MACH_MP_DEBUG
+
+/* MACH_PAGEMAP */
+#undef MACH_PAGEMAP
+
+/* MACH_PCSAMPLE */
+#undef MACH_PCSAMPLE
+
+/* Enable pseudo physical memory support */
+#undef MACH_PSEUDO_PHYS
+
+/* Enable paravirtualized segment descriptors support */
+#undef MACH_PV_DESCRIPTORS
+
+/* Enable paravirtualized page tables support */
+#undef MACH_PV_PAGETABLES
+
+/* Enable ring1 kernel support */
+#undef MACH_RING1
+
+/* MACH_TTD */
+#undef MACH_TTD
+
+/* MACH_VM_DEBUG */
+#undef MACH_VM_DEBUG
+
+/* build a MachXen kernel */
+#undef MACH_XEN
+
+/* set things up for a multiprocessor */
+#undef MULTIPROCESSOR
+
+/* NCOM */
+#undef NCOM
+
+/* number of CPUs */
+#undef NCPUS
+
+/* NLPR */
+#undef NLPR
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* PAE support */
+#undef PAE
+
+/* POWER_SAVE */
+#undef POWER_SAVE
+
+/* SIMPLE_CLOCK */
+#undef SIMPLE_CLOCK
+
+/* SLAB_USE_CPU_POOLS */
+#undef SLAB_USE_CPU_POOLS
+
+/* SLAB_VERIFY */
+#undef SLAB_VERIFY
+
+/* STAT_TIME */
+#undef STAT_TIME
+
+/* XPR_DEBUG */
+#undef XPR_DEBUG
+
+/* __ELF__ */
+#undef __ELF__
+
+/* __KERNEL__ */
+#undef __KERNEL__
+
+/* __SMP__ */
+#undef __SMP__
diff --git a/configure b/configure
new file mode 100755
index 0000000..f90be76
--- /dev/null
+++ b/configure
@@ -0,0 +1,13055 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for GNU Mach 1.4.
+#
+# Report bugs to <address@hidden>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; 
then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file 
name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) 
>/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"address@hidden"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"address@hidden"}'='\"address@hidden"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  
as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" 
as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" 
as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = 
\"x\$as_lineno_2'\$as_run'\"' || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; 
then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a 
"$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | 
as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a 
"$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell address@hidden and address@hidden
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} 
as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX 
shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 
'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='GNU Mach'
+PACKAGE_TARNAME='gnumach'
+PACKAGE_VERSION='1.4'
+PACKAGE_STRING='GNU Mach 1.4'
+PACKAGE_BUGREPORT='address@hidden'
+PACKAGE_URL=''
+
+ac_unique_file="kern/ipc_kobject.c"
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+disable_smashing_stack_protector_FALSE
+disable_smashing_stack_protector_TRUE
+CODE_linux_FALSE
+CODE_linux_TRUE
+device_driver_group_scsi_FALSE
+device_driver_group_scsi_TRUE
+device_driver_group_pcmcia_FALSE
+device_driver_group_pcmcia_TRUE
+device_driver_group_net_FALSE
+device_driver_group_net_TRUE
+device_driver_orinoco_cs_FALSE
+device_driver_orinoco_cs_TRUE
+device_driver_xirc2ps_cs_FALSE
+device_driver_xirc2ps_cs_TRUE
+device_driver_smc91c92_cs_FALSE
+device_driver_smc91c92_cs_TRUE
+device_driver_pcnet_cs_FALSE
+device_driver_pcnet_cs_TRUE
+device_driver_nmclan_cs_FALSE
+device_driver_nmclan_cs_TRUE
+device_driver_fmvj18x_cs_FALSE
+device_driver_fmvj18x_cs_TRUE
+device_driver_axnet_cs_FALSE
+device_driver_axnet_cs_TRUE
+device_driver_3c589_cs_FALSE
+device_driver_3c589_cs_TRUE
+device_driver_3c574_cs_FALSE
+device_driver_3c574_cs_TRUE
+device_driver_pcmcia_isa_FALSE
+device_driver_pcmcia_isa_TRUE
+device_driver_i82365_FALSE
+device_driver_i82365_TRUE
+device_driver_znet_FALSE
+device_driver_znet_TRUE
+device_driver_yellowfin_FALSE
+device_driver_yellowfin_TRUE
+device_driver_winbond_840_FALSE
+device_driver_winbond_840_TRUE
+device_driver_wd_FALSE
+device_driver_wd_TRUE
+device_driver_wavelan_FALSE
+device_driver_wavelan_TRUE
+device_driver_via_rhine_FALSE
+device_driver_via_rhine_TRUE
+device_driver_tulip_FALSE
+device_driver_tulip_TRUE
+device_driver_tlan_FALSE
+device_driver_tlan_TRUE
+device_driver_sundance_FALSE
+device_driver_sundance_TRUE
+device_driver_starfire_FALSE
+device_driver_starfire_TRUE
+device_driver_smc_ultra32_FALSE
+device_driver_smc_ultra32_TRUE
+device_driver_smc_ultra_FALSE
+device_driver_smc_ultra_TRUE
+device_driver_sk_g16_FALSE
+device_driver_sk_g16_TRUE
+device_driver_sis900_FALSE
+device_driver_sis900_TRUE
+device_driver_seeq8005_FALSE
+device_driver_seeq8005_TRUE
+device_driver_rtl8139_FALSE
+device_driver_rtl8139_TRUE
+device_driver_pcnet32_FALSE
+device_driver_pcnet32_TRUE
+device_driver_ns820_FALSE
+device_driver_ns820_TRUE
+device_driver_ni65_FALSE
+device_driver_ni65_TRUE
+device_driver_ni52_FALSE
+device_driver_ni52_TRUE
+device_driver_ne2k_pci_FALSE
+device_driver_ne2k_pci_TRUE
+device_driver_ne_FALSE
+device_driver_ne_TRUE
+device_driver_natsemi_FALSE
+device_driver_natsemi_TRUE
+device_driver_myson803_FALSE
+device_driver_myson803_TRUE
+device_driver_lance_FALSE
+device_driver_lance_TRUE
+device_driver_intel_gige_FALSE
+device_driver_intel_gige_TRUE
+device_driver_hp100_FALSE
+device_driver_hp100_TRUE
+device_driver_hp_FALSE
+device_driver_hp_TRUE
+device_driver_hp_plus_FALSE
+device_driver_hp_plus_TRUE
+device_driver_hamachi_FALSE
+device_driver_hamachi_TRUE
+device_driver_fmv18x_FALSE
+device_driver_fmv18x_TRUE
+device_driver_ewrk3_FALSE
+device_driver_ewrk3_TRUE
+device_driver_eth16i_FALSE
+device_driver_eth16i_TRUE
+device_driver_epic100_FALSE
+device_driver_epic100_TRUE
+device_driver_eexpress_FALSE
+device_driver_eexpress_TRUE
+device_driver_eepro100_FALSE
+device_driver_eepro100_TRUE
+device_driver_eepro_FALSE
+device_driver_eepro_TRUE
+device_driver_e2100_FALSE
+device_driver_e2100_TRUE
+device_driver_depca_FALSE
+device_driver_depca_TRUE
+device_driver_de620_FALSE
+device_driver_de620_TRUE
+device_driver_de600_FALSE
+device_driver_de600_TRUE
+device_driver_de4x5_FALSE
+device_driver_de4x5_TRUE
+device_driver_atp_FALSE
+device_driver_atp_TRUE
+device_driver_at1700_FALSE
+device_driver_at1700_TRUE
+device_driver_apricot_FALSE
+device_driver_apricot_TRUE
+device_driver_ac3200_FALSE
+device_driver_ac3200_TRUE
+device_driver_3c515_FALSE
+device_driver_3c515_TRUE
+device_driver_3c59x_FALSE
+device_driver_3c59x_TRUE
+device_driver_3c509_FALSE
+device_driver_3c509_TRUE
+device_driver_3c507_FALSE
+device_driver_3c507_TRUE
+device_driver_3c505_FALSE
+device_driver_3c505_TRUE
+device_driver_3c503_FALSE
+device_driver_3c503_TRUE
+device_driver_3c501_FALSE
+device_driver_3c501_TRUE
+device_driver_wd7000_FALSE
+device_driver_wd7000_TRUE
+device_driver_ultrastor_FALSE
+device_driver_ultrastor_TRUE
+device_driver_u14_34f_FALSE
+device_driver_u14_34f_TRUE
+device_driver_tmscsim_FALSE
+device_driver_tmscsim_TRUE
+device_driver_t128_FALSE
+device_driver_t128_TRUE
+device_driver_sym53c8xx_FALSE
+device_driver_sym53c8xx_TRUE
+device_driver_seagate_FALSE
+device_driver_seagate_TRUE
+device_driver_qlogicisp_FALSE
+device_driver_qlogicisp_TRUE
+device_driver_qlogicfas_FALSE
+device_driver_qlogicfas_TRUE
+device_driver_ppa_FALSE
+device_driver_ppa_TRUE
+device_driver_pas16_FALSE
+device_driver_pas16_TRUE
+device_driver_ncr53c8xx_FALSE
+device_driver_ncr53c8xx_TRUE
+device_driver_in2000_FALSE
+device_driver_in2000_TRUE
+device_driver_gdth_FALSE
+device_driver_gdth_TRUE
+device_driver_g_NCR5380_FALSE
+device_driver_g_NCR5380_TRUE
+device_driver_fdomain_FALSE
+device_driver_fdomain_TRUE
+device_driver_eata_pio_FALSE
+device_driver_eata_pio_TRUE
+device_driver_eata_dma_FALSE
+device_driver_eata_dma_TRUE
+device_driver_eata_FALSE
+device_driver_eata_TRUE
+device_driver_dtc_FALSE
+device_driver_dtc_TRUE
+device_driver_aic7xxx_FALSE
+device_driver_aic7xxx_TRUE
+device_driver_aha1740_FALSE
+device_driver_aha1740_TRUE
+device_driver_aha1542_FALSE
+device_driver_aha1542_TRUE
+device_driver_aha152x_FALSE
+device_driver_aha152x_TRUE
+device_driver_advansys_FALSE
+device_driver_advansys_TRUE
+device_driver_NCR53c406a_FALSE
+device_driver_NCR53c406a_TRUE
+device_driver_BusLogic_FALSE
+device_driver_BusLogic_TRUE
+device_driver_AM53C974_FALSE
+device_driver_AM53C974_TRUE
+device_driver_53c78xx_FALSE
+device_driver_53c78xx_TRUE
+device_driver_ide_FALSE
+device_driver_ide_TRUE
+device_driver_floppy_FALSE
+device_driver_floppy_TRUE
+enable_kmsg_FALSE
+enable_kmsg_TRUE
+enable_kdb_FALSE
+enable_kdb_TRUE
+enable_pae_FALSE
+enable_pae_TRUE
+enable_lpr_FALSE
+enable_lpr_TRUE
+PLATFORM_at_FALSE
+PLATFORM_at_TRUE
+HOST_ix86_FALSE
+HOST_ix86_TRUE
+enable_ring1_FALSE
+enable_ring1_TRUE
+enable_pv_descriptors_FALSE
+enable_pv_descriptors_TRUE
+enable_pv_pagetables_FALSE
+enable_pv_pagetables_TRUE
+enable_pseudo_phys_FALSE
+enable_pseudo_phys_TRUE
+PLATFORM_xen_FALSE
+PLATFORM_xen_TRUE
+PATCH
+GZIP
+MIG
+NM
+LD
+AR
+RANLIB
+CPP
+am__fastdepCCAS_FALSE
+am__fastdepCCAS_TRUE
+CCASDEPMODE
+CCASFLAGS
+CCAS
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+systype
+host_platform
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_platform
+enable_dependency_tracking
+enable_device_drivers
+enable_pseudo_phys
+enable_pv_pagetables
+enable_pv_descriptors
+enable_ring1
+enable_lpr
+enable_pae
+enable_kdb
+enable_kmsg
+enable_floppy
+enable_ide
+enable_ide_forcedma
+enable_scsi_group
+enable_53c78xx
+enable_AM53C974
+enable_BusLogic
+enable_flashpoint
+enable_NCR53c406a
+enable_advansys
+enable_aha152x
+enable_aha1542
+enable_aha1740
+enable_aic7xxx
+enable_dtc
+enable_eata
+enable_eata_dma
+enable_eata_pio
+enable_fdomain
+enable_g_NCR5380
+enable_gdth
+enable_in2000
+enable_ncr53c8xx
+enable_pas16
+enable_ppa
+enable_qlogicfas
+enable_qlogicisp
+enable_seagate
+enable_sym53c8xx
+enable_t128
+enable_tmscsim
+enable_u14_34f
+enable_ultrastor
+enable_wd7000
+enable_net_group
+enable_3c501
+enable_3c503
+enable_3c505
+enable_3c507
+enable_3c509
+enable_3c59x
+enable_3c515
+enable_ac3200
+enable_apricot
+enable_at1700
+enable_atp
+enable_de4x5
+enable_de600
+enable_de620
+enable_depca
+enable_e2100
+enable_eepro
+enable_eepro100
+enable_eexpress
+enable_epic100
+enable_eth16i
+enable_ewrk3
+enable_fmv18x
+enable_hamachi
+enable_hp_plus
+enable_hp
+enable_hp100
+enable_intel_gige
+enable_lance
+enable_myson803
+enable_natsemi
+enable_ne
+enable_ne2k_pci
+enable_ni52
+enable_ni65
+enable_ns820
+enable_pcnet32
+enable_rtl8139
+enable_seeq8005
+enable_sis900
+enable_sk_g16
+enable_smc_ultra
+enable_smc_ultra32
+enable_starfire
+enable_sundance
+enable_tlan
+enable_tulip
+enable_via_rhine
+enable_wavelan
+enable_wd
+enable_winbond_840
+enable_yellowfin
+enable_znet
+enable_pcmcia_group
+enable_i82365
+enable_pcmcia_isa
+enable_3c574_cs
+enable_3c589_cs
+enable_axnet_cs
+enable_fmvj18x_cs
+enable_nmclan_cs
+enable_pcnet_cs
+enable_smc91c92_cs
+enable_xirc2ps_cs
+enable_wireless_group
+enable_orinoco_cs
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCAS
+CCASFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) 
ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) 
ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) 
ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) 
ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} 
${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: 
$ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures GNU Mach 1.4 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/gnumach]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of GNU Mach 1.4:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-platform=PLATFORM
+                          specify the platform to build a kernel for. Defaults
+                          to `at' for `i?86'. The other possibility is `xen'.
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-device-drivers=WHICH
+                          specify WHICH (on `ix86-at' one of `default',
+                          `qemu', `none') to preset a certain subset of all
+                          available device drivers, as indicated by the
+                          below-metioned ``enabled ...'' comments; you can
+                          then still use further `--enable-*' or `--disable-*'
+                          options to refine the selection of drivers to
+                          include in order to choose only those you actually
+                          want to have enabled
+  --disable-pseudo-phys   Pseudo physical pages support
+  --disable-pv-pagetables Paravirtualized page tables support
+  --disable-pv-descriptors
+                          Paravirtualized segment descriptors support
+  --disable-ring1         ring1 kernel support
+  --enable-lpr            lpr device; on ix86-at enabled by default
+  --enable-pae            PAE support (ix86-only); on ix86-at disabled by
+                          default, on ix86-xen enabled by default
+  --enable-kdb            enable use of in-kernel debugger
+  --disable-kmsg          disable use of kmsg device
+  --enable-floppy         Linux device driver for PC floppy; on ix86-at
+                          enabled by default and for qemu
+  --enable-ide            Linux device driver for IDE disk controllers; on
+                          ix86-at enabled by default and for qemu
+  --enable-ide-forcedma   enable forced use of DMA on IDE
+  --enable-scsi-group     SCSI drivers
+  --enable-53c78xx        Linux device driver for SCSI controller NCR 53C7,8xx
+  --enable-AM53C974       Linux device driver for SCSI controller AM53/79C974
+                          (am53c974, am79c974); on ix86-at enabled by default
+  --enable-BusLogic       Linux device driver for SCSI controller BusLogic; on
+                          ix86-at enabled by default
+  --enable-flashpoint     SCSI flashpoint
+  --enable-NCR53c406a     Linux device driver for SCSI controller NCR53c406a
+                          chip
+  --enable-advansys       Linux device driver for SCSI controller AdvanSys; on
+                          ix86-at enabled by default
+  --enable-aha152x        Linux device driver for SCSI controller Adaptec
+                          AHA-152x/2825 (aha152x, aha2825); on ix86-at enabled
+                          by default
+  --enable-aha1542        Linux device driver for SCSI controller Adaptec
+                          AHA-1542; on ix86-at enabled by default
+  --enable-aha1740        Linux device driver for SCSI controller Adaptec
+                          AHA-1740; on ix86-at enabled by default
+  --enable-aic7xxx        Linux device driver for SCSI controller Adaptec
+                          AIC7xxx
+  --enable-dtc            Linux device driver for SCSI controller DTC3180/3280
+                          (dtc3180, dtc3280); on ix86-at enabled by default
+  --enable-eata           Linux device driver for SCSI controller EATA
+                          ISA/EISA/PCI (DPT and generic EATA/DMA-compliant
+                          boards); on ix86-at enabled by default
+  --enable-eata_dma       Linux device driver for SCSI controller EATA-DMA
+                          (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix)
+  --enable-eata_pio       Linux device driver for SCSI controller EATA-PIO
+                          (old DPT PM2001, PM2012A); on ix86-at enabled by
+                          default
+  --enable-fdomain        Linux device driver for SCSI controller Future
+                          Domain 16xx; on ix86-at enabled by default
+  --enable-g_NCR5380      Linux device driver for SCSI controller Generic
+                          NCR5380/53c400 (ncr5380, ncr53c400)
+  --enable-gdth           Linux device driver for GDT SCSI Disk Array
+                          Controller
+  --enable-in2000         Linux device driver for SCSI controller Always IN
+                          2000; on ix86-at enabled by default
+  --enable-ncr53c8xx      Linux device driver for SCSI controller NCR53C8XX
+                          (ncr53c8xx, dc390f, dc390u, dc390w); on ix86-at
+                          enabled by default
+  --enable-pas16          Linux device driver for SCSI controller PAS16; on
+                          ix86-at enabled by default
+  --enable-ppa            Linux device driver for IOMEGA Parallel Port ZIP
+                          drive; on ix86-at enabled by default
+  --enable-qlogicfas      Linux device driver for SCSI controller Qlogic FAS;
+                          on ix86-at enabled by default
+  --enable-qlogicisp      Linux device driver for SCSI controller Qlogic ISP;
+                          on ix86-at enabled by default
+  --enable-seagate        Linux device driver for SCSI controller Seagate
+                          ST02, Future Domain TMC-8xx; on ix86-at enabled by
+                          default
+  --enable-sym53c8xx      Linux device driver for SCSI controller Symbios
+                          53C8XX; on ix86-at enabled by default
+  --enable-t128           Linux device driver for SCSI controller Trantor
+                          T128/T128F/T228 (t128, t128f, t228); on ix86-at
+                          enabled by default
+  --enable-tmscsim        Linux device driver for SCSI controller Tekram
+                          DC-390(T) (dc390, dc390t); on ix86-at enabled by
+                          default
+  --enable-u14-34f        Linux device driver for SCSI controller UltraStor
+                          14F/34F; on ix86-at enabled by default
+  --enable-ultrastor      Linux device driver for SCSI controller UltraStor;
+                          on ix86-at enabled by default
+  --enable-wd7000         Linux device driver for SCSI controller WD 7000; on
+                          ix86-at enabled by default
+  --enable-net-group      Network drivers
+  --enable-3c501          Linux device driver for Ethernet controller 3COM 501
+                          (3c501) / Etherlink I; on ix86-at enabled by default
+  --enable-3c503          Linux device driver for Ethernet controller 3Com 503
+                          (3c503) / Etherlink II; on ix86-at enabled by
+                          default
+  --enable-3c505          Linux device driver for Ethernet controller 3Com 505
+                          (3c505, elplus); on ix86-at enabled by default
+  --enable-3c507          Linux device driver for Ethernet controller 3Com 507
+                          (3c507, el16); on ix86-at enabled by default
+  --enable-3c509          Linux device driver for Ethernet controller 3Com
+                          509/579 (3c509, 3c579) / Etherlink III; on ix86-at
+                          enabled by default
+  --enable-3c59x          Linux device driver for Ethernet controller 3Com
+                          59x/90x (3c59x, 3c590, 3c592, 3c595, 3c597, 3c90x,
+                          3c900, 3c905) "Vortex/Boomerang"; on ix86-at enabled
+                          by default
+  --enable-3c515          Linux device driver for Ethernet controller 3Com 515
+                          ISA Fast EtherLink; on ix86-at enabled by default
+  --enable-ac3200         Linux device driver for Ethernet controller Ansel
+                          Communications EISA 3200; on ix86-at enabled by
+                          default
+  --enable-apricot        Linux device driver for Ethernet controller Apricot
+                          XEN-II on board ethernet; on ix86-at enabled by
+                          default
+  --enable-at1700         Linux device driver for Ethernet controller AT1700
+                          (Fujitsu 86965); on ix86-at enabled by default
+  --enable-atp            Linux device driver for Ethernet controller
+                          AT-LAN-TEC/RealTek pocket adaptor
+  --enable-de4x5          Linux device driver for Ethernet controller DE4x5
+                          (de4x5, de425, de434, de435, de450, de500); on
+                          ix86-at enabled by default
+  --enable-de600          Linux device driver for Ethernet controller D-Link
+                          DE-600; on ix86-at enabled by default
+  --enable-de620          Linux device driver for Ethernet controller D-Link
+                          DE-620; on ix86-at enabled by default
+  --enable-depca          Linux device driver for Ethernet controller DEPCA
+                          (de100, de101, de200, de201, de202, de210, de422);
+                          on ix86-at enabled by default
+  --enable-e2100          Linux device driver for Ethernet controller
+                          Cabletron E21xx; on ix86-at enabled by default
+  --enable-eepro          Linux device driver for Ethernet controller
+                          EtherExpressPro; on ix86-at enabled by default
+  --enable-eepro100       Linux device driver for Ethernet controller Intel
+                          EtherExpressPro PCI 10+/100B/100+; on ix86-at
+                          enabled by default
+  --enable-eexpress       Linux device driver for Ethernet controller
+                          EtherExpress 16; on ix86-at enabled by default
+  --enable-epic100        Linux device driver for Ethernet controller SMC
+                          83c170/175 EPIC/100 (epic, epic100) / EtherPower II;
+                          on ix86-at enabled by default
+  --enable-eth16i         Linux device driver for Ethernet controller ICL
+                          EtherTeam 16i/32 (eth16i, eth32); on ix86-at enabled
+                          by default
+  --enable-ewrk3          Linux device driver for Ethernet controller
+                          EtherWORKS 3 (ewrk3, de203, de204, de205); on
+                          ix86-at enabled by default
+  --enable-fmv18x         Linux device driver for Ethernet controller
+                          FMV-181/182/183/184; on ix86-at enabled by default
+  --enable-hamachi        Linux device driver for Ethernet controller Packet
+                          Engines "Hamachi" GNIC-2 Gigabit Ethernet; on
+                          ix86-at enabled by default
+  --enable-hp-plus        Linux device driver for Ethernet controller HP
+                          PCLAN+ (27247B and 27252A); on ix86-at enabled by
+                          default
+  --enable-hp             Linux device driver for Ethernet controller HP PCLAN
+                          (27245 and other 27xxx series); on ix86-at enabled
+                          by default
+  --enable-hp100          Linux device driver for Ethernet controller HP
+                          10/100VG PCLAN (ISA, EISA, PCI) (hp100, hpj2577,
+                          hpj2573, hpj2585, hp27248b); on ix86-at enabled by
+                          default
+  --enable-intel-gige     Linux device driver for Ethernet controller Intel
+                          PCI Gigabit Ethernet; on ix86-at enabled by default
+  --enable-lance          Linux device driver for Ethernet controller AMD
+                          LANCE and PCnet (at1500, ne2100); on ix86-at enabled
+                          by default
+  --enable-myson803       Linux device driver for Ethernet controller Myson
+                          MTD803 Ethernet adapter series; on ix86-at enabled
+                          by default
+  --enable-natsemi        Linux device driver for Ethernet controller National
+                          Semiconductor DP8381x series PCI Ethernet; on
+                          ix86-at enabled by default
+  --enable-ne             Linux device driver for Ethernet controller
+                          NE2000/NE1000 ISA (ne, ne1000, ne2000); on ix86-at
+                          enabled by default and for qemu
+  --enable-ne2k-pci       Linux device driver for Ethernet controller PCI
+                          NE2000; on ix86-at enabled by default
+  --enable-ni52           Linux device driver for Ethernet controller NI5210;
+                          on ix86-at enabled by default
+  --enable-ni65           Linux device driver for Ethernet controller NI6510;
+                          on ix86-at enabled by default
+  --enable-ns820          Linux device driver for Ethernet controller National
+                          Semiconductor DP8382x series PCI Ethernet; on
+                          ix86-at enabled by default
+  --enable-pcnet32        Linux device driver for Ethernet controller AMD PCI
+                          PCnet32 (PCI bus NE2100 cards); on ix86-at enabled
+                          by default
+  --enable-rtl8139        Linux device driver for Ethernet controller RealTek
+                          8129/8139 (rtl8129, rtl8139) (not 8019/8029!); on
+                          ix86-at enabled by default
+  --enable-seeq8005       Linux device driver for Ethernet controller
+                          Seeq8005; on ix86-at enabled by default
+  --enable-sis900         Linux device driver for Ethernet controller SiS 900;
+                          on ix86-at enabled by default
+  --enable-sk_g16         Linux device driver for Ethernet controller
+                          Schneider & Koch G16; on ix86-at enabled by default
+  --enable-smc-ultra      Linux device driver for Ethernet controller SMC
+                          Ultra; on ix86-at enabled by default
+  --enable-smc-ultra32    Linux device driver for Ethernet controller SMC
+                          Ultra32; on ix86-at enabled by default
+  --enable-starfire       Linux device driver for Ethernet controller Adaptec
+                          Starfire network adapter; on ix86-at enabled by
+                          default
+  --enable-sundance       Linux device driver for Ethernet controller Sundance
+                          ST201 "Alta" PCI Ethernet; on ix86-at enabled by
+                          default
+  --enable-tlan           Linux device driver for Ethernet controller TI
+                          ThunderLAN; on ix86-at enabled by default
+  --enable-tulip          Linux device driver for Ethernet controller DECchip
+                          Tulip (dc21x4x) PCI (elcp, tulip); on ix86-at
+                          enabled by default
+  --enable-via-rhine      Linux device driver for Ethernet controller VIA
+                          Rhine; on ix86-at enabled by default
+  --enable-wavelan        Linux device driver for Ethernet controller AT&T
+                          WaveLAN & DEC RoamAbout DS
+  --enable-wd             Linux device driver for Ethernet controller WD80x3;
+                          on ix86-at enabled by default
+  --enable-winbond-840    Linux device driver for Ethernet controller Winbond
+                          W89c840 PCI Ethernet; on ix86-at enabled by default
+  --enable-yellowfin      Linux device driver for Ethernet controller Packet
+                          Engines Yellowfin Gigabit-NIC; on ix86-at enabled by
+                          default
+  --enable-znet           Linux device driver for Ethernet controller Zenith
+                          Z-Note (znet, znote); on ix86-at enabled by default
+  --enable-pcmcia-group   PCMCIA drivers
+  --enable-i82365         Linux device driver for Intel 82365 PC Card
+                          controller; on ix86-at enabled by default
+  --enable-pcmcia-isa     isa bus support in the pcmcia core; on ix86-at
+                          enabled by default
+  --enable-3c574_cs       Linux device driver for 3Com 3c574 ``RoadRunner''
+                          PCMCIA Ethernet; on ix86-at enabled by default
+  --enable-3c589_cs       Linux device driver for 3Com 3c589 PCMCIA Ethernet
+                          card; on ix86-at enabled by default
+  --enable-axnet_cs       Linux device driver for Asix AX88190-based PCMCIA
+                          Ethernet adapters; on ix86-at enabled by default
+  --enable-fmvj18x_cs     Linux device driver for fmvj18x chipset based PCMCIA
+                          Ethernet cards; on ix86-at enabled by default
+  --enable-nmclan_cs      Linux device driver for New Media Ethernet LAN
+                          PCMCIA cards; on ix86-at enabled by default
+  --enable-pcnet_cs       Linux device driver for NS8390-based PCMCIA cards;
+                          on ix86-at enabled by default
+  --enable-smc91c92_cs    Linux device driver for SMC91c92-based PCMCIA cards;
+                          on ix86-at enabled by default
+  --enable-xirc2ps_cs     Linux device driver for Xircom CreditCard and
+                          Realport PCMCIA ethernet; on ix86-at enabled by
+                          default
+  --enable-wireless-group Wireless drivers
+  --enable-orinoco_cs     Linux device driver for Hermes or Prism 2 PCMCIA
+                          Wireless adapters (Orinoco); on ix86-at enabled by
+                          default
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CCAS        assembler compiler command (defaults to CC)
+  CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <address@hidden>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 
's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" 
>&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+GNU Mach configure 1.4
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by GNU Mach $as_me 1.4, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n 
'\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable 
$ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed 
"s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed 
"s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script 
$ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to 
\`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous 
run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set 
in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has 
changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace 
changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the 
previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  
\`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: 
\`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment 
can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" 
>&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start 
over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ac_aux_dir=
+for ac_dir in build-aux "$srcdir"/build-aux; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux 
\"$srcdir\"/build-aux" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+am__api_version='1.13'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible 
install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two 
"`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is 
sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too 
old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" 
>&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with 
args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets 
\$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports 
nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make 
distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='gnumach'
+ VERSION='1.4'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports 
nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+#
+# Deduce the architecture we're building for.
+#
+# TODO: Should we also support constructs like `i686_xen-pc-gnu' or
+# `i686-pc_xen-gnu'?
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" 
"$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" 
"$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+# Check whether --enable-platform was given.
+if test "${enable_platform+set}" = set; then :
+  enableval=$enable_platform; host_platform=$enable_platform
+else
+  host_platform=default
+fi
+
+# Supported configurations.
+case $host_platform:$host_cpu in
+  default:i?86)
+    host_platform=at;;
+  at:i?86 | xen:i?86)
+    :;;
+  *)
+    as_fn_error $? "unsupported combination of cpu type \`$host_cpu' and 
platform
+      \`$host_platform'." "$LINENO" 5;;
+esac
+
+
+# This is used in a few places.
+case $host_cpu in
+  i?86)
+    systype=i386;;
+  *)
+    systype=$host_cpu;;
+esac
+
+
+#
+# Programs.
+#
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with 
args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by 
$am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a 
program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with 
args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in 
\`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler 
works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map 
| *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map 
| *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default 
output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" 
>&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map 
| *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross 
compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" 
>&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map 
| *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU 
C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO 
C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, 
int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" 
>&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+# By default we simply use the C compiler to build assembly code.
+
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+
+
+
+depcc="$CCAS"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" 
>&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CCAS_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CCAS_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CCAS_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$am_cv_CCAS_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; }
+CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then
+  am__fastdepCCAS_TRUE=
+  am__fastdepCCAS_FALSE='#'
+else
+  am__fastdepCCAS_TRUE='#'
+  am__fastdepCCAS_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a 
program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with 
args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in 
\`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU 
C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO 
C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, 
int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" 
>&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C 
preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a 
program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ld", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}ld; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LD"; then
+  ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LD="${ac_tool_prefix}ld"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LD"; then
+  ac_ct_LD=$LD
+  # Extract the first word of "ld", so it can be a program name with args.
+set dummy ld; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LD"; then
+  ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LD="ld"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
+$as_echo "$ac_ct_LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LD" = x; then
+    LD=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    LD=$ac_ct_LD
+  fi
+else
+  LD="$ac_cv_prog_LD"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nm", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}nm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  ac_cv_prog_NM="$NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NM="${ac_tool_prefix}nm"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NM"; then
+  ac_ct_NM=$NM
+  # Extract the first word of "nm", so it can be a program name with args.
+set dummy nm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NM"; then
+  ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NM="nm"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
+$as_echo "$ac_ct_NM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NM" = x; then
+    NM=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    NM=$ac_ct_NM
+  fi
+else
+  NM="$ac_cv_prog_NM"
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mig", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}mig; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MIG"; then
+  ac_cv_prog_MIG="$MIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MIG="${ac_tool_prefix}mig"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MIG=$ac_cv_prog_MIG
+if test -n "$MIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MIG" >&5
+$as_echo "$MIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MIG"; then
+  ac_ct_MIG=$MIG
+  # Extract the first word of "mig", so it can be a program name with args.
+set dummy mig; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MIG"; then
+  ac_cv_prog_ac_ct_MIG="$ac_ct_MIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_MIG="mig"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MIG=$ac_cv_prog_ac_ct_MIG
+if test -n "$ac_ct_MIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MIG" >&5
+$as_echo "$ac_ct_MIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MIG" = x; then
+    MIG="mig"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    MIG=$ac_ct_MIG
+  fi
+else
+  MIG="$ac_cv_prog_MIG"
+fi
+
+
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc 
understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " 
>&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c 
and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&5'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+        test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+      then
+       # cc works too.
+       :
+      else
+       # cc exists but doesn't like -o.
+       eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+# Extract the first word of "gzip", so it can be a program name with args.
+set dummy gzip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GZIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GZIP"; then
+  ac_cv_prog_GZIP="$GZIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GZIP="gzip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_GZIP" && ac_cv_prog_GZIP="gzip-not-found"
+fi
+fi
+GZIP=$ac_cv_prog_GZIP
+if test -n "$GZIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
+$as_echo "$GZIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+# Extract the first word of "patch", so it can be a program name with args.
+set dummy patch; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PATCH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PATCH"; then
+  ac_cv_prog_PATCH="$PATCH" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PATCH="patch"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_PATCH" && ac_cv_prog_PATCH="patch-not-found"
+fi
+fi
+PATCH=$ac_cv_prog_PATCH
+if test -n "$PATCH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATCH" >&5
+$as_echo "$PATCH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+#
+# configure fragments.
+#
+
+# The test suite.
+
+
+
+#
+# Tests.
+#
+
+ac_config_files="$ac_config_files tests/test-mbchk"
+
+
+
+
+# Default set of device drivers.
+# Check whether --enable-device-drivers was given.
+if test "${enable_device_drivers+set}" = set; then :
+  enableval=$enable_device_drivers;
+fi
+
+case $enable_device_drivers in
+  '')
+    enable_device_drivers=default;;
+  no)
+    enable_device_drivers=none;;
+  default | none | qemu)
+    :;;
+  *)
+    as_fn_error $? "invalid choice of
+      \`--enable-device-drivers=$enable_device_drivers'." "$LINENO" 5
+    ;;
+esac
+
+# Platform-specific configuration.
+
+# PC AT.
+# TODO.  Currently handled in `i386/configfrag.ac'.
+
+# Xen.
+
+
+
+#
+# Xen platform.
+#
+
+if [ "$host_platform" = xen ]; then
+
+$as_echo "#define MACH_XEN /**/" >>confdefs.h
+
+
+$as_echo "#define MACH_HYP /**/" >>confdefs.h
+
+   if true; then
+  PLATFORM_xen_TRUE=
+  PLATFORM_xen_FALSE='#'
+else
+  PLATFORM_xen_TRUE='#'
+  PLATFORM_xen_FALSE=
+fi
+
+
+
+  # Check whether --enable-pseudo-phys was given.
+if test "${enable_pseudo_phys+set}" = set; then :
+  enableval=$enable_pseudo_phys;
+fi
+
+  if [ x"$enable_pseudo_phys" = xno ]; then
+     if false; then
+  enable_pseudo_phys_TRUE=
+  enable_pseudo_phys_FALSE='#'
+else
+  enable_pseudo_phys_TRUE='#'
+  enable_pseudo_phys_FALSE=
+fi
+
+  else
+
+$as_echo "#define MACH_PSEUDO_PHYS /**/" >>confdefs.h
+
+     if true; then
+  enable_pseudo_phys_TRUE=
+  enable_pseudo_phys_FALSE='#'
+else
+  enable_pseudo_phys_TRUE='#'
+  enable_pseudo_phys_FALSE=
+fi
+
+  fi
+
+  # Check whether --enable-pv-pagetables was given.
+if test "${enable_pv_pagetables+set}" = set; then :
+  enableval=$enable_pv_pagetables;
+fi
+
+  if [ x"$enable_pv_pagetables" = xno ]; then
+     if false; then
+  enable_pv_pagetables_TRUE=
+  enable_pv_pagetables_FALSE='#'
+else
+  enable_pv_pagetables_TRUE='#'
+  enable_pv_pagetables_FALSE=
+fi
+
+  else
+
+$as_echo "#define MACH_PV_PAGETABLES /**/" >>confdefs.h
+
+     if true; then
+  enable_pv_pagetables_TRUE=
+  enable_pv_pagetables_FALSE='#'
+else
+  enable_pv_pagetables_TRUE='#'
+  enable_pv_pagetables_FALSE=
+fi
+
+  fi
+
+  # Check whether --enable-pv-descriptors was given.
+if test "${enable_pv_descriptors+set}" = set; then :
+  enableval=$enable_pv_descriptors;
+fi
+
+  if [ x"$enable_pv_descriptors" = xno ]; then
+     if false; then
+  enable_pv_descriptors_TRUE=
+  enable_pv_descriptors_FALSE='#'
+else
+  enable_pv_descriptors_TRUE='#'
+  enable_pv_descriptors_FALSE=
+fi
+
+  else
+
+$as_echo "#define MACH_PV_DESCRIPTORS /**/" >>confdefs.h
+
+     if true; then
+  enable_pv_descriptors_TRUE=
+  enable_pv_descriptors_FALSE='#'
+else
+  enable_pv_descriptors_TRUE='#'
+  enable_pv_descriptors_FALSE=
+fi
+
+  fi
+
+  # Check whether --enable-ring1 was given.
+if test "${enable_ring1+set}" = set; then :
+  enableval=$enable_ring1;
+fi
+
+  if [ x"$enable_ring1" = xno ]; then
+     if false; then
+  enable_ring1_TRUE=
+  enable_ring1_FALSE='#'
+else
+  enable_ring1_TRUE='#'
+  enable_ring1_FALSE=
+fi
+
+  else
+
+$as_echo "#define MACH_RING1 /**/" >>confdefs.h
+
+     if true; then
+  enable_ring1_TRUE=
+  enable_ring1_FALSE='#'
+else
+  enable_ring1_TRUE='#'
+  enable_ring1_FALSE=
+fi
+
+  fi
+
+else
+   if false; then
+  PLATFORM_xen_TRUE=
+  PLATFORM_xen_FALSE='#'
+else
+  PLATFORM_xen_TRUE='#'
+  PLATFORM_xen_FALSE=
+fi
+
+   if false; then
+  enable_pseudo_phys_TRUE=
+  enable_pseudo_phys_FALSE='#'
+else
+  enable_pseudo_phys_TRUE='#'
+  enable_pseudo_phys_FALSE=
+fi
+
+   if false; then
+  enable_pv_pagetables_TRUE=
+  enable_pv_pagetables_FALSE='#'
+else
+  enable_pv_pagetables_TRUE='#'
+  enable_pv_pagetables_FALSE=
+fi
+
+   if false; then
+  enable_pv_descriptors_TRUE=
+  enable_pv_descriptors_FALSE='#'
+else
+  enable_pv_descriptors_TRUE='#'
+  enable_pv_descriptors_FALSE=
+fi
+
+   if false; then
+  enable_ring1_TRUE=
+  enable_ring1_FALSE='#'
+else
+  enable_ring1_TRUE='#'
+  enable_ring1_FALSE=
+fi
+
+fi
+
+
+
+# Machine-specific configuration.
+
+# ix86.
+
+
+
+#
+# Definitions.
+#
+
+case $host_cpu in
+  i?86)
+     if true; then
+  HOST_ix86_TRUE=
+  HOST_ix86_FALSE='#'
+else
+  HOST_ix86_TRUE='#'
+  HOST_ix86_FALSE=
+fi
+
+
+    # Some of the i386-specific code checks for these.
+
+$as_echo "#define __ELF__ 1" >>confdefs.h
+
+
+    # Determines the size of the CPU cache line.
+
+$as_echo "#define CPU_L1_SHIFT 6" >>confdefs.h
+
+
+    # Does the architecture provide machine-specific interfaces?
+    mach_machine_routines=1;;
+  *)
+     if false; then
+  HOST_ix86_TRUE=
+  HOST_ix86_FALSE='#'
+else
+  HOST_ix86_TRUE='#'
+  HOST_ix86_FALSE=
+fi
+;;
+esac
+
+case $host_platform in
+  at)
+     if true; then
+  PLATFORM_at_TRUE=
+  PLATFORM_at_FALSE='#'
+else
+  PLATFORM_at_TRUE='#'
+  PLATFORM_at_FALSE=
+fi
+;;
+  *)
+     if false; then
+  PLATFORM_at_TRUE=
+  PLATFORM_at_FALSE='#'
+else
+  PLATFORM_at_TRUE='#'
+  PLATFORM_at_FALSE=
+fi
+;;
+esac
+
+#
+# Formerly in `i386/bogus/'.
+#
+
+ncom=0
+nlpr=0
+case $host_platform:$host_cpu in
+  at:i?86)
+    ncom=4
+    nlpr=1
+
+    # i386/bogus/platforms.h
+
+$as_echo "#define AT386 1" >>confdefs.h
+;;
+  xen:i?86)
+    # TODO.  That should probably not be needed.
+    ncom=1
+    # TODO.  That should probably not be needed.
+    # i386/bogus/platforms.h
+
+$as_echo "#define AT386 1" >>confdefs.h
+;;
+  *)
+    :;;
+esac
+
+# i386/bogus/com.h
+
+cat >>confdefs.h <<_ACEOF
+#define NCOM $ncom
+_ACEOF
+
+
+# i386/bogus/lpr.h
+
+cat >>confdefs.h <<_ACEOF
+#define NLPR $nlpr
+_ACEOF
+
+
+#
+# Options.
+#
+
+# Check whether --enable-lpr was given.
+if test "${enable_lpr+set}" = set; then :
+  enableval=$enable_lpr;
+fi
+
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers in
+      default)
+        enable_lpr=${enable_lpr-yes};;
+      *)
+        enable_lpr=${enable_lpr-no};;
+    esac;;
+  *)
+    if [ x"$enable_lpr" = xyes ]; then
+      as_fn_error $? "cannot enable \`lpr' in this configuration." "$LINENO" 5
+    fi;;
+esac
+if [ x"$enable_lpr" = xyes ]; then
+
+$as_echo "#define MACH_LPR /**/" >>confdefs.h
+
+   if true; then
+  enable_lpr_TRUE=
+  enable_lpr_FALSE='#'
+else
+  enable_lpr_TRUE='#'
+  enable_lpr_FALSE=
+fi
+
+else
+   if false; then
+  enable_lpr_TRUE=
+  enable_lpr_FALSE='#'
+else
+  enable_lpr_TRUE='#'
+  enable_lpr_FALSE=
+fi
+
+fi
+
+
+# Check whether --enable-pae was given.
+if test "${enable_pae+set}" = set; then :
+  enableval=$enable_pae;
+fi
+
+case $host_platform:$host_cpu in
+  xen:i?86)
+    enable_pae=${enable_pae-yes};;
+  *:i?86)
+    :;;
+  *)
+    if [ x"$enable_pae" = xyes ]; then
+      as_fn_error $? "can only enable the \`PAE' feature on ix86." "$LINENO" 5
+    fi;;
+esac
+if [ x"$enable_pae" = xyes ]; then
+
+$as_echo "#define PAE 1" >>confdefs.h
+
+   if true; then
+  enable_pae_TRUE=
+  enable_pae_FALSE='#'
+else
+  enable_pae_TRUE='#'
+  enable_pae_FALSE=
+fi
+
+else
+   if false; then
+  enable_pae_TRUE=
+  enable_pae_FALSE='#'
+else
+  enable_pae_TRUE='#'
+  enable_pae_FALSE=
+fi
+
+fi
+
+
+
+# General options.
+
+
+
+#
+# Definitions.
+#
+
+
+$as_echo "#define MACH 1" >>confdefs.h
+
+
+$as_echo "#define CMU 1" >>confdefs.h
+
+
+$as_echo "#define MACH_KERNEL 1" >>confdefs.h
+
+
+$as_echo "#define KERNEL 1" >>confdefs.h
+
+
+#
+# Formerly in `bogus/'.
+#
+
+# When set, the bootstrap task symbols are preserved by the kernel debugger.
+# Used in `kern/bootstrap.c'.
+
+$as_echo "#define BOOTSTRAP_SYMBOLS 0" >>confdefs.h
+
+
+# Multiprocessor support is still broken.
+
+mach_ncpus=1
+
+cat >>confdefs.h <<_ACEOF
+#define NCPUS $mach_ncpus
+_ACEOF
+
+if [ $mach_ncpus -gt 1 ]; then
+
+$as_echo "#define MULTIPROCESSOR 1" >>confdefs.h
+
+fi
+
+# Restartable Atomic Sequences to get a really fast test-n-set.  Can't be
+# enabled, as the `void recover_ras()' function is missing.
+
+$as_echo "#define FAST_TAS 0" >>confdefs.h
+
+
+# Cache footprint support.
+
+$as_echo "#define HW_FOOTPRINT 0" >>confdefs.h
+
+
+# Counters.
+
+$as_echo "#define MACH_COUNTERS 0" >>confdefs.h
+
+
+# IPC debugging interface.
+
+$as_echo "#define MACH_DEBUG 1" >>confdefs.h
+
+
+# Fixed priority threads.
+
+$as_echo "#define MACH_FIXPRI 1" >>confdefs.h
+
+
+# Mach host (resource alloc.).
+
+$as_echo "#define MACH_HOST 0" >>confdefs.h
+
+
+# IPC debugging calls.
+
+$as_echo "#define MACH_IPC_DEBUG 1" >>confdefs.h
+
+
+# Testing code/printfs.
+
+$as_echo "#define MACH_IPC_TEST 0" >>confdefs.h
+
+
+# Sanity-check simple locking.
+
+$as_echo "#define MACH_LDEBUG 0" >>confdefs.h
+
+
+# MP lock monitoring.  Registers use of locks, contention.  Depending on
+# hardware also records time spent with locks held.  Used in `kern/lock_mon.c'.
+
+$as_echo "#define MACH_LOCK_MON 0" >>confdefs.h
+
+
+# Does the architecture provide machine-specific interfaces?
+mach_machine_routines=${mach_machine_routines-0}
+
+cat >>confdefs.h <<_ACEOF
+#define MACH_MACHINE_ROUTINES $mach_machine_routines
+_ACEOF
+
+
+# MP debugging.  Use alternate locking routines to detect deadlocks.  Used in
+# `kern/lock_mon.c'.
+
+$as_echo "#define MACH_MP_DEBUG 0" >>confdefs.h
+
+
+# Paged-out page map hints.
+
+$as_echo "#define MACH_PAGEMAP 1" >>confdefs.h
+
+
+# Do pc sample histogram.
+
+$as_echo "#define MACH_PCSAMPLE 1" >>confdefs.h
+
+
+# TTD Remote Kernel Debugging.
+
+$as_echo "#define MACH_TTD 0" >>confdefs.h
+
+
+# VM debugging calls.
+
+$as_echo "#define MACH_VM_DEBUG 1" >>confdefs.h
+
+
+# Mach-dep power conservation.
+
+$as_echo "#define POWER_SAVE 1" >>confdefs.h
+
+
+# No hardware clock rollover.
+
+$as_echo "#define SIMPLE_CLOCK 0" >>confdefs.h
+
+
+# Use statistical timing.
+
+$as_echo "#define STAT_TIME 1" >>confdefs.h
+
+
+# Kernel tracing.
+
+$as_echo "#define XPR_DEBUG 1" >>confdefs.h
+
+
+# Slab allocator debugging facilities.
+
+$as_echo "#define SLAB_VERIFY 0" >>confdefs.h
+
+
+# Enable the CPU pool layer in the slab allocator.
+
+$as_echo "#define SLAB_USE_CPU_POOLS 0" >>confdefs.h
+
+
+#
+# Options.
+#
+
+# Check whether --enable-kdb was given.
+if test "${enable_kdb+set}" = set; then :
+  enableval=$enable_kdb;
+fi
+
+if [ x"$enable_kdb" = xyes ]; then
+
+$as_echo "#define MACH_KDB 1" >>confdefs.h
+
+   if true; then
+  enable_kdb_TRUE=
+  enable_kdb_FALSE='#'
+else
+  enable_kdb_TRUE='#'
+  enable_kdb_FALSE=
+fi
+
+else
+  # We need to be long winded here: bogus/mach_kdb.h made it default to zero,
+  # unless overridden.
+
+$as_echo "#define MACH_KDB 0" >>confdefs.h
+
+   if false; then
+  enable_kdb_TRUE=
+  enable_kdb_FALSE='#'
+else
+  enable_kdb_TRUE='#'
+  enable_kdb_FALSE=
+fi
+
+fi
+
+
+# Check whether --enable-kmsg was given.
+if test "${enable_kmsg+set}" = set; then :
+  enableval=$enable_kmsg;
+fi
+
+if [ x"$enable_kmsg" != xno ]; then
+
+$as_echo "#define MACH_KMSG /**/" >>confdefs.h
+
+   if true; then
+  enable_kmsg_TRUE=
+  enable_kmsg_FALSE='#'
+else
+  enable_kmsg_TRUE='#'
+  enable_kmsg_FALSE=
+fi
+
+else
+   if false; then
+  enable_kmsg_TRUE=
+  enable_kmsg_FALSE='#'
+else
+  enable_kmsg_TRUE='#'
+  enable_kmsg_FALSE=
+fi
+
+fi
+
+#
+# Set up `SYSTYPE/SYSTYPE' and `SYSTYPE/include/mach/SYSTYPE' links.
+#
+
+# `${file}' and `$file' have different meanings here with respect to having the
+# files in the referenced directory considered for `make dist' or not.  See
+# <http://lists.gnu.org/archive/html/bug-automake/2006-11/msg00027.html>.
+ac_config_links="$ac_config_links machine:$systype/$systype 
mach/machine:$systype/include/mach/$systype"
+
+
+
+
+# Linux code snarfed into GNU Mach.
+
+
+
+#
+# Internals.
+#
+
+have_linux_code=no
+
+#
+# Helper functions.
+#
+
+#
+# Calling `device_driver_group group' makes sure that the infrastructure needed
+# for the group `group' will be set-up.
+#
+
+device_driver_group() {
+  case $1 in
+    '')
+      # No group.
+      :;;
+    net)
+      device_driver_group_net=selected;;
+    pcmcia)
+      # Pull in group `net'.
+      device_driver_group net
+      device_driver_group_pcmcia=selected;;
+    scsi)
+      device_driver_group_scsi=selected;;
+    wireless)
+      # Pull in group `pcmcia'.
+      device_driver_group pcmcia
+      device_driver_group_wireless=selected;;
+    *)
+      as_fn_error $? "invalid device driver group \`$1'" "$LINENO" 5;;
+  esac
+}
+
+
+
+#
+# AC_OPTION_Linux_ix86_at(name,description,option[,class]).  Process
+# configuration option --enable-`name' (with description `description').  If
+# it's set, then `option' is defined with AC_DEFINE.  The option optionally
+# pulls in group `group'; see the comments on device_driver_group for more
+# information.  For ix86-at, the value from $enable_default_device_drivers is
+# considered when deciding whether to activate the option by default or not.
+#
+
+
+#
+# AC_OPTION_Linux_ix86_at_nodef() is like AC_OPTION_Linux_ix86_at(), but
+# doesn't consider $enable_default_device_drivers.
+#
+
+
+#
+# AC_Linux_DRIVER(machname, description, definition, [group]).  Convenience.
+# TODO.  The naming of those is nearly everything but reasonable.
+#
+
+
+
+
+
+#
+# Configuration options.
+#
+
+
+
+unset enableval
+# Check whether --enable-floppy was given.
+if test "${enable_floppy+set}" = set; then :
+  enableval=$enable_floppy;
+fi
+
+if test x$enable__group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for PC floppy; on ix86-at 
enabled
+    by default and for qemu' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`floppy' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_floppy_TRUE=
+  device_driver_floppy_FALSE='#'
+else
+  device_driver_floppy_TRUE='#'
+  device_driver_floppy_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_BLK_DEV_FD 1" >>confdefs.h
+
+  device_driver_group
+fi
+
+
+
+
+unset enableval
+# Check whether --enable-ide was given.
+if test "${enable_ide+set}" = set; then :
+  enableval=$enable_ide;
+fi
+
+if test x$enable__group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for IDE disk controllers; 
on ix86-at enabled
+    by default and for qemu' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ide' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ide_TRUE=
+  device_driver_ide_FALSE='#'
+else
+  device_driver_ide_TRUE='#'
+  device_driver_ide_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_BLK_DEV_IDE 1" >>confdefs.h
+
+  device_driver_group
+fi
+
+
+# Check whether --enable-ide-forcedma was given.
+if test "${enable_ide_forcedma+set}" = set; then :
+  enableval=$enable_ide_forcedma; test x"$enableval" = xno ||
+
+$as_echo "#define CONFIG_BLK_DEV_FORCE_DMA 1" >>confdefs.h
+
+fi
+
+
+
+# Check whether --enable-scsi-group was given.
+if test "${enable_scsi_group+set}" = set; then :
+  enableval=$enable_scsi_group;
+fi
+
+
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-53c78xx was given.
+if test "${enable_53c78xx+set}" = set; then :
+  enableval=$enable_53c78xx;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`53c78xx' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_53c78xx_TRUE=
+  device_driver_53c78xx_FALSE='#'
+else
+  device_driver_53c78xx_TRUE='#'
+  device_driver_53c78xx_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_NCR53C7xx 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-AM53C974 was given.
+if test "${enable_AM53C974+set}" = set; then :
+  enableval=$enable_AM53C974;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
AM53/79C974 (am53c974, am79c974); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`AM53C974' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_AM53C974_TRUE=
+  device_driver_AM53C974_FALSE='#'
+else
+  device_driver_AM53C974_TRUE='#'
+  device_driver_AM53C974_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_AM53C974 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-BusLogic was given.
+if test "${enable_BusLogic+set}" = set; then :
+  enableval=$enable_BusLogic;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
BusLogic; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`BusLogic' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_BusLogic_TRUE=
+  device_driver_BusLogic_FALSE='#'
+else
+  device_driver_BusLogic_TRUE='#'
+  device_driver_BusLogic_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_BUSLOGIC 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+# TODO.  What's that?  And what about FlashPoint.c?
+# Check whether --enable-flashpoint was given.
+if test "${enable_flashpoint+set}" = set; then :
+  enableval=$enable_flashpoint; test x"$enableval" = xno &&
+
+$as_echo "#define CONFIG_SCSI_OMIT_FLASHPOINT /**/" >>confdefs.h
+
+fi
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-NCR53c406a was given.
+if test "${enable_NCR53c406a+set}" = set; then :
+  enableval=$enable_NCR53c406a;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`NCR53c406a' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_NCR53c406a_TRUE=
+  device_driver_NCR53c406a_FALSE='#'
+else
+  device_driver_NCR53c406a_TRUE='#'
+  device_driver_NCR53c406a_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_NCR53C406A 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-advansys was given.
+if test "${enable_advansys+set}" = set; then :
+  enableval=$enable_advansys;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
AdvanSys; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`advansys' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_advansys_TRUE=
+  device_driver_advansys_FALSE='#'
+else
+  device_driver_advansys_TRUE='#'
+  device_driver_advansys_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_ADVANSYS 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-aha152x was given.
+if test "${enable_aha152x+set}" = set; then :
+  enableval=$enable_aha152x;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Adaptec AHA-152x/2825 (aha152x, aha2825); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`aha152x' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_aha152x_TRUE=
+  device_driver_aha152x_FALSE='#'
+else
+  device_driver_aha152x_TRUE='#'
+  device_driver_aha152x_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_AHA152X 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-aha1542 was given.
+if test "${enable_aha1542+set}" = set; then :
+  enableval=$enable_aha1542;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Adaptec AHA-1542; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`aha1542' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_aha1542_TRUE=
+  device_driver_aha1542_FALSE='#'
+else
+  device_driver_aha1542_TRUE='#'
+  device_driver_aha1542_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_AHA1542 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-aha1740 was given.
+if test "${enable_aha1740+set}" = set; then :
+  enableval=$enable_aha1740;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Adaptec AHA-1740; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`aha1740' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_aha1740_TRUE=
+  device_driver_aha1740_FALSE='#'
+else
+  device_driver_aha1740_TRUE='#'
+  device_driver_aha1740_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_AHA1740 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-aic7xxx was given.
+if test "${enable_aic7xxx+set}" = set; then :
+  enableval=$enable_aic7xxx;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`aic7xxx' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_aic7xxx_TRUE=
+  device_driver_aic7xxx_FALSE='#'
+else
+  device_driver_aic7xxx_TRUE='#'
+  device_driver_aic7xxx_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_AIC7XXX 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-dtc was given.
+if test "${enable_dtc+set}" = set; then :
+  enableval=$enable_dtc;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
DTC3180/3280 (dtc3180, dtc3280); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`dtc' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_dtc_TRUE=
+  device_driver_dtc_FALSE='#'
+else
+  device_driver_dtc_TRUE='#'
+  device_driver_dtc_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_DTC3280 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-eata was given.
+if test "${enable_eata+set}" = set; then :
+  enableval=$enable_eata;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller EATA 
ISA/EISA/PCI
+    (DPT and generic EATA/DMA-compliant boards); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`eata' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_eata_TRUE=
+  device_driver_eata_FALSE='#'
+else
+  device_driver_eata_TRUE='#'
+  device_driver_eata_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_EATA 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-eata_dma was given.
+if test "${enable_eata_dma+set}" = set; then :
+  enableval=$enable_eata_dma;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`eata_dma' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_eata_dma_TRUE=
+  device_driver_eata_dma_FALSE='#'
+else
+  device_driver_eata_dma_TRUE='#'
+  device_driver_eata_dma_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_EATA_DMA 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-eata_pio was given.
+if test "${enable_eata_pio+set}" = set; then :
+  enableval=$enable_eata_pio;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
EATA-PIO (old DPT PM2001, PM2012A); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`eata_pio' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_eata_pio_TRUE=
+  device_driver_eata_pio_FALSE='#'
+else
+  device_driver_eata_pio_TRUE='#'
+  device_driver_eata_pio_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_EATA_PIO 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-fdomain was given.
+if test "${enable_fdomain+set}" = set; then :
+  enableval=$enable_fdomain;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Future Domain 16xx; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`fdomain' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_fdomain_TRUE=
+  device_driver_fdomain_FALSE='#'
+else
+  device_driver_fdomain_TRUE='#'
+  device_driver_fdomain_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_FUTURE_DOMAIN 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-g_NCR5380 was given.
+if test "${enable_g_NCR5380+set}" = set; then :
+  enableval=$enable_g_NCR5380;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`g_NCR5380' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_g_NCR5380_TRUE=
+  device_driver_g_NCR5380_FALSE='#'
+else
+  device_driver_g_NCR5380_TRUE='#'
+  device_driver_g_NCR5380_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_GENERIC_NCR5380 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-gdth was given.
+if test "${enable_gdth+set}" = set; then :
+  enableval=$enable_gdth;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`gdth' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_gdth_TRUE=
+  device_driver_gdth_FALSE='#'
+else
+  device_driver_gdth_TRUE='#'
+  device_driver_gdth_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_GDTH 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-in2000 was given.
+if test "${enable_in2000+set}" = set; then :
+  enableval=$enable_in2000;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Always IN 2000; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`in2000' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_in2000_TRUE=
+  device_driver_in2000_FALSE='#'
+else
+  device_driver_in2000_TRUE='#'
+  device_driver_in2000_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_IN2000 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-ncr53c8xx was given.
+if test "${enable_ncr53c8xx+set}" = set; then :
+  enableval=$enable_ncr53c8xx;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
NCR53C8XX (ncr53c8xx, dc390f, dc390u, dc390w); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ncr53c8xx' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ncr53c8xx_TRUE=
+  device_driver_ncr53c8xx_FALSE='#'
+else
+  device_driver_ncr53c8xx_TRUE='#'
+  device_driver_ncr53c8xx_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_NCR53C8XX 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-pas16 was given.
+if test "${enable_pas16+set}" = set; then :
+  enableval=$enable_pas16;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
PAS16; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`pas16' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_pas16_TRUE=
+  device_driver_pas16_FALSE='#'
+else
+  device_driver_pas16_TRUE='#'
+  device_driver_pas16_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_PASS16 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-ppa was given.
+if test "${enable_ppa+set}" = set; then :
+  enableval=$enable_ppa;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for IOMEGA Parallel Port 
ZIP drive; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ppa' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ppa_TRUE=
+  device_driver_ppa_FALSE='#'
+else
+  device_driver_ppa_TRUE='#'
+  device_driver_ppa_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_PPA 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-qlogicfas was given.
+if test "${enable_qlogicfas+set}" = set; then :
+  enableval=$enable_qlogicfas;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Qlogic FAS; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`qlogicfas' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_qlogicfas_TRUE=
+  device_driver_qlogicfas_FALSE='#'
+else
+  device_driver_qlogicfas_TRUE='#'
+  device_driver_qlogicfas_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_QLOGIC_FAS 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-qlogicisp was given.
+if test "${enable_qlogicisp+set}" = set; then :
+  enableval=$enable_qlogicisp;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Qlogic ISP; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`qlogicisp' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_qlogicisp_TRUE=
+  device_driver_qlogicisp_FALSE='#'
+else
+  device_driver_qlogicisp_TRUE='#'
+  device_driver_qlogicisp_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_QLOGIC_ISP 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-seagate was given.
+if test "${enable_seagate+set}" = set; then :
+  enableval=$enable_seagate;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Seagate ST02, Future Domain TMC-8xx; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`seagate' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_seagate_TRUE=
+  device_driver_seagate_FALSE='#'
+else
+  device_driver_seagate_TRUE='#'
+  device_driver_seagate_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_SEAGATE 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-sym53c8xx was given.
+if test "${enable_sym53c8xx+set}" = set; then :
+  enableval=$enable_sym53c8xx;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Symbios 53C8XX; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`sym53c8xx' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_sym53c8xx_TRUE=
+  device_driver_sym53c8xx_FALSE='#'
+else
+  device_driver_sym53c8xx_TRUE='#'
+  device_driver_sym53c8xx_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_SYM53C8XX 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-t128 was given.
+if test "${enable_t128+set}" = set; then :
+  enableval=$enable_t128;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Trantor T128/T128F/T228 (t128, t128f, t228); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`t128' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_t128_TRUE=
+  device_driver_t128_FALSE='#'
+else
+  device_driver_t128_TRUE='#'
+  device_driver_t128_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_T128 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-tmscsim was given.
+if test "${enable_tmscsim+set}" = set; then :
+  enableval=$enable_tmscsim;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
Tekram DC-390(T) (dc390, dc390t); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`tmscsim' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_tmscsim_TRUE=
+  device_driver_tmscsim_FALSE='#'
+else
+  device_driver_tmscsim_TRUE='#'
+  device_driver_tmscsim_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_DC390T 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-u14-34f was given.
+if test "${enable_u14_34f+set}" = set; then :
+  enableval=$enable_u14_34f;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
UltraStor 14F/34F; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`u14-34f' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_u14_34f_TRUE=
+  device_driver_u14_34f_FALSE='#'
+else
+  device_driver_u14_34f_TRUE='#'
+  device_driver_u14_34f_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_U14_34F 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-ultrastor was given.
+if test "${enable_ultrastor+set}" = set; then :
+  enableval=$enable_ultrastor;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller 
UltraStor; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ultrastor' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ultrastor_TRUE=
+  device_driver_ultrastor_FALSE='#'
+else
+  device_driver_ultrastor_TRUE='#'
+  device_driver_ultrastor_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_ULTRASTOR 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+unset enableval
+# Check whether --enable-wd7000 was given.
+if test "${enable_wd7000+set}" = set; then :
+  enableval=$enable_wd7000;
+fi
+
+if test x$enable_scsi_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SCSI controller WD 
7000; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`wd7000' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_wd7000_TRUE=
+  device_driver_wd7000_FALSE='#'
+else
+  device_driver_wd7000_TRUE='#'
+  device_driver_wd7000_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SCSI_7000FASST 1" >>confdefs.h
+
+  device_driver_group scsi
+fi
+
+
+
+# Check whether --enable-net-group was given.
+if test "${enable_net_group+set}" = set; then :
+  enableval=$enable_net_group;
+fi
+
+
+
+
+
+unset enableval
+# Check whether --enable-3c501 was given.
+if test "${enable_3c501+set}" = set; then :
+  enableval=$enable_3c501;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
3COM 501 (3c501) / Etherlink I; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c501' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c501_TRUE=
+  device_driver_3c501_FALSE='#'
+else
+  device_driver_3c501_TRUE='#'
+  device_driver_3c501_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EL1 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-3c503 was given.
+if test "${enable_3c503+set}" = set; then :
+  enableval=$enable_3c503;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
3Com 503 (3c503) / Etherlink II; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c503' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c503_TRUE=
+  device_driver_3c503_FALSE='#'
+else
+  device_driver_3c503_TRUE='#'
+  device_driver_3c503_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EL2 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-3c505 was given.
+if test "${enable_3c505+set}" = set; then :
+  enableval=$enable_3c505;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
3Com 505 (3c505, elplus); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c505' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c505_TRUE=
+  device_driver_3c505_FALSE='#'
+else
+  device_driver_3c505_TRUE='#'
+  device_driver_3c505_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ELPLUS 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-3c507 was given.
+if test "${enable_3c507+set}" = set; then :
+  enableval=$enable_3c507;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
3Com 507 (3c507, el16); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c507' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c507_TRUE=
+  device_driver_3c507_FALSE='#'
+else
+  device_driver_3c507_TRUE='#'
+  device_driver_3c507_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EL16 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-3c509 was given.
+if test "${enable_3c509+set}" = set; then :
+  enableval=$enable_3c509;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
3Com 509/579 (3c509, 3c579) / Etherlink III; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c509' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c509_TRUE=
+  device_driver_3c509_FALSE='#'
+else
+  device_driver_3c509_TRUE='#'
+  device_driver_3c509_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EL3 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-3c59x was given.
+if test "${enable_3c59x+set}" = set; then :
+  enableval=$enable_3c59x;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
3Com 59x/90x
+    (3c59x, 3c590, 3c592, 3c595, 3c597, 3c90x, 3c900, 3c905)
+    "Vortex/Boomerang"; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c59x' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c59x_TRUE=
+  device_driver_3c59x_FALSE='#'
+else
+  device_driver_3c59x_TRUE='#'
+  device_driver_3c59x_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_VORTEX 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-3c515 was given.
+if test "${enable_3c515+set}" = set; then :
+  enableval=$enable_3c515;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
3Com 515 ISA Fast EtherLink; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c515' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c515_TRUE=
+  device_driver_3c515_FALSE='#'
+else
+  device_driver_3c515_TRUE='#'
+  device_driver_3c515_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_3C515 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-ac3200 was given.
+if test "${enable_ac3200+set}" = set; then :
+  enableval=$enable_ac3200;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Ansel Communications EISA 3200; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ac3200' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ac3200_TRUE=
+  device_driver_ac3200_FALSE='#'
+else
+  device_driver_ac3200_TRUE='#'
+  device_driver_ac3200_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_AC3200 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-apricot was given.
+if test "${enable_apricot+set}" = set; then :
+  enableval=$enable_apricot;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Apricot XEN-II on board ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`apricot' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_apricot_TRUE=
+  device_driver_apricot_FALSE='#'
+else
+  device_driver_apricot_TRUE='#'
+  device_driver_apricot_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_APRICOT 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-at1700 was given.
+if test "${enable_at1700+set}" = set; then :
+  enableval=$enable_at1700;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
AT1700 (Fujitsu 86965); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`at1700' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_at1700_TRUE=
+  device_driver_at1700_FALSE='#'
+else
+  device_driver_at1700_TRUE='#'
+  device_driver_at1700_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_AT1700 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-atp was given.
+if test "${enable_atp+set}" = set; then :
+  enableval=$enable_atp;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`atp' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_atp_TRUE=
+  device_driver_atp_FALSE='#'
+else
+  device_driver_atp_TRUE='#'
+  device_driver_atp_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ATP 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-de4x5 was given.
+if test "${enable_de4x5+set}" = set; then :
+  enableval=$enable_de4x5;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
DE4x5 (de4x5, de425, de434, de435, de450, de500); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`de4x5' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_de4x5_TRUE=
+  device_driver_de4x5_FALSE='#'
+else
+  device_driver_de4x5_TRUE='#'
+  device_driver_de4x5_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_DE4X5 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-de600 was given.
+if test "${enable_de600+set}" = set; then :
+  enableval=$enable_de600;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
D-Link DE-600; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`de600' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_de600_TRUE=
+  device_driver_de600_FALSE='#'
+else
+  device_driver_de600_TRUE='#'
+  device_driver_de600_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_DE600 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-de620 was given.
+if test "${enable_de620+set}" = set; then :
+  enableval=$enable_de620;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
D-Link DE-620; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`de620' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_de620_TRUE=
+  device_driver_de620_FALSE='#'
+else
+  device_driver_de620_TRUE='#'
+  device_driver_de620_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_DE620 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-depca was given.
+if test "${enable_depca+set}" = set; then :
+  enableval=$enable_depca;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
DEPCA
+    (de100, de101, de200, de201, de202, de210, de422); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`depca' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_depca_TRUE=
+  device_driver_depca_FALSE='#'
+else
+  device_driver_depca_TRUE='#'
+  device_driver_depca_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_DEPCA 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-e2100 was given.
+if test "${enable_e2100+set}" = set; then :
+  enableval=$enable_e2100;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Cabletron E21xx; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`e2100' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_e2100_TRUE=
+  device_driver_e2100_FALSE='#'
+else
+  device_driver_e2100_TRUE='#'
+  device_driver_e2100_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_E2100 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-eepro was given.
+if test "${enable_eepro+set}" = set; then :
+  enableval=$enable_eepro;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
EtherExpressPro; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`eepro' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_eepro_TRUE=
+  device_driver_eepro_FALSE='#'
+else
+  device_driver_eepro_TRUE='#'
+  device_driver_eepro_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EEXPRESS_PRO 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-eepro100 was given.
+if test "${enable_eepro100+set}" = set; then :
+  enableval=$enable_eepro100;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Intel EtherExpressPro PCI 10+/100B/100+; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`eepro100' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_eepro100_TRUE=
+  device_driver_eepro100_FALSE='#'
+else
+  device_driver_eepro100_TRUE='#'
+  device_driver_eepro100_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EEXPRESS_PRO100B 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-eexpress was given.
+if test "${enable_eexpress+set}" = set; then :
+  enableval=$enable_eexpress;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
EtherExpress 16; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`eexpress' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_eexpress_TRUE=
+  device_driver_eexpress_FALSE='#'
+else
+  device_driver_eexpress_TRUE='#'
+  device_driver_eexpress_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EEXPRESS 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-epic100 was given.
+if test "${enable_epic100+set}" = set; then :
+  enableval=$enable_epic100;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
SMC 83c170/175 EPIC/100 (epic, epic100) / EtherPower II; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`epic100' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_epic100_TRUE=
+  device_driver_epic100_FALSE='#'
+else
+  device_driver_epic100_TRUE='#'
+  device_driver_epic100_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EPIC 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-eth16i was given.
+if test "${enable_eth16i+set}" = set; then :
+  enableval=$enable_eth16i;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
ICL EtherTeam 16i/32 (eth16i, eth32); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`eth16i' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_eth16i_TRUE=
+  device_driver_eth16i_FALSE='#'
+else
+  device_driver_eth16i_TRUE='#'
+  device_driver_eth16i_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ETH16I 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-ewrk3 was given.
+if test "${enable_ewrk3+set}" = set; then :
+  enableval=$enable_ewrk3;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
EtherWORKS 3 (ewrk3, de203, de204, de205); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ewrk3' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ewrk3_TRUE=
+  device_driver_ewrk3_FALSE='#'
+else
+  device_driver_ewrk3_TRUE='#'
+  device_driver_ewrk3_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_EWRK3 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-fmv18x was given.
+if test "${enable_fmv18x+set}" = set; then :
+  enableval=$enable_fmv18x;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
FMV-181/182/183/184; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`fmv18x' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_fmv18x_TRUE=
+  device_driver_fmv18x_FALSE='#'
+else
+  device_driver_fmv18x_TRUE='#'
+  device_driver_fmv18x_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_FMV18X 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-hamachi was given.
+if test "${enable_hamachi+set}" = set; then :
+  enableval=$enable_hamachi;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Packet Engines "Hamachi" GNIC-2 Gigabit Ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`hamachi' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_hamachi_TRUE=
+  device_driver_hamachi_FALSE='#'
+else
+  device_driver_hamachi_TRUE='#'
+  device_driver_hamachi_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_HAMACHI 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-hp-plus was given.
+if test "${enable_hp_plus+set}" = set; then :
+  enableval=$enable_hp_plus;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
HP PCLAN+ (27247B and 27252A); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`hp-plus' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_hp_plus_TRUE=
+  device_driver_hp_plus_FALSE='#'
+else
+  device_driver_hp_plus_TRUE='#'
+  device_driver_hp_plus_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_HPLAN_PLUS 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-hp was given.
+if test "${enable_hp+set}" = set; then :
+  enableval=$enable_hp;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
HP PCLAN (27245 and other 27xxx series); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`hp' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_hp_TRUE=
+  device_driver_hp_FALSE='#'
+else
+  device_driver_hp_TRUE='#'
+  device_driver_hp_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_HPLAN 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-hp100 was given.
+if test "${enable_hp100+set}" = set; then :
+  enableval=$enable_hp100;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
HP 10/100VG PCLAN (ISA, EISA, PCI)
+    (hp100, hpj2577, hpj2573, hpj2585, hp27248b); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`hp100' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_hp100_TRUE=
+  device_driver_hp100_FALSE='#'
+else
+  device_driver_hp100_TRUE='#'
+  device_driver_hp100_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_HP100 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-intel-gige was given.
+if test "${enable_intel_gige+set}" = set; then :
+  enableval=$enable_intel_gige;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Intel PCI Gigabit Ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`intel-gige' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_intel_gige_TRUE=
+  device_driver_intel_gige_FALSE='#'
+else
+  device_driver_intel_gige_TRUE='#'
+  device_driver_intel_gige_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_INTEL_GIGE 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-lance was given.
+if test "${enable_lance+set}" = set; then :
+  enableval=$enable_lance;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
AMD LANCE and PCnet (at1500, ne2100); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`lance' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_lance_TRUE=
+  device_driver_lance_FALSE='#'
+else
+  device_driver_lance_TRUE='#'
+  device_driver_lance_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_LANCE 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-myson803 was given.
+if test "${enable_myson803+set}" = set; then :
+  enableval=$enable_myson803;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Myson MTD803 Ethernet adapter series; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`myson803' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_myson803_TRUE=
+  device_driver_myson803_FALSE='#'
+else
+  device_driver_myson803_TRUE='#'
+  device_driver_myson803_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_MYSON803 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-natsemi was given.
+if test "${enable_natsemi+set}" = set; then :
+  enableval=$enable_natsemi;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
National Semiconductor DP8381x series PCI Ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`natsemi' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_natsemi_TRUE=
+  device_driver_natsemi_FALSE='#'
+else
+  device_driver_natsemi_TRUE='#'
+  device_driver_natsemi_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_NATSEMI 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-ne was given.
+if test "${enable_ne+set}" = set; then :
+  enableval=$enable_ne;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
NE2000/NE1000 ISA (ne, ne1000, ne2000); on ix86-at enabled
+    by default and for qemu' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ne' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ne_TRUE=
+  device_driver_ne_FALSE='#'
+else
+  device_driver_ne_TRUE='#'
+  device_driver_ne_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_NE2000 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-ne2k-pci was given.
+if test "${enable_ne2k_pci+set}" = set; then :
+  enableval=$enable_ne2k_pci;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
PCI NE2000; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ne2k-pci' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ne2k_pci_TRUE=
+  device_driver_ne2k_pci_FALSE='#'
+else
+  device_driver_ne2k_pci_TRUE='#'
+  device_driver_ne2k_pci_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_NE2K_PCI 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-ni52 was given.
+if test "${enable_ni52+set}" = set; then :
+  enableval=$enable_ni52;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
NI5210; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ni52' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ni52_TRUE=
+  device_driver_ni52_FALSE='#'
+else
+  device_driver_ni52_TRUE='#'
+  device_driver_ni52_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_NI52 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-ni65 was given.
+if test "${enable_ni65+set}" = set; then :
+  enableval=$enable_ni65;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
NI6510; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ni65' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ni65_TRUE=
+  device_driver_ni65_FALSE='#'
+else
+  device_driver_ni65_TRUE='#'
+  device_driver_ni65_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_NI65 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-ns820 was given.
+if test "${enable_ns820+set}" = set; then :
+  enableval=$enable_ns820;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
National Semiconductor DP8382x series PCI Ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`ns820' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_ns820_TRUE=
+  device_driver_ns820_FALSE='#'
+else
+  device_driver_ns820_TRUE='#'
+  device_driver_ns820_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_NS820 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-pcnet32 was given.
+if test "${enable_pcnet32+set}" = set; then :
+  enableval=$enable_pcnet32;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
AMD PCI PCnet32 (PCI bus NE2100 cards); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`pcnet32' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_pcnet32_TRUE=
+  device_driver_pcnet32_FALSE='#'
+else
+  device_driver_pcnet32_TRUE='#'
+  device_driver_pcnet32_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_PCNET32 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-rtl8139 was given.
+if test "${enable_rtl8139+set}" = set; then :
+  enableval=$enable_rtl8139;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
RealTek 8129/8139 (rtl8129, rtl8139) (not 8019/8029!); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`rtl8139' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_rtl8139_TRUE=
+  device_driver_rtl8139_FALSE='#'
+else
+  device_driver_rtl8139_TRUE='#'
+  device_driver_rtl8139_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_RTL8139 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-seeq8005 was given.
+if test "${enable_seeq8005+set}" = set; then :
+  enableval=$enable_seeq8005;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Seeq8005; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`seeq8005' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_seeq8005_TRUE=
+  device_driver_seeq8005_FALSE='#'
+else
+  device_driver_seeq8005_TRUE='#'
+  device_driver_seeq8005_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SEEQ8005 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-sis900 was given.
+if test "${enable_sis900+set}" = set; then :
+  enableval=$enable_sis900;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
SiS 900; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`sis900' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_sis900_TRUE=
+  device_driver_sis900_FALSE='#'
+else
+  device_driver_sis900_TRUE='#'
+  device_driver_sis900_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SIS900 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-sk_g16 was given.
+if test "${enable_sk_g16+set}" = set; then :
+  enableval=$enable_sk_g16;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Schneider & Koch G16; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`sk_g16' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_sk_g16_TRUE=
+  device_driver_sk_g16_FALSE='#'
+else
+  device_driver_sk_g16_TRUE='#'
+  device_driver_sk_g16_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SK_G16 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-smc-ultra was given.
+if test "${enable_smc_ultra+set}" = set; then :
+  enableval=$enable_smc_ultra;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
SMC Ultra; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`smc-ultra' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_smc_ultra_TRUE=
+  device_driver_smc_ultra_FALSE='#'
+else
+  device_driver_smc_ultra_TRUE='#'
+  device_driver_smc_ultra_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ULTRA 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-smc-ultra32 was given.
+if test "${enable_smc_ultra32+set}" = set; then :
+  enableval=$enable_smc_ultra32;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
SMC Ultra32; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`smc-ultra32' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_smc_ultra32_TRUE=
+  device_driver_smc_ultra32_FALSE='#'
+else
+  device_driver_smc_ultra32_TRUE='#'
+  device_driver_smc_ultra32_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ULTRA32 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-starfire was given.
+if test "${enable_starfire+set}" = set; then :
+  enableval=$enable_starfire;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Adaptec Starfire network adapter; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`starfire' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_starfire_TRUE=
+  device_driver_starfire_FALSE='#'
+else
+  device_driver_starfire_TRUE='#'
+  device_driver_starfire_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_STARFIRE 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-sundance was given.
+if test "${enable_sundance+set}" = set; then :
+  enableval=$enable_sundance;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Sundance ST201 "Alta" PCI Ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`sundance' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_sundance_TRUE=
+  device_driver_sundance_FALSE='#'
+else
+  device_driver_sundance_TRUE='#'
+  device_driver_sundance_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SUNDANCE 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-tlan was given.
+if test "${enable_tlan+set}" = set; then :
+  enableval=$enable_tlan;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
TI ThunderLAN; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`tlan' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_tlan_TRUE=
+  device_driver_tlan_FALSE='#'
+else
+  device_driver_tlan_TRUE='#'
+  device_driver_tlan_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_TLAN 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-tulip was given.
+if test "${enable_tulip+set}" = set; then :
+  enableval=$enable_tulip;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
DECchip Tulip (dc21x4x) PCI (elcp, tulip); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`tulip' in this configuration." "$LINENO" 
5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_tulip_TRUE=
+  device_driver_tulip_FALSE='#'
+else
+  device_driver_tulip_TRUE='#'
+  device_driver_tulip_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_DEC_ELCP 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-via-rhine was given.
+if test "${enable_via_rhine+set}" = set; then :
+  enableval=$enable_via_rhine;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
VIA Rhine; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`via-rhine' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_via_rhine_TRUE=
+  device_driver_via_rhine_FALSE='#'
+else
+  device_driver_via_rhine_TRUE='#'
+  device_driver_via_rhine_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_VIA_RHINE 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+# Disabled by default.
+
+
+unset enableval
+# Check whether --enable-wavelan was given.
+if test "${enable_wavelan+set}" = set; then :
+  enableval=$enable_wavelan;
+fi
+
+#TODO.
+case $host_platform:$host_cpu in
+  at:i?86)
+    :;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`wavelan' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_wavelan_TRUE=
+  device_driver_wavelan_FALSE='#'
+else
+  device_driver_wavelan_TRUE='#'
+  device_driver_wavelan_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_WAVELAN 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-wd was given.
+if test "${enable_wd+set}" = set; then :
+  enableval=$enable_wd;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
WD80x3; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`wd' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_wd_TRUE=
+  device_driver_wd_FALSE='#'
+else
+  device_driver_wd_TRUE='#'
+  device_driver_wd_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_WD80x3 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-winbond-840 was given.
+if test "${enable_winbond_840+set}" = set; then :
+  enableval=$enable_winbond_840;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Winbond W89c840 PCI Ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`winbond-840' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_winbond_840_TRUE=
+  device_driver_winbond_840_FALSE='#'
+else
+  device_driver_winbond_840_TRUE='#'
+  device_driver_winbond_840_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_WINBOND840 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-yellowfin was given.
+if test "${enable_yellowfin+set}" = set; then :
+  enableval=$enable_yellowfin;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Packet Engines Yellowfin Gigabit-NIC; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`yellowfin' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_yellowfin_TRUE=
+  device_driver_yellowfin_FALSE='#'
+else
+  device_driver_yellowfin_TRUE='#'
+  device_driver_yellowfin_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_YELLOWFIN 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+unset enableval
+# Check whether --enable-znet was given.
+if test "${enable_znet+set}" = set; then :
+  enableval=$enable_znet;
+fi
+
+if test x$enable_net_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Ethernet controller 
Zenith Z-Note (znet, znote); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`znet' in this configuration." "$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_znet_TRUE=
+  device_driver_znet_FALSE='#'
+else
+  device_driver_znet_TRUE='#'
+  device_driver_znet_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ZNET 1" >>confdefs.h
+
+  device_driver_group net
+fi
+
+
+
+# Check whether --enable-pcmcia-group was given.
+if test "${enable_pcmcia_group+set}" = set; then :
+  enableval=$enable_pcmcia_group;
+fi
+
+
+
+
+
+unset enableval
+# Check whether --enable-i82365 was given.
+if test "${enable_i82365+set}" = set; then :
+  enableval=$enable_i82365;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Intel 82365 PC Card 
controller; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`i82365' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_i82365_TRUE=
+  device_driver_i82365_FALSE='#'
+else
+  device_driver_i82365_TRUE='#'
+  device_driver_i82365_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_I82365 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-pcmcia-isa was given.
+if test "${enable_pcmcia_isa+set}" = set; then :
+  enableval=$enable_pcmcia_isa;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'isa bus support in the pcmcia core; on 
ix86-at enabled by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`pcmcia-isa' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_pcmcia_isa_TRUE=
+  device_driver_pcmcia_isa_FALSE='#'
+else
+  device_driver_pcmcia_isa_TRUE='#'
+  device_driver_pcmcia_isa_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ISA 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+
+unset enableval
+# Check whether --enable-3c574_cs was given.
+if test "${enable_3c574_cs+set}" = set; then :
+  enableval=$enable_3c574_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for 3Com 3c574 
``RoadRunner'' PCMCIA Ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c574_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c574_cs_TRUE=
+  device_driver_3c574_cs_FALSE='#'
+else
+  device_driver_3c574_cs_TRUE='#'
+  device_driver_3c574_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_3C574_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-3c589_cs was given.
+if test "${enable_3c589_cs+set}" = set; then :
+  enableval=$enable_3c589_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for 3Com 3c589 PCMCIA 
Ethernet card; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`3c589_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_3c589_cs_TRUE=
+  device_driver_3c589_cs_FALSE='#'
+else
+  device_driver_3c589_cs_TRUE='#'
+  device_driver_3c589_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_3C589_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-axnet_cs was given.
+if test "${enable_axnet_cs+set}" = set; then :
+  enableval=$enable_axnet_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Asix AX88190-based 
PCMCIA Ethernet adapters; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`axnet_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_axnet_cs_TRUE=
+  device_driver_axnet_cs_FALSE='#'
+else
+  device_driver_axnet_cs_TRUE='#'
+  device_driver_axnet_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_AXNET_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-fmvj18x_cs was given.
+if test "${enable_fmvj18x_cs+set}" = set; then :
+  enableval=$enable_fmvj18x_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for fmvj18x chipset based 
PCMCIA Ethernet cards; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`fmvj18x_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_fmvj18x_cs_TRUE=
+  device_driver_fmvj18x_cs_FALSE='#'
+else
+  device_driver_fmvj18x_cs_TRUE='#'
+  device_driver_fmvj18x_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_FMVJ18X_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-nmclan_cs was given.
+if test "${enable_nmclan_cs+set}" = set; then :
+  enableval=$enable_nmclan_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for New Media Ethernet 
LAN PCMCIA cards; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`nmclan_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_nmclan_cs_TRUE=
+  device_driver_nmclan_cs_FALSE='#'
+else
+  device_driver_nmclan_cs_TRUE='#'
+  device_driver_nmclan_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_NMCLAN_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-pcnet_cs was given.
+if test "${enable_pcnet_cs+set}" = set; then :
+  enableval=$enable_pcnet_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for NS8390-based PCMCIA 
cards; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`pcnet_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_pcnet_cs_TRUE=
+  device_driver_pcnet_cs_FALSE='#'
+else
+  device_driver_pcnet_cs_TRUE='#'
+  device_driver_pcnet_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_PCNET_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-smc91c92_cs was given.
+if test "${enable_smc91c92_cs+set}" = set; then :
+  enableval=$enable_smc91c92_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for SMC91c92-based PCMCIA 
cards; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`smc91c92_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_smc91c92_cs_TRUE=
+  device_driver_smc91c92_cs_FALSE='#'
+else
+  device_driver_smc91c92_cs_TRUE='#'
+  device_driver_smc91c92_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_SMC91C92_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+unset enableval
+# Check whether --enable-xirc2ps_cs was given.
+if test "${enable_xirc2ps_cs+set}" = set; then :
+  enableval=$enable_xirc2ps_cs;
+fi
+
+if test x$enable_pcmcia_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Xircom CreditCard and 
Realport PCMCIA ethernet; on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`xirc2ps_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_xirc2ps_cs_TRUE=
+  device_driver_xirc2ps_cs_FALSE='#'
+else
+  device_driver_xirc2ps_cs_TRUE='#'
+  device_driver_xirc2ps_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_XIRC2PS_CS 1" >>confdefs.h
+
+  device_driver_group pcmcia
+fi
+
+
+
+# Check whether --enable-wireless-group was given.
+if test "${enable_wireless_group+set}" = set; then :
+  enableval=$enable_wireless_group;
+fi
+
+
+
+
+
+unset enableval
+# Check whether --enable-orinoco_cs was given.
+if test "${enable_orinoco_cs+set}" = set; then :
+  enableval=$enable_orinoco_cs;
+fi
+
+if test x$enable_wireless_group = xno;
+then
+  enableval=${enableval-no}
+fi
+#TODO.  Could use some M4 magic to avoid a lot of shell code.
+case $host_platform:$host_cpu in
+  at:i?86)
+    case $enable_device_drivers:'Linux device driver for Hermes or Prism 2 
PCMCIA Wireless adapters (Orinoco); on ix86-at enabled
+    by default' in
+      default:*by\ default* | qemu:*for\ qemu*)
+        enableval=${enableval-yes};;
+      *)
+        enableval=${enableval-no};;
+    esac;;
+  *)
+    if [ x"$enableval" = xyes ]; then
+      # TODO.  That might not always be true.
+      as_fn_error $? "cannot enable \`orinoco_cs' in this configuration." 
"$LINENO" 5
+    fi;;
+esac
+ if [ x"$enableval" = xyes ]; then
+  device_driver_orinoco_cs_TRUE=
+  device_driver_orinoco_cs_FALSE='#'
+else
+  device_driver_orinoco_cs_TRUE='#'
+  device_driver_orinoco_cs_FALSE=
+fi
+
+if [ x"$enableval" = xyes ]; then
+  have_linux_code=yes
+
+$as_echo "#define CONFIG_ORINOCO_CS 1" >>confdefs.h
+
+  device_driver_group wireless
+fi
+
+
+#
+# Process device driver groups: kinds of drivers that have gobs of source files
+# that get brought in, need special symbols defined, etc.
+#
+
+if [ x"$device_driver_group_net" = xselected ]; then
+
+$as_echo "#define CONFIG_INET 1" >>confdefs.h
+
+   if true; then
+  device_driver_group_net_TRUE=
+  device_driver_group_net_FALSE='#'
+else
+  device_driver_group_net_TRUE='#'
+  device_driver_group_net_FALSE=
+fi
+
+else  if false; then
+  device_driver_group_net_TRUE=
+  device_driver_group_net_FALSE='#'
+else
+  device_driver_group_net_TRUE='#'
+  device_driver_group_net_FALSE=
+fi
+
+fi
+
+if [ x"$device_driver_group_pcmcia" = xselected ]; then
+
+$as_echo "#define CONFIG_PCMCIA 1" >>confdefs.h
+
+   if true; then
+  device_driver_group_pcmcia_TRUE=
+  device_driver_group_pcmcia_FALSE='#'
+else
+  device_driver_group_pcmcia_TRUE='#'
+  device_driver_group_pcmcia_FALSE=
+fi
+
+else  if false; then
+  device_driver_group_pcmcia_TRUE=
+  device_driver_group_pcmcia_FALSE='#'
+else
+  device_driver_group_pcmcia_TRUE='#'
+  device_driver_group_pcmcia_FALSE=
+fi
+
+fi
+
+if [ x"$device_driver_group_scsi" = xselected ]; then
+
+$as_echo "#define CONFIG_SCSI 1" >>confdefs.h
+
+   if true; then
+  device_driver_group_scsi_TRUE=
+  device_driver_group_scsi_FALSE='#'
+else
+  device_driver_group_scsi_TRUE='#'
+  device_driver_group_scsi_FALSE=
+fi
+
+else  if false; then
+  device_driver_group_scsi_TRUE=
+  device_driver_group_scsi_FALSE='#'
+else
+  device_driver_group_scsi_TRUE='#'
+  device_driver_group_scsi_FALSE=
+fi
+
+fi
+
+if [ x"$device_driver_group_wireless" = xselected ]; then
+
+$as_echo "#define CONFIG_WIRELESS 1" >>confdefs.h
+
+fi
+
+#
+# Internals.
+#
+
+
+
+if [ "$have_linux_code" = yes ]; then
+   if true; then
+  CODE_linux_TRUE=
+  CODE_linux_FALSE='#'
+else
+  CODE_linux_TRUE='#'
+  CODE_linux_FALSE=
+fi
+
+
+  case $host_cpu in
+    i386)
+
+
+$as_echo "#define CONFIG_M386 1" >>confdefs.h
+
+
+$as_echo "#define CPU 386" >>confdefs.h
+;;
+    i486)
+
+
+$as_echo "#define CONFIG_M486 1" >>confdefs.h
+
+
+$as_echo "#define CPU 486" >>confdefs.h
+;;
+    i586)
+
+
+$as_echo "#define CONFIG_M586 1" >>confdefs.h
+
+
+$as_echo "#define CPU 586" >>confdefs.h
+;;
+    i686)
+
+
+$as_echo "#define CONFIG_M686 1" >>confdefs.h
+
+
+$as_echo "#define CPU 686" >>confdefs.h
+;;
+    *)
+      # TODO.  Warn here?
+
+
+$as_echo "#define CONFIG_M486 1" >>confdefs.h
+
+
+$as_echo "#define CPU 486" >>confdefs.h
+;;
+  esac
+
+  # The glue code dependend code checks for this.
+
+$as_echo "#define LINUX_DEV 1" >>confdefs.h
+
+  # Instead of Mach's KERNEL, Linux uses __KERNEL__.  Whee.
+
+$as_echo "#define __KERNEL__ 1" >>confdefs.h
+
+  if [ $mach_ncpus -gt 1 ]; then
+
+$as_echo "#define __SMP__ 1" >>confdefs.h
+
+  fi
+
+  # Set up `asm-SYSTYPE' links.
+  ac_config_links="$ac_config_links 
linux/src/include/asm:linux/src/include/asm-$systype 
linux/dev/include/asm:linux/dev/include/asm-$systype"
+
+else  if false; then
+  CODE_linux_TRUE=
+  CODE_linux_FALSE='#'
+else
+  CODE_linux_TRUE='#'
+  CODE_linux_FALSE=
+fi
+
+fi
+
+
+
+#
+# Compiler features.
+#
+
+# Smashing stack protector.
+ssp_possible=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler accepts 
\`-fstack-protector'" >&5
+$as_echo_n "checking whether the compiler accepts \`-fstack-protector'... " 
>&6; }
+# Is this a reliable test case?
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+void foo (void) { volatile char a[8]; a[3]; }
+_ACEOF
+# `$CC -c -o ...' might not be portable.  But, oh, well...  Is calling
+# `ac_compile' like this correct, after all?
+if eval "$ac_compile -S -fstack-protector -o conftest.s" 2> /dev/null; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  # Should we clear up other files as well, having called `AC_LANG_CONFTEST'?
+  rm -f conftest.s
+else
+  ssp_possible=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+# Need that, because some distributions ship compilers that include
+# `-fstack-protector' in the default specs.
+ if [ x"$ssp_possible" = xyes ]; then
+  disable_smashing_stack_protector_TRUE=
+  disable_smashing_stack_protector_FALSE='#'
+else
+  disable_smashing_stack_protector_TRUE='#'
+  disable_smashing_stack_protector_FALSE=
+fi
+
+
+#
+# Output.
+#
+
+ac_config_headers="$ac_config_headers config.h"
+
+ac_config_files="$ac_config_files Makefile version.c"
+
+
+#
+# The remaining ugly, dark corners...
+#
+# Attention, parents: don't show this to your children...
+#
+
+#
+# config.status.dep.patch
+#
+# This is a (ugly --- I admit) bootstrap hack to get to-be-generated files
+# created before any other source files are compiled.
+#
+# See <http://lists.gnu.org/archive/html/automake/2006-05/msg00038.html>.
+#
+# We don't use `BUILT_SOURCES' (as it was suggested in the follow-up message),
+# as we also want things like `make SPECIFIC_TARGET' to work.
+#
+# This affair is especially ugly because internals are used (the `# dummy'
+# tag): internals that may be subject to changes.  That's the reason why a
+# real patch is being used here and not some `sed' magic: to make it fail
+# loudly in case.
+#
+# For all shipped source files a dependency file is tried to be created where
+# it is simply stated that the respective source file depends on _all_
+# to-be-generated files.  Depending on all of them doesn't do any harm, as they
+# will nevertheless have to be created, sooner or later.  The problem is, that
+# `config.status' doesn't know about the source file of the file it is
+# currently creating the dependency file for.  So we have it do an educated
+# guess...  Later, when compiling the source files, these dependency files will
+# be rewritten to contain the files's actual dependencies.  From then on this
+# bootstrap hack will be forgotten.
+#
+
+
+
+#
+# Fire.
+#
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; 
do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable 
$ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache 
$cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are 
newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; 
then
+  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PLATFORM_xen_TRUE}" && test -z "${PLATFORM_xen_FALSE}"; then
+  as_fn_error $? "conditional \"PLATFORM_xen\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pseudo_phys_TRUE}" && test -z 
"${enable_pseudo_phys_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pseudo_phys\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pseudo_phys_TRUE}" && test -z 
"${enable_pseudo_phys_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pseudo_phys\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pv_pagetables_TRUE}" && test -z 
"${enable_pv_pagetables_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pv_pagetables\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pv_pagetables_TRUE}" && test -z 
"${enable_pv_pagetables_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pv_pagetables\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pv_descriptors_TRUE}" && test -z 
"${enable_pv_descriptors_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pv_descriptors\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pv_descriptors_TRUE}" && test -z 
"${enable_pv_descriptors_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pv_descriptors\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_ring1_TRUE}" && test -z "${enable_ring1_FALSE}"; then
+  as_fn_error $? "conditional \"enable_ring1\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_ring1_TRUE}" && test -z "${enable_ring1_FALSE}"; then
+  as_fn_error $? "conditional \"enable_ring1\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PLATFORM_xen_TRUE}" && test -z "${PLATFORM_xen_FALSE}"; then
+  as_fn_error $? "conditional \"PLATFORM_xen\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pseudo_phys_TRUE}" && test -z 
"${enable_pseudo_phys_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pseudo_phys\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pv_pagetables_TRUE}" && test -z 
"${enable_pv_pagetables_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pv_pagetables\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pv_descriptors_TRUE}" && test -z 
"${enable_pv_descriptors_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pv_descriptors\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_ring1_TRUE}" && test -z "${enable_ring1_FALSE}"; then
+  as_fn_error $? "conditional \"enable_ring1\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HOST_ix86_TRUE}" && test -z "${HOST_ix86_FALSE}"; then
+  as_fn_error $? "conditional \"HOST_ix86\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HOST_ix86_TRUE}" && test -z "${HOST_ix86_FALSE}"; then
+  as_fn_error $? "conditional \"HOST_ix86\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PLATFORM_at_TRUE}" && test -z "${PLATFORM_at_FALSE}"; then
+  as_fn_error $? "conditional \"PLATFORM_at\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PLATFORM_at_TRUE}" && test -z "${PLATFORM_at_FALSE}"; then
+  as_fn_error $? "conditional \"PLATFORM_at\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_lpr_TRUE}" && test -z "${enable_lpr_FALSE}"; then
+  as_fn_error $? "conditional \"enable_lpr\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_lpr_TRUE}" && test -z "${enable_lpr_FALSE}"; then
+  as_fn_error $? "conditional \"enable_lpr\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pae_TRUE}" && test -z "${enable_pae_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pae\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_pae_TRUE}" && test -z "${enable_pae_FALSE}"; then
+  as_fn_error $? "conditional \"enable_pae\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_kdb_TRUE}" && test -z "${enable_kdb_FALSE}"; then
+  as_fn_error $? "conditional \"enable_kdb\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_kdb_TRUE}" && test -z "${enable_kdb_FALSE}"; then
+  as_fn_error $? "conditional \"enable_kdb\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_kmsg_TRUE}" && test -z "${enable_kmsg_FALSE}"; then
+  as_fn_error $? "conditional \"enable_kmsg\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${enable_kmsg_TRUE}" && test -z "${enable_kmsg_FALSE}"; then
+  as_fn_error $? "conditional \"enable_kmsg\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_floppy_TRUE}" && test -z 
"${device_driver_floppy_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_floppy\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ide_TRUE}" && test -z 
"${device_driver_ide_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ide\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_53c78xx_TRUE}" && test -z 
"${device_driver_53c78xx_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_53c78xx\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_AM53C974_TRUE}" && test -z 
"${device_driver_AM53C974_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_AM53C974\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_BusLogic_TRUE}" && test -z 
"${device_driver_BusLogic_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_BusLogic\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_NCR53c406a_TRUE}" && test -z 
"${device_driver_NCR53c406a_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_NCR53c406a\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_advansys_TRUE}" && test -z 
"${device_driver_advansys_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_advansys\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_aha152x_TRUE}" && test -z 
"${device_driver_aha152x_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_aha152x\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_aha1542_TRUE}" && test -z 
"${device_driver_aha1542_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_aha1542\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_aha1740_TRUE}" && test -z 
"${device_driver_aha1740_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_aha1740\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_aic7xxx_TRUE}" && test -z 
"${device_driver_aic7xxx_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_aic7xxx\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_dtc_TRUE}" && test -z 
"${device_driver_dtc_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_dtc\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_eata_TRUE}" && test -z 
"${device_driver_eata_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_eata\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_eata_dma_TRUE}" && test -z 
"${device_driver_eata_dma_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_eata_dma\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_eata_pio_TRUE}" && test -z 
"${device_driver_eata_pio_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_eata_pio\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_fdomain_TRUE}" && test -z 
"${device_driver_fdomain_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_fdomain\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_g_NCR5380_TRUE}" && test -z 
"${device_driver_g_NCR5380_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_g_NCR5380\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_gdth_TRUE}" && test -z 
"${device_driver_gdth_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_gdth\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_in2000_TRUE}" && test -z 
"${device_driver_in2000_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_in2000\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ncr53c8xx_TRUE}" && test -z 
"${device_driver_ncr53c8xx_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ncr53c8xx\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_pas16_TRUE}" && test -z 
"${device_driver_pas16_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_pas16\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ppa_TRUE}" && test -z 
"${device_driver_ppa_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ppa\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_qlogicfas_TRUE}" && test -z 
"${device_driver_qlogicfas_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_qlogicfas\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_qlogicisp_TRUE}" && test -z 
"${device_driver_qlogicisp_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_qlogicisp\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_seagate_TRUE}" && test -z 
"${device_driver_seagate_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_seagate\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_sym53c8xx_TRUE}" && test -z 
"${device_driver_sym53c8xx_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_sym53c8xx\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_t128_TRUE}" && test -z 
"${device_driver_t128_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_t128\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_tmscsim_TRUE}" && test -z 
"${device_driver_tmscsim_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_tmscsim\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_u14_34f_TRUE}" && test -z 
"${device_driver_u14_34f_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_u14_34f\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ultrastor_TRUE}" && test -z 
"${device_driver_ultrastor_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ultrastor\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_wd7000_TRUE}" && test -z 
"${device_driver_wd7000_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_wd7000\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c501_TRUE}" && test -z 
"${device_driver_3c501_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c501\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c503_TRUE}" && test -z 
"${device_driver_3c503_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c503\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c505_TRUE}" && test -z 
"${device_driver_3c505_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c505\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c507_TRUE}" && test -z 
"${device_driver_3c507_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c507\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c509_TRUE}" && test -z 
"${device_driver_3c509_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c509\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c59x_TRUE}" && test -z 
"${device_driver_3c59x_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c59x\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c515_TRUE}" && test -z 
"${device_driver_3c515_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c515\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ac3200_TRUE}" && test -z 
"${device_driver_ac3200_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ac3200\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_apricot_TRUE}" && test -z 
"${device_driver_apricot_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_apricot\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_at1700_TRUE}" && test -z 
"${device_driver_at1700_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_at1700\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_atp_TRUE}" && test -z 
"${device_driver_atp_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_atp\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_de4x5_TRUE}" && test -z 
"${device_driver_de4x5_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_de4x5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_de600_TRUE}" && test -z 
"${device_driver_de600_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_de600\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_de620_TRUE}" && test -z 
"${device_driver_de620_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_de620\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_depca_TRUE}" && test -z 
"${device_driver_depca_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_depca\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_e2100_TRUE}" && test -z 
"${device_driver_e2100_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_e2100\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_eepro_TRUE}" && test -z 
"${device_driver_eepro_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_eepro\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_eepro100_TRUE}" && test -z 
"${device_driver_eepro100_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_eepro100\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_eexpress_TRUE}" && test -z 
"${device_driver_eexpress_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_eexpress\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_epic100_TRUE}" && test -z 
"${device_driver_epic100_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_epic100\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_eth16i_TRUE}" && test -z 
"${device_driver_eth16i_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_eth16i\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ewrk3_TRUE}" && test -z 
"${device_driver_ewrk3_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ewrk3\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_fmv18x_TRUE}" && test -z 
"${device_driver_fmv18x_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_fmv18x\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_hamachi_TRUE}" && test -z 
"${device_driver_hamachi_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_hamachi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_hp_plus_TRUE}" && test -z 
"${device_driver_hp_plus_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_hp_plus\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_hp_TRUE}" && test -z "${device_driver_hp_FALSE}"; 
then
+  as_fn_error $? "conditional \"device_driver_hp\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_hp100_TRUE}" && test -z 
"${device_driver_hp100_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_hp100\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_intel_gige_TRUE}" && test -z 
"${device_driver_intel_gige_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_intel_gige\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_lance_TRUE}" && test -z 
"${device_driver_lance_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_lance\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_myson803_TRUE}" && test -z 
"${device_driver_myson803_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_myson803\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_natsemi_TRUE}" && test -z 
"${device_driver_natsemi_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_natsemi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ne_TRUE}" && test -z "${device_driver_ne_FALSE}"; 
then
+  as_fn_error $? "conditional \"device_driver_ne\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ne2k_pci_TRUE}" && test -z 
"${device_driver_ne2k_pci_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ne2k_pci\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ni52_TRUE}" && test -z 
"${device_driver_ni52_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ni52\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ni65_TRUE}" && test -z 
"${device_driver_ni65_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ni65\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_ns820_TRUE}" && test -z 
"${device_driver_ns820_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_ns820\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_pcnet32_TRUE}" && test -z 
"${device_driver_pcnet32_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_pcnet32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_rtl8139_TRUE}" && test -z 
"${device_driver_rtl8139_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_rtl8139\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_seeq8005_TRUE}" && test -z 
"${device_driver_seeq8005_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_seeq8005\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_sis900_TRUE}" && test -z 
"${device_driver_sis900_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_sis900\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_sk_g16_TRUE}" && test -z 
"${device_driver_sk_g16_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_sk_g16\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_smc_ultra_TRUE}" && test -z 
"${device_driver_smc_ultra_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_smc_ultra\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_smc_ultra32_TRUE}" && test -z 
"${device_driver_smc_ultra32_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_smc_ultra32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_starfire_TRUE}" && test -z 
"${device_driver_starfire_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_starfire\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_sundance_TRUE}" && test -z 
"${device_driver_sundance_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_sundance\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_tlan_TRUE}" && test -z 
"${device_driver_tlan_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_tlan\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_tulip_TRUE}" && test -z 
"${device_driver_tulip_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_tulip\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_via_rhine_TRUE}" && test -z 
"${device_driver_via_rhine_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_via_rhine\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_wavelan_TRUE}" && test -z 
"${device_driver_wavelan_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_wavelan\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_wd_TRUE}" && test -z "${device_driver_wd_FALSE}"; 
then
+  as_fn_error $? "conditional \"device_driver_wd\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_winbond_840_TRUE}" && test -z 
"${device_driver_winbond_840_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_winbond_840\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_yellowfin_TRUE}" && test -z 
"${device_driver_yellowfin_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_yellowfin\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_znet_TRUE}" && test -z 
"${device_driver_znet_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_znet\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_i82365_TRUE}" && test -z 
"${device_driver_i82365_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_i82365\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_pcmcia_isa_TRUE}" && test -z 
"${device_driver_pcmcia_isa_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_pcmcia_isa\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c574_cs_TRUE}" && test -z 
"${device_driver_3c574_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c574_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_3c589_cs_TRUE}" && test -z 
"${device_driver_3c589_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_3c589_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_axnet_cs_TRUE}" && test -z 
"${device_driver_axnet_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_axnet_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_fmvj18x_cs_TRUE}" && test -z 
"${device_driver_fmvj18x_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_fmvj18x_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_nmclan_cs_TRUE}" && test -z 
"${device_driver_nmclan_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_nmclan_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_pcnet_cs_TRUE}" && test -z 
"${device_driver_pcnet_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_pcnet_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_smc91c92_cs_TRUE}" && test -z 
"${device_driver_smc91c92_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_smc91c92_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_xirc2ps_cs_TRUE}" && test -z 
"${device_driver_xirc2ps_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_xirc2ps_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_orinoco_cs_TRUE}" && test -z 
"${device_driver_orinoco_cs_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_orinoco_cs\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_group_net_TRUE}" && test -z 
"${device_driver_group_net_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_group_net\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_group_net_TRUE}" && test -z 
"${device_driver_group_net_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_group_net\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_group_pcmcia_TRUE}" && test -z 
"${device_driver_group_pcmcia_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_group_pcmcia\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_group_pcmcia_TRUE}" && test -z 
"${device_driver_group_pcmcia_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_group_pcmcia\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_group_scsi_TRUE}" && test -z 
"${device_driver_group_scsi_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_group_scsi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${device_driver_group_scsi_TRUE}" && test -z 
"${device_driver_group_scsi_FALSE}"; then
+  as_fn_error $? "conditional \"device_driver_group_scsi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CODE_linux_TRUE}" && test -z "${CODE_linux_FALSE}"; then
+  as_fn_error $? "conditional \"CODE_linux\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CODE_linux_TRUE}" && test -z "${CODE_linux_FALSE}"; then
+  as_fn_error $? "conditional \"CODE_linux\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${disable_smashing_stack_protector_TRUE}" && test -z 
"${disable_smashing_stack_protector_FALSE}"; then
+  as_fn_error $? "conditional \"disable_smashing_stack_protector\" was never 
defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; 
then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file 
name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} 
as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 
'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by GNU Mach $as_me 1.4, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_links="$ac_config_links"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration links:
+$config_links
+
+Configuration commands:
+$config_commands
+
+Report bugs to <address@hidden>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+GNU Mach config.status 1.4
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create 
--no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "tests/test-mbchk") CONFIG_FILES="$CONFIG_FILES tests/test-mbchk" ;;
+    "machine") CONFIG_LINKS="$CONFIG_LINKS machine:$systype/$systype" ;;
+    "mach/machine") CONFIG_LINKS="$CONFIG_LINKS 
mach/machine:$systype/include/mach/$systype" ;;
+    "linux/src/include/asm") CONFIG_LINKS="$CONFIG_LINKS 
linux/src/include/asm:linux/src/include/asm-$systype" ;;
+    "linux/dev/include/asm") CONFIG_LINKS="$CONFIG_LINKS 
linux/dev/include/asm:linux/dev/include/asm-$systype" ;;
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "version.c") CONFIG_FILES="$CONFIG_FILES version.c" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[    ]*#[    ]*define[       ][      ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS  :L $CONFIG_LINKS  :C 
$CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be 
DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; 
esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 
's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
address@hidden@*|address@hidden@*|address@hidden@*|address@hidden@*|address@hidden@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to 
ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir 
setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a 
reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable 
\`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" 
>&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $ac_source in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+       *) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+  fi
+ ;;
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" 
>&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 
2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$mf" : 'X\(//\)[^/]' \| \
+        X"$mf" : 'X\(//\)$' \| \
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$file" : 'X\(//\)[^/]' \| \
+        X"$file" : 'X\(//\)$' \| \
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "tests/test-mbchk":F) chmod +x tests/test-mbchk ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+  if "$PATCH" -f < "$srcdir"/config.status.dep.patch
+  then { $as_echo "$as_me:${as_lineno-$LINENO}: Applied a patch to work around 
a deficiency in
+    Automake.  See \`configure.ac' for details." >&5
+$as_echo "$as_me: Applied a patch to work around a deficiency in
+    Automake.  See \`configure.ac' for details." >&6;}
+  else as_fn_error $? "failed to patch using \`config.status.dep.patch'.
+      You have a serious problem.  Please contact <$PACKAGE_BUGREPORT>." 
"$LINENO" 5
+  fi
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; 
then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: 
$ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/ddb/db_write_cmd.h b/ddb/db_write_cmd.h
deleted file mode 100644
index 74bac54..0000000
--- a/ddb/db_write_cmd.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef        _DDB_DB_WRITE_CMD_H_
-#define        _DDB_DB_WRITE_CMD_H_
-
-#include <mach/boolean.h>
-#include <machine/db_machdep.h>
-
-/* Prototypes for functions exported by this module.
- */
-
-void db_write_cmd(
-       db_expr_t       address,
-       boolean_t       have_addr,
-       db_expr_t       count,
-       char *          modif);
-
-#endif /* !_DDB_DB_WRITE_CMD_H_ */
diff --git a/device/dev_forward.defs b/device/dev_forward.defs
deleted file mode 100644
index a237bb8..0000000
--- a/device/dev_forward.defs
+++ /dev/null
@@ -1,44 +0,0 @@
-/* 
- * Mach Operating System
- * Copyright (c) 1991,1990 Carnegie Mellon University
- * All Rights Reserved.
- * 
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
- * Carnegie Mellon requests users of this software to return to
- * 
- *  Software Distribution Coordinator  or  address@hidden
- *  School of Computer Science
- *  Carnegie Mellon University
- *  Pittsburgh PA 15213-3890
- * 
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
- */
-/*
- *     Author: Joseph S. Barrera, Carnegie Mellon University
- *     Date:   12/90
- */
-
-subsystem KernelUser dev_forward 2800;
-
-#include <mach/std_types.defs>
-#include <mach/mach_types.defs>
-#include <device/device_types.defs>
-
-type reply_port_t = MACH_MSG_TYPE_MOVE_SEND_ONCE | polymorphic
-       ctype: mach_port_t;
-
-simpleroutine forward_device_open_send(
-               master_port     : mach_port_t;
-       ureplyport reply_port   : reply_port_t;
-               mode            : dev_mode_t;
-               name            : dev_name_t);
diff --git a/doc/.gitignore b/doc/.gitignore
deleted file mode 100644
index 829355b..0000000
--- a/doc/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/*.info
-/*.info-*
-/stamp-vti
-/version.texi
diff --git a/doc/mach.info b/doc/mach.info
new file mode 100644
index 0000000..19fab2e
--- /dev/null
+++ b/doc/mach.info
@@ -0,0 +1,163 @@
+This is mach.info, produced by makeinfo version 5.1 from mach.texi.
+
+This file documents the GNU Mach microkernel.
+
+   This is edition 0.4, last updated on 27 September 2013, of 'The GNU
+Mach Reference Manual', for version 1.4.
+
+   Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
+Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Section, with no Front-Cover Texts,
+     and with no Back-Cover Texts.  A copy of the license is included in
+     the section entitled "GNU Free Documentation License".
+
+     This work is based on manual pages under the following copyright
+     and license:
+
+     Mach Operating System
+     Copyright (C) 1991,1990 Carnegie Mellon University
+     All Rights Reserved.
+
+     Permission to use, copy, modify and distribute this software and
+     its documentation is hereby granted, provided that both the
+     copyright notice and this permission notice appear in all copies of
+     the software, derivative works or modified versions, and any
+     portions thereof, and that both notices appear in supporting
+     documentation.
+
+     CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+     CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+     ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+INFO-DIR-SECTION Kernel
+START-INFO-DIR-ENTRY
+* GNUMach: (mach).              Using and programming the GNU Mach microkernel.
+END-INFO-DIR-ENTRY
+
+
+Indirect:
+mach.info-1: 1631
+mach.info-2: 304236
+
+Tag Table:
+(Indirect)
+Node: Top1631
+Node: Introduction11181
+Node: Audience12012
+Node: Features13047
+Node: Overview14874
+Node: History16067
+Node: Installing16212
+Node: Binary Distributions17437
+Node: Compilation18245
+Node: Configuration19478
+Node: Cross-Compilation35889
+Node: Bootstrap36670
+Ref: Bootstrap-Footnote-137113
+Node: Bootloader37350
+Ref: Bootloader-Footnote-138630
+Node: Modules38716
+Node: Inter Process Communication39543
+Node: Major Concepts40166
+Node: Messaging Interface43971
+Node: Mach Message Call44701
+Node: Message Format48016
+Node: Exchanging Port Rights58499
+Ref: Exchanging Port Rights-Footnote-164061
+Node: Memory64233
+Ref: Memory-Footnote-167327
+Node: Message Send67669
+Ref: Message Send-Footnote-174691
+Node: Message Receive74974
+Ref: Message Receive-Footnote-183612
+Node: Atomicity83893
+Node: Port Manipulation Interface86667
+Node: Port Creation88143
+Node: Port Destruction92932
+Node: Port Names96075
+Node: Port Rights100322
+Node: Ports and other Tasks104111
+Node: Receive Rights108204
+Node: Port Sets113383
+Node: Request Notifications115786
+Node: Virtual Memory Interface120566
+Node: Memory Allocation121819
+Node: Memory Deallocation124344
+Node: Data Transfer125808
+Node: Memory Attributes129334
+Node: Mapping Memory Objects138753
+Node: Memory Statistics142045
+Node: External Memory Management143619
+Node: Memory Object Server144324
+Node: Memory Object Creation147033
+Node: Memory Object Termination151039
+Node: Memory Objects and Data153978
+Node: Memory Object Locking171124
+Node: Memory Object Attributes177019
+Node: Default Memory Manager182856
+Node: Threads and Tasks188578
+Node: Thread Interface188915
+Node: Thread Creation189911
+Node: Thread Termination191028
+Node: Thread Information191499
+Node: Thread Settings197598
+Node: Thread Execution198832
+Node: Scheduling206125
+Node: Thread Priority206480
+Node: Hand-Off Scheduling209114
+Node: Scheduling Policy214239
+Node: Thread Special Ports215571
+Node: Exceptions218017
+Node: Task Interface218887
+Node: Task Creation219899
+Node: Task Termination221234
+Node: Task Information221836
+Node: Task Execution228367
+Node: Task Special Ports232780
+Node: Syscall Emulation236634
+Node: Profiling237865
+Node: Host Interface241628
+Node: Host Ports242613
+Node: Host Information244686
+Node: Host Time250069
+Node: Host Reboot252736
+Node: Processors and Processor Sets253288
+Node: Processor Set Interface254266
+Node: Processor Set Ports255033
+Node: Processor Set Access255863
+Node: Processor Set Creation258123
+Node: Processor Set Destruction259150
+Node: Tasks and Threads on Sets260071
+Node: Processor Set Priority265238
+Node: Processor Set Policy266528
+Node: Processor Set Info268142
+Node: Processor Interface271955
+Node: Hosted Processors272680
+Node: Processor Control273671
+Node: Processors and Sets275137
+Node: Processor Info277015
+Node: Device Interface279757
+Node: Device Reply Server281372
+Node: Device Open282664
+Node: Device Close284787
+Node: Device Read285366
+Node: Device Write288285
+Node: Device Map291090
+Node: Device Status291981
+Node: Device Filter293154
+Node: Kernel Debugger298901
+Node: Operation299628
+Node: Commands304236
+Node: Variables317950
+Node: Expressions319338
+Node: Copying320687
+Node: Documentation License339914
+Node: GNU Free Documentation License340503
+Node: CMU License362901
+Node: Concept Index364136
+Node: Function and Data Index367982
+
+End Tag Table
diff --git a/doc/mach.info-1 b/doc/mach.info-1
new file mode 100644
index 0000000..a24394a
--- /dev/null
+++ b/doc/mach.info-1
@@ -0,0 +1,6735 @@
+This is mach.info, produced by makeinfo version 5.1 from mach.texi.
+
+This file documents the GNU Mach microkernel.
+
+   This is edition 0.4, last updated on 27 September 2013, of 'The GNU
+Mach Reference Manual', for version 1.4.
+
+   Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
+Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Section, with no Front-Cover Texts,
+     and with no Back-Cover Texts.  A copy of the license is included in
+     the section entitled "GNU Free Documentation License".
+
+     This work is based on manual pages under the following copyright
+     and license:
+
+     Mach Operating System
+     Copyright (C) 1991,1990 Carnegie Mellon University
+     All Rights Reserved.
+
+     Permission to use, copy, modify and distribute this software and
+     its documentation is hereby granted, provided that both the
+     copyright notice and this permission notice appear in all copies of
+     the software, derivative works or modified versions, and any
+     portions thereof, and that both notices appear in supporting
+     documentation.
+
+     CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+     CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+     ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+INFO-DIR-SECTION Kernel
+START-INFO-DIR-ENTRY
+* GNUMach: (mach).              Using and programming the GNU Mach microkernel.
+END-INFO-DIR-ENTRY
+
+
+File: mach.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+Main Menu
+*********
+
+This file documents the GNU Mach microkernel.
+
+   This is edition 0.4, last updated on 27 September 2013, of 'The GNU
+Mach Reference Manual', for version 1.4.
+
+   Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
+Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Section, with no Front-Cover Texts,
+     and with no Back-Cover Texts.  A copy of the license is included in
+     the section entitled "GNU Free Documentation License".
+
+     This work is based on manual pages under the following copyright
+     and license:
+
+     Mach Operating System
+     Copyright (C) 1991,1990 Carnegie Mellon University
+     All Rights Reserved.
+
+     Permission to use, copy, modify and distribute this software and
+     its documentation is hereby granted, provided that both the
+     copyright notice and this permission notice appear in all copies of
+     the software, derivative works or modified versions, and any
+     portions thereof, and that both notices appear in supporting
+     documentation.
+
+     CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+     CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+     ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+
+* Menu:
+
+* Introduction::                  How to use this manual.
+* Installing::                    Setting up GNU Mach on your computer.
+* Bootstrap::                     Running GNU Mach on your machine.
+* Inter Process Communication::   Communication between process.
+* Virtual Memory Interface::      Allocating and deallocating virtual memory.
+* External Memory Management::    Handling memory pages in user space.
+* Threads and Tasks::             Handling of threads and tasks.
+* Host Interface::                Interface to a Mach host.
+* Processors and Processor Sets:: Handling processors and sets of processors.
+* Device Interface::              Accessing kernel devices.
+* Kernel Debugger::               How to use the built-in kernel debugger.
+
+Appendices
+
+* Copying::                       The GNU General Public License says how you
+                                  can copy and share the GNU Mach microkernel.
+* Documentation License::         This manual is under the GNU Free
+                                  Documentation License.
+
+Indices
+
+* Concept Index::                 Index of concepts and programs.
+* Function and Data Index::       Index of functions, variables and data types.
+
+
+ -- The Detailed Node Listing --
+
+Introduction
+
+* Audience::                      The people for whom this manual is written.
+* Features::                      Reasons to install and use GNU Mach.
+* Overview::                      Basic architecture of the Mach microkernel.
+* History::                       The story about Mach.
+
+Installing
+
+* Binary Distributions::          Obtaining ready-to-run GNU distributions.
+* Compilation::                   Building GNU Mach from its source code.
+* Configuration::                 Configuration options at compilation time.
+* Cross-Compilation::             Building GNU Mach from another system.
+
+Bootstrap
+
+* Bootloader::                    Starting the microkernel, or other OSes.
+* Modules::                       Starting the first task of the OS.
+
+Inter Process Communication
+
+* Major Concepts::                The concepts behind the Mach IPC system.
+* Messaging Interface::           Composing, sending and receiving messages.
+* Port Manipulation Interface::   Manipulating ports, port rights, port sets.
+
+Messaging Interface
+
+* Mach Message Call::             Sending and receiving messages.
+* Message Format::                The format of Mach messages.
+* Exchanging Port Rights::        Sending and receiving port rights.
+* Memory::                        Passing memory regions in messages.
+* Message Send::                  Sending messages.
+* Message Receive::               Receiving messages.
+* Atomicity::                     Atomicity of port rights.
+
+Port Manipulation Interface
+
+* Port Creation::                 How to create new ports and port sets.
+* Port Destruction::              How to destroy ports and port sets.
+* Port Names::                    How to query and manipulate port names.
+* Port Rights::                   How to work with port rights.
+* Ports and other Tasks::         How to move rights between tasks.
+* Receive Rights::                How to work with receive rights.
+* Port Sets::                     How to work with port sets.
+* Request Notifications::         How to request notifications for events.
+
+Virtual Memory Interface
+
+* Memory Allocation::             Allocation of new virtual memory.
+* Memory Deallocation::           Freeing unused virtual memory.
+* Data Transfer::                 Reading, writing and copying memory.
+* Memory Attributes::             Tweaking memory regions.
+* Mapping Memory Objects::        How to map memory objects.
+* Memory Statistics::             How to get statistics about memory usage.
+
+External Memory Management
+
+* Memory Object Server::          The basics of external memory management.
+* Memory Object Creation::        How new memory objects are created.
+* Memory Object Termination::     How memory objects are terminated.
+* Memory Objects and Data::       Data transfer to and from memory objects.
+* Memory Object Locking::         How memory objects are locked.
+* Memory Object Attributes::      Manipulating attributes of memory objects.
+* Default Memory Manager::        Setting and using the default memory manager.
+
+Threads and Tasks
+
+* Thread Interface::              Manipulating threads.
+* Task Interface::                Manipulating tasks.
+* Profiling::                     Profiling threads and tasks.
+
+Thread Interface
+
+* Thread Creation::               Creating threads.
+* Thread Termination::            Terminating threads.
+* Thread Information::            How to get informations on threads.
+* Thread Settings::               How to set threads related informations.
+* Thread Execution::              How to control the thread's machine state.
+* Scheduling::                    Operations on thread scheduling.
+* Thread Special Ports::          How to handle the thread's special ports.
+* Exceptions::                    Managing exceptions.
+
+Scheduling
+
+* Thread Priority::               Changing the priority of a thread.
+* Hand-Off Scheduling::           Switch to a new thread.
+* Scheduling Policy::             Setting the scheduling policy.
+
+Task Interface
+
+* Task Creation::                 Creating tasks.
+* Task Termination::              Terminating tasks.
+* Task Information::              Informations on tasks.
+* Task Execution::                Thread scheduling in a task.
+* Task Special Ports::            How to get and set the task's special ports.
+* Syscall Emulation::             How to emulate system calls.
+
+Host Interface
+
+* Host Ports::                    Ports representing a host.
+* Host Information::              Query information about a host.
+* Host Time::                     Functions to query manipulate the host time.
+* Host Reboot::                   Rebooting the system.
+
+Processors and Processor Sets
+
+* Processor Set Interface::       How to work with processor sets.
+* Processor Interface::           How to work with individual processors.
+
+Processor Set Interface
+
+* Processor Set Ports::           Ports representing a processor set.
+* Processor Set Access::          How the processor sets are accessed.
+* Processor Set Creation::        How new processor sets are created.
+* Processor Set Destruction::     How processor sets are destroyed.
+* Tasks and Threads on Sets::     Assigning tasks or threads to processor sets.
+* Processor Set Priority::        Specifying the priority of a processor set.
+* Processor Set Policy::          Changing the processor set policies.
+* Processor Set Info::            Obtaining information about a processor set.
+
+Processor Interface
+
+* Hosted Processors::             Getting a list of all processors on a host.
+* Processor Control::             Starting, stopping, controlling processors.
+* Processors and Sets::           Combining processors into processor sets.
+* Processor Info::                Obtaining information on processors.
+
+Device Interface
+
+* Device Open::                   Opening hardware devices.
+* Device Close::                  Closing hardware devices.
+* Device Read::                   Reading data from the device.
+* Device Write::                  Writing data to the device.
+* Device Map::                    Mapping devices into virtual memory.
+* Device Status::                 Querying and manipulating a device.
+* Device Filter::                 Filtering packets arriving on a device.
+
+Kernel Debugger
+
+* Operation::                     Basic architecture of the kernel debugger.
+* Commands::                      Available commands in the kernel debugger.
+* Variables::                     Access of variables from the kernel debugger.
+* Expressions::                   Usage of expressions in the kernel debugger.
+
+Documentation License
+
+* GNU Free Documentation License:: The GNU Free Documentation License.
+* CMU License::                   The CMU license applies to the original Mach
+                                  kernel and its documentation.
+
+
+
+File: mach.info,  Node: Introduction,  Next: Installing,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+GNU Mach is the microkernel of the GNU Project.  It is the base of the
+operating system, and provides its functionality to the Hurd servers,
+the GNU C Library and all user applications.  The microkernel itself
+does not provide much functionality of the system, just enough to make
+it possible for the Hurd servers and the C library to implement the
+missing features you would expect from a POSIX compatible operating
+system.
+
+* Menu:
+
+* Audience::                      The people for whom this manual is written.
+* Features::                      Reasons to install and use GNU Mach.
+* Overview::                      Basic architecture of the Mach microkernel.
+* History::                       The story about Mach.
+
+
+File: mach.info,  Node: Audience,  Next: Features,  Up: Introduction
+
+1.1 Audience
+============
+
+This manual is designed to be useful to everybody who is interested in
+using, administering, or programming the Mach microkernel.
+
+   If you are an end-user and you are looking for help on running the
+Mach kernel, the first few chapters of this manual describe the
+essential parts of installing and using the kernel in the GNU operating
+system.
+
+   The rest of this manual is a technical discussion of the Mach
+programming interface and its implementation, and would not be helpful
+until you want to learn how to extend the system or modify the kernel.
+
+   This manual is organized according to the subsystems of Mach, and
+each chapter begins with descriptions of conceptual ideas that are
+related to that subsystem.  If you are a programmer and want to learn
+more about, say, the Mach IPC subsystem, you can skip to the IPC chapter
+(*note Inter Process Communication::), and read about the related
+concepts and interface definitions.
+
+
+File: mach.info,  Node: Features,  Next: Overview,  Prev: Audience,  Up: 
Introduction
+
+1.2 Features
+============
+
+GNU Mach is not the most advanced microkernel known to the planet, nor
+is it the fastest or smallest, but it has a rich set of interfaces and
+some features which make it useful as the base of the Hurd system.
+
+it's free software
+     Anybody can use, modify, and redistribute it under the terms of the
+     GNU General Public License (*note Copying::).  GNU Mach is part of
+     the GNU system, which is a complete operating system licensed under
+     the GPL.
+
+it's built to survive
+     As a microkernel, GNU Mach doesn't implement a lot of the features
+     commonly found in an operating system, but only the bare minimum
+     that is required to implement a full operating system on top of it.
+     This means that a lot of the operating system code is maintained
+     outside of GNU Mach, and while this code may go through a complete
+     redesign, the code of the microkernel can remain comparatively
+     stable.
+
+it's scalable
+     Mach is particularly well suited for SMP and network cluster
+     techniques.  Thread support is provided at the kernel level, and
+     the kernel itself takes advantage of that.  Network transparency at
+     the IPC level makes resources of the system available across
+     machine boundaries (with NORMA IPC, currently not available in GNU
+     Mach).
+
+it exists
+     The Mach microkernel is real software that works Right Now.  It is
+     not a research or a proposal.  You don't have to wait at all before
+     you can start using and developing it.  Mach has been used in many
+     operating systems in the past, usually as the base for a single
+     UNIX server.  In the GNU system, Mach is the base of a functional
+     multi-server operating system, the Hurd.
+
+
+File: mach.info,  Node: Overview,  Next: History,  Prev: Features,  Up: 
Introduction
+
+1.3 Overview
+============
+
+An operating system kernel provides a framework for programs to share a
+computer's hardware resources securely and efficiently.  This requires
+that the programs are separated and protected from each other.  To make
+running multiple programs in parallel useful, there also needs to be a
+facility for programs to exchange information by communication.
+
+   The Mach microkernel provides abstractions of the underlying hardware
+resources like devices and memory.  It organizes the running programs
+into tasks and threads (points of execution in the tasks).  In addition,
+Mach provides a rich interface for inter-process communication.
+
+   What Mach does not provide is a POSIX compatible programming
+interface.  In fact, it has no understanding of file systems, POSIX
+process semantics, network protocols and many more.  All this is
+implemented in tasks running on top of the microkernel.  In the GNU
+operating system, the Hurd servers and the C library share the
+responsibility to implement the POSIX interface, and the additional
+interfaces which are specific to the GNU system.
+
+
+File: mach.info,  Node: History,  Prev: Overview,  Up: Introduction
+
+1.4 History
+===========
+
+XXX A few lines about the history of Mach here.
+
+
+File: mach.info,  Node: Installing,  Next: Bootstrap,  Prev: Introduction,  
Up: Top
+
+2 Installing
+************
+
+Before you can use the Mach microkernel in your system you'll need to
+install it and all components you want to use with it, e.g.  the rest of
+the operating system.  You also need a bootloader to load the kernel
+from the storage medium and run it when the computer is started.
+
+   GNU Mach is only available for Intel i386-compatible architectures
+(such as the Pentium) currently.  If you have a different architecture
+and want to run the GNU Mach microkernel, you will need to port the
+kernel and all other software of the system to your machine's
+architecture.  Porting is an involved process which requires
+considerable programming skills, and it is not recommended for the
+faint-of-heart.  If you have the talent and desire to do a port, contact
+<address@hidden> in order to coordinate the effort.
+
+* Menu:
+
+* Binary Distributions::          Obtaining ready-to-run GNU distributions.
+* Compilation::                   Building GNU Mach from its source code.
+* Configuration::                 Configuration options at compile time.
+* Cross-Compilation::             Building GNU Mach from another system.
+
+
+File: mach.info,  Node: Binary Distributions,  Next: Compilation,  Up: 
Installing
+
+2.1 Binary Distributions
+========================
+
+By far the easiest and best way to install GNU Mach and the operating
+system is to obtain a GNU binary distribution.  The GNU operating system
+consists of GNU Mach, the Hurd, the C library and many applications.
+Without the GNU operating system, you will only have a microkernel,
+which is not very useful by itself, without the other programs.
+
+   Building the whole operating system takes a huge effort, and you are
+well advised to not do it yourself, but to get a binary distribution of
+the GNU operating system.  The distribution also includes a binary of
+the GNU Mach microkernel.
+
+   Information on how to obtain the GNU system can be found in the Hurd
+info manual.
+
+
+File: mach.info,  Node: Compilation,  Next: Configuration,  Prev: Binary 
Distributions,  Up: Installing
+
+2.2 Compilation
+===============
+
+If you already have a running GNU system, and only want to recompile the
+kernel, for example to select a different set of included hardware
+drivers, you can easily do this.  You need the GNU C compiler and MIG,
+the Mach interface generator, which both come in their own packages.
+
+   Building and installing the kernel is as easy as with any other GNU
+software package.  The configure script is used to configure the source
+and set the compile time options.  The compilation is done by running:
+
+     make
+
+   To install the kernel and its header files, just enter the command:
+
+     make install
+
+   This will install the kernel as 'EXEC_PREFIX/boot/gnumach', the
+header files into 'PREFIX/include/', the list of message ids as
+'PREFIX/share/msgids/gnumach.msgids' and the documentation into
+'PREFIX/share/info/'.
+
+   Note that there is also a way to only install the header and
+documentation files without having to actually build the whole package:
+run 'make install-data' after having ran 'configure' to do so.  (This is
+needed for bootstrapping a cross compiler and similar procedures.)
+
+
+File: mach.info,  Node: Configuration,  Next: Cross-Compilation,  Prev: 
Compilation,  Up: Installing
+
+2.3 Configuration
+=================
+
+See the following tables for the options can be passed to the
+'configure' script as command line arguments to control what components
+are built into the kernel, how certain things are configured and so on.
+
+   See the top-level 'INSTALL' file for information about generic
+'configure' options, like under which paths to install the package's
+components.  It also describes how to control the process by setting
+environment variables.
+
+   The file 'i386/README-Drivers' has some i386-specific information for
+device drivers.  You should only need to consult this file in case a
+device driver is not working for you.
+
+2.3.1 Table of configure switches not related to device drivers
+---------------------------------------------------------------
+
+'--enable-kdb'
+     In-kernel debugger.  This is only useful if you actually anticipate
+     debugging the kernel.  It is not enabled by default because it adds
+     considerably to the unpageable memory footprint of the kernel.
+     *Note Kernel Debugger::.
+
+'--enable-pae'
+     PAE (Physical Address Extension) feature ('ix86'-only), which is
+     available on modern 'ix86' processors; on 'ix86-at' disabled by
+     default, on 'ix86-xen' enabled by default.
+
+2.3.2 Turning device drivers on or off
+--------------------------------------
+
+Each device driver has an associated configure switch.  The following
+table indicates whether a device driver is enabled by default or not.
+It also gives -- if possible at all -- the configure switches to use for
+disabling or enabling device drivers, in case you're not satisfied with
+the default choices.  You can specify '--enable-device-drivers=WHICH'
+(where WHICH on 'ix86-at' must be one of 'default', 'qemu', 'none') to
+preset a certain subset of all available device drivers.
+'--enable-device-drivers' is sugar for '--enable-device-drivers=default'
+(and is the implicit default nevertheless) and
+'--disable-device-drivers' is short for '--enable-device-drivers=none'.
+'qemu' will include only the set of device drivers that is useful when
+using the resulting kernel binary to drive a Hurd system in the QEMU
+system emulator.  This is only useful for reducing the kernel build time
+and the kernel image size.
+
+2.3.3 What the configure switches do
+------------------------------------
+
+Each configure switch has two effects.  First, it defines a CPP symbol
+that turns on or off the hooks that autoconfigure the device and add it
+to the list of available devices.  Second, it adds the source code for
+the driver to a make variable so that the code for the driver is
+compiled and linked into the kernel.  Also follow this route to find the
+file(s) which are implementing a certain device driver.
+
+2.3.4 Table of configure switches related to device drivers
+-----------------------------------------------------------
+
+('%d' in the following denotes a unit number, starting with '0'.)
+
+'--disable-kmsg'
+     Kernel message device 'kmsg'.
+
+'--enable-lpr'
+     Parallel port device driver for the 'lpr%d' devices.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-floppy'
+     PC floppy disk controller device driver for the 'fd%d' devices.  On
+     'ix86-at' enabled by 'default' and for 'qemu'.
+
+'--enable-ide'
+     IDE controller device driver for the 'hd%d' and 'hd%ds%d' (disks
+     and their partitions) devices.  On 'ix86-at' enabled by 'default'
+     and for 'qemu'.
+
+   The following options control drivers for various SCSI controller.
+SCSI devices are named 'sd%d' and 'sd%ds$d' (disks and their partitions)
+or 'cd%d' (CD ROMs).
+
+'--enable-advansys'
+     AdvanSys SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-buslogic'
+     BusLogic SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-flashpoint'
+     Only meaningful in conjunction with the above BusLogic SCSI
+     controller device driver.  Enable the FlashPoint support.
+
+'--enable-u14-34f'
+     UltraStor 14F/34F SCSI controller device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-ultrastor'
+     UltraStor SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-aha152x'
+     Adaptec AHA-152x/2825 SCSI controller device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-aha1542'
+     Adaptec AHA-1542 SCSI controller device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-aha1740'
+     Adaptec AHA-1740 SCSI controller device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-aic7xxx'
+     Adaptec AIC7xxx SCSI controller device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-fdomain'
+     Future Domain 16xx SCSI controller device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-in2000'
+     Always IN 2000 SCSI controller device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+'--enable-g_NCR5380'
+     Generic NCR5380/53c400 SCSI controller device driver.
+
+'--enable-NCR53c406a'
+     NCR53c406a SCSI controller device driver.
+
+'--enable-pas16'
+     PAS16 SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-seagate'
+     Seagate ST02 and Future Domain TMC-8xx SCSI controller device
+     driver.  On 'ix86-at' enabled by 'default'.
+
+'--enable-t128'
+     Trantor T128/T128F/T228 SCSI controller device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-53c78xx'
+     NCR53C7,8xx SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-eata_dma'
+     EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) SCSI
+     controller device driver.
+
+'--enable-eata_pio'
+     EATA-PIO (old DPT PM2001, PM2012A) SCSI controller device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-wd7000'
+     WD 7000 SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-eata'
+     EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) SCSI
+     controller device driver.  On 'ix86-at' enabled by 'default'.
+
+'--enable-am53c974'
+     AM53/79C974 SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-dtc'
+     DTC3180/3280 SCSI controller device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+'--enable-ncr53c8xx'
+     NCR53C8XX, dc390w, dc390u, dc390f SCSI controller device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-tmscsim'
+     Tekram DC-390(T) SCSI controller device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-ppa'
+     IOMEGA Parallel Port ZIP drive device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+'--enable-qlogicfas'
+     Qlogic FAS SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-qlogicisp'
+     Qlogic ISP SCSI controller device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-gdth'
+     GDT SCSI Disk Array controller device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+   The following options enable drivers for various ethernet cards.  NIC
+devices are usually named 'eth%d', except for the pocket adaptors.
+
+'--enable-ne'
+     NE2000/NE1000 ISA network card device driver.  On 'ix86-at' enabled
+     by 'default' and for 'qemu'.
+
+'--enable-3c503'
+     3Com 503 (Etherlink II) network card device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-3c509'
+     3Com 509/579 (Etherlink III) network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-wd'
+     WD80X3 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-3c501'
+     3COM 501/Etherlink I network card device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-smc-ultra'
+     SMC Ultra network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-smc-ultra32'
+     SMC Ultra 32 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-hp-plus'
+     HP PCLAN+ (27247B and 27252A) network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-hp'
+     HP PCLAN (27245 and other 27xxx series) network card device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-3c59x'
+     3Com 590/900 series (592/595/597/900/905) "Vortex/Boomerang"
+     network card device driver.  On 'ix86-at' enabled by 'default'.
+
+'--enable-seeq8005'
+     Seeq8005 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-hp100'
+     HP 10/100VG PCLAN (ISA, EISA, PCI) network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-ac3200'
+     Ansel Communications EISA 3200 network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-e2100'
+     Cabletron E21xx network card device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+'--enable-at1700'
+     AT1700 (Fujitsu 86965) network card device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-eth16i'
+     ICL EtherTeam 16i/32 network card device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-znet'
+     Zenith Z-Note network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-eexpress'
+     EtherExpress 16 network card device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+'--enable-eepro'
+     EtherExpressPro network card device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+'--enable-eepro100'
+     Intel EtherExpressPro PCI 10+/100B/100+ network card device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-depca'
+     DEPCA, DE10x, DE200, DE201, DE202, DE210, DE422 network card device
+     driver.  On 'ix86-at' enabled by 'default'.
+
+'--enable-ewrk3'
+     EtherWORKS 3 (DE203, DE204, DE205) network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-de4x5'
+     DE425, DE434, DE435, DE450, DE500 network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-apricot'
+     Apricot XEN-II on board ethernet network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-wavelan'
+     AT&T WaveLAN & DEC RoamAbout DS network card device driver.
+
+'--enable-3c507'
+     3Com 507 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-3c505'
+     3Com 505/Etherlink II network card device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-de600'
+     D-Link DE-600 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-de620'
+     D-Link DE-620 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-sk_g16'
+     Schneider & Koch G16 network card device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-ni52'
+     NI5210 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-ni65'
+     NI6510 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-atp'
+     AT-LAN-TEC/RealTek pocket adaptor network card device driver for
+     the 'atp%d' devices.
+
+'--enable-lance'
+     AMD LANCE and PCnet (AT1500 and NE2100) network card device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-tulip'
+     DECchip Tulip (dc21x4x) PCI network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-fmv18x'
+     FMV-181/182/183/184 network card device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-3c515'
+     3Com 515 ISA Fast EtherLink network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-pcnet32'
+     AMD PCI PCnet32 (PCI bus NE2100 cards) network card device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-ne2k-pci'
+     PCI NE2000 network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-yellowfin'
+     Packet Engines Yellowfin Gigabit-NIC network card device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-rtl8139'
+     RealTek 8129/8139 (not 8019/8029!)  network card device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-epic100'
+     SMC 83c170/175 EPIC/100 (EtherPower II) network card device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-tlan'
+     TI ThunderLAN network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-via-rhine'
+     VIA Rhine network card device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-hamachi'
+     Packet Engines "Hamachi" GNIC-2 Gigabit Ethernet device driver.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-intel-gige'
+     Intel PCI Gigabit Ethernet device driver.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-myson803'
+     Myson MTD803 Ethernet adapter series device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-natsemi'
+     National Semiconductor DP8381x series PCI Ethernet device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-ns820'
+     National Semiconductor DP8382x series PCI Ethernet device driver.
+     On 'ix86-at' enabled by 'default'.
+
+'--enable-starfire'
+     Adaptec Starfire network adapter device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-sundance'
+     Sundance ST201 "Alta" PCI Ethernet device driver.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-winbond-840'
+     Winbond W89c840 PCI Ethernet device driver.  On 'ix86-at' enabled
+     by 'default'.
+
+   The following options either control device drivers for supported
+PCMCIA bridges or control the overall behaviour of the GNU Mach PCMCIA
+core.  To make use of GNU Mach PCMCIA support you need to have the
+corresponding userland applications (GNU Mach Card Services) installed.
+
+'--enable-i82365'
+     Device driver for the Intel 82365 and compatible PC Card
+     controllers, and Yenta-compatible PCI-to-CardBus controllers.  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-pcmcia-isa'
+     ISA bus related bits in the GNU Mach PCMCIA core.  Keeping it
+     enabled is generally a good idea, since it does not only have
+     effect if your PC Card bridge is attached to the ISA bus, but
+     provides more (ISA) interrupts to the Card Services for it to
+     assign to the cards in turn.  On 'ix86-at' enabled by 'default'.
+
+   The following options control device drivers for supported PCMCIA
+Ethernet controllers.  NIC devices are usually named 'eth%d'.
+
+'--enable-3c574_cs'
+     PCMCIA ethernet driver for the 3Com 3c574 "RoadRunner".  On
+     'ix86-at' enabled by 'default'.
+
+'--enable-3c589_cs'
+     Driver for the 3Com 3c589 PCMCIA card.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-axnet_cs'
+     Driver for the Asix AX88190-based PCMCIA cards.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-fmvj18x_cs'
+     Driver for PCMCIA cards with the fmvj18x chipset.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-nmclan_cs'
+     Driver for the New Media Ethernet LAN PCMCIA cards.  On 'ix86-at'
+     enabled by 'default'.
+
+'--enable-pcnet_cs'
+     Driver for NS8390-based PCMCIA cards.  This driver supports the
+     D-Link DE-650 and Linksys EthernetCard cards, the newer D-Link and
+     Linksys combo cards, Accton EN2212 cards, the RPTI EP400, and the
+     PreMax PE-200 in non-shared-memory mode, and the IBM Credit Card
+     Adapter, the NE4100, the Thomas Conrad ethernet card, and the
+     Kingston KNE-PCM/x in shared-memory mode.  It will also handle the
+     Socket EA card in either mode.  On 'ix86-at' enabled by 'default'.
+
+'--enable-smc91c92_cs'
+     Driver for SMC91c92-based PCMCIA cards.  On 'ix86-at' enabled by
+     'default'.
+
+'--enable-xirc2ps_cs'
+     Driver for Xircom CreditCard and Realport PCMCIA ethernet adapters.
+     On 'ix86-at' enabled by 'default'.
+
+   The following options control device drivers for supported PCMCIA
+Wireless LAN network controllers.  NIC devices are usually named
+'eth%d'.
+
+   Please mind, that you need to have some userland applications (the
+GNU Mach Wireless Tools) installed, in order to make use of these
+devices.
+
+'--enable-orinoco_cs'
+     Driver for the Hermes or Prism 2 chipset based PCMCIA wireless
+     adapters, with Lucent/Agere, Intersil or Symbol firmware.  This
+     driver is suitable for PCMCIA wireless adapters, such as the Lucent
+     WavelanIEEE/Orinoco cards and their OEM (Cabletron/EnteraSys
+     RoamAbout 802.11, ELSA Airlancer, Melco Buffalo and others).  It
+     should also be usable on various Prism II based cards such as the
+     Linksys, D-Link and Farallon Skyline.  It should also work on
+     Symbol cards such as the 3Com AirConnect and Ericsson WLAN. On
+     'ix86-at' enabled by 'default'.
+
+
+File: mach.info,  Node: Cross-Compilation,  Prev: Configuration,  Up: 
Installing
+
+2.4 Cross-Compilation
+=====================
+
+Another way to install the kernel is to use an existing operating system
+in order to compile the kernel binary.  This is called
+"cross-compiling", because it is done between two different platforms.
+If the pre-built kernels are not working for you, and you can't ask
+someone to compile a custom kernel for your machine, this is your last
+chance to get a kernel that boots on your hardware.
+
+   Luckily, the kernel does have light dependencies.  You don't even
+need a cross compiler if your build machine has a compiler and is the
+same architecture as the system you want to run GNU Mach on.
+
+   You need a cross-mig, though.
+
+   XXX More info needed.
+
+
+File: mach.info,  Node: Bootstrap,  Next: Inter Process Communication,  Prev: 
Installing,  Up: Top
+
+3 Bootstrap
+***********
+
+Bootstrapping(1) is the procedure by which your machine loads the
+microkernel and transfers control to the operating system.
+
+* Menu:
+
+* Bootloader::                    Starting the microkernel, or other OSes.
+* Modules::                       Starting the first task of the OS.
+
+   ---------- Footnotes ----------
+
+   (1) The term "bootstrapping" refers to a Dutch legend about a boy who
+was able to fly by pulling himself up by his bootstraps.  In computers,
+this term refers to any process where a simple system activates a more
+complicated system.
+
+
+File: mach.info,  Node: Bootloader,  Next: Modules,  Up: Bootstrap
+
+3.1 Bootloader
+==============
+
+The "bootloader" is the first software that runs on your machine.  Many
+hardware architectures have a very simple startup routine which reads a
+very simple bootloader from the beginning of the internal hard disk,
+then transfers control to it.  Other architectures have startup routines
+which are able to understand more of the contents of the hard disk, and
+directly start a more advanced bootloader.
+
+   "GRUB"(1) is the GNU bootloader.  GRUB provides advanced
+functionality, and is capable of loading several different kernels (such
+as Mach, Linux, DOS, and the *BSD family).  *Note Introduction:
+(grub)Top.
+
+   GNU Mach conforms to the Multiboot specification which defines an
+interface between the bootloader and the components that run very early
+at startup.  GNU Mach can be started by any bootloader which supports
+the multiboot standard.  After the bootloader loaded the kernel image to
+a designated address in the system memory, it jumps into the startup
+code of the kernel.  This code initializes the kernel and detects the
+available hardware devices.  Afterwards, the first system task is
+started.  *Note Overview: (multiboot)Top.
+
+   ---------- Footnotes ----------
+
+   (1) The GRand Unified Bootloader, available from
+<http://gnu.org/software/grub/>.
+
+
+File: mach.info,  Node: Modules,  Prev: Bootloader,  Up: Bootstrap
+
+3.2 Modules
+===========
+
+This is outdated.
+
+   Because the microkernel does not provide filesystem support and other
+features necessary to load the first system task from a storage medium,
+the first task is loaded by the bootloader as a module to a specified
+address.  In the GNU system, this first program is the 'serverboot'
+executable.  GNU Mach inserts the host control port and the device
+master port into this task and appends the port numbers to the command
+line before executing it.
+
+   The 'serverboot' program is responsible for loading and executing the
+rest of the Hurd servers.  Rather than containing specific instructions
+for starting the Hurd, it follows general steps given in a user-supplied
+boot script.
+
+   XXX More about boot scripts.
+
+
+File: mach.info,  Node: Inter Process Communication,  Next: Virtual Memory 
Interface,  Prev: Bootstrap,  Up: Top
+
+4 Inter Process Communication
+*****************************
+
+This chapter describes the details of the Mach IPC system.  First the
+actual calls concerned with sending and receiving messages are
+discussed, then the details of the port system are described in detail.
+
+* Menu:
+
+* Major Concepts::                The concepts behind the Mach IPC system.
+* Messaging Interface::           Composing, sending and receiving messages.
+* Port Manipulation Interface::   Manipulating ports, port rights, port sets.
+
+
+File: mach.info,  Node: Major Concepts,  Next: Messaging Interface,  Up: Inter 
Process Communication
+
+4.1 Major Concepts
+==================
+
+The Mach kernel provides message-oriented, capability-based interprocess
+communication.  The interprocess communication (IPC) primitives
+efficiently support many different styles of interaction, including
+remote procedure calls (RPC), object-oriented distributed programming,
+streaming of data, and sending very large amounts of data.
+
+   The IPC primitives operate on three abstractions: messages, ports,
+and port sets.  User tasks access all other kernel services and
+abstractions via the IPC primitives.
+
+   The message primitives let tasks send and receive messages.  Tasks
+send messages to ports.  Messages sent to a port are delivered reliably
+(messages may not be lost) and are received in the order in which they
+were sent.  Messages contain a fixed-size header and a variable amount
+of typed data following the header.  The header describes the
+destination and size of the message.
+
+   The IPC implementation makes use of the VM system to efficiently
+transfer large amounts of data.  The message body can contain the
+address of a region in the sender's address space which should be
+transferred as part of the message.  When a task receives a message
+containing an out-of-line region of data, the data appears in an unused
+portion of the receiver's address space.  This transmission of
+out-of-line data is optimized so that sender and receiver share the
+physical pages of data copy-on-write, and no actual data copy occurs
+unless the pages are written.  Regions of memory up to the size of a
+full address space may be sent in this manner.
+
+   Ports hold a queue of messages.  Tasks operate on a port to send and
+receive messages by exercising capabilities for the port.  Multiple
+tasks can hold send capabilities, or rights, for a port.  Tasks can also
+hold send-once rights, which grant the ability to send a single message.
+Only one task can hold the receive capability, or receive right, for a
+port.  Port rights can be transferred between tasks via messages.  The
+sender of a message can specify in the message body that the message
+contains a port right.  If a message contains a receive right for a
+port, then the receive right is removed from the sender of the message
+and the right is transferred to the receiver of the message.  While the
+receive right is in transit, tasks holding send rights can still send
+messages to the port, and they are queued until a task acquires the
+receive right and uses it to receive the messages.
+
+   Tasks can receive messages from ports and port sets.  The port set
+abstraction allows a single thread to wait for a message from any of
+several ports.  Tasks manipulate port sets with a capability, or
+port-set right, which is taken from the same space as the port
+capabilities.  The port-set right may not be transferred in a message.
+A port set holds receive rights, and a receive operation on a port set
+blocks waiting for a message sent to any of the constituent ports.  A
+port may not belong to more than one port set, and if a port is a member
+of a port set, the holder of the receive right can't receive directly
+from the port.
+
+   Port rights are a secure, location-independent way of naming ports.
+The port queue is a protected data structure, only accessible via the
+kernel's exported message primitives.  Rights are also protected by the
+kernel; there is no way for a malicious user task to guess a port name
+and send a message to a port to which it shouldn't have access.  Port
+rights do not carry any location information.  When a receive right for
+a port moves from task to task, and even between tasks on different
+machines, the send rights for the port remain unchanged and continue to
+function.
+
+
+File: mach.info,  Node: Messaging Interface,  Next: Port Manipulation 
Interface,  Prev: Major Concepts,  Up: Inter Process Communication
+
+4.2 Messaging Interface
+=======================
+
+This section describes how messages are composed, sent and received
+within the Mach IPC system.
+
+* Menu:
+
+* Mach Message Call::             Sending and receiving messages.
+* Message Format::                The format of Mach messages.
+* Exchanging Port Rights::        Sending and receiving port rights.
+* Memory::                        Passing memory regions in messages.
+* Message Send::                  Sending messages.
+* Message Receive::               Receiving messages.
+* Atomicity::                     Atomicity of port rights.
+
+
+File: mach.info,  Node: Mach Message Call,  Next: Message Format,  Up: 
Messaging Interface
+
+4.2.1 Mach Message Call
+-----------------------
+
+To use the 'mach_msg' call, you can include the header files
+'mach/port.h' and 'mach/message.h'.
+
+ -- Function: mach_msg_return_t mach_msg (mach_msg_header_t *MSG,
+          mach_msg_option_t OPTION, mach_msg_size_t SEND_SIZE,
+          mach_msg_size_t RCV_SIZE, mach_port_t RCV_NAME,
+          mach_msg_timeout_t TIMEOUT, mach_port_t NOTIFY)
+     The 'mach_msg' function is used to send and receive messages.  Mach
+     messages contain typed data, which can include port rights and
+     references to large regions of memory.
+
+     MSG is the address of a buffer in the caller's address space.
+     Message buffers should be aligned on long-word boundaries.  The
+     message options OPTION are bit values, combined with bitwise-or.
+     One or both of 'MACH_SEND_MSG' and 'MACH_RCV_MSG' should be used.
+     Other options act as modifiers.  When sending a message, SEND_SIZE
+     specifies the size of the message buffer.  Otherwise zero should be
+     supplied.  When receiving a message, RCV_SIZE specifies the size of
+     the message buffer.  Otherwise zero should be supplied.  When
+     receiving a message, RCV_NAME specifies the port or port set.
+     Otherwise 'MACH_PORT_NULL' should be supplied.  When using the
+     'MACH_SEND_TIMEOUT' and 'MACH_RCV_TIMEOUT' options, TIMEOUT
+     specifies the time in milliseconds to wait before giving up.
+     Otherwise 'MACH_MSG_TIMEOUT_NONE' should be supplied.  When using
+     the 'MACH_SEND_NOTIFY', 'MACH_SEND_CANCEL', and 'MACH_RCV_NOTIFY'
+     options, NOTIFY specifies the port used for the notification.
+     Otherwise 'MACH_PORT_NULL' should be supplied.
+
+     If the option argument is 'MACH_SEND_MSG', it sends a message.  The
+     SEND_SIZE argument specifies the size of the message to send.  The
+     'msgh_remote_port' field of the message header specifies the
+     destination of the message.
+
+     If the option argument is 'MACH_RCV_MSG', it receives a message.
+     The RCV_SIZE argument specifies the size of the message buffer that
+     will receive the message; messages larger than RCV_SIZE are not
+     received.  The RCV_NAME argument specifies the port or port set
+     from which to receive.
+
+     If the option argument is 'MACH_SEND_MSG|MACH_RCV_MSG', then
+     'mach_msg' does both send and receive operations.  If the send
+     operation encounters an error (any return code other than
+     'MACH_MSG_SUCCESS'), then the call returns immediately without
+     attempting the receive operation.  Semantically the combined call
+     is equivalent to separate send and receive calls, but it saves a
+     system call and enables other internal optimizations.
+
+     If the option argument specifies neither 'MACH_SEND_MSG' nor
+     'MACH_RCV_MSG', then 'mach_msg' does nothing.
+
+     Some options, like 'MACH_SEND_TIMEOUT' and 'MACH_RCV_TIMEOUT',
+     share a supporting argument.  If these options are used together,
+     they make independent use of the supporting argument's value.
+
+ -- Data type: mach_msg_timeout_t
+     This is a 'natural_t' used by the timeout mechanism.  The units are
+     milliseconds.  The value to be used when there is no timeout is
+     'MACH_MSG_TIMEOUT_NONE'.
+
+
+File: mach.info,  Node: Message Format,  Next: Exchanging Port Rights,  Prev: 
Mach Message Call,  Up: Messaging Interface
+
+4.2.2 Message Format
+--------------------
+
+A Mach message consists of a fixed size message header, a
+'mach_msg_header_t', followed by zero or more data items.  Data items
+are typed.  Each item has a type descriptor followed by the actual data
+(or the address of the data, for out-of-line memory regions).
+
+   The following data types are related to Mach ports:
+
+ -- Data type: mach_port_t
+     The 'mach_port_t' data type is an unsigned integer type which
+     represents a port name in the task's port name space.  In GNU Mach,
+     this is an 'unsigned int'.
+
+   The following data types are related to Mach messages:
+
+ -- Data type: mach_msg_bits_t
+     The 'mach_msg_bits_t' data type is an 'unsigned int' used to store
+     various flags for a message.
+
+ -- Data type: mach_msg_size_t
+     The 'mach_msg_size_t' data type is an 'unsigned int' used to store
+     the size of a message.
+
+ -- Data type: mach_msg_id_t
+     The 'mach_msg_id_t' data type is an 'integer_t' typically used to
+     convey a function or operation id for the receiver.
+
+ -- Data type: mach_msg_header_t
+     This structure is the start of every message in the Mach IPC
+     system.  It has the following members:
+
+     'mach_msg_bits_t msgh_bits'
+          The 'msgh_bits' field has the following bits defined, all
+          other bits should be zero:
+
+          'MACH_MSGH_BITS_REMOTE_MASK'
+          'MACH_MSGH_BITS_LOCAL_MASK'
+               The remote and local bits encode 'mach_msg_type_name_t'
+               values that specify the port rights in the
+               'msgh_remote_port' and 'msgh_local_port' fields.  The
+               remote value must specify a send or send-once right for
+               the destination of the message.  If the local value
+               doesn't specify a send or send-once right for the
+               message's reply port, it must be zero and msgh_local_port
+               must be 'MACH_PORT_NULL'.
+
+          'MACH_MSGH_BITS_COMPLEX'
+               The complex bit must be specified if the message body
+               contains port rights or out-of-line memory regions.  If
+               it is not specified, then the message body carries no
+               port rights or memory, no matter what the type
+               descriptors may seem to indicate.
+
+          'MACH_MSGH_BITS_REMOTE' and 'MACH_MSGH_BITS_LOCAL' macros
+          return the appropriate 'mach_msg_type_name_t' values, given a
+          'msgh_bits' value.  The 'MACH_MSGH_BITS' macro constructs a
+          value for 'msgh_bits', given two 'mach_msg_type_name_t'
+          values.
+
+     'mach_msg_size_t msgh_size'
+          The 'msgh_size' field in the header of a received message
+          contains the message's size.  The message size, a byte
+          quantity, includes the message header, type descriptors, and
+          in-line data.  For out-of-line memory regions, the message
+          size includes the size of the in-line address, not the size of
+          the actual memory region.  There are no arbitrary limits on
+          the size of a Mach message, the number of data items in a
+          message, or the size of the data items.
+
+     'mach_port_t msgh_remote_port'
+          The 'msgh_remote_port' field specifies the destination port of
+          the message.  The field must carry a legitimate send or
+          send-once right for a port.
+
+     'mach_port_t msgh_local_port'
+          The 'msgh_local_port' field specifies an auxiliary port right,
+          which is conventionally used as a reply port by the recipient
+          of the message.  The field must carry a send right, a
+          send-once right, 'MACH_PORT_NULL', or 'MACH_PORT_DEAD'.
+
+     'mach_port_seqno_t msgh_seqno'
+          The 'msgh_seqno' field provides a sequence number for the
+          message.  It is only valid in received messages; its value in
+          sent messages is overwritten.
+
+     'mach_msg_id_t msgh_id'
+          The 'mach_msg' call doesn't use the 'msgh_id' field, but it
+          conventionally conveys an operation or function id.
+
+ -- Macro: mach_msg_bits_t MACH_MSGH_BITS (mach_msg_type_name_t REMOTE,
+          mach_msg_type_name_t LOCAL)
+     This macro composes two 'mach_msg_type_name_t' values that specify
+     the port rights in the 'msgh_remote_port' and 'msgh_local_port'
+     fields of a 'mach_msg' call into an appropriate 'mach_msg_bits_t'
+     value.
+
+ -- Macro: mach_msg_type_name_t MACH_MSGH_BITS_REMOTE
+          (mach_msg_bits_t BITS)
+     This macro extracts the 'mach_msg_type_name_t' value for the remote
+     port right in a 'mach_msg_bits_t' value.
+
+ -- Macro: mach_msg_type_name_t MACH_MSGH_BITS_LOCAL
+          (mach_msg_bits_t BITS)
+     This macro extracts the 'mach_msg_type_name_t' value for the local
+     port right in a 'mach_msg_bits_t' value.
+
+ -- Macro: mach_msg_bits_t MACH_MSGH_BITS_PORTS (mach_msg_bits_t BITS)
+     This macro extracts the 'mach_msg_bits_t' component consisting of
+     the 'mach_msg_type_name_t' values for the remote and local port
+     right in a 'mach_msg_bits_t' value.
+
+ -- Macro: mach_msg_bits_t MACH_MSGH_BITS_OTHER (mach_msg_bits_t BITS)
+     This macro extracts the 'mach_msg_bits_t' component consisting of
+     everything except the 'mach_msg_type_name_t' values for the remote
+     and local port right in a 'mach_msg_bits_t' value.
+
+   Each data item has a type descriptor, a 'mach_msg_type_t' or a
+'mach_msg_type_long_t'.  The 'mach_msg_type_long_t' type descriptor
+allows larger values for some fields.  The 'msgtl_header' field in the
+long descriptor is only used for its inline, longform, and deallocate
+bits.
+
+ -- Data type: mach_msg_type_name_t
+     This is an 'unsigned int' and can be used to hold the 'msgt_name'
+     component of the 'mach_msg_type_t' and 'mach_msg_type_long_t'
+     structure.
+
+ -- Data type: mach_msg_type_size_t
+     This is an 'unsigned int' and can be used to hold the 'msgt_size'
+     component of the 'mach_msg_type_t' and 'mach_msg_type_long_t'
+     structure.
+
+ -- Data type: mach_msg_type_number_t
+     This is an 'natural_t' and can be used to hold the 'msgt_number'
+     component of the 'mach_msg_type_t' and 'mach_msg_type_long_t'
+     structure.
+
+ -- Data type: mach_msg_type_t
+     This structure has the following members:
+
+     'unsigned int msgt_name : 8'
+          The 'msgt_name' field specifies the data's type.  The
+          following types are predefined:
+
+          'MACH_MSG_TYPE_UNSTRUCTURED'
+          'MACH_MSG_TYPE_BIT'
+          'MACH_MSG_TYPE_BOOLEAN'
+          'MACH_MSG_TYPE_INTEGER_16'
+          'MACH_MSG_TYPE_INTEGER_32'
+          'MACH_MSG_TYPE_CHAR'
+          'MACH_MSG_TYPE_BYTE'
+          'MACH_MSG_TYPE_INTEGER_8'
+          'MACH_MSG_TYPE_REAL'
+          'MACH_MSG_TYPE_STRING'
+          'MACH_MSG_TYPE_STRING_C'
+          'MACH_MSG_TYPE_PORT_NAME'
+
+          The following predefined types specify port rights, and
+          receive special treatment.  The next section discusses these
+          types in detail.  The type 'MACH_MSG_TYPE_PORT_NAME' describes
+          port right names, when no rights are being transferred, but
+          just names.  For this purpose, it should be used in preference
+          to 'MACH_MSG_TYPE_INTEGER_32'.
+
+          'MACH_MSG_TYPE_MOVE_RECEIVE'
+          'MACH_MSG_TYPE_MOVE_SEND'
+          'MACH_MSG_TYPE_MOVE_SEND_ONCE'
+          'MACH_MSG_TYPE_COPY_SEND'
+          'MACH_MSG_TYPE_MAKE_SEND'
+          'MACH_MSG_TYPE_MAKE_SEND_ONCE'
+
+     'msgt_size : 8'
+          The 'msgt_size' field specifies the size of each datum, in
+          bits.  For example, the msgt_size of
+          'MACH_MSG_TYPE_INTEGER_32' data is 32.
+
+     'msgt_number : 12'
+          The 'msgt_number' field specifies how many data elements
+          comprise the data item.  Zero is a legitimate number.
+
+          The total length specified by a type descriptor is
+          '(msgt_size * msgt_number)', rounded up to an integral number
+          of bytes.  In-line data is then padded to an integral number
+          of long-words.  This ensures that type descriptors always
+          start on long-word boundaries.  It implies that message sizes
+          are always an integral multiple of a long-word's size.
+
+     'msgt_inline : 1'
+          The 'msgt_inline' bit specifies, when 'FALSE', that the data
+          actually resides in an out-of-line region.  The address of the
+          memory region (a 'vm_offset_t' or 'vm_address_t') follows the
+          type descriptor in the message body.  The 'msgt_name',
+          'msgt_size', and 'msgt_number' fields describe the memory
+          region, not the address.
+
+     'msgt_longform : 1'
+          The 'msgt_longform' bit specifies, when 'TRUE', that this type
+          descriptor is a 'mach_msg_type_long_t' instead of a
+          'mach_msg_type_t'.  The 'msgt_name', 'msgt_size', and
+          'msgt_number' fields should be zero.  Instead, 'mach_msg' uses
+          the following 'msgtl_name', 'msgtl_size', and 'msgtl_number'
+          fields.
+
+     'msgt_deallocate : 1'
+          The 'msgt_deallocate' bit is used with out-of-line regions.
+          When 'TRUE', it specifies that the memory region should be
+          deallocated from the sender's address space (as if with
+          'vm_deallocate') when the message is sent.
+
+     'msgt_unused : 1'
+          The 'msgt_unused' bit should be zero.
+
+ -- Macro: boolean_t MACH_MSG_TYPE_PORT_ANY (mach_msg_type_name_t type)
+     This macro returns 'TRUE' if the given type name specifies a port
+     type, otherwise it returns 'FALSE'.
+
+ -- Macro: boolean_t MACH_MSG_TYPE_PORT_ANY_SEND (mach_msg_type_name_t
+          type)
+     This macro returns 'TRUE' if the given type name specifies a port
+     type with a send or send-once right, otherwise it returns 'FALSE'.
+
+ -- Macro: boolean_t MACH_MSG_TYPE_PORT_ANY_RIGHT (mach_msg_type_name_t
+          type)
+     This macro returns 'TRUE' if the given type name specifies a port
+     right type which is moved, otherwise it returns 'FALSE'.
+
+ -- Data type: mach_msg_type_long_t
+     This structure has the following members:
+
+     'mach_msg_type_t msgtl_header'
+          Same meaning as 'msgt_header'.
+
+     'unsigned short msgtl_name'
+          Same meaning as 'msgt_name'.
+
+     'unsigned short msgtl_size'
+          Same meaning as 'msgt_size'.
+
+     'unsigned int msgtl_number'
+          Same meaning as 'msgt_number'.
+
+
+File: mach.info,  Node: Exchanging Port Rights,  Next: Memory,  Prev: Message 
Format,  Up: Messaging Interface
+
+4.2.3 Exchanging Port Rights
+----------------------------
+
+Each task has its own space of port rights.  Port rights are named with
+positive integers.  Except for the reserved values 'MACH_PORT_NULL (0)'(1)
+and 'MACH_PORT_DEAD (~0)', this is a full 32-bit name space.  When the
+kernel chooses a name for a new right, it is free to pick any unused
+name (one which denotes no right) in the space.
+
+   There are five basic kinds of rights: receive rights, send rights,
+send-once rights, port-set rights, and dead names.  Dead names are not
+capabilities.  They act as place-holders to prevent a name from being
+otherwise used.
+
+   A port is destroyed, or dies, when its receive right is deallocated.
+When a port dies, send and send-once rights for the port turn into dead
+names.  Any messages queued at the port are destroyed, which deallocates
+the port rights and out-of-line memory in the messages.
+
+   Tasks may hold multiple user-references for send rights and dead
+names.  When a task receives a send right which it already holds, the
+kernel increments the right's user-reference count.  When a task
+deallocates a send right, the kernel decrements its user-reference
+count, and the task only loses the send right when the count goes to
+zero.
+
+   Send-once rights always have a user-reference count of one, although
+a port can have multiple send-once rights, because each send-once right
+held by a task has a different name.  In contrast, when a task holds
+send rights or a receive right for a port, the rights share a single
+name.
+
+   A message body can carry port rights; the 'msgt_name' ('msgtl_name')
+field in a type descriptor specifies the type of port right and how the
+port right is to be extracted from the caller.  The values
+'MACH_PORT_NULL' and 'MACH_PORT_DEAD' are always valid in place of a
+port right in a message body.  In a sent message, the following
+'msgt_name' values denote port rights:
+
+'MACH_MSG_TYPE_MAKE_SEND'
+     The message will carry a send right, but the caller must supply a
+     receive right.  The send right is created from the receive right,
+     and the receive right's make-send count is incremented.
+
+'MACH_MSG_TYPE_COPY_SEND'
+     The message will carry a send right, and the caller should supply a
+     send right.  The user reference count for the supplied send right
+     is not changed.  The caller may also supply a dead name and the
+     receiving task will get 'MACH_PORT_DEAD'.
+
+'MACH_MSG_TYPE_MOVE_SEND'
+     The message will carry a send right, and the caller should supply a
+     send right.  The user reference count for the supplied send right
+     is decremented, and the right is destroyed if the count becomes
+     zero.  Unless a receive right remains, the name becomes available
+     for recycling.  The caller may also supply a dead name, which loses
+     a user reference, and the receiving task will get 'MACH_PORT_DEAD'.
+
+'MACH_MSG_TYPE_MAKE_SEND_ONCE'
+     The message will carry a send-once right, but the caller must
+     supply a receive right.  The send-once right is created from the
+     receive right.
+
+'MACH_MSG_TYPE_MOVE_SEND_ONCE'
+     The message will carry a send-once right, and the caller should
+     supply a send-once right.  The caller loses the supplied send-once
+     right.  The caller may also supply a dead name, which loses a user
+     reference, and the receiving task will get 'MACH_PORT_DEAD'.
+
+'MACH_MSG_TYPE_MOVE_RECEIVE'
+     The message will carry a receive right, and the caller should
+     supply a receive right.  The caller loses the supplied receive
+     right, but retains any send rights with the same name.
+
+   If a message carries a send or send-once right, and the port dies
+while the message is in transit, then the receiving task will get
+'MACH_PORT_DEAD' instead of a right.  The following 'msgt_name' values
+in a received message indicate that it carries port rights:
+
+'MACH_MSG_TYPE_PORT_SEND'
+     This name is an alias for 'MACH_MSG_TYPE_MOVE_SEND'.  The message
+     carried a send right.  If the receiving task already has send
+     and/or receive rights for the port, then that name for the port
+     will be reused.  Otherwise, the new right will have a new name.  If
+     the task already has send rights, it gains a user reference for the
+     right (unless this would cause the user-reference count to
+     overflow).  Otherwise, it acquires the send right, with a
+     user-reference count of one.
+
+'MACH_MSG_TYPE_PORT_SEND_ONCE'
+     This name is an alias for 'MACH_MSG_TYPE_MOVE_SEND_ONCE'.  The
+     message carried a send-once right.  The right will have a new name.
+
+'MACH_MSG_TYPE_PORT_RECEIVE'
+     This name is an alias for 'MACH_MSG_TYPE_MOVE_RECEIVE'.  The
+     message carried a receive right.  If the receiving task already has
+     send rights for the port, then that name for the port will be
+     reused.  Otherwise, the right will have a new name.  The make-send
+     count of the receive right is reset to zero, but the port retains
+     other attributes like queued messages, extant send and send-once
+     rights, and requests for port-destroyed and no-senders
+     notifications.
+
+   When the kernel chooses a new name for a port right, it can choose
+any name, other than 'MACH_PORT_NULL' and 'MACH_PORT_DEAD', which is not
+currently being used for a port right or dead name.  It might choose a
+name which at some previous time denoted a port right, but is currently
+unused.
+
+   ---------- Footnotes ----------
+
+   (1) In the Hurd system, we don't make the assumption that
+'MACH_PORT_NULL' is zero and evaluates to false, but rather compare port
+names to 'MACH_PORT_NULL' explicitly
+
+
+File: mach.info,  Node: Memory,  Next: Message Send,  Prev: Exchanging Port 
Rights,  Up: Messaging Interface
+
+4.2.4 Memory
+------------
+
+A message body can contain the address of a region in the sender's
+address space which should be transferred as part of the message.  The
+message carries a logical copy of the memory, but the kernel uses VM
+techniques to defer any actual page copies.  Unless the sender or the
+receiver modifies the data, the physical pages remain shared.
+
+   An out-of-line transfer occurs when the data's type descriptor
+specifies 'msgt_inline' as 'FALSE'.  The address of the memory region (a
+'vm_offset_t' or 'vm_address_t') should follow the type descriptor in
+the message body.  The type descriptor and the address contribute to the
+message's size ('send_size', 'msgh_size').  The out-of-line data does
+not contribute to the message's size.
+
+   The name, size, and number fields in the type descriptor describe the
+type and length of the out-of-line data, not the in-line address.
+Out-of-line memory frequently requires long type descriptors
+('mach_msg_type_long_t'), because the 'msgt_number' field is too small
+to describe a page of 4K bytes.
+
+   Out-of-line memory arrives somewhere in the receiver's address space
+as new memory.  It has the same inheritance and protection attributes as
+newly 'vm_allocate''d memory.  The receiver has the responsibility of
+deallocating (with 'vm_deallocate') the memory when it is no longer
+needed.  Security-conscious receivers should exercise caution when using
+out-of-line memory from untrustworthy sources, because the memory may be
+backed by an unreliable memory manager.
+
+   Null out-of-line memory is legal.  If the out-of-line region size is
+zero (for example, because 'msgtl_number' is zero), then the region's
+specified address is ignored.  A received null out-of-line memory region
+always has a zero address.
+
+   Unaligned addresses and region sizes that are not page multiples are
+legal.  A received message can also contain memory with unaligned
+addresses and funny sizes.  In the general case, the first and last
+pages in the new memory region in the receiver do not contain only data
+from the sender, but are partly zero.(1)  The received address points to
+the start of the data in the first page.  This possibility doesn't
+complicate deallocation, because 'vm_deallocate' does the right thing,
+rounding the start address down and the end address up to deallocate all
+arrived pages.
+
+   Out-of-line memory has a deallocate option, controlled by the
+'msgt_deallocate' bit.  If it is 'TRUE' and the out-of-line memory
+region is not null, then the region is implicitly deallocated from the
+sender, as if by 'vm_deallocate'.  In particular, the start and end
+addresses are rounded so that every page overlapped by the memory region
+is deallocated.  The use of 'msgt_deallocate' effectively changes the
+memory copy into a memory movement.  In a received message,
+'msgt_deallocate' is 'TRUE' in type descriptors for out-of-line memory.
+
+   Out-of-line memory can carry port rights.
+
+   ---------- Footnotes ----------
+
+   (1) Sending out-of-line memory with a non-page-aligned address, or a
+size which is not a page multiple, works but with a caveat.  The extra
+bytes in the first and last page of the received memory are not zeroed,
+so the receiver can peek at more data than the sender intended to
+transfer.  This might be a security problem for the sender.
+
+
+File: mach.info,  Node: Message Send,  Next: Message Receive,  Prev: Memory,  
Up: Messaging Interface
+
+4.2.5 Message Send
+------------------
+
+The send operation queues a message to a port.  The message carries a
+copy of the caller's data.  After the send, the caller can freely modify
+the message buffer or the out-of-line memory regions and the message
+contents will remain unchanged.
+
+   Message delivery is reliable and sequenced.  Messages are not lost,
+and messages sent to a port, from a single thread, are received in the
+order in which they were sent.
+
+   If the destination port's queue is full, then several things can
+happen.  If the message is sent to a send-once right ('msgh_remote_port'
+carries a send-once right), then the kernel ignores the queue limit and
+delivers the message.  Otherwise the caller blocks until there is room
+in the queue, unless the 'MACH_SEND_TIMEOUT' or 'MACH_SEND_NOTIFY'
+options are used.  If a port has several blocked senders, then any of
+them may queue the next message when space in the queue becomes
+available, with the proviso that a blocked sender will not be
+indefinitely starved.
+
+   These options modify 'MACH_SEND_MSG'.  If 'MACH_SEND_MSG' is not also
+specified, they are ignored.
+
+'MACH_SEND_TIMEOUT'
+     The timeout argument should specify a maximum time (in
+     milliseconds) for the call to block before giving up.(1)  If the
+     message can't be queued before the timeout interval elapses, then
+     the call returns 'MACH_SEND_TIMED_OUT'.  A zero timeout is
+     legitimate.
+
+'MACH_SEND_NOTIFY'
+     The notify argument should specify a receive right for a notify
+     port.  If the send were to block, then instead the message is
+     queued, 'MACH_SEND_WILL_NOTIFY' is returned, and a msg-accepted
+     notification is requested.  If 'MACH_SEND_TIMEOUT' is also
+     specified, then 'MACH_SEND_NOTIFY' doesn't take effect until the
+     timeout interval elapses.
+
+     With 'MACH_SEND_NOTIFY', a task can forcibly queue to a send right
+     one message at a time.  A msg-accepted notification is sent to the
+     notify port when another message can be forcibly queued.  If an
+     attempt is made to use 'MACH_SEND_NOTIFY' before then, the call
+     returns a 'MACH_SEND_NOTIFY_IN_PROGRESS' error.
+
+     The msg-accepted notification carries the name of the send right.
+     If the send right is deallocated before the msg-accepted
+     notification is generated, then the msg-accepted notification
+     carries the value 'MACH_PORT_NULL'.  If the destination port is
+     destroyed before the notification is generated, then a send-once
+     notification is generated instead.
+
+'MACH_SEND_INTERRUPT'
+     If specified, the 'mach_msg' call will return
+     'MACH_SEND_INTERRUPTED' if a software interrupt aborts the call.
+     Otherwise, the send operation will be retried.
+
+'MACH_SEND_CANCEL'
+     The notify argument should specify a receive right for a notify
+     port.  If the send operation removes the destination port right
+     from the caller, and the removed right had a dead-name request
+     registered for it, and notify is the notify port for the dead-name
+     request, then the dead-name request may be silently canceled
+     (instead of resulting in a port-deleted notification).
+
+     This option is typically used to cancel a dead-name request made
+     with the 'MACH_RCV_NOTIFY' option.  It should only be used as an
+     optimization.
+
+   The send operation can generate the following return codes.  These
+return codes imply that the call did nothing:
+
+'MACH_SEND_MSG_TOO_SMALL'
+     The specified send_size was smaller than the minimum size for a
+     message.
+
+'MACH_SEND_NO_BUFFER'
+     A resource shortage prevented the kernel from allocating a message
+     buffer.
+
+'MACH_SEND_INVALID_DATA'
+     The supplied message buffer was not readable.
+
+'MACH_SEND_INVALID_HEADER'
+     The 'msgh_bits' value was invalid.
+
+'MACH_SEND_INVALID_DEST'
+     The 'msgh_remote_port' value was invalid.
+
+'MACH_SEND_INVALID_REPLY'
+     The 'msgh_local_port' value was invalid.
+
+'MACH_SEND_INVALID_NOTIFY'
+     When using 'MACH_SEND_CANCEL', the notify argument did not denote a
+     valid receive right.
+
+   These return codes imply that some or all of the message was
+destroyed:
+
+'MACH_SEND_INVALID_MEMORY'
+     The message body specified out-of-line data that was not readable.
+
+'MACH_SEND_INVALID_RIGHT'
+     The message body specified a port right which the caller didn't
+     possess.
+
+'MACH_SEND_INVALID_TYPE'
+     A type descriptor was invalid.
+
+'MACH_SEND_MSG_TOO_SMALL'
+     The last data item in the message ran over the end of the message.
+
+   These return codes imply that the message was returned to the caller
+with a pseudo-receive operation:
+
+'MACH_SEND_TIMED_OUT'
+     The timeout interval expired.
+
+'MACH_SEND_INTERRUPTED'
+     A software interrupt occurred.
+
+'MACH_SEND_INVALID_NOTIFY'
+     When using 'MACH_SEND_NOTIFY', the notify argument did not denote a
+     valid receive right.
+
+'MACH_SEND_NO_NOTIFY'
+     A resource shortage prevented the kernel from setting up a
+     msg-accepted notification.
+
+'MACH_SEND_NOTIFY_IN_PROGRESS'
+     A msg-accepted notification was already requested, and hasn't yet
+     been generated.
+
+   These return codes imply that the message was queued:
+
+'MACH_SEND_WILL_NOTIFY'
+     The message was forcibly queued, and a msg-accepted notification
+     was requested.
+
+'MACH_MSG_SUCCESS'
+     The message was queued.
+
+   Some return codes, like 'MACH_SEND_TIMED_OUT', imply that the message
+was almost sent, but could not be queued.  In these situations, the
+kernel tries to return the message contents to the caller with a
+pseudo-receive operation.  This prevents the loss of port rights or
+memory which only exist in the message.  For example, a receive right
+which was moved into the message, or out-of-line memory sent with the
+deallocate bit.
+
+   The pseudo-receive operation is very similar to a normal receive
+operation.  The pseudo-receive handles the port rights in the message
+header as if they were in the message body.  They are not reversed.
+After the pseudo-receive, the message is ready to be resent.  If the
+message is not resent, note that out-of-line memory regions may have
+moved and some port rights may have changed names.
+
+   The pseudo-receive operation may encounter resource shortages.  This
+is similar to a 'MACH_RCV_BODY_ERROR' return code from a receive
+operation.  When this happens, the normal send return codes are
+augmented with the 'MACH_MSG_IPC_SPACE', 'MACH_MSG_VM_SPACE',
+'MACH_MSG_IPC_KERNEL', and 'MACH_MSG_VM_KERNEL' bits to indicate the
+nature of the resource shortage.
+
+   The queueing of a message carrying receive rights may create a
+circular loop of receive rights and messages, which can never be
+received.  For example, a message carrying a receive right can be sent
+to that receive right.  This situation is not an error, but the kernel
+will garbage-collect such loops, destroying the messages and ports
+involved.
+
+   ---------- Footnotes ----------
+
+   (1) If MACH_SEND_TIMEOUT is used without MACH_SEND_INTERRUPT, then
+the timeout duration might not be accurate.  When the call is
+interrupted and automatically retried, the original timeout is used.  If
+interrupts occur frequently enough, the timeout interval might never
+expire.
+
+
+File: mach.info,  Node: Message Receive,  Next: Atomicity,  Prev: Message 
Send,  Up: Messaging Interface
+
+4.2.6 Message Receive
+---------------------
+
+The receive operation dequeues a message from a port.  The receiving
+task acquires the port rights and out-of-line memory regions carried in
+the message.
+
+   The 'rcv_name' argument specifies a port or port set from which to
+receive.  If a port is specified, the caller must possess the receive
+right for the port and the port must not be a member of a port set.  If
+no message is present, then the call blocks, subject to the
+'MACH_RCV_TIMEOUT' option.
+
+   If a port set is specified, the call will receive a message sent to
+any of the member ports.  It is permissible for the port set to have no
+member ports, and ports may be added and removed while a receive from
+the port set is in progress.  The received message can come from any of
+the member ports which have messages, with the proviso that a member
+port with messages will not be indefinitely starved.  The
+'msgh_local_port' field in the received message header specifies from
+which port in the port set the message came.
+
+   The 'rcv_size' argument specifies the size of the caller's message
+buffer.  The 'mach_msg' call will not receive a message larger than
+'rcv_size'.  Messages that are too large are destroyed, unless the
+'MACH_RCV_LARGE' option is used.
+
+   The destination and reply ports are reversed in a received message
+header.  The 'msgh_local_port' field names the destination port, from
+which the message was received, and the 'msgh_remote_port' field names
+the reply port right.  The bits in 'msgh_bits' are also reversed.  The
+'MACH_MSGH_BITS_LOCAL' bits have the value 'MACH_MSG_TYPE_PORT_SEND' if
+the message was sent to a send right, and the value
+'MACH_MSG_TYPE_PORT_SEND_ONCE' if was sent to a send-once right.  The
+'MACH_MSGH_BITS_REMOTE' bits describe the reply port right.
+
+   A received message can contain port rights and out-of-line memory.
+The 'msgh_local_port' field does not receive a port right; the act of
+receiving the message destroys the send or send-once right for the
+destination port.  The msgh_remote_port field does name a received port
+right, the reply port right, and the message body can carry port rights
+and memory if 'MACH_MSGH_BITS_COMPLEX' is present in msgh_bits.
+Received port rights and memory should be consumed or deallocated in
+some fashion.
+
+   In almost all cases, 'msgh_local_port' will specify the name of a
+receive right, either 'rcv_name' or if 'rcv_name' is a port set, a
+member of 'rcv_name'.  If other threads are concurrently manipulating
+the receive right, the situation is more complicated.  If the receive
+right is renamed during the call, then 'msgh_local_port' specifies the
+right's new name.  If the caller loses the receive right after the
+message was dequeued from it, then 'mach_msg' will proceed instead of
+returning 'MACH_RCV_PORT_DIED'.  If the receive right was destroyed,
+then 'msgh_local_port' specifies 'MACH_PORT_DEAD'.  If the receive right
+still exists, but isn't held by the caller, then 'msgh_local_port'
+specifies 'MACH_PORT_NULL'.
+
+   Received messages are stamped with a sequence number, taken from the
+port from which the message was received.  (Messages received from a
+port set are stamped with a sequence number from the appropriate member
+port.)  Newly created ports start with a zero sequence number, and the
+sequence number is reset to zero whenever the port's receive right moves
+between tasks.  When a message is dequeued from the port, it is stamped
+with the port's sequence number and the port's sequence number is then
+incremented.  The dequeue and increment operations are atomic, so that
+multiple threads receiving messages from a port can use the 'msgh_seqno'
+field to reconstruct the original order of the messages.
+
+   These options modify 'MACH_RCV_MSG'.  If 'MACH_RCV_MSG' is not also
+specified, they are ignored.
+
+'MACH_RCV_TIMEOUT'
+     The timeout argument should specify a maximum time (in
+     milliseconds) for the call to block before giving up.(1)  If no
+     message arrives before the timeout interval elapses, then the call
+     returns 'MACH_RCV_TIMED_OUT'.  A zero timeout is legitimate.
+
+'MACH_RCV_NOTIFY'
+     The notify argument should specify a receive right for a notify
+     port.  If receiving the reply port creates a new port right in the
+     caller, then the notify port is used to request a dead-name
+     notification for the new port right.
+
+'MACH_RCV_INTERRUPT'
+     If specified, the 'mach_msg' call will return
+     'MACH_RCV_INTERRUPTED' if a software interrupt aborts the call.
+     Otherwise, the receive operation will be retried.
+
+'MACH_RCV_LARGE'
+     If the message is larger than 'rcv_size', then the message remains
+     queued instead of being destroyed.  The call returns
+     'MACH_RCV_TOO_LARGE' and the actual size of the message is returned
+     in the 'msgh_size' field of the message header.
+
+   The receive operation can generate the following return codes.  These
+return codes imply that the call did not dequeue a message:
+
+'MACH_RCV_INVALID_NAME'
+     The specified 'rcv_name' was invalid.
+
+'MACH_RCV_IN_SET'
+     The specified port was a member of a port set.
+
+'MACH_RCV_TIMED_OUT'
+     The timeout interval expired.
+
+'MACH_RCV_INTERRUPTED'
+     A software interrupt occurred.
+
+'MACH_RCV_PORT_DIED'
+     The caller lost the rights specified by 'rcv_name'.
+
+'MACH_RCV_PORT_CHANGED'
+     'rcv_name' specified a receive right which was moved into a port
+     set during the call.
+
+'MACH_RCV_TOO_LARGE'
+     When using 'MACH_RCV_LARGE', and the message was larger than
+     'rcv_size'.  The message is left queued, and its actual size is
+     returned in the 'msgh_size' field of the message buffer.
+
+   These return codes imply that a message was dequeued and destroyed:
+
+'MACH_RCV_HEADER_ERROR'
+     A resource shortage prevented the reception of the port rights in
+     the message header.
+
+'MACH_RCV_INVALID_NOTIFY'
+     When using 'MACH_RCV_NOTIFY', the notify argument did not denote a
+     valid receive right.
+
+'MACH_RCV_TOO_LARGE'
+     When not using 'MACH_RCV_LARGE', a message larger than 'rcv_size'
+     was dequeued and destroyed.
+
+   In these situations, when a message is dequeued and then destroyed,
+the reply port and all port rights and memory in the message body are
+destroyed.  However, the caller receives the message's header, with all
+fields correct, including the destination port but excepting the reply
+port, which is 'MACH_PORT_NULL'.
+
+   These return codes imply that a message was received:
+
+'MACH_RCV_BODY_ERROR'
+     A resource shortage prevented the reception of a port right or
+     out-of-line memory region in the message body.  The message header,
+     including the reply port, is correct.  The kernel attempts to
+     transfer all port rights and memory regions in the body, and only
+     destroys those that can't be transferred.
+
+'MACH_RCV_INVALID_DATA'
+     The specified message buffer was not writable.  The calling task
+     did successfully receive the port rights and out-of-line memory
+     regions in the message.
+
+'MACH_MSG_SUCCESS'
+     A message was received.
+
+   Resource shortages can occur after a message is dequeued, while
+transferring port rights and out-of-line memory regions to the receiving
+task.  The 'mach_msg' call returns 'MACH_RCV_HEADER_ERROR' or
+'MACH_RCV_BODY_ERROR' in this situation.  These return codes always
+carry extra bits (bitwise-ored) that indicate the nature of the resource
+shortage:
+
+'MACH_MSG_IPC_SPACE'
+     There was no room in the task's IPC name space for another port
+     name.
+
+'MACH_MSG_VM_SPACE'
+     There was no room in the task's VM address space for an out-of-line
+     memory region.
+
+'MACH_MSG_IPC_KERNEL'
+     A kernel resource shortage prevented the reception of a port right.
+
+'MACH_MSG_VM_KERNEL'
+     A kernel resource shortage prevented the reception of an
+     out-of-line memory region.
+
+   If a resource shortage prevents the reception of a port right, the
+port right is destroyed and the caller sees the name 'MACH_PORT_NULL'.
+If a resource shortage prevents the reception of an out-of-line memory
+region, the region is destroyed and the caller receives a zero address.
+In addition, the 'msgt_size' ('msgtl_size') field in the data's type
+descriptor is changed to zero.  If a resource shortage prevents the
+reception of out-of-line memory carrying port rights, then the port
+rights are always destroyed if the memory region can not be received.  A
+task never receives port rights or memory regions that it isn't told
+about.
+
+   ---------- Footnotes ----------
+
+   (1) If MACH_RCV_TIMEOUT is used without MACH_RCV_INTERRUPT, then the
+timeout duration might not be accurate.  When the call is interrupted
+and automatically retried, the original timeout is used.  If interrupts
+occur frequently enough, the timeout interval might never expire.
+
+
+File: mach.info,  Node: Atomicity,  Prev: Message Receive,  Up: Messaging 
Interface
+
+4.2.7 Atomicity
+---------------
+
+The 'mach_msg' call handles port rights in a message header atomically.
+Port rights and out-of-line memory in a message body do not enjoy this
+atomicity guarantee.  The message body may be processed front-to-back,
+back-to-front, first out-of-line memory then port rights, in some random
+order, or even atomically.
+
+   For example, consider sending a message with the destination port
+specified as 'MACH_MSG_TYPE_MOVE_SEND' and the reply port specified as
+'MACH_MSG_TYPE_COPY_SEND'.  The same send right, with one
+user-reference, is supplied for both the 'msgh_remote_port' and
+'msgh_local_port' fields.  Because 'mach_msg' processes the message
+header atomically, this succeeds.  If 'msgh_remote_port' were processed
+before 'msgh_local_port', then 'mach_msg' would return
+'MACH_SEND_INVALID_REPLY' in this situation.
+
+   On the other hand, suppose the destination and reply port are both
+specified as 'MACH_MSG_TYPE_MOVE_SEND', and again the same send right
+with one user-reference is supplied for both.  Now the send operation
+fails, but because it processes the header atomically, mach_msg can
+return either 'MACH_SEND_INVALID_DEST' or 'MACH_SEND_INVALID_REPLY'.
+
+   For example, consider receiving a message at the same time another
+thread is deallocating the destination receive right.  Suppose the reply
+port field carries a send right for the destination port.  If the
+deallocation happens before the dequeuing, then the receiver gets
+'MACH_RCV_PORT_DIED'.  If the deallocation happens after the receive,
+then the 'msgh_local_port' and the 'msgh_remote_port' fields both
+specify the same right, which becomes a dead name when the receive right
+is deallocated.  If the deallocation happens between the dequeue and the
+receive, then the 'msgh_local_port' and 'msgh_remote_port' fields both
+specify 'MACH_PORT_DEAD'.  Because the header is processed atomically,
+it is not possible for just one of the two fields to hold
+'MACH_PORT_DEAD'.
+
+   The 'MACH_RCV_NOTIFY' option provides a more likely example.  Suppose
+a message carrying a send-once right reply port is received with
+'MACH_RCV_NOTIFY' at the same time the reply port is destroyed.  If the
+reply port is destroyed first, then 'msgh_remote_port' specifies
+'MACH_PORT_DEAD' and the kernel does not generate a dead-name
+notification.  If the reply port is destroyed after it is received, then
+'msgh_remote_port' specifies a dead name for which the kernel generates
+a dead-name notification.  It is not possible to receive the reply port
+right and have it turn into a dead name before the dead-name
+notification is requested; as part of the message header the reply port
+is received atomically.
+
+
+File: mach.info,  Node: Port Manipulation Interface,  Prev: Messaging 
Interface,  Up: Inter Process Communication
+
+4.3 Port Manipulation Interface
+===============================
+
+This section describes the interface to create, destroy and manipulate
+ports, port rights and port sets.
+
+ -- Data type: ipc_space_t
+     This is a 'task_t' (and as such a 'mach_port_t'), which holds a
+     port name associated with a port that represents an IPC space in
+     the kernel.  An IPC space is used by the kernel to manage the port
+     names and rights available to a task.  The IPC space doesn't get a
+     port name of its own.  Instead the port name of the task containing
+     the IPC space is used to name the IPC space of the task (as is
+     indicated by the fact that the type of 'ipc_space_t' is actually
+     'task_t').
+
+     The IPC spaces of tasks are the only ones accessible outside of the
+     kernel.
+
+* Menu:
+
+* Port Creation::                 How to create new ports and port sets.
+* Port Destruction::              How to destroy ports and port sets.
+* Port Names::                    How to query and manipulate port names.
+* Port Rights::                   How to work with port rights.
+* Ports and other Tasks::         How to move rights between tasks.
+* Receive Rights::                How to work with receive rights.
+* Port Sets::                     How to work with port sets.
+* Request Notifications::         How to request notifications for events.
+
+
+File: mach.info,  Node: Port Creation,  Next: Port Destruction,  Up: Port 
Manipulation Interface
+
+4.3.1 Port Creation
+-------------------
+
+ -- Function: kern_return_t mach_port_allocate (ipc_space_t TASK,
+          mach_port_right_t RIGHT, mach_port_t *NAME)
+     The 'mach_port_allocate' function creates a new right in the
+     specified task.  The new right's name is returned in NAME, which
+     may be any name that wasn't in use.
+
+     The RIGHT argument takes the following values:
+
+     'MACH_PORT_RIGHT_RECEIVE'
+          'mach_port_allocate' creates a port.  The new port is not a
+          member of any port set.  It doesn't have any extant send or
+          send-once rights.  Its make-send count is zero, its sequence
+          number is zero, its queue limit is 'MACH_PORT_QLIMIT_DEFAULT',
+          and it has no queued messages.  NAME denotes the receive right
+          for the new port.
+
+          TASK does not hold send rights for the new port, only the
+          receive right.  'mach_port_insert_right' and
+          'mach_port_extract_right' can be used to convert the receive
+          right into a combined send/receive right.
+
+     'MACH_PORT_RIGHT_PORT_SET'
+          'mach_port_allocate' creates a port set.  The new port set has
+          no members.
+
+     'MACH_PORT_RIGHT_DEAD_NAME'
+          'mach_port_allocate' creates a dead name.  The new dead name
+          has one user reference.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_VALUE' if
+     RIGHT was invalid, 'KERN_NO_SPACE' if there was no room in TASK's
+     IPC name space for another right and 'KERN_RESOURCE_SHORTAGE' if
+     the kernel ran out of memory.
+
+     The 'mach_port_allocate' call is actually an RPC to TASK, normally
+     a send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+ -- Function: mach_port_t mach_reply_port ()
+     The 'mach_reply_port' system call creates a reply port in the
+     calling task.
+
+     'mach_reply_port' creates a port, giving the calling task the
+     receive right for the port.  The call returns the name of the new
+     receive right.
+
+     This is very much like creating a receive right with the
+     'mach_port_allocate' call, with two differences.  First,
+     'mach_reply_port' is a system call and not an RPC (which requires a
+     reply port).  Second, the port created by 'mach_reply_port' may be
+     optimized for use as a reply port.
+
+     The function returns 'MACH_PORT_NULL' if a resource shortage
+     prevented the creation of the receive right.
+
+ -- Function: kern_return_t mach_port_allocate_name (ipc_space_t TASK,
+          mach_port_right_t RIGHT, mach_port_t NAME)
+     The function 'mach_port_allocate_name' creates a new right in the
+     specified task, with a specified name for the new right.  NAME must
+     not already be in use for some right, and it can't be the reserved
+     values 'MACH_PORT_NULL' and 'MACH_PORT_DEAD'.
+
+     The RIGHT argument takes the following values:
+
+     'MACH_PORT_RIGHT_RECEIVE'
+          'mach_port_allocate_name' creates a port.  The new port is not
+          a member of any port set.  It doesn't have any extant send or
+          send-once rights.  Its make-send count is zero, its sequence
+          number is zero, its queue limit is 'MACH_PORT_QLIMIT_DEFAULT',
+          and it has no queued messages.  NAME denotes the receive right
+          for the new port.
+
+          TASK does not hold send rights for the new port, only the
+          receive right.  'mach_port_insert_right' and
+          'mach_port_extract_right' can be used to convert the receive
+          right into a combined send/receive right.
+
+     'MACH_PORT_RIGHT_PORT_SET'
+          'mach_port_allocate_name' creates a port set.  The new port
+          set has no members.
+
+     'MACH_PORT_RIGHT_DEAD_NAME'
+          'mach_port_allocate_name' creates a new dead name.  The new
+          dead name has one user reference.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_VALUE' if
+     RIGHT was invalid or NAME was 'MACH_PORT_NULL' or 'MACH_PORT_DEAD',
+     'KERN_NAME_EXISTS' if NAME was already in use for a port right and
+     'KERN_RESOURCE_SHORTAGE' if the kernel ran out of memory.
+
+     The 'mach_port_allocate_name' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+
+File: mach.info,  Node: Port Destruction,  Next: Port Names,  Prev: Port 
Creation,  Up: Port Manipulation Interface
+
+4.3.2 Port Destruction
+----------------------
+
+ -- Function: kern_return_t mach_port_deallocate (ipc_space_t TASK,
+          mach_port_t NAME)
+     The function 'mach_port_deallocate' releases a user reference for a
+     right in TASK's IPC name space.  It allows a task to release a user
+     reference for a send or send-once right without failing if the port
+     has died and the right is now actually a dead name.
+
+     If NAME denotes a dead name, send right, or send-once right, then
+     the right loses one user reference.  If it only had one user
+     reference, then the right is destroyed.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right and 'KERN_INVALID_RIGHT' if NAME
+     denoted an invalid right.
+
+     The 'mach_port_deallocate' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+ -- Function: kern_return_t mach_port_destroy (ipc_space_t TASK,
+          mach_port_t NAME)
+     The function 'mach_port_destroy' deallocates all rights denoted by
+     a name.  The name becomes immediately available for reuse.
+
+     For most purposes, 'mach_port_mod_refs' and 'mach_port_deallocate'
+     are preferable.
+
+     If NAME denotes a port set, then all members of the port set are
+     implicitly removed from the port set.
+
+     If NAME denotes a receive right that is a member of a port set, the
+     receive right is implicitly removed from the port set.  If there is
+     a port-destroyed request registered for the port, then the receive
+     right is not actually destroyed, but instead is sent in a
+     port-destroyed notification to the backup port.  If there is no
+     registered port-destroyed request, remaining messages queued to the
+     port are destroyed and extant send and send-once rights turn into
+     dead names.  If those send and send-once rights have dead-name
+     requests registered, then dead-name notifications are generated for
+     them.
+
+     If NAME denotes a send-once right, then the send-once right is used
+     to produce a send-once notification for the port.
+
+     If NAME denotes a send-once, send, and/or receive right, and it has
+     a dead-name request registered, then the registered send-once right
+     is used to produce a port-deleted notification for the name.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right.
+
+     The 'mach_port_destroy' call is actually an RPC to TASK, normally a
+     send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+
+File: mach.info,  Node: Port Names,  Next: Port Rights,  Prev: Port 
Destruction,  Up: Port Manipulation Interface
+
+4.3.3 Port Names
+----------------
+
+ -- Function: kern_return_t mach_port_names (ipc_space_t TASK,
+          mach_port_array_t *NAMES, mach_msg_type_number_t *NCOUNT,
+          mach_port_type_array_t *TYPES, mach_msg_type_number_t *TCOUNT)
+     The function 'mach_port_names' returns information about TASK's
+     port name space.  For each name, it also returns what type of
+     rights TASK holds.  (The same information returned by
+     'mach_port_type'.)  NAMES and TYPES are arrays that are
+     automatically allocated when the reply message is received.  The
+     user should 'vm_deallocate' them when the data is no longer needed.
+
+     'mach_port_names' will return in NAMES the names of the ports, port
+     sets, and dead names in the task's port name space, in no
+     particular order and in NCOUNT the number of names returned.  It
+     will return in TYPES the type of each corresponding name, which
+     indicates what kind of rights the task holds with that name.
+     TCOUNT should be the same as NCOUNT.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_RESOURCE_SHORTAGE'
+     if the kernel ran out of memory.
+
+     The 'mach_port_names' call is actually an RPC to TASK, normally a
+     send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+ -- Function: kern_return_t mach_port_type (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_type_t *PTYPE)
+     The function 'mach_port_type' returns information about TASK's
+     rights for a specific name in its port name space.  The returned
+     PTYPE is a bitmask indicating what rights TASK holds for the port,
+     port set or dead name.  The bitmask is composed of the following
+     bits:
+
+     'MACH_PORT_TYPE_SEND'
+          The name denotes a send right.
+
+     'MACH_PORT_TYPE_RECEIVE'
+          The name denotes a receive right.
+
+     'MACH_PORT_TYPE_SEND_ONCE'
+          The name denotes a send-once right.
+
+     'MACH_PORT_TYPE_PORT_SET'
+          The name denotes a port set.
+
+     'MACH_PORT_TYPE_DEAD_NAME'
+          The name is a dead name.
+
+     'MACH_PORT_TYPE_DNREQUEST'
+          A dead-name request has been registered for the right.
+
+     'MACH_PORT_TYPE_MAREQUEST'
+          A msg-accepted request for the right is pending.
+
+     'MACH_PORT_TYPE_COMPAT'
+          The port right was created in the compatibility mode.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid and 'KERN_INVALID_NAME' if
+     NAME did not denote a right.
+
+     The 'mach_port_type' call is actually an RPC to TASK, normally a
+     send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+ -- Function: kern_return_t mach_port_rename (ipc_space_t TASK,
+          mach_port_t OLD_NAME, mach_port_t NEW_NAME)
+     The function 'mach_port_rename' changes the name by which a port,
+     port set, or dead name is known to TASK.  OLD_NAME is the original
+     name and NEW_NAME the new name for the port right.  NEW_NAME must
+     not already be in use, and it can't be the distinguished values
+     'MACH_PORT_NULL' and 'MACH_PORT_DEAD'.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     OLD_NAME did not denote a right, 'KERN_INVALID_VALUE' if NEW_NAME
+     was 'MACH_PORT_NULL' or 'MACH_PORT_DEAD', 'KERN_NAME_EXISTS' if
+     'new_name' already denoted a right and 'KERN_RESOURCE_SHORTAGE' if
+     the kernel ran out of memory.
+
+     The 'mach_port_rename' call is actually an RPC to TASK, normally a
+     send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+
+File: mach.info,  Node: Port Rights,  Next: Ports and other Tasks,  Prev: Port 
Names,  Up: Port Manipulation Interface
+
+4.3.4 Port Rights
+-----------------
+
+ -- Function: kern_return_t mach_port_get_refs (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_right_t RIGHT,
+          mach_port_urefs_t *REFS)
+     The function 'mach_port_get_refs' returns the number of user
+     references a task has for a right.
+
+     The RIGHT argument takes the following values:
+        * 'MACH_PORT_RIGHT_SEND'
+        * 'MACH_PORT_RIGHT_RECEIVE'
+        * 'MACH_PORT_RIGHT_SEND_ONCE'
+        * 'MACH_PORT_RIGHT_PORT_SET'
+        * 'MACH_PORT_RIGHT_DEAD_NAME'
+
+     If NAME denotes a right, but not the type of right specified, then
+     zero is returned.  Otherwise a positive number of user references
+     is returned.  Note that a name may simultaneously denote send and
+     receive rights.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_VALUE' if
+     RIGHT was invalid and 'KERN_INVALID_NAME' if NAME did not denote a
+     right.
+
+     The 'mach_port_get_refs' call is actually an RPC to TASK, normally
+     a send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+ -- Function: kern_return_t mach_port_mod_refs (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_right_t RIGHT,
+          mach_port_delta_t DELTA)
+     The function 'mach_port_mod_refs' requests that the number of user
+     references a task has for a right be changed.  This results in the
+     right being destroyed, if the number of user references is changed
+     to zero.  The task holding the right is TASK, NAME should denote
+     the specified right.  RIGHT denotes the type of right being
+     modified.  DELTA is the signed change to the number of user
+     references.
+
+     The RIGHT argument takes the following values:
+        * 'MACH_PORT_RIGHT_SEND'
+        * 'MACH_PORT_RIGHT_RECEIVE'
+        * 'MACH_PORT_RIGHT_SEND_ONCE'
+        * 'MACH_PORT_RIGHT_PORT_SET'
+        * 'MACH_PORT_RIGHT_DEAD_NAME'
+
+     The number of user references for the right is changed by the
+     amount DELTA, subject to the following restrictions: port sets,
+     receive rights, and send-once rights may only have one user
+     reference.  The resulting number of user references can't be
+     negative.  If the resulting number of user references is zero, the
+     effect is to deallocate the right.  For dead names and send rights,
+     there is an implementation-defined maximum number of user
+     references.
+
+     If the call destroys the right, then the effect is as described for
+     'mach_port_destroy', with the exception that 'mach_port_destroy'
+     simultaneously destroys all the rights denoted by a name, while
+     'mach_port_mod_refs' can only destroy one right.  The name will be
+     available for reuse if it only denoted the one right.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_VALUE' if
+     RIGHT was invalid or the user-reference count would become
+     negative, 'KERN_INVALID_NAME' if NAME did not denote a right,
+     'KERN_INVALID_RIGHT' if NAME denoted a right, but not the specified
+     right and 'KERN_UREFS_OVERFLOW' if the user-reference count would
+     overflow.
+
+     The 'mach_port_mod_refs' call is actually an RPC to TASK, normally
+     a send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+
+File: mach.info,  Node: Ports and other Tasks,  Next: Receive Rights,  Prev: 
Port Rights,  Up: Port Manipulation Interface
+
+4.3.5 Ports and other Tasks
+---------------------------
+
+ -- Function: kern_return_t mach_port_insert_right (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_t RIGHT,
+          mach_msg_type_name_t RIGHT_TYPE)
+     The function MACH_PORT_INSERT_RIGHT inserts into TASK the caller's
+     right for a port, using a specified name for the right in the
+     target task.
+
+     The specified NAME can't be one of the reserved values
+     'MACH_PORT_NULL' or 'MACH_PORT_DEAD'.  The RIGHT can't be
+     'MACH_PORT_NULL' or 'MACH_PORT_DEAD'.
+
+     The argument RIGHT_TYPE specifies a right to be inserted and how
+     that right should be extracted from the caller.  It should be a
+     value appropriate for MSGT_NAME; see 'mach_msg'.
+
+     If RIGHT_TYPE is 'MACH_MSG_TYPE_MAKE_SEND',
+     'MACH_MSG_TYPE_MOVE_SEND', or 'MACH_MSG_TYPE_COPY_SEND', then a
+     send right is inserted.  If the target already holds send or
+     receive rights for the port, then NAME should denote those rights
+     in the target.  Otherwise, NAME should be unused in the target.  If
+     the target already has send rights, then those send rights gain an
+     additional user reference.  Otherwise, the target gains a send
+     right, with a user reference count of one.
+
+     If RIGHT_TYPE is 'MACH_MSG_TYPE_MAKE_SEND_ONCE' or
+     'MACH_MSG_TYPE_MOVE_SEND_ONCE', then a send-once right is inserted.
+     The name should be unused in the target.  The target gains a
+     send-once right.
+
+     If RIGHT_TYPE is 'MACH_MSG_TYPE_MOVE_RECEIVE', then a receive right
+     is inserted.  If the target already holds send rights for the port,
+     then name should denote those rights in the target.  Otherwise,
+     name should be unused in the target.  The receive right is moved
+     into the target task.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_VALUE' if
+     RIGHT was not a port right or NAME was 'MACH_PORT_NULL' or
+     'MACH_PORT_DEAD', 'KERN_NAME_EXISTS' if NAME already denoted a
+     right, 'KERN_INVALID_CAPABILITY' if RIGHT was 'MACH_PORT_NULL' or
+     'MACH_PORT_DEAD' 'KERN_RIGHT_EXISTS' if TASK already had rights for
+     the port, with a different name, 'KERN_UREFS_OVERFLOW' if the
+     user-reference count would overflow and 'KERN_RESOURCE_SHORTAGE' if
+     the kernel ran out of memory.
+
+     The 'mach_port_insert_right' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+ -- Function: kern_return_t mach_port_extract_right (ipc_space_t TASK,
+          mach_port_t NAME, mach_msg_type_name_t DESIRED_TYPE,
+          mach_port_t *RIGHT, mach_msg_type_name_t *ACQUIRED_TYPE)
+     The function MACH_PORT_EXTRACT_RIGHT extracts a port right from the
+     target TASK and returns it to the caller as if the task sent the
+     right voluntarily, using DESIRED_TYPE as the value of MSGT_NAME.
+     *Note Mach Message Call::.
+
+     The returned value of ACQUIRED_TYPE will be
+     'MACH_MSG_TYPE_PORT_SEND' if a send right is extracted,
+     'MACH_MSG_TYPE_PORT_RECEIVE' if a receive right is extracted, and
+     'MACH_MSG_TYPE_PORT_SEND_ONCE' if a send-once right is extracted.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right, 'KERN_INVALID_RIGHT' if NAME denoted a
+     right, but an invalid one, 'KERN_INVALID_VALUE' if DESIRED_TYPE was
+     invalid.
+
+     The 'mach_port_extract_right' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+
+File: mach.info,  Node: Receive Rights,  Next: Port Sets,  Prev: Ports and 
other Tasks,  Up: Port Manipulation Interface
+
+4.3.6 Receive Rights
+--------------------
+
+ -- Data type: mach_port_seqno_t
+     The 'mach_port_seqno_t' data type is an 'unsigned int' which
+     contains the sequence number of a port.
+
+ -- Data type: mach_port_mscount_t
+     The 'mach_port_mscount_t' data type is an 'unsigned int' which
+     contains the make-send count for a port.
+
+ -- Data type: mach_port_msgcount_t
+     The 'mach_port_msgcount_t' data type is an 'unsigned int' which
+     contains a number of messages.
+
+ -- Data type: mach_port_rights_t
+     The 'mach_port_rights_t' data type is an 'unsigned int' which
+     contains a number of rights for a port.
+
+ -- Data type: mach_port_status_t
+     This structure contains some status information about a port, which
+     can be queried with 'mach_port_get_receive_status'.  It has the
+     following members:
+
+     'mach_port_t mps_pset'
+          The containing port set.
+
+     'mach_port_seqno_t mps_seqno'
+          The sequence number.
+
+     'mach_port_mscount_t mps_mscount'
+          The make-send count.
+
+     'mach_port_msgcount_t mps_qlimit'
+          The maximum number of messages in the queue.
+
+     'mach_port_msgcount_t mps_msgcount'
+          The current number of messages in the queue.
+
+     'mach_port_rights_t mps_sorights'
+          The number of send-once rights that exist.
+
+     'boolean_t mps_srights'
+          'TRUE' if send rights exist.
+
+     'boolean_t mps_pdrequest'
+          'TRUE' if port-deleted notification is requested.
+
+     'boolean_t mps_nsrequest'
+          'TRUE' if no-senders notification is requested.
+
+ -- Function: kern_return_t mach_port_get_receive_status
+          (ipc_space_t TASK, mach_port_t NAME,
+          mach_port_status_t *STATUS)
+     The function 'mach_port_get_receive_status' returns the current
+     status of the specified receive right.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right and 'KERN_INVALID_RIGHT' if NAME
+     denoted a right, but not a receive right.
+
+     The 'mach_port_get_receive_status' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+ -- Function: kern_return_t mach_port_set_mscount (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_mscount_t MSCOUNT)
+     The function 'mach_port_set_mscount' changes the make-send count of
+     TASK's receive right named NAME to MSCOUNT.  All values for MSCOUNT
+     are valid.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right and 'KERN_INVALID_RIGHT' if NAME
+     denoted a right, but not a receive right.
+
+     The 'mach_port_set_mscount' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+ -- Function: kern_return_t mach_port_set_qlimit (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_msgcount_t QLIMIT)
+     The function 'mach_port_set_qlimit' changes the queue limit TASK's
+     receive right named NAME to QLIMIT.  Valid values for QLIMIT are
+     between zero and 'MACH_PORT_QLIMIT_MAX', inclusive.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right, 'KERN_INVALID_RIGHT' if NAME denoted a
+     right, but not a receive right and 'KERN_INVALID_VALUE' if QLIMIT
+     was invalid.
+
+     The 'mach_port_set_qlimit' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+ -- Function: kern_return_t mach_port_set_seqno (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_seqno_t SEQNO)
+     The function 'mach_port_set_seqno' changes the sequence number
+     TASK's receive right named NAME to SEQNO.  All sequence number
+     values are valid.  The next message received from the port will be
+     stamped with the specified sequence number.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right and 'KERN_INVALID_RIGHT' if NAME
+     denoted a right, but not a receive right.
+
+     The 'mach_port_set_seqno' call is actually an RPC to TASK, normally
+     a send right for a task port, but potentially any send right.  In
+     addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+
+File: mach.info,  Node: Port Sets,  Next: Request Notifications,  Prev: 
Receive Rights,  Up: Port Manipulation Interface
+
+4.3.7 Port Sets
+---------------
+
+ -- Function: kern_return_t mach_port_get_set_status (ipc_space_t TASK,
+          mach_port_t NAME, mach_port_array_t *MEMBERS,
+          mach_msg_type_number_t *COUNT)
+     The function 'mach_port_get_set_status' returns the members of a
+     port set.  MEMBERS is an array that is automatically allocated when
+     the reply message is received.  The user should 'vm_deallocate' it
+     when the data is no longer needed.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     NAME did not denote a right, 'KERN_INVALID_RIGHT' if NAME denoted a
+     right, but not a receive right and 'KERN_RESOURCE_SHORTAGE' if the
+     kernel ran out of memory.
+
+     The 'mach_port_get_set_status' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+ -- Function: kern_return_t mach_port_move_member (ipc_space_t TASK,
+          mach_port_t MEMBER, mach_port_t AFTER)
+     The function MACH_PORT_MOVE_MEMBER moves the receive right MEMBER
+     into the port set AFTER.  If the receive right is already a member
+     of another port set, it is removed from that set first (the whole
+     operation is atomic).  If the port set is 'MACH_PORT_NULL', then
+     the receive right is not put into a port set, but removed from its
+     current port set.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_NAME' if
+     MEMBER or AFTER did not denote a right, 'KERN_INVALID_RIGHT' if
+     MEMBER denoted a right, but not a receive right or AFTER denoted a
+     right, but not a port set, and 'KERN_NOT_IN_SET' if AFTER was
+     'MACH_PORT_NULL', but 'member' wasn't currently in a port set.
+
+     The 'mach_port_move_member' call is actually an RPC to TASK,
+     normally a send right for a task port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+
+File: mach.info,  Node: Request Notifications,  Prev: Port Sets,  Up: Port 
Manipulation Interface
+
+4.3.8 Request Notifications
+---------------------------
+
+ -- Function: kern_return_t mach_port_request_notification
+          (ipc_space_t TASK, mach_port_t NAME, mach_msg_id_t VARIANT,
+          mach_port_mscount_t SYNC, mach_port_t NOTIFY,
+          mach_msg_type_name_t NOTIFY_TYPE, mach_port_t *PREVIOUS)
+     The function 'mach_port_request_notification' registers a request
+     for a notification and supplies the send-once right NOTIFY to which
+     the notification will be sent.  The NOTIFY_TYPE denotes the IPC
+     type for the send-once right, which can be
+     'MACH_MSG_TYPE_MAKE_SEND_ONCE' or 'MACH_MSG_TYPE_MOVE_SEND_ONCE'.
+     It is an atomic swap, returning the previously registered send-once
+     right (or 'MACH_PORT_NULL' for none) in PREVIOUS.  A previous
+     notification request may be cancelled by providing 'MACH_PORT_NULL'
+     for NOTIFY.
+
+     The VARIANT argument takes the following values:
+
+     'MACH_NOTIFY_PORT_DESTROYED'
+          SYNC must be zero.  The NAME must specify a receive right, and
+          the call requests a port-destroyed notification for the
+          receive right.  If the receive right were to have been
+          destroyed, say by 'mach_port_destroy', then instead the
+          receive right will be sent in a port-destroyed notification to
+          the registered send-once right.
+
+     'MACH_NOTIFY_DEAD_NAME'
+          The call requests a dead-name notification.  NAME specifies
+          send, receive, or send-once rights for a port.  If the port is
+          destroyed (and the right remains, becoming a dead name), then
+          a dead-name notification which carries the name of the right
+          will be sent to the registered send-once right.  If NOTIFY is
+          not null and sync is non-zero, the name may specify a dead
+          name, and a dead-name notification is immediately generated.
+
+          Whenever a dead-name notification is generated, the user
+          reference count of the dead name is incremented.  For example,
+          a send right with two user refs has a registered dead-name
+          request.  If the port is destroyed, the send right turns into
+          a dead name with three user refs (instead of two), and a
+          dead-name notification is generated.
+
+          If the name is made available for reuse, perhaps because of
+          'mach_port_destroy' or 'mach_port_mod_refs', or the name
+          denotes a send-once right which has a message sent to it, then
+          the registered send-once right is used to generate a
+          port-deleted notification.
+
+     'MACH_NOTIFY_NO_SENDERS'
+          The call requests a no-senders notification.  NAME must
+          specify a receive right.  If NOTIFY is not null, and the
+          receive right's make-send count is greater than or equal to
+          the sync value, and it has no extant send rights, than an
+          immediate no-senders notification is generated.  Otherwise the
+          notification is generated when the receive right next loses
+          its last extant send right.  In either case, any previously
+          registered send-once right is returned.
+
+          The no-senders notification carries the value the port's
+          make-send count had when it was generated.  The make-send
+          count is incremented whenever 'MACH_MSG_TYPE_MAKE_SEND' is
+          used to create a new send right from the receive right.  The
+          make-send count is reset to zero when the receive right is
+          carried in a message.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_TASK' if TASK was invalid, 'KERN_INVALID_VALUE' if
+     VARIANT was invalid, 'KERN_INVALID_NAME' if NAME did not denote a
+     right, 'KERN_INVALID_RIGHT' if NAME denoted an invalid right and
+     'KERN_INVALID_CAPABILITY' if NOTIFY was invalid.
+
+     When using 'MACH_NOTIFY_PORT_DESTROYED', the function returns
+     'KERN_INVALID_VALUE' if SYNC wasn't zero.
+
+     When using 'MACH_NOTIFY_DEAD_NAME', the function returns
+     'KERN_RESOURCE_SHORTAGE' if the kernel ran out of memory,
+     'KERN_INVALID_ARGUMENT' if NAME denotes a dead name, but SYNC is
+     zero or NOTIFY is 'MACH_PORT_NULL', and 'KERN_UREFS_OVERFLOW' if
+     NAME denotes a dead name, but generating an immediate dead-name
+     notification would overflow the name's user-reference count.
+
+     The 'mach_port_request_notification' call is actually an RPC to
+     TASK, normally a send right for a task port, but potentially any
+     send right.  In addition to the normal diagnostic return codes from
+     the call's server (normally the kernel), the call may return
+     'mach_msg' return codes.
+
+
+File: mach.info,  Node: Virtual Memory Interface,  Next: External Memory 
Management,  Prev: Inter Process Communication,  Up: Top
+
+5 Virtual Memory Interface
+**************************
+
+ -- Data type: vm_task_t
+     This is a 'task_t' (and as such a 'mach_port_t'), which holds a
+     port name associated with a port that represents a virtual memory
+     map in the kernel.  An virtual memory map is used by the kernel to
+     manage the address space of a task.  The virtual memory map doesn't
+     get a port name of its own.  Instead the port name of the task
+     provided with the virtual memory is used to name the virtual memory
+     map of the task (as is indicated by the fact that the type of
+     'vm_task_t' is actually 'task_t').
+
+     The virtual memory maps of tasks are the only ones accessible
+     outside of the kernel.
+
+* Menu:
+
+* Memory Allocation::             Allocation of new virtual memory.
+* Memory Deallocation::           Freeing unused virtual memory.
+* Data Transfer::                 Reading, writing and copying memory.
+* Memory Attributes::             Tweaking memory regions.
+* Mapping Memory Objects::        How to map memory objects.
+* Memory Statistics::             How to get statistics about memory usage.
+
+
+File: mach.info,  Node: Memory Allocation,  Next: Memory Deallocation,  Up: 
Virtual Memory Interface
+
+5.1 Memory Allocation
+=====================
+
+ -- Function: kern_return_t vm_allocate (vm_task_t TARGET_TASK,
+          vm_address_t *ADDRESS, vm_size_t SIZE, boolean_t ANYWHERE)
+     The function 'vm_allocate' allocates a region of virtual memory,
+     placing it in the specified TASK's address space.
+
+     The starting address is ADDRESS.  If the ANYWHERE option is false,
+     an attempt is made to allocate virtual memory starting at this
+     virtual address.  If this address is not at the beginning of a
+     virtual page, it will be rounded down to one.  If there is not
+     enough space at this address, no memory will be allocated.  If the
+     ANYWHERE option is true, the input value of this address will be
+     ignored, and the space will be allocated wherever it is available.
+     In either case, the address at which memory was actually allocated
+     will be returned in ADDRESS.
+
+     SIZE is the number of bytes to allocate (rounded by the system in a
+     machine dependent way to an integral number of virtual pages).
+
+     If ANYWHERE is true, the kernel should find and allocate any region
+     of the specified size, and return the address of the resulting
+     region in address address, rounded to a virtual page boundary if
+     there is sufficient space.
+
+     The physical memory is not actually allocated until the new virtual
+     memory is referenced.  By default, the kernel rounds all addresses
+     down to the nearest page boundary and all memory sizes up to the
+     nearest page size.  The global variable 'vm_page_size' contains the
+     page size.  'mach_task_self' returns the value of the current task
+     port which should be used as the TARGET_TASK argument in order to
+     allocate memory in the caller's address space.  For languages other
+     than C, these values can be obtained by the calls 'vm_statistics'
+     and 'mach_task_self'.  Initially, the pages of allocated memory
+     will be protected to allow all forms of access, and will be
+     inherited in child tasks as a copy.  Subsequent calls to
+     'vm_protect' and 'vm_inherit' may be used to change these
+     properties.  The allocated region is always zero-filled.
+
+     The function returns 'KERN_SUCCESS' if the memory was successfully
+     allocated, 'KERN_INVALID_ADDRESS' if an invalid address was
+     specified and 'KERN_NO_SPACE' if there was not enough space left to
+     satisfy the request.
+
+
+File: mach.info,  Node: Memory Deallocation,  Next: Data Transfer,  Prev: 
Memory Allocation,  Up: Virtual Memory Interface
+
+5.2 Memory Deallocation
+=======================
+
+ -- Function: kern_return_t vm_deallocate (vm_task_t TARGET_TASK,
+          vm_address_t ADDRESS, vm_size_t SIZE)
+     'vm_deallocate' relinquishes access to a region of a TASK's address
+     space, causing further access to that memory to fail.  This address
+     range will be available for reallocation.  ADDRESS is the starting
+     address, which will be rounded down to a page boundary.  SIZE is
+     the number of bytes to deallocate, which will be rounded up to give
+     a page boundary.  Note, that because of the rounding to virtual
+     page boundaries, more than SIZE bytes may be deallocated.  Use
+     'vm_page_size' or 'vm_statistics' to find out the current virtual
+     page size.
+
+     This call may be used to deallocate memory that was passed to a
+     task in a message (via out of line data).  In that case, the
+     rounding should cause no trouble, since the region of memory was
+     allocated as a set of pages.
+
+     The 'vm_deallocate' call affects only the task specified by the
+     TARGET_TASK.  Other tasks which may have access to this memory may
+     continue to reference it.
+
+     The function returns 'KERN_SUCCESS' if the memory was successfully
+     deallocated and 'KERN_INVALID_ADDRESS' if an invalid or
+     non-allocated address was specified.
+
+
+File: mach.info,  Node: Data Transfer,  Next: Memory Attributes,  Prev: Memory 
Deallocation,  Up: Virtual Memory Interface
+
+5.3 Data Transfer
+=================
+
+ -- Function: kern_return_t vm_read (vm_task_t TARGET_TASK,
+          vm_address_t ADDRESS, vm_size_t SIZE, vm_offset_t *DATA,
+          mach_msg_type_number_t *DATA_COUNT)
+     The function 'vm_read' allows one task's virtual memory to be read
+     by another task.  The TARGET_TASK is the task whose memory is to be
+     read.  ADDRESS is the first address to be read and must be on a
+     page boundary.  SIZE is the number of bytes of data to be read and
+     must be an integral number of pages.  DATA is the array of data
+     copied from the given task, and DATA_COUNT is the size of the data
+     array in bytes (will be an integral number of pages).
+
+     Note that the data array is returned in a newly allocated region;
+     the task reading the data should 'vm_deallocate' this region when
+     it is done with the data.
+
+     The function returns 'KERN_SUCCESS' if the memory was successfully
+     read, 'KERN_INVALID_ADDRESS' if an invalid or non-allocated address
+     was specified or there was not SIZE bytes of data following the
+     address, 'KERN_INVALID_ARGUMENT' if the address does not start on a
+     page boundary or the size is not an integral number of pages,
+     'KERN_PROTECTION_FAILURE' if the address region in the target task
+     is protected against reading and 'KERN_NO_SPACE' if there was not
+     enough room in the callers virtual memory to allocate space for the
+     data to be returned.
+
+ -- Function: kern_return_t vm_write (vm_task_t TARGET_TASK,
+          vm_address_t ADDRESS, vm_offset_t DATA,
+          mach_msg_type_number_t DATA_COUNT)
+     The function 'vm_write' allows a task to write to the virtual
+     memory of TARGET_TASK.  ADDRESS is the starting address in task to
+     be affected.  DATA is an array of bytes to be written, and
+     DATA_COUNT the size of the DATA array.
+
+     The current implementation requires that ADDRESS, DATA and
+     DATA_COUNT all be page-aligned.  Otherwise, 'KERN_INVALID_ARGUMENT'
+     is returned.
+
+     The function returns 'KERN_SUCCESS' if the memory was successfully
+     written, 'KERN_INVALID_ADDRESS' if an invalid or non-allocated
+     address was specified or there was not DATA_COUNT bytes of
+     allocated memory starting at ADDRESS and 'KERN_PROTECTION_FAILURE'
+     if the address region in the target task is protected against
+     writing.
+
+ -- Function: kern_return_t vm_copy (vm_task_t TARGET_TASK,
+          vm_address_t SOURCE_ADDRESS, vm_size_t COUNT,
+          vm_offset_t DEST_ADDRESS)
+     The function 'vm_copy' causes the source memory range to be copied
+     to the destination address.  The source and destination memory
+     ranges may overlap.  The destination address range must already be
+     allocated and writable; the source range must be readable.
+
+     'vm_copy' is equivalent to 'vm_read' followed by 'vm_write'.
+
+     The current implementation requires that ADDRESS, DATA and
+     DATA_COUNT all be page-aligned.  Otherwise, 'KERN_INVALID_ARGUMENT'
+     is returned.
+
+     The function returns 'KERN_SUCCESS' if the memory was successfully
+     written, 'KERN_INVALID_ADDRESS' if an invalid or non-allocated
+     address was specified or there was insufficient memory allocated at
+     one of the addresses and 'KERN_PROTECTION_FAILURE' if the
+     destination region was not writable or the source region was not
+     readable.
+
+
+File: mach.info,  Node: Memory Attributes,  Next: Mapping Memory Objects,  
Prev: Data Transfer,  Up: Virtual Memory Interface
+
+5.4 Memory Attributes
+=====================
+
+ -- Function: kern_return_t vm_region (vm_task_t TARGET_TASK,
+          vm_address_t *ADDRESS, vm_size_t *SIZE, vm_prot_t *PROTECTION,
+          vm_prot_t *MAX_PROTECTION, vm_inherit_t *INHERITANCE,
+          boolean_t *SHARED, memory_object_name_t *OBJECT_NAME,
+          vm_offset_t *OFFSET)
+     The function 'vm_region' returns a description of the specified
+     region of TARGET_TASK's virtual address space.  'vm_region' begins
+     at ADDRESS and looks forward through memory until it comes to an
+     allocated region.  If address is within a region, then that region
+     is used.  Various bits of information about the region are
+     returned.  If ADDRESS was not within a region, then ADDRESS is set
+     to the start of the first region which follows the incoming value.
+     In this way an entire address space can be scanned.
+
+     The SIZE returned is the size of the located region in bytes.
+     PROTECTION is the current protection of the region, MAX_PROTECTION
+     is the maximum allowable protection for this region.  INHERITANCE
+     is the inheritance attribute for this region.  SHARED tells if the
+     region is shared or not.  The port OBJECT_NAME identifies the
+     memory object associated with this region, and OFFSET is the offset
+     into the pager object that this region begins at.
+
+     The function returns 'KERN_SUCCESS' if the memory region was
+     successfully located and the information returned and
+     'KERN_NO_SPACE' if there is no region at or above ADDRESS in the
+     specified task.
+
+ -- Function: kern_return_t vm_protect (vm_task_t TARGET_TASK,
+          vm_address_t ADDRESS, vm_size_t SIZE, boolean_t SET_MAXIMUM,
+          vm_prot_t NEW_PROTECTION)
+     The function 'vm_protect' sets the virtual memory access privileges
+     for a range of allocated addresses in TARGET_TASK's virtual address
+     space.  The protection argument describes a combination of read,
+     write, and execute accesses that should be _permitted_.
+
+     ADDRESS is the starting address, which will be rounded down to a
+     page boundary.  SIZE is the size in bytes of the region for which
+     protection is to change, and will be rounded up to give a page
+     boundary.  If SET_MAXIMUM is set, make the protection change apply
+     to the maximum protection associated with this address range;
+     otherwise, the current protection on this range is changed.  If the
+     maximum protection is reduced below the current protection, both
+     will be changed to reflect the new maximum.  NEW_PROTECTION is the
+     new protection value for this region; a set of: 'VM_PROT_READ',
+     'VM_PROT_WRITE', 'VM_PROT_EXECUTE'.
+
+     The enforcement of virtual memory protection is machine-dependent.
+     Nominally read access requires 'VM_PROT_READ' permission, write
+     access requires 'VM_PROT_WRITE' permission, and execute access
+     requires 'VM_PROT_EXECUTE' permission.  However, some combinations
+     of access rights may not be supported.  In particular, the kernel
+     interface allows write access to require 'VM_PROT_READ' and
+     'VM_PROT_WRITE' permission and execute access to require
+     'VM_PROT_READ' permission.
+
+     The function returns 'KERN_SUCCESS' if the memory was successfully
+     protected, 'KERN_INVALID_ADDRESS' if an invalid or non-allocated
+     address was specified and 'KERN_PROTECTION_FAILURE' if an attempt
+     was made to increase the current or maximum protection beyond the
+     existing maximum protection value.
+
+ -- Function: kern_return_t vm_inherit (vm_task_t TARGET_TASK,
+          vm_address_t ADDRESS, vm_size_t SIZE,
+          vm_inherit_t NEW_INHERITANCE)
+     The function 'vm_inherit' specifies how a region of TARGET_TASK's
+     address space is to be passed to child tasks at the time of task
+     creation.  Inheritance is an attribute of virtual pages, so ADDRESS
+     to start from will be rounded down to a page boundary and SIZE, the
+     size in bytes of the region for which inheritance is to change,
+     will be rounded up to give a page boundary.  How this memory is to
+     be inherited in child tasks is specified by NEW_INHERITANCE.
+     Inheritance is specified by using one of these following three
+     values:
+
+     'VM_INHERIT_SHARE'
+          Child tasks will share this memory with this task.
+
+     'VM_INHERIT_COPY'
+          Child tasks will receive a copy of this region.
+
+     'VM_INHERIT_NONE'
+          This region will be absent from child tasks.
+
+     Setting 'vm_inherit' to 'VM_INHERIT_SHARE' and forking a child task
+     is the only way two Mach tasks can share physical memory.  Remember
+     that all the threads of a given task share all the same memory.
+
+     The function returns 'KERN_SUCCESS' if the memory inheritance was
+     successfully set and 'KERN_INVALID_ADDRESS' if an invalid or
+     non-allocated address was specified.
+
+ -- Function: kern_return_t vm_wire (host_priv_t HOST_PRIV,
+          vm_task_t TARGET_TASK, vm_address_t ADDRESS, vm_size_t SIZE,
+          vm_prot_t ACCESS)
+     The function 'vm_wire' allows privileged applications to control
+     memory pageability.  HOST_PRIV is the privileged host port for the
+     host on which TARGET_TASK resides.  ADDRESS is the starting
+     address, which will be rounded down to a page boundary.  SIZE is
+     the size in bytes of the region for which protection is to change,
+     and will be rounded up to give a page boundary.  ACCESS specifies
+     the types of accesses that must not cause page faults.
+
+     The semantics of a successful 'vm_wire' operation are that memory
+     in the specified range will not cause page faults for any accesses
+     included in access.  Data memory can be made non-pageable (wired)
+     with a access argument of 'VM_PROT_READ | VM_PROT_WRITE'.  A
+     special case is that 'VM_PROT_NONE' makes the memory pageable.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_HOST' if HOST_PRIV was not the privileged host port,
+     'KERN_INVALID_TASK' if TASK was not a valid task,
+     'KERN_INVALID_VALUE' if ACCESS specified an invalid access mode,
+     'KERN_FAILURE' if some memory in the specified range is not present
+     or has an inappropriate protection value, and
+     'KERN_INVALID_ARGUMENT' if unwiring (ACCESS is 'VM_PROT_NONE') and
+     the memory is not already wired.
+
+     The 'vm_wire' call is actually an RPC to HOST_PRIV, normally a send
+     right for a privileged host port, but potentially any send right.
+     In addition to the normal diagnostic return codes from the call's
+     server (normally the kernel), the call may return 'mach_msg' return
+     codes.
+
+ -- Function: kern_return_t vm_machine_attribute (vm_task_t TASK,
+          vm_address_t ADDRESS, vm_size_t SIZE, vm_prot_t ACCESS,
+          vm_machine_attribute_t ATTRIBUTE,
+          vm_machine_attribute_val_t VALUE)
+     The function 'vm_machine_attribute' specifies machine-specific
+     attributes for a VM mapping, such as cachability, migrability,
+     replicability.  This is used on machines that allow the user
+     control over the cache (this is the case for MIPS architectures) or
+     placement of memory pages as in NUMA architectures (Non-Uniform
+     Memory Access time) such as the IBM ACE multiprocessor.
+
+     Machine-specific attributes can be consider additions to the
+     machine-independent ones such as protection and inheritance, but
+     they are not guaranteed to be supported by any given machine.
+     Moreover, implementations of Mach on new architectures might find
+     the need for new attribute types and or values besides the ones
+     defined in the initial implementation.
+
+     The types currently defined are
+     'MATTR_CACHE'
+          Controls caching of memory pages
+
+     'MATTR_MIGRATE'
+          Controls migrability of memory pages
+
+     'MATTR_REPLICATE'
+          Controls replication of memory pages
+
+     Corresponding values, and meaning of a specific call to
+     'vm_machine_attribute'
+     'MATTR_VAL_ON'
+          Enables the attribute.  Being enabled is the default value for
+          any applicable attribute.
+
+     'MATTR_VAL_OFF'
+          Disables the attribute, making memory non-cached, or
+          non-migratable, or non-replicatable.
+
+     'MATTR_VAL_GET'
+          Returns the current value of the attribute for the memory
+          segment.  If the attribute does not apply uniformly to the
+          given range the value returned applies to the initial portion
+          of the segment only.
+
+     'MATTR_VAL_CACHE_FLUSH'
+          Flush the memory pages from the Cache.  The size value in this
+          case might be meaningful even if not a multiple of the page
+          size, depending on the implementation.
+
+     'MATTR_VAL_ICACHE_FLUSH'
+          Same as above, applied to the Instruction Cache alone.
+
+     'MATTR_VAL_DCACHE_FLUSH'
+          Same as above, applied to the Data Cache alone.
+
+     The function returns 'KERN_SUCCESS' if call succeeded, and
+     'KERN_INVALID_ARGUMENT' if TASK is not a task, or ADDRESS and SIZE
+     do not define a valid address range in task, or ATTRIBUTE is not a
+     valid attribute type, or it is not implemented, or VALUE is not a
+     permissible value for attribute.
+
+
+File: mach.info,  Node: Mapping Memory Objects,  Next: Memory Statistics,  
Prev: Memory Attributes,  Up: Virtual Memory Interface
+
+5.5 Mapping Memory Objects
+==========================
+
+ -- Function: kern_return_t vm_map (vm_task_t TARGET_TASK,
+          vm_address_t *ADDRESS, vm_size_t SIZE, vm_address_t MASK,
+          boolean_t ANYWHERE, memory_object_t MEMORY_OBJECT,
+          vm_offset_t OFFSET, boolean_t COPY, vm_prot_t CUR_PROTECTION,
+          vm_prot_t MAX_PROTECTION, vm_inherit_t INHERITANCE)
+     The function 'vm_map' maps a region of virtual memory at the
+     specified address, for which data is to be supplied by the given
+     memory object, starting at the given offset within that object.  In
+     addition to the arguments used in 'vm_allocate', the 'vm_map' call
+     allows the specification of an address alignment parameter, and of
+     the initial protection and inheritance values.
+
+     If the memory object in question is not currently in use, the
+     kernel will perform a 'memory_object_init' call at this time.  If
+     the copy parameter is asserted, the specified region of the memory
+     object will be copied to this address space; changes made to this
+     object by other tasks will not be visible in this mapping, and
+     changes made in this mapping will not be visible to others (or
+     returned to the memory object).
+
+     The 'vm_map' call returns once the mapping is established.
+     Completion of the call does not require any action on the part of
+     the memory manager.
+
+     Warning: Only memory objects that are provided by bona fide memory
+     managers should be used in the 'vm_map' call.  A memory manager
+     must implement the memory object interface described elsewhere in
+     this manual.  If other ports are used, a thread that accesses the
+     mapped virtual memory may become permanently hung or may receive a
+     memory exception.
+
+     TARGET_TASK is the task to be affected.  The starting address is
+     ADDRESS.  If the ANYWHERE option is used, this address is ignored.
+     The address actually allocated will be returned in ADDRESS.  SIZE
+     is the number of bytes to allocate (rounded by the system in a
+     machine dependent way).  The alignment restriction is specified by
+     MASK.  Bits asserted in this mask must not be asserted in the
+     address returned.  If ANYWHERE is set, the kernel should find and
+     allocate any region of the specified size, and return the address
+     of the resulting region in ADDRESS.
+
+     MEMORY_OBJECT is the port that represents the memory object: used
+     by user tasks in 'vm_map'; used by the make requests for data or
+     other management actions.  If this port is 'MEMORY_OBJECT_NULL',
+     then zero-filled memory is allocated instead.  Within a memory
+     object, OFFSET specifies an offset in bytes.  This must be page
+     aligned.  If COPY is set, the range of the memory object should be
+     copied to the target task, rather than mapped read-write.
+
+     The function returns 'KERN_SUCCESS' if the object is mapped,
+     'KERN_NO_SPACE' if no unused region of the task's virtual address
+     space that meets the address, size, and alignment criteria could be
+     found, and 'KERN_INVALID_ARGUMENT' if an invalid argument was
+     provided.
+
+
+File: mach.info,  Node: Memory Statistics,  Prev: Mapping Memory Objects,  Up: 
Virtual Memory Interface
+
+5.6 Memory Statistics
+=====================
+
+ -- Data type: vm_statistics_data_t
+     This structure is returned in VM_STATS by the 'vm_statistics'
+     function and provides virtual memory statistics for the system.  It
+     has the following members:
+
+     'long pagesize'
+          The page size in bytes.
+
+     'long free_count'
+          The number of free pages.
+
+     'long active_count'
+          The umber of active pages.
+
+     'long inactive_count'
+          The number of inactive pages.
+
+     'long wire_count'
+          The number of pages wired down.
+
+     'long zero_fill_count'
+          The number of zero filled pages.
+
+     'long reactivations'
+          The number of reactivated pages.
+
+     'long pageins'
+          The number of pageins.
+
+     'long pageouts'
+          The number of pageouts.
+
+     'long faults'
+          The number of faults.
+
+     'long cow_faults'
+          The number of copy-on-writes.
+
+     'long lookups'
+          The number of object cache lookups.
+
+     'long hits'
+          The number of object cache hits.
+
+ -- Function: kern_return_t vm_statistics (vm_task_t TARGET_TASK,
+          vm_statistics_data_t *VM_STATS)
+     The function 'vm_statistics' returns the statistics about the
+     kernel's use of virtual memory since the kernel was booted.
+     'pagesize' can also be found as a global variable 'vm_page_size'
+     which is set at task initialization and remains constant for the
+     life of the task.
+
+
+File: mach.info,  Node: External Memory Management,  Next: Threads and Tasks,  
Prev: Virtual Memory Interface,  Up: Top
+
+6 External Memory Management
+****************************
+
+* Menu:
+
+* Memory Object Server::          The basics of external memory management.
+* Memory Object Creation::        How new memory objects are created.
+* Memory Object Termination::     How memory objects are terminated.
+* Memory Objects and Data::       Data transfer to and from memory objects.
+* Memory Object Locking::         How memory objects are locked.
+* Memory Object Attributes::      Manipulating attributes of memory objects.
+* Default Memory Manager::        Setting and using the default memory manager.
+
+
+File: mach.info,  Node: Memory Object Server,  Next: Memory Object Creation,  
Up: External Memory Management
+
+6.1 Memory Object Server
+========================
+
+ -- Function: boolean_t memory_object_server (msg_header_t *IN_MSG,
+          msg_header_t *OUT_MSG)
+ -- Function: boolean_t memory_object_default_server
+          (msg_header_t *IN_MSG, msg_header_t *OUT_MSG)
+ -- Function: boolean_t seqnos_memory_object_server
+          (msg_header_t *IN_MSG, msg_header_t *OUT_MSG)
+ -- Function: boolean_t seqnos_memory_object_default_server
+          (msg_header_t *IN_MSG, msg_header_t *OUT_MSG)
+     A memory manager is a server task that responds to specific
+     messages from the kernel in order to handle memory management
+     functions for the kernel.
+
+     In order to isolate the memory manager from the specifics of
+     message formatting, the remote procedure call generator produces a
+     procedure, 'memory_object_server', to handle a received message.
+     This function does all necessary argument handling, and actually
+     calls one of the following functions: 'memory_object_init',
+     'memory_object_data_write', 'memory_object_data_return',
+     'memory_object_data_request', 'memory_object_data_unlock',
+     'memory_object_lock_completed', 'memory_object_copy',
+     'memory_object_terminate'.  The *default memory manager* may get
+     two additional requests from the kernel: 'memory_object_create' and
+     'memory_object_data_initialize'.  The remote procedure call
+     generator produces a procedure 'memory_object_default_server' to
+     handle those functions specific to the default memory manager.
+
+     The 'seqnos_memory_object_server' and
+     'seqnos_memory_object_default_server' differ from
+     'memory_object_server' and 'memory_object_default_server' in that
+     they supply message sequence numbers to the server interfaces.
+     They call the 'seqnos_memory_object_*' functions, which complement
+     the 'memory_object_*' set of functions.
+
+     The return value from the 'memory_object_server' function indicates
+     that the message was appropriate to the memory management interface
+     (returning 'TRUE'), or that it could not handle this message
+     (returning 'FALSE').
+
+     The IN_MSG argument is the message that has been received from the
+     kernel.  The OUT_MSG is a reply message, but this is not used for
+     this server.
+
+     The function returns 'TRUE' to indicate that the message in
+     question was applicable to this interface, and that the appropriate
+     routine was called to interpret the message.  It returns 'FALSE' to
+     indicate that the message did not apply to this interface, and that
+     no other action was taken.
+
+
+File: mach.info,  Node: Memory Object Creation,  Next: Memory Object 
Termination,  Prev: Memory Object Server,  Up: External Memory Management
+
+6.2 Memory Object Creation
+==========================
+
+ -- Function: kern_return_t memory_object_init
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL,
+          memory_object_name_t MEMORY_OBJECT_NAME,
+          vm_size_t MEMORY_OBJECT_PAGE_SIZE)
+ -- Function: kern_return_t seqnos_memory_object_init
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL,
+          memory_object_name_t MEMORY_OBJECT_NAME,
+          vm_size_t MEMORY_OBJECT_PAGE_SIZE)
+     The function 'memory_object_init' serves as a notification that the
+     kernel has been asked to map the given memory object into a task's
+     virtual address space.  Additionally, it provides a port on which
+     the memory manager may issue cache management requests, and a port
+     which the kernel will use to name this data region.  In the event
+     that different each will perform a 'memory_object_init' call with
+     new request and name ports.  The virtual page size that is used by
+     the calling kernel is included for planning purposes.
+
+     When the memory manager is prepared to accept requests for data for
+     this object, it must call 'memory_object_ready' with the attribute.
+     Otherwise the kernel will not process requests on this object.  To
+     reject all mappings of this object, the memory manager may use
+     'memory_object_destroy'.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)
+     MEMORY_OBJECT_NAME is a port used by the kernel to refer to the
+     memory object data in response to 'vm_region' calls.
+     'memory_object_page_size' is the page size to be used by this
+     kernel.  All data sizes in calls involving this kernel must be an
+     integral multiple of the page size.  Note that different kernels,
+     indicated by a different 'memory_control', may have different page
+     sizes.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+ -- Function: kern_return_t memory_object_ready
+          (memory_object_control_t MEMORY_CONTROL,
+          boolean_t MAY_CACHE_OBJECT,
+          memory_object_copy_strategy_t COPY_STRATEGY)
+     The function 'memory_object_ready' informs the kernel that the
+     memory manager is ready to receive data or unlock requests on
+     behalf of the clients.  The argument MEMORY_CONTROL is the port,
+     provided by the kernel in a 'memory_object_init' call, to which
+     cache management requests may be issued.  If MAY_CACHE_OBJECT is
+     set, the kernel may keep data associated with this memory object,
+     even after virtual memory references to it are gone.
+
+     COPY_STRATEGY tells how the kernel should copy regions of the
+     associated memory object.  There are three possible caching
+     strategies: 'MEMORY_OBJECT_COPY_NONE' which specifies that nothing
+     special should be done when data in the object is copied;
+     'MEMORY_OBJECT_COPY_CALL' which specifies that the memory manager
+     should be notified via a 'memory_object_copy' call before any part
+     of the object is copied; and 'MEMORY_OBJECT_COPY_DELAY' which
+     guarantees that the memory manager does not externally modify the
+     data so that the kernel can use its normal copy-on-write
+     algorithms.  'MEMORY_OBJECT_COPY_DELAY' is the strategy most
+     commonly used.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+
+File: mach.info,  Node: Memory Object Termination,  Next: Memory Objects and 
Data,  Prev: Memory Object Creation,  Up: External Memory Management
+
+6.3 Memory Object Termination
+=============================
+
+ -- Function: kern_return_t memory_object_terminate
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL,
+          memory_object_name_t MEMORY_OBJECT_NAME)
+ -- Function: kern_return_t seqnos_memory_object_terminate
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL,
+          memory_object_name_t MEMORY_OBJECT_NAME)
+     The function 'memory_object_terminate' indicates that the kernel
+     has completed its use of the given memory object.  All rights to
+     the memory object control and name ports are included, so that the
+     memory manager can destroy them (using 'mach_port_deallocate')
+     after doing appropriate bookkeeping.  The kernel will terminate a
+     memory object only after all address space mappings of that memory
+     object have been deallocated, or upon explicit request by the
+     memory manager.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)
+     MEMORY_OBJECT_NAME is a port used by the kernel to refer to the
+     memory object data in response to 'vm_region' calls.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+ -- Function: kern_return_t memory_object_destroy
+          (memory_object_control_t MEMORY_CONTROL, kern_return_t REASON)
+     The function 'memory_object_destroy' tells the kernel to shut down
+     the memory object.  As a result of this call the kernel will no
+     longer support paging activity or any 'memory_object' calls on this
+     object, and all rights to the memory object port, the memory
+     control port and the memory name port will be returned to the
+     memory manager in a memory_object_terminate call.  If the memory
+     manager is concerned that any modified cached data be returned to
+     it before the object is terminated, it should call
+     'memory_object_lock_request' with SHOULD_FLUSH set and a lock value
+     of 'VM_PROT_WRITE' before making this call.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  REASON is an error code indicating why the object must
+     be destroyed.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+
+File: mach.info,  Node: Memory Objects and Data,  Next: Memory Object Locking, 
 Prev: Memory Object Termination,  Up: External Memory Management
+
+6.4 Memory Objects and Data
+===========================
+
+ -- Function: kern_return_t memory_object_data_return
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT, boolean_t DIRTY,
+          boolean_t KERNEL_COPY)
+ -- Function: kern_return_t seqnos_memory_object_data_return
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT, boolean_t DIRTY,
+          boolean_t KERNEL_COPY)
+     The function 'memory_object_data_return' provides the memory
+     manager with data that has been modified while cached in physical
+     memory.  Once the memory manager no longer needs this data (e.g.,
+     it has been written to another storage medium), it should be
+     deallocated using 'vm_deallocate'.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)  OFFSET is the
+     offset within a memory object to which this call refers.  This will
+     be page aligned.  DATA is the data which has been modified while
+     cached in physical memory.  DATA_COUNT is the amount of data to be
+     written, in bytes.  This will be an integral number of memory
+     object pages.
+
+     The kernel will also use this call to return precious pages.  If an
+     unmodified precious age is returned, DIRTY is set to 'FALSE',
+     otherwise it is 'TRUE'.  If KERNEL_COPY is 'TRUE', the kernel kept
+     a copy of the page.  Precious data remains precious if the kernel
+     keeps a copy.  The indication that the kernel kept a copy is only a
+     hint if the data is not precious; the cleaned copy may be discarded
+     without further notifying the manager.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+ -- Function: kern_return_t memory_object_data_request
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t LENGTH, vm_prot_t DESIRED_ACCESS)
+ -- Function: kern_return_t seqnos_memory_object_data_request
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t LENGTH, vm_prot_t DESIRED_ACCESS)
+     The function 'memory_object_data_request' is a request for data
+     from the specified memory object, for at least the access
+     specified.  The memory manager is expected to return at least the
+     specified data, with as much access as it can allow, using
+     'memory_object_data_supply'.  If the memory manager is unable to
+     provide the data (for example, because of a hardware error), it may
+     use the 'memory_object_data_error' call.  The
+     'memory_object_data_unavailable' call may be used to tell the
+     kernel to supply zero-filled memory for this region.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)  OFFSET is the
+     offset within a memory object to which this call refers.  This will
+     be page aligned.  LENGTH is the number of bytes of data, starting
+     at OFFSET, to which this call refers.  This will be an integral
+     number of memory object pages.  DESIRED_ACCESS is a protection
+     value describing the memory access modes which must be permitted on
+     the specified cached data.  One or more of: 'VM_PROT_READ',
+     'VM_PROT_WRITE' or 'VM_PROT_EXECUTE'.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+ -- Function: kern_return_t memory_object_data_supply
+          (memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT, vm_prot_t LOCK_VALUE,
+          boolean_t PRECIOUS, mach_port_t REPLY)
+     The function 'memory_object_data_supply' supplies the kernel with
+     data for the specified memory object.  Ordinarily, memory managers
+     should only provide data in response to
+     'memory_object_data_request' calls from the kernel (but they may
+     provide data in advance as desired).  When data already held by
+     this kernel is provided again, the new data is ignored.  The kernel
+     may not provide any data (or protection) consistency among pages
+     with different virtual page alignments within the same object.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  OFFSET is an offset within a memory object in bytes.
+     This must be page aligned.  DATA is the data that is being provided
+     to the kernel.  This is a pointer to the data.  DATA_COUNT is the
+     amount of data to be provided.  Only whole virtual pages of data
+     can be accepted; partial pages will be discarded.
+
+     LOCK_VALUE is a protection value indicating those forms of access
+     that should *not* be permitted to the specified cached data.  The
+     lock values must be one or more of the set: 'VM_PROT_NONE',
+     'VM_PROT_READ', 'VM_PROT_WRITE', 'VM_PROT_EXECUTE' and
+     'VM_PROT_ALL' as defined in 'mach/vm_prot.h'.
+
+     If PRECIOUS is 'FALSE', the kernel treats the data as a temporary
+     and may throw it away if it hasn't been changed.  If the PRECIOUS
+     value is 'TRUE', the kernel treats its copy as a data repository
+     and promises to return it to the manager; the manager may tell the
+     kernel to throw it away instead by flushing and not cleaning the
+     data (see 'memory_object_lock_request').
+
+     If REPLY_TO is not 'MACH_PORT_NULL', the kernel will send a
+     completion message to the provided port (see
+     'memory_object_supply_completed').
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+ -- Function: kern_return_t memory_object_supply_completed
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t LENGTH, kern_return_t RESULT,
+          vm_offset_t ERROR_OFFSET)
+ -- Function: kern_return_t seqnos_memory_object_supply_completed
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t LENGTH, kern_return_t RESULT,
+          vm_offset_t ERROR_OFFSET)
+     The function 'memory_object_supply_completed' indicates that a
+     previous 'memory_object_data_supply' has been completed.  Note that
+     this call is made on whatever port was specified in the
+     'memory_object_data_supply' call; that port need not be the memory
+     object port itself.  No reply is expected after this call.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)  OFFSET is the
+     offset within a memory object to which this call refers.  LENGTH is
+     the length of the data covered by the lock request.  The RESULT
+     parameter indicates what happened during the supply.  If it is not
+     'KERN_SUCCESS', then ERROR_OFFSET identifies the first offset at
+     which a problem occurred.  The pagein operation stopped at this
+     point.  Note that the only failures reported by this mechanism are
+     'KERN_MEMORY_PRESENT'.  All other failures (invalid argument, error
+     on pagein of supplied data in manager's address space) cause the
+     entire operation to fail.
+
+ -- Function: kern_return_t memory_object_data_error
+          (memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t SIZE, kern_return_t REASON)
+     The function 'memory_object_data_error' indicates that the memory
+     manager cannot return the data requested for the given region,
+     specifying a reason for the error.  This is typically used when a
+     hardware error is encountered.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  OFFSET is an offset within a memory object in bytes.
+     This must be page aligned.  DATA is the data that is being provided
+     to the kernel.  This is a pointer to the data.  SIZE is the amount
+     of cached data (starting at OFFSET) to be handled.  This must be an
+     integral number of the memory object page size.  REASON is an error
+     code indicating what type of error occurred.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+ -- Function: kern_return_t memory_object_data_unavailable
+          (memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t SIZE, kern_return_t REASON)
+     The function 'memory_object_data_unavailable' indicates that the
+     memory object does not have data for the given region and that the
+     kernel should provide the data for this range.  The memory manager
+     may use this call in three different situations.
+
+       1. The object was created by 'memory_object_create' and the
+          kernel has not yet provided data for this range (either via a
+          'memory_object_data_initialize', 'memory_object_data_write' or
+          a 'memory_object_data_return' for the object.
+
+       2. The object was created by an 'memory_object_data_copy' and the
+          kernel should copy this region from the original memory
+          object.
+
+       3. The object is a normal user-created memory object and the
+          kernel should supply unlocked zero-filled pages for the range.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  OFFSET is an offset within a memory object, in bytes.
+     This must be page aligned.  SIZE is the amount of cached data
+     (starting at OFFSET) to be handled.  This must be an integral
+     number of the memory object page size.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+ -- Function: kern_return_t memory_object_copy
+          (memory_object_t OLD_MEMORY_OBJECT,
+          memory_object_control_t OLD_MEMORY_CONTROL,
+          vm_offset_t OFFSET, vm_size_t LENGTH,
+          memory_object_t NEW_MEMORY_OBJECT)
+ -- Function: kern_return_t seqnos_memory_object_copy
+          (memory_object_t OLD_MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t OLD_MEMORY_CONTROL,
+          vm_offset_t OFFSET, vm_size_t LENGTH,
+          memory_object_t NEW_MEMORY_OBJECT)
+     The function 'memory_object_copy' indicates that a copy has been
+     made of the specified range of the given original memory object.
+     This call includes only the new memory object itself; a
+     'memory_object_init' call will be made on the new memory object
+     after the currently cached pages of the original object are
+     prepared.  After the memory manager receives the init call, it must
+     reply with the 'memory_object_ready' call to assert the "ready"
+     attribute.  The kernel will use the new memory object, control and
+     name ports to refer to the new copy.
+
+     This call is made when the original memory object had the caching
+     parameter set to 'MEMORY_OBJECT_COPY_CALL' and a user of the object
+     has asked the kernel to copy it.
+
+     Cached pages from the original memory object at the time of the
+     copy operation are handled as follows: Readable pages may be
+     silently copied to the new memory object (with all access
+     permissions).  Pages not copied are locked to prevent write access.
+
+     The new memory object is *temporary*, meaning that the memory
+     manager should not change its contents or allow the memory object
+     to be mapped in another client.  The memory manager may use the
+     'memory_object_data_unavailable' call to indicate that the
+     appropriate pages of the original memory object may be used to
+     fulfill the data request.
+
+     The argument OLD_MEMORY_OBJECT is the port that represents the old
+     memory object data.  OLD_MEMORY_CONTROL is the kernel port for the
+     old object.  OFFSET is the offset within a memory object to which
+     this call refers.  This will be page aligned.  LENGTH is the number
+     of bytes of data, starting at OFFSET, to which this call refers.
+     This will be an integral number of memory object pages.
+     NEW_MEMORY_OBJECT is a new memory object created by the kernel; see
+     synopsis for further description.  Note that all port rights
+     (including receive rights) are included for the new memory object.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+   The remaining interfaces in this section are obsolete.
+
+ -- Function: kern_return_t memory_object_data_write
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT)
+ -- Function: kern_return_t seqnos_memory_object_data_write
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT)
+     The function 'memory_object_data_write' provides the memory manager
+     with data that has been modified while cached in physical memory.
+     It is the old form of 'memory_object_data_return'.  Once the memory
+     manager no longer needs this data (e.g., it has been written to
+     another storage medium), it should be deallocated using
+     'vm_deallocate'.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)  OFFSET is the
+     offset within a memory object to which this call refers.  This will
+     be page aligned.  DATA is the data which has been modified while
+     cached in physical memory.  DATA_COUNT is the amount of data to be
+     written, in bytes.  This will be an integral number of memory
+     object pages.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+ -- Function: kern_return_t memory_object_data_provided
+          (memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT, vm_prot_t LOCK_VALUE)
+     The function 'memory_object_data_provided' supplies the kernel with
+     data for the specified memory object.  It is the old form of
+     'memory_object_data_supply'.  Ordinarily, memory managers should
+     only provide data in response to 'memory_object_data_request' calls
+     from the kernel.  The LOCK_VALUE specifies what type of access will
+     not be allowed to the data range.  The lock values must be one or
+     more of the set: 'VM_PROT_NONE', 'VM_PROT_READ', 'VM_PROT_WRITE',
+     'VM_PROT_EXECUTE' and 'VM_PROT_ALL' as defined in 'mach/vm_prot.h'.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  OFFSET is an offset within a memory object in bytes.
+     This must be page aligned.  DATA is the data that is being provided
+     to the kernel.  This is a pointer to the data.  DATA_COUNT is the
+     amount of data to be provided.  This must be an integral number of
+     memory object pages.  LOCK_VALUE is a protection value indicating
+     those forms of access that should *not* be permitted to the
+     specified cached data.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+
+File: mach.info,  Node: Memory Object Locking,  Next: Memory Object 
Attributes,  Prev: Memory Objects and Data,  Up: External Memory Management
+
+6.5 Memory Object Locking
+=========================
+
+ -- Function: kern_return_t memory_object_lock_request
+          (memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t SIZE, memory_object_return_t SHOULD_CLEAN,
+          boolean_t SHOULD_FLUSH, vm_prot_t LOCK_VALUE,
+          mach_port_t REPLY_TO)
+     The function 'memory_object_lock_request' allows a memory manager
+     to make cache management requests.  As specified in arguments to
+     the call, the kernel will:
+        * clean (i.e., write back using 'memory_object_data_supply' or
+          'memory_object_data_write') any cached data which has been
+          modified since the last time it was written
+
+        * flush (i.e., remove any uses of) that data from memory
+
+        * lock (i.e., prohibit the specified uses of) the cached data
+
+     Locks applied to cached data are not cumulative; new lock values
+     override previous ones.  Thus, data may also be unlocked using this
+     primitive.  The lock values must be one or more of the following
+     values: 'VM_PROT_NONE', 'VM_PROT_READ', 'VM_PROT_WRITE',
+     'VM_PROT_EXECUTE' and 'VM_PROT_ALL' as defined in 'mach/vm_prot.h'.
+
+     Only data which is cached at the time of this call is affected.
+     When a running thread requires a prohibited access to cached data,
+     the kernel will issue a 'memory_object_data_unlock' call specifying
+     the forms of access required.
+
+     Once all of the actions requested by this call have been completed,
+     the kernel issues a 'memory_object_lock_completed' call on the
+     specified reply port.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  OFFSET is an offset within a memory object, in bytes.
+     This must be page aligned.  SIZE is the amount of cached data
+     (starting at OFFSET) to be handled.  This must be an integral
+     number of the memory object page size.  If SHOULD_CLEAN is set,
+     modified data should be written back to the memory manager.  If
+     SHOULD_FLUSH is set, the specified cached data should be
+     invalidated, and all uses of that data should be revoked.
+     LOCK_VALUE is a protection value indicating those forms of access
+     that should *not* be permitted to the specified cached data.
+     REPLY_TO is a port on which a 'memory_object_lock_completed' call
+     should be issued, or 'MACH_PORT_NULL' if no acknowledgement is
+     desired.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+ -- Function: kern_return_t memory_object_lock_completed
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t LENGTH)
+ -- Function: kern_return_t seqnos_memory_object_lock_completed
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t LENGTH)
+     The function 'memory_object_lock_completed' indicates that a
+     previous 'memory_object_lock_request' has been completed.  Note
+     that this call is made on whatever port was specified in the
+     'memory_object_lock_request' call; that port need not be the memory
+     object port itself.  No reply is expected after this call.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)  OFFSET is the
+     offset within a memory object to which this call refers.  LENGTH is
+     the length of the data covered by the lock request.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+ -- Function: kern_return_t memory_object_data_unlock
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t LENGTH, vm_prot_t DESIRED_ACCESS)
+ -- Function: kern_return_t seqnos_memory_object_data_unlock
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_size_t LENGTH, vm_prot_t DESIRED_ACCESS)
+     The function 'memory_object_data_unlock' is a request that the
+     memory manager permit at least the desired access to the specified
+     data cached by the kernel.  A call to 'memory_object_lock_request'
+     is expected in response.
+
+     The argument MEMORY_OBJECT is the port that represents the memory
+     object data, as supplied to the kernel in a 'vm_map' call.
+     MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)  OFFSET is the
+     offset within a memory object to which this call refers.  This will
+     be page aligned.  LENGTH is the number of bytes of data, starting
+     at OFFSET, to which this call refers.  This will be an integral
+     number of memory object pages.  DESIRED_ACCESS a protection value
+     describing the memory access modes which must be permitted on the
+     specified cached data.  One or more of: 'VM_PROT_READ',
+     'VM_PROT_WRITE' or 'VM_PROT_EXECUTE'.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+
+File: mach.info,  Node: Memory Object Attributes,  Next: Default Memory 
Manager,  Prev: Memory Object Locking,  Up: External Memory Management
+
+6.6 Memory Object Attributes
+============================
+
+ -- Function: kern_return_t memory_object_get_attributes
+          (memory_object_control_t MEMORY_CONTROL,
+          boolean_t *OBJECT_READY, boolean_t *MAY_CACHE_OBJECT,
+          memory_object_copy_strategy_t *COPY_STRATEGY)
+     The function 'memory_object_get_attribute' retrieves the current
+     attributes associated with the memory object.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  If OBJECT_READY is set, the kernel may issue new data
+     and unlock requests on the associated memory object.  If
+     MAY_CACHE_OBJECT is set, the kernel may keep data associated with
+     this memory object, even after virtual memory references to it are
+     gone.  COPY_STRATEGY tells how the kernel should copy regions of
+     the associated memory object.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+ -- Function: kern_return_t memory_object_change_attributes
+          (memory_object_control_t MEMORY_CONTROL,
+          boolean_t MAY_CACHE_OBJECT,
+          memory_object_copy_strategy_t COPY_STRATEGY,
+          mach_port_t REPLY_TO)
+     The function 'memory_object_change_attribute' sets
+     performance-related attributes for the specified memory object.  If
+     the caching attribute is asserted, the kernel is permitted (and
+     encouraged) to maintain cached data for this memory object even
+     after no virtual address space contains this data.
+
+     There are three possible caching strategies:
+     'MEMORY_OBJECT_COPY_NONE' which specifies that nothing special
+     should be done when data in the object is copied;
+     'MEMORY_OBJECT_COPY_CALL' which specifies that the memory manager
+     should be notified via a 'memory_object_copy' call before any part
+     of the object is copied; and 'MEMORY_OBJECT_COPY_DELAY' which
+     guarantees that the memory manager does not externally modify the
+     data so that the kernel can use its normal copy-on-write
+     algorithms.  'MEMORY_OBJECT_COPY_DELAY' is the strategy most
+     commonly used.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  If MAY_CACHE_OBJECT is set, the kernel may keep data
+     associated with this memory object, even after virtual memory
+     references to it are gone.  COPY_STRATEGY tells how the kernel
+     should copy regions of the associated memory object.  REPLY_TO is a
+     port on which a 'memory_object_change_completed' call will be
+     issued upon completion of the attribute change, or 'MACH_PORT_NULL'
+     if no acknowledgement is desired.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+ -- Function: kern_return_t memory_object_change_completed
+          (memory_object_t MEMORY_OBJECT, boolean_t MAY_CACHE_OBJECT,
+          memory_object_copy_strategy_t COPY_STRATEGY)
+ -- Function: kern_return_t seqnos_memory_object_change_completed
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          boolean_t MAY_CACHE_OBJECT,
+          memory_object_copy_strategy_t COPY_STRATEGY)
+     The function 'memory_object_change_completed' indicates the
+     completion of an attribute change call.
+
+   The following interface is obsoleted by 'memory_object_ready' and
+'memory_object_change_attributes'.  If the old form
+'memory_object_set_attributes' is used to make a memory object ready,
+the kernel will write back data using the old 'memory_object_data_write'
+interface rather than 'memory_object_data_return'..
+
+ -- Function: kern_return_t memory_object_set_attributes
+          (memory_object_control_t MEMORY_CONTROL, boolean OBJECT_READY,
+          boolean_t MAY_CACHE_OBJECT,
+          memory_object_copy_strategy_t COPY_STRATEGY)
+     The function 'memory_object_set_attribute' controls how the memory
+     object.  The kernel will only make data or unlock requests when the
+     ready attribute is asserted.  If the caching attribute is asserted,
+     the kernel is permitted (and encouraged) to maintain cached data
+     for this memory object even after no virtual address space contains
+     this data.
+
+     There are three possible caching strategies:
+     'MEMORY_OBJECT_COPY_NONE' which specifies that nothing special
+     should be done when data in the object is copied;
+     'MEMORY_OBJECT_COPY_CALL' which specifies that the memory manager
+     should be notified via a 'memory_object_copy' call before any part
+     of the object is copied; and 'MEMORY_OBJECT_COPY_DELAY' which
+     guarantees that the memory manager does not externally modify the
+     data so that the kernel can use its normal copy-on-write
+     algorithms.  'MEMORY_OBJECT_COPY_DELAY' is the strategy most
+     commonly used.
+
+     The argument MEMORY_CONTROL is the port, provided by the kernel in
+     a 'memory_object_init' call, to which cache management requests may
+     be issued.  If OBJECT_READY is set, the kernel may issue new data
+     and unlock requests on the associated memory object.  If
+     MAY_CACHE_OBJECT is set, the kernel may keep data associated with
+     this memory object, even after virtual memory references to it are
+     gone.  COPY_STRATEGY tells how the kernel should copy regions of
+     the associated memory object.
+
+     This routine does not receive a reply message (and consequently has
+     no return value), so only message transmission errors apply.
+
+
+File: mach.info,  Node: Default Memory Manager,  Prev: Memory Object 
Attributes,  Up: External Memory Management
+
+6.7 Default Memory Manager
+==========================
+
+ -- Function: kern_return_t vm_set_default_memory_manager (host_t HOST,
+          mach_port_t *DEFAULT_MANAGER)
+     The function 'vm_set_default_memory_manager' sets the kernel's
+     default memory manager.  It sets the port to which newly-created
+     temporary memory objects are delivered by 'memory_object_create' to
+     the host.  The old memory manager port is returned.  If
+     DEFAULT_MANAGER is 'MACH_PORT_NULL' then this routine just returns
+     the current default manager port without changing it.
+
+     The argument HOST is a task port to the kernel whose default memory
+     manager is to be changed.  DEFAULT_MANAGER is an in/out parameter.
+     As input, DEFAULT_MANAGER is the port that the new memory manager
+     is listening on for 'memory_object_create' calls.  As output, it is
+     the old default memory manager's port.
+
+     The function returns 'KERN_SUCCESS' if the new memory manager is
+     installed, and 'KERN_INVALID_ARGUMENT' if this task does not have
+     the privileges required for this call.
+
+ -- Function: kern_return_t memory_object_create
+          (memory_object_t OLD_MEMORY_OBJECT,
+          memory_object_t NEW_MEMORY_OBJECT, vm_size_t NEW_OBJECT_SIZE,
+          memory_object_control_t NEW_CONTROL,
+          memory_object_name_t NEW_NAME, vm_size_t NEW_PAGE_SIZE)
+ -- Function: kern_return_t seqnos_memory_object_create
+          (memory_object_t OLD_MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_t NEW_MEMORY_OBJECT, vm_size_t NEW_OBJECT_SIZE,
+          memory_object_control_t NEW_CONTROL,
+          memory_object_name_t NEW_NAME, vm_size_t NEW_PAGE_SIZE)
+     The function 'memory_object_create' is a request that the given
+     memory manager accept responsibility for the given memory object
+     created by the kernel.  This call will only be made to the system
+     *default memory manager*.  The memory object in question initially
+     consists of zero-filled memory; only memory pages that are actually
+     written will ever be provided to 'memory_object_data_request'
+     calls, the default memory manager must use
+     'memory_object_data_unavailable' for any pages that have not
+     previously been written.
+
+     No reply is expected after this call.  Since this call is directed
+     to the default memory manager, the kernel assumes that it will be
+     ready to handle data requests to this object and does not need the
+     confirmation of a 'memory_object_set_attributes' call.
+
+     The argument OLD_MEMORY_OBJECT is a memory object provided by the
+     default memory manager on which the kernel can make
+     'memory_object_create' calls.  NEW_MEMORY_OBJECT is a new memory
+     object created by the kernel; see synopsis for further description.
+     Note that all port rights (including receive rights) are included
+     for the new memory object.  NEW_OBJECT_SIZE is the maximum size of
+     the new object.  NEW_CONTROL is a port, created by the kernel, on
+     which a memory manager may issue cache management requests for the
+     new object.  NEW_NAME a port used by the kernel to refer to the new
+     memory object data in response to 'vm_region' calls.  NEW_PAGE_SIZE
+     is the page size to be used by this kernel.  All data sizes in
+     calls involving this kernel must be an integral multiple of the
+     page size.  Note that different kernels, indicated by different a
+     'memory_control', may have different page sizes.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+ -- Function: kern_return_t memory_object_data_initialize
+          (memory_object_t MEMORY_OBJECT,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT)
+ -- Function: kern_return_t seqnos_memory_object_data_initialize
+          (memory_object_t MEMORY_OBJECT, mach_port_seqno_t SEQNO,
+          memory_object_control_t MEMORY_CONTROL, vm_offset_t OFFSET,
+          vm_offset_t DATA, vm_size_t DATA_COUNT)
+     The function 'memory_object_data_initialize' provides the memory
+     manager with initial data for a kernel-created memory object.  If
+     the memory manager already has been supplied data (by a previous
+     'memory_object_data_initialize', 'memory_object_data_write' or
+     'memory_object_data_return'), then this data should be ignored.
+     Otherwise, this call behaves exactly as does
+     'memory_object_data_return' on memory objects created by the kernel
+     via 'memory_object_create' and thus will only be made to default
+     memory managers.  This call will not be made on objects created via
+     'memory_object_copy'.
+
+     The argument MEMORY_OBJECT the port that represents the memory
+     object data, as supplied by the kernel in a 'memory_object_create'
+     call.  MEMORY_CONTROL is the request port to which a response is
+     requested.  (In the event that a memory object has been supplied to
+     more than one the kernel that has made the request.)  OFFSET is the
+     offset within a memory object to which this call refers.  This will
+     be page aligned.  DATA is the data which has been modified while
+     cached in physical memory.  DATA_COUNT is the amount of data to be
+     written, in bytes.  This will be an integral number of memory
+     object pages.
+
+     The function should return 'KERN_SUCCESS', but since this routine
+     is called by the kernel, which does not wait for a reply message,
+     this value is ignored.
+
+
+File: mach.info,  Node: Threads and Tasks,  Next: Host Interface,  Prev: 
External Memory Management,  Up: Top
+
+7 Threads and Tasks
+*******************
+
+* Menu:
+
+* Thread Interface::              Manipulating threads.
+* Task Interface::                Manipulating tasks.
+* Profiling::                     Profiling threads and tasks.
+
+
+File: mach.info,  Node: Thread Interface,  Next: Task Interface,  Up: Threads 
and Tasks
+
+7.1 Thread Interface
+====================
+
+ -- Data type: thread_t
+     This is a 'mach_port_t' and used to hold the port name of a thread
+     port that represents the thread.  Manipulations of the thread are
+     implemented as remote procedure calls to the thread port.  A thread
+     can get a port to itself with the 'mach_thread_self' system call.
+
+* Menu:
+
+* Thread Creation::               Creating new threads.
+* Thread Termination::            Terminating existing threads.
+* Thread Information::            How to get informations on threads.
+* Thread Settings::               How to set threads related informations.
+* Thread Execution::              How to control the thread's machine state.
+* Scheduling::                    Operations on thread scheduling.
+* Thread Special Ports::          How to handle the thread's special ports.
+* Exceptions::                    Managing exceptions.
+
+
+File: mach.info,  Node: Thread Creation,  Next: Thread Termination,  Up: 
Thread Interface
+
+7.1.1 Thread Creation
+---------------------
+
+ -- Function: kern_return_t thread_create (task_t PARENT_TASK,
+          thread_t *CHILD_THREAD)
+     The function 'thread_create' creates a new thread within the task
+     specified by PARENT_TASK.  The new thread has no processor state,
+     and has a suspend count of 1.  To get a new thread to run, first
+     'thread_create' is called to get the new thread's identifier,
+     (CHILD_THREAD).  Then 'thread_set_state' is called to set a
+     processor state, and finally 'thread_resume' is called to get the
+     thread scheduled to execute.
+
+     When the thread is created send rights to its thread kernel port
+     are given to it and returned to the caller in CHILD_THREAD.  The
+     new thread's exception port is set to 'MACH_PORT_NULL'.
+
+     The function returns 'KERN_SUCCESS' if a new thread has been
+     created, 'KERN_INVALID_ARGUMENT' if PARENT_TASK is not a valid task
+     and 'KERN_RESOURCE_SHORTAGE' if some critical kernel resource is
+     not available.
+
+
+File: mach.info,  Node: Thread Termination,  Next: Thread Information,  Prev: 
Thread Creation,  Up: Thread Interface
+
+7.1.2 Thread Termination
+------------------------
+
+ -- Function: kern_return_t thread_terminate (thread_t TARGET_THREAD)
+     The function 'thread_terminate' destroys the thread specified by
+     TARGET_THREAD.
+
+     The function returns 'KERN_SUCCESS' if the thread has been killed
+     and 'KERN_INVALID_ARGUMENT' if TARGET_THREAD is not a thread.
+
+
+File: mach.info,  Node: Thread Information,  Next: Thread Settings,  Prev: 
Thread Termination,  Up: Thread Interface
+
+7.1.3 Thread Information
+------------------------
+
+ -- Function: thread_t mach_thread_self ()
+     The 'mach_thread_self' system call returns the calling thread's
+     thread port.
+
+     'mach_thread_self' has an effect equivalent to receiving a send
+     right for the thread port.  'mach_thread_self' returns the name of
+     the send right.  In particular, successive calls will increase the
+     calling task's user-reference count for the send right.
+
+     As a special exception, the kernel will overrun the user reference
+     count of the thread name port, so that this function can not fail
+     for that reason.  Because of this, the user should not deallocate
+     the port right if an overrun might have happened.  Otherwise the
+     reference count could drop to zero and the send right be destroyed
+     while the user still expects to be able to use it.  As the kernel
+     does not make use of the number of extant send rights anyway, this
+     is safe to do (the thread port itself is not destroyed, even when
+     there are no send rights anymore).
+
+     The function returns 'MACH_PORT_NULL' if a resource shortage
+     prevented the reception of the send right or if the thread port is
+     currently null and 'MACH_PORT_DEAD' if the thread port is currently
+     dead.
+
+ -- Function: kern_return_t thread_info (thread_t TARGET_THREAD,
+          int FLAVOR, thread_info_t THREAD_INFO,
+          mach_msg_type_number_t *THREAD_INFOCNT)
+     The function 'thread_info' returns the selected information array
+     for a thread, as specified by FLAVOR.
+
+     THREAD_INFO is an array of integers that is supplied by the caller
+     and returned filled with specified information.  THREAD_INFOCNT is
+     supplied as the maximum number of integers in THREAD_INFO.  On
+     return, it contains the actual number of integers in THREAD_INFO.
+     The maximum number of integers returned by any flavor is
+     'THREAD_INFO_MAX'.
+
+     The type of information returned is defined by FLAVOR, which can be
+     one of the following:
+
+     'THREAD_BASIC_INFO'
+          The function returns basic information about the thread, as
+          defined by 'thread_basic_info_t'.  This includes the user and
+          system time, the run state, and scheduling priority.  The
+          number of integers returned is 'THREAD_BASIC_INFO_COUNT'.
+
+     'THREAD_SCHED_INFO'
+          The function returns information about the scheduling policy
+          for the thread as defined by 'thread_sched_info_t'.  The
+          number of integers returned is 'THREAD_SCHED_INFO_COUNT'.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if TARGET_THREAD is not a thread or FLAVOR
+     is not recognized.  The function returns 'MIG_ARRAY_TOO_LARGE' if
+     the returned info array is too large for THREAD_INFO.  In this
+     case, THREAD_INFO is filled as much as possible and THREAD_INFOCNT
+     is set to the number of elements that would have been returned if
+     there were enough room.
+
+ -- Data type: struct thread_basic_info
+     This structure is returned in THREAD_INFO by the 'thread_info'
+     function and provides basic information about the thread.  You can
+     cast a variable of type 'thread_info_t' to a pointer of this type
+     if you provided it as the THREAD_INFO parameter for the
+     'THREAD_BASIC_INFO' flavor of 'thread_info'.  It has the following
+     members:
+
+     'time_value_t user_time'
+          user run time
+
+     'time_value_t system_time'
+          system run time
+     'int cpu_usage'
+          Scaled cpu usage percentage.  The scale factor is
+          'TH_USAGE_SCALE'.
+
+     'int base_priority'
+          The base scheduling priority of the thread.
+
+     'int cur_priority'
+          The current scheduling priority of the thread.
+
+     'integer_t run_state'
+          The run state of the thread.  The possible values of this
+          field are:
+          'TH_STATE_RUNNING'
+               The thread is running normally.
+
+          'TH_STATE_STOPPED'
+               The thread is suspended.
+
+          'TH_STATE_WAITING'
+               The thread is waiting normally.
+
+          'TH_STATE_UNINTERRUPTIBLE'
+               The thread is in an uninterruptible wait.
+
+          'TH_STATE_HALTED'
+               The thread is halted at a clean point.
+
+     'flags'
+          Various flags.  The possible values of this field are:
+          'TH_FLAGS_SWAPPED'
+               The thread is swapped out.
+
+          'TH_FLAGS_IDLE'
+               The thread is an idle thread.
+
+     'int suspend_count'
+          The suspend count for the thread.
+
+     'int sleep_time'
+          The number of seconds that the thread has been sleeping.
+
+     'time_value_t creation_time'
+          The time stamp of creation.
+
+ -- Data type: thread_basic_info_t
+     This is a pointer to a 'struct thread_basic_info'.
+
+ -- Data type: struct thread_sched_info
+     This structure is returned in THREAD_INFO by the 'thread_info'
+     function and provides schedule information about the thread.  You
+     can cast a variable of type 'thread_info_t' to a pointer of this
+     type if you provided it as the THREAD_INFO parameter for the
+     'THREAD_SCHED_INFO' flavor of 'thread_info'.  It has the following
+     members:
+
+     'int policy'
+          The scheduling policy of the thread, *note Scheduling
+          Policy::.
+
+     'integer_t data'
+          Policy-dependent scheduling information, *note Scheduling
+          Policy::.
+
+     'int base_priority'
+          The base scheduling priority of the thread.
+
+     'int max_priority'
+          The maximum scheduling priority of the thread.
+
+     'int cur_priority'
+          The current scheduling priority of the thread.
+
+     'int depressed'
+          'TRUE' if the thread is depressed.
+
+     'int depress_priority'
+          The priority the thread was depressed from.
+
+ -- Data type: thread_sched_info_t
+     This is a pointer to a 'struct thread_sched_info'.
+
+
+File: mach.info,  Node: Thread Settings,  Next: Thread Execution,  Prev: 
Thread Information,  Up: Thread Interface
+
+7.1.4 Thread Settings
+---------------------
+
+ -- Function: kern_return_t thread_wire (host_priv_t HOST_PRIV,
+          thread_t THREAD, boolean_t WIRED)
+     The function 'thread_wire' controls the VM privilege level of the
+     thread THREAD.  A VM-privileged thread never waits inside the
+     kernel for memory allocation from the kernel's free list of pages
+     or for allocation of a kernel stack.
+
+     Threads that are part of the default pageout path should be
+     VM-privileged, to prevent system deadlocks.  Threads that are not
+     part of the default pageout path should not be VM-privileged, to
+     prevent the kernel's free list of pages from being exhausted.
+
+     The functions returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_ARGUMENT' if HOST_PRIV or THREAD was invalid.
+
+     The 'thread_wire' call is actually an RPC to HOST_PRIV, normally a
+     send right for a privileged host port, but potentially any send
+     right.  In addition to the normal diagnostic return codes from the
+     call's server (normally the kernel), the call may return 'mach_msg'
+     return codes.
+
+
+File: mach.info,  Node: Thread Execution,  Next: Scheduling,  Prev: Thread 
Settings,  Up: Thread Interface
+
+7.1.5 Thread Execution
+----------------------
+
+ -- Function: kern_return_t thread_suspend (thread_t TARGET_THREAD)
+     Increments the thread's suspend count and prevents the thread from
+     executing any more user level instructions.  In this context a user
+     level instruction is either a machine instruction executed in user
+     mode or a system trap instruction including page faults.  Thus if a
+     thread is currently executing within a system trap the kernel code
+     may continue to execute until it reaches the system return code or
+     it may suspend within the kernel code.  In either case, when the
+     thread is resumed the system trap will return.  This could cause
+     unpredictable results if the user did a suspend and then altered
+     the user state of the thread in order to change its direction upon
+     a resume.  The call 'thread_abort' is provided to allow the user to
+     abort any system call that is in progress in a predictable way.
+
+     The suspend count may become greater than one with the effect that
+     it will take more than one resume call to restart the thread.
+
+     The function returns 'KERN_SUCCESS' if the thread has been
+     suspended and 'KERN_INVALID_ARGUMENT' if TARGET_THREAD is not a
+     thread.
+
+ -- Function: kern_return_t thread_resume (thread_t TARGET_THREAD)
+     Decrements the thread's suspend count.  If the count becomes zero
+     the thread is resumed.  If it is still positive, the thread is left
+     suspended.  The suspend count may not become negative.
+
+     The function returns 'KERN_SUCCESS' if the thread has been resumed,
+     'KERN_FAILURE' if the suspend count is already zero and
+     'KERN_INVALID_ARGUMENT' if TARGET_THREAD is not a thread.
+
+ -- Function: kern_return_t thread_abort (thread_t TARGET_THREAD)
+     The function 'thread_abort' aborts the kernel primitives:
+     'mach_msg', 'msg_send', 'msg_receive' and 'msg_rpc' and
+     page-faults, making the call return a code indicating that it was
+     interrupted.  The call is interrupted whether or not the thread (or
+     task containing it) is currently suspended.  If it is suspended,
+     the thread receives the interrupt when it is resumed.
+
+     A thread will retry an aborted page-fault if its state is not
+     modified before it is resumed.  'msg_send' returns
+     'SEND_INTERRUPTED'; 'msg_receive' returns 'RCV_INTERRUPTED';
+     'msg_rpc' returns either 'SEND_INTERRUPTED' or 'RCV_INTERRUPTED',
+     depending on which half of the RPC was interrupted.
+
+     The main reason for this primitive is to allow one thread to
+     cleanly stop another thread in a manner that will allow the future
+     execution of the target thread to be controlled in a predictable
+     way.  'thread_suspend' keeps the target thread from executing any
+     further instructions at the user level, including the return from a
+     system call.  'thread_get_state'/'thread_set_state' allows the
+     examination or modification of the user state of a target thread.
+     However, if a suspended thread was executing within a system call,
+     it also has associated with it a kernel state.  This kernel state
+     can not be modified by 'thread_set_state' with the result that when
+     the thread is resumed the system call may return changing the user
+     state and possibly user memory.  'thread_abort' aborts the kernel
+     call from the target thread's point of view by resetting the kernel
+     state so that the thread will resume execution at the system call
+     return with the return code value set to one of the interrupted
+     codes.  The system call itself will either be entirely completed or
+     entirely aborted, depending on the precise moment at which the
+     abort was received.  Thus if the thread's user state has been
+     changed by 'thread_set_state', it will not be modified by any
+     unexpected system call side effects.
+
+     For example to simulate a Unix signal, the following sequence of
+     calls may be used:
+
+       1. 'thread_suspend': Stops the thread.
+
+       2. 'thread_abort': Interrupts any system call in progress,
+          setting the return value to 'interrupted'.  Since the thread
+          is stopped, it will not return to user code.
+
+       3. 'thread_set_state': Alters thread's state to simulate a
+          procedure call to the signal handler
+
+       4. 'thread_resume': Resumes execution at the signal handler.  If
+          the thread's stack has been correctly set up, the thread may
+          return to the interrupted system call.  (Of course, the code
+          to push an extra stack frame and change the registers is VERY
+          machine-dependent.)
+
+     Calling 'thread_abort' on a non-suspended thread is pretty risky,
+     since it is very difficult to know exactly what system trap, if
+     any, the thread might be executing and whether an interrupt return
+     would cause the thread to do something useful.
+
+     The function returns 'KERN_SUCCESS' if the thread received an
+     interrupt and 'KERN_INVALID_ARGUMENT' if TARGET_THREAD is not a
+     thread.
+
+ -- Function: kern_return_t thread_get_state (thread_t TARGET_THREAD,
+          int FLAVOR, thread_state_t OLD_STATE,
+          mach_msg_type_number_t *OLD_STATECNT)
+     The function 'thread_get_state' returns the execution state (e.g.
+     the machine registers) of TARGET_THREAD as specified by FLAVOR.
+     The OLD_STATE is an array of integers that is provided by the
+     caller and returned filled with the specified information.
+     OLD_STATECNT is input set to the maximum number of integers in
+     OLD_STATE and returned equal to the actual number of integers in
+     OLD_STATE.
+
+     TARGET_THREAD may not be 'mach_thread_self()'.
+
+     The definition of the state structures can be found in
+     'machine/thread_status.h'.
+
+     The function returns 'KERN_SUCCESS' if the state has been returned,
+     'KERN_INVALID_ARGUMENT' if TARGET_THREAD is not a thread or is
+     'mach_thread_self' or FLAVOR is unrecognized for this machine.  The
+     function returns 'MIG_ARRAY_TOO_LARGE' if the returned state is too
+     large for OLD_STATE.  In this case, OLD_STATE is filled as much as
+     possible and OLD_STATECNT is set to the number of elements that
+     would have been returned if there were enough room.
+
+ -- Function: kern_return_t thread_set_state (thread_t TARGET_THREAD,
+          int FLAVOR, thread_state_t NEW_STATE,
+          mach_msg_type_number_t NEW_STATE_COUNT)
+     The function 'thread_set_state' sets the execution state (e.g.  the
+     machine registers) of TARGET_THREAD as specified by FLAVOR.  The
+     NEW_STATE is an array of integers.  NEW_STATE_COUNT is the number
+     of elements in NEW_STATE.  The entire set of registers is reset.
+     This will do unpredictable things if TARGET_THREAD is not
+     suspended.
+
+     TARGET_THREAD may not be 'mach_thread_self'.
+
+     The definition of the state structures can be found in
+     'machine/thread_status.h'.
+
+     The function returns 'KERN_SUCCESS' if the state has been set and
+     'KERN_INVALID_ARGUMENT' if TARGET_THREAD is not a thread or is
+     'mach_thread_self' or FLAVOR is unrecognized for this machine.
+
+
+File: mach.info,  Node: Scheduling,  Next: Thread Special Ports,  Prev: Thread 
Execution,  Up: Thread Interface
+
+7.1.6 Scheduling
+----------------
+
+* Menu:
+
+* Thread Priority::               Changing the priority of a thread.
+* Hand-Off Scheduling::           Switching to a new thread.
+* Scheduling Policy::             Setting the scheduling policy.
+
+
+File: mach.info,  Node: Thread Priority,  Next: Hand-Off Scheduling,  Up: 
Scheduling
+
+7.1.6.1 Thread Priority
+.......................
+
+Threads have three priorities associated with them by the system, a
+priority, a maximum priority, and a scheduled priority.  The scheduled
+priority is used to make scheduling decisions about the thread.  It is
+determined from the priority by the policy (for timesharing, this means
+adding an increment derived from cpu usage).  The priority can be set
+under user control, but may never exceed the maximum priority.  Changing
+the maximum priority requires presentation of the control port for the
+thread's processor set; since the control port for the default processor
+set is privileged, users cannot raise their maximum priority to unfairly
+compete with other users on that set.  Newly created threads obtain
+their priority from their task and their max priority from the thread.
+
+ -- Function: kern_return_t thread_priority (thread_t THREAD,
+          int PRORITY, boolean_t SET_MAX)
+     The function 'thread_priority' changes the priority and optionally
+     the maximum priority of THREAD.  Priorities range from 0 to 31,
+     where lower numbers denote higher priorities.  If the new priority
+     is higher than the priority of the current thread, preemption may
+     occur as a result of this call.  The maximum priority of the thread
+     is also set if SET_MAX is 'TRUE'.  This call will fail if PRIORITY
+     is greater than the current maximum priority of the thread.  As a
+     result, this call can only lower the value of a thread's maximum
+     priority.
+
+     The functions returns 'KERN_SUCCESS' if the operation completed
+     successfully, 'KERN_INVALID_ARGUMENT' if THREAD is not a thread or
+     PRIORITY is out of range (not in 0..31), and 'KERN_FAILURE' if the
+     requested operation would violate the thread's maximum priority
+     (thread_priority).
+
+ -- Function: kern_return_t thread_max_priority (thread_t THREAD,
+          processor_set_t PROCESSOR_SET, int PRIORITY)
+     The function 'thread_max_priority' changes the maximum priority of
+     the thread.  Because it requires presentation of the corresponding
+     processor set port, this call can reset the maximum priority to any
+     legal value.
+
+     The functions returns 'KERN_SUCCESS' if the operation completed
+     successfully, 'KERN_INVALID_ARGUMENT' if THREAD is not a thread or
+     PROCESSOR_SET is not a control port for a processor set or PRIORITY
+     is out of range (not in 0..31), and 'KERN_FAILURE' if the thread is
+     not assigned to the processor set whose control port was presented.
+
+
+File: mach.info,  Node: Hand-Off Scheduling,  Next: Scheduling Policy,  Prev: 
Thread Priority,  Up: Scheduling
+
+7.1.6.2 Hand-Off Scheduling
+...........................
+
+ -- Function: kern_return_t thread_switch (thread_t NEW_THREAD,
+          int OPTION, int TIME)
+     The function 'thread_switch' provides low-level access to the
+     scheduler's context switching code.  NEW_THREAD is a hint that
+     implements hand-off scheduling.  The operating system will attempt
+     to switch directly to the new thread (bypassing the normal logic
+     that selects the next thread to run) if possible.  Since this is a
+     hint, it may be incorrect; it is ignored if it doesn't specify a
+     thread on the same host as the current thread or if that thread
+     can't be switched to (i.e., not runnable or already running on
+     another processor or giving a plainly invalid hint, such as
+     'MACH_PORT_NULL').  In this case, the normal logic to select the
+     next thread to run is used; the current thread may continue running
+     if there is no other appropriate thread to run.
+
+     Options for OPTION are defined in 'mach/thread_switch.h' and
+     specify the interpretation of TIME.  The possible values for OPTION
+     are:
+
+     'SWITCH_OPTION_NONE'
+          No options, the time argument is ignored.
+
+     'SWITCH_OPTION_WAIT'
+          The thread is blocked for the specified time (in milliseconds;
+          specifying '0' will wait for the next tick).  This can be
+          aborted by 'thread_abort'.
+
+     'SWITCH_OPTION_DEPRESS'
+          The thread's priority is depressed to the lowest possible
+          value for the specified time.  This can be aborted by
+          'thread_depress_abort'.  This depression is independent of
+          operations that change the thread's priority (e.g.
+          'thread_priority' will not abort the depression).  The minimum
+          time and units of time can be obtained as the 'min_timeout'
+          value from 'host_info'.  The depression is also aborted when
+          the current thread is next run (either via hand-off scheduling
+          or because the processor set has nothing better to do).
+
+     'thread_switch' is often called when the current thread can proceed
+     no further for some reason; the various options and arguments allow
+     information about this reason to be transmitted to the kernel.  The
+     NEW_THREAD argument (handoff scheduling) is useful when the
+     identity of the thread that must make progress before the current
+     thread runs again is known.  The 'WAIT' option is used when the
+     amount of time that the current thread must wait before it can do
+     anything useful can be estimated and is fairly long.  The 'DEPRESS'
+     option is used when the amount of time that must be waited is
+     fairly short, especially when the identity of the thread that is
+     being waited for is not known.
+
+     Users should beware of calling 'thread_switch' with an invalid hint
+     (e.g.  'MACH_PORT_NULL') and no option.  Because the time-sharing
+     scheduler varies the priority of threads based on usage, this may
+     result in a waste of cpu time if the thread that must be run is of
+     lower priority.  The use of the 'DEPRESS' option in this situation
+     is highly recommended.
+
+     'thread_switch' ignores policies.  Users relying on the preemption
+     semantics of a fixed time policy should be aware that
+     'thread_switch' ignores these semantics; it will run the specified
+     NEW_THREAD independent of its priority and the priority of any
+     other threads that could be run instead.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_ARGUMENT' if THREAD is not a thread or OPTION is not
+     a recognized option, and 'KERN_FAILURE' if 'kern_depress_abort'
+     failed because the thread was not depressed.
+
+ -- Function: kern_return_t thread_depress_abort (thread_t THREAD)
+     The function 'thread_depress_abort' cancels any priority depression
+     for THREAD caused by a 'swtch_pri' or 'thread_switch' call.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if THREAD is not a valid thread.
+
+ -- Function: boolean_t swtch ()
+     The system trap 'swtch' attempts to switch the current thread off
+     the processor.  The return value indicates if more than the current
+     thread is running in the processor set.  This is useful for lock
+     management routines.
+
+     The call returns 'FALSE' if the thread is justified in becoming a
+     resource hog by continuing to spin because there's nothing else
+     useful that the processor could do.  'TRUE' is returned if the
+     thread should make one more check on the lock and then be a good
+     citizen and really suspend.
+
+ -- Function: boolean_t swtch_pri (int PRIORITY)
+     The system trap 'swtch_pri' attempts to switch the current thread
+     off the processor as 'swtch' does, but depressing the priority of
+     the thread to the minimum possible value during the time.  PRIORITY
+     is not used currently.
+
+     The return value is as for 'swtch'.
+
+
+File: mach.info,  Node: Scheduling Policy,  Prev: Hand-Off Scheduling,  Up: 
Scheduling
+
+7.1.6.3 Scheduling Policy
+.........................
+
+ -- Function: kern_return_t thread_policy (thread_t THREAD, int POLICY,
+          int DATA)
+     The function 'thread_policy' changes the scheduling policy for
+     THREAD to POLICY.
+
+     DATA is policy-dependent scheduling information.  There are
+     currently two supported policies: 'POLICY_TIMESHARE' and
+     'POLICY_FIXEDPRI' defined in 'mach/policy.h'; this file is included
+     by 'mach.h'.  DATA is meaningless for timesharing, but is the
+     quantum to be used (in milliseconds) for the fixed priority policy.
+     To be meaningful, this quantum must be a multiple of the basic
+     system quantum (min_quantum) which can be obtained from
+     'host_info'.  The system will always round up to the next multiple
+     of the quantum.
+
+     Processor sets may restrict the allowed policies, so this call will
+     fail if the processor set to which THREAD is currently assigned
+     does not permit POLICY.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded.
+     'KERN_INVALID_ARGUMENT' if THREAD is not a thread or POLICY is not
+     a recognized policy, and 'KERN_FAILURE' if the processor set to
+     which THREAD is currently assigned does not permit POLICY.
+
+
+File: mach.info,  Node: Thread Special Ports,  Next: Exceptions,  Prev: 
Scheduling,  Up: Thread Interface
+
+7.1.7 Thread Special Ports
+--------------------------
+
+ -- Function: kern_return_t thread_get_special_port (thread_t THREAD,
+          int WHICH_PORT, mach_port_t *SPECIAL_PORT)
+     The function 'thread_get_special_port' returns send rights to one
+     of a set of special ports for the thread specified by THREAD.
+
+     The possible values for WHICH_PORT are 'THREAD_KERNEL_PORT' and
+     'THREAD_EXCEPTION_PORT'.  A thread also has access to its task's
+     special ports.
+
+     The function returns 'KERN_SUCCESS' if the port was returned and
+     'KERN_INVALID_ARGUMENT' if THREAD is not a thread or WHICH_PORT is
+     an invalid port selector.
+
+ -- Function: kern_return_t thread_get_kernel_port (thread_t THREAD,
+          mach_port_t *KERNEL_PORT)
+     The function 'thread_get_kernel_port' is equivalent to the function
+     'thread_get_special_port' with the WHICH_PORT argument set to
+     'THREAD_KERNEL_PORT'.
+
+ -- Function: kern_return_t thread_get_exception_port (thread_t THREAD,
+          mach_port_t *EXCEPTION_PORT)
+     The function 'thread_get_exception_port' is equivalent to the
+     function 'thread_get_special_port' with the WHICH_PORT argument set
+     to 'THREAD_EXCEPTION_PORT'.
+
+ -- Function: kern_return_t thread_set_special_port (thread_t THREAD,
+          int WHICH_PORT, mach_port_t SPECIAL_PORT)
+     The function 'thread_set_special_port' sets one of a set of special
+     ports for the thread specified by THREAD.
+
+     The possible values for WHICH_PORT are 'THREAD_KERNEL_PORT' and
+     'THREAD_EXCEPTION_PORT'.  A thread also has access to its task's
+     special ports.
+
+     The function returns 'KERN_SUCCESS' if the port was set and
+     'KERN_INVALID_ARGUMENT' if THREAD is not a thread or WHICH_PORT is
+     an invalid port selector.
+
+ -- Function: kern_return_t thread_set_kernel_port (thread_t THREAD,
+          mach_port_t KERNEL_PORT)
+     The function 'thread_set_kernel_port' is equivalent to the function
+     'thread_set_special_port' with the WHICH_PORT argument set to
+     'THREAD_KERNEL_PORT'.
+
+ -- Function: kern_return_t thread_set_exception_port (thread_t THREAD,
+          mach_port_t EXCEPTION_PORT)
+     The function 'thread_set_exception_port' is equivalent to the
+     function 'thread_set_special_port' with the WHICH_PORT argument set
+     to 'THREAD_EXCEPTION_PORT'.
+
+
+File: mach.info,  Node: Exceptions,  Prev: Thread Special Ports,  Up: Thread 
Interface
+
+7.1.8 Exceptions
+----------------
+
+ -- Function: kern_return_t catch_exception_raise
+          (mach_port_t EXCEPTION_PORT, thread_t THREAD, task_t TASK,
+          int EXCEPTION, int CODE, int SUBCODE)
+     XXX Fixme
+
+ -- Function: kern_return_t exception_raise (mach_port_t EXCEPTION_PORT,
+          mach_port_t THREAD, mach_port_t TASK, integer_t EXCEPTION,
+          integer_t CODE, integer_t SUBCODE)
+     XXX Fixme
+
+ -- Function: kern_return_t evc_wait (unsigned int EVENT)
+     The system trap 'evc_wait' makes the calling thread wait for the
+     event specified by EVENT.
+
+     The call returns 'KERN_SUCCESS' if the event has occurred,
+     'KERN_NO_SPACE' if another thread is waiting for the same event and
+     'KERN_INVALID_ARGUMENT' if the event object is invalid.
+
+
+File: mach.info,  Node: Task Interface,  Next: Profiling,  Prev: Thread 
Interface,  Up: Threads and Tasks
+
+7.2 Task Interface
+==================
+
+ -- Data type: task_t
+     This is a 'mach_port_t' and used to hold the port name of a task
+     port that represents the thread.  Manipulations of the task are
+     implemented as remote procedure calls to the task port.  A task can
+     get a port to itself with the 'mach_task_self' system call.
+
+     The task port name is also used to identify the task's IPC space
+     (*note Port Manipulation Interface::) and the task's virtual memory
+     map (*note Virtual Memory Interface::).
+
+* Menu:
+
+* Task Creation::                 Creating tasks.
+* Task Termination::              Terminating tasks.
+* Task Information::              Informations on tasks.
+* Task Execution::                Thread scheduling in a task.
+* Task Special Ports::            How to get and set the task's special ports.
+* Syscall Emulation::             How to emulate system calls.
+
+
+File: mach.info,  Node: Task Creation,  Next: Task Termination,  Up: Task 
Interface
+
+7.2.1 Task Creation
+-------------------
+
+ -- Function: kern_return_t task_create (task_t PARENT_TASK,
+          boolean_t INHERIT_MEMORY, task_t *CHILD_TASK)
+     The function 'task_create' creates a new task from PARENT_TASK; the
+     resulting task (CHILD_TASK) acquires shared or copied parts of the
+     parent's address space (see 'vm_inherit').  The child task
+     initially contains no threads.
+
+     If INHERIT_MEMORY is set, the child task's address space is built
+     from the parent task according to its memory inheritance values;
+     otherwise, the child task is given an empty address space.
+
+     The child task gets the three special ports created or copied for
+     it at task creation.  The 'TASK_KERNEL_PORT' is created and send
+     rights for it are given to the child and returned to the caller.
+     The 'TASK_BOOTSTRAP_PORT' and the 'TASK_EXCEPTION_PORT' are
+     inherited from the parent task.  The new task can get send rights
+     to these ports with the call 'task_get_special_port'.
+
+     The function returns 'KERN_SUCCESS' if a new task has been created,
+     'KERN_INVALID_ARGUMENT' if PARENT_TASK is not a valid task port and
+     'KERN_RESOURCE_SHORTAGE' if some critical kernel resource is
+     unavailable.
+
+
+File: mach.info,  Node: Task Termination,  Next: Task Information,  Prev: Task 
Creation,  Up: Task Interface
+
+7.2.2 Task Termination
+----------------------
+
+ -- Function: kern_return_t task_terminate (task_t TARGET_TASK)
+     The function 'task_terminate' destroys the task specified by
+     TARGET_TASK and all its threads.  All resources that are used only
+     by this task are freed.  Any port to which this task has receive
+     and ownership rights is destroyed.
+
+     The function returns 'KERN_SUCCESS' if the task has been killed,
+     'KERN_INVALID_ARGUMENT' if TARGET_TASK is not a task.
+
+
+File: mach.info,  Node: Task Information,  Next: Task Execution,  Prev: Task 
Termination,  Up: Task Interface
+
+7.2.3 Task Information
+----------------------
+
+ -- Function: task_t mach_task_self ()
+     The 'mach_task_self' system call returns the calling thread's task
+     port.
+
+     'mach_task_self' has an effect equivalent to receiving a send right
+     for the task port.  'mach_task_self' returns the name of the send
+     right.  In particular, successive calls will increase the calling
+     task's user-reference count for the send right.
+
+     As a special exception, the kernel will overrun the user reference
+     count of the task name port, so that this function can not fail for
+     that reason.  Because of this, the user should not deallocate the
+     port right if an overrun might have happened.  Otherwise the
+     reference count could drop to zero and the send right be destroyed
+     while the user still expects to be able to use it.  As the kernel
+     does not make use of the number of extant send rights anyway, this
+     is safe to do (the task port itself is not destroyed, even when
+     there are no send rights anymore).
+
+     The function returns 'MACH_PORT_NULL' if a resource shortage
+     prevented the reception of the send right, 'MACH_PORT_NULL' if the
+     task port is currently null, 'MACH_PORT_DEAD' if the task port is
+     currently dead.
+
+ -- Function: kern_return_t task_threads (task_t TARGET_TASK,
+          thread_array_t *THREAD_LIST,
+          mach_msg_type_number_t *THREAD_COUNT)
+     The function 'task_threads' gets send rights to the kernel port for
+     each thread contained in TARGET_TASK.  THREAD_LIST is an array that
+     is created as a result of this call.  The caller may wish to
+     'vm_deallocate' this array when the data is no longer needed.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if TARGET_TASK is not a task.
+
+ -- Function: kern_return_t task_info (task_t TARGET_TASK, int FLAVOR,
+          task_info_t TASK_INFO,
+          mach_msg_type_number_t *TASK_INFO_COUNT)
+     The function 'task_info' returns the selected information array for
+     a task, as specified by FLAVOR.  TASK_INFO is an array of integers
+     that is supplied by the caller, and filled with specified
+     information.  TASK_INFO_COUNT is supplied as the maximum number of
+     integers in TASK_INFO.  On return, it contains the actual number of
+     integers in TASK_INFO.  The maximum number of integers returned by
+     any flavor is 'TASK_INFO_MAX'.
+
+     The type of information returned is defined by FLAVOR, which can be
+     one of the following:
+
+     'TASK_BASIC_INFO'
+          The function returns basic information about the task, as
+          defined by 'task_basic_info_t'.  This includes the user and
+          system time and memory consumption.  The number of integers
+          returned is 'TASK_BASIC_INFO_COUNT'.
+
+     'TASK_EVENTS_INFO'
+          The function returns information about events for the task as
+          defined by 'thread_sched_info_t'.  This includes statistics
+          about virtual memory and IPC events like pageouts, pageins and
+          messages sent and received.  The number of integers returned
+          is 'TASK_EVENTS_INFO_COUNT'.
+
+     'TASK_THREAD_TIMES_INFO'
+          The function returns information about the total time for live
+          threads as defined by 'task_thread_times_info_t'.  The number
+          of integers returned is 'TASK_THREAD_TIMES_INFO_COUNT'.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if TARGET_TASK is not a thread or FLAVOR is
+     not recognized.  The function returns 'MIG_ARRAY_TOO_LARGE' if the
+     returned info array is too large for TASK_INFO.  In this case,
+     TASK_INFO is filled as much as possible and TASK_INFOCNT is set to
+     the number of elements that would have been returned if there were
+     enough room.
+
+ -- Data type: struct task_basic_info
+     This structure is returned in TASK_INFO by the 'task_info' function
+     and provides basic information about the task.  You can cast a
+     variable of type 'task_info_t' to a pointer of this type if you
+     provided it as the TASK_INFO parameter for the 'TASK_BASIC_INFO'
+     flavor of 'task_info'.  It has the following members:
+
+     'integer_t suspend_count'
+          suspend count for task
+
+     'integer_t base_priority'
+          base scheduling priority
+
+     'vm_size_t virtual_size'
+          number of virtual pages
+
+     'vm_size_t resident_size'
+          number of resident pages
+
+     'time_value_t user_time'
+          total user run time for terminated threads
+
+     'time_value_t system_time'
+          total system run time for terminated threads
+
+     'time_value_t creation_time'
+          creation time stamp
+
+ -- Data type: task_basic_info_t
+     This is a pointer to a 'struct task_basic_info'.
+
+ -- Data type: struct task_events_info
+     This structure is returned in TASK_INFO by the 'task_info' function
+     and provides event statistics for the task.  You can cast a
+     variable of type 'task_info_t' to a pointer of this type if you
+     provided it as the TASK_INFO parameter for the 'TASK_EVENTS_INFO'
+     flavor of 'task_info'.  It has the following members:
+
+     'natural_t faults'
+          number of page faults
+
+     'natural_t zero_fills'
+          number of zero fill pages
+
+     'natural_t reactivations'
+          number of reactivated pages
+
+     'natural_t pageins'
+          number of actual pageins
+
+     'natural_t cow_faults'
+          number of copy-on-write faults
+
+     'natural_t messages_sent'
+          number of messages sent
+
+     'natural_t messages_received'
+          number of messages received
+
+ -- Data type: task_events_info_t
+     This is a pointer to a 'struct task_events_info'.
+
+ -- Data type: struct task_thread_times_info
+     This structure is returned in TASK_INFO by the 'task_info' function
+     and provides event statistics for the task.  You can cast a
+     variable of type 'task_info_t' to a pointer of this type if you
+     provided it as the TASK_INFO parameter for the
+     'TASK_THREAD_TIMES_INFO' flavor of 'task_info'.  It has the
+     following members:
+
+     'time_value_t user_time'
+          total user run time for live threads
+
+     'time_value_t system_time'
+          total system run time for live threads
+
+ -- Data type: task_thread_times_info_t
+     This is a pointer to a 'struct task_thread_times_info'.
+
+
+File: mach.info,  Node: Task Execution,  Next: Task Special Ports,  Prev: Task 
Information,  Up: Task Interface
+
+7.2.4 Task Execution
+--------------------
+
+ -- Function: kern_return_t task_suspend (task_t TARGET_TASK)
+     The function 'task_suspend' increments the task's suspend count and
+     stops all threads in the task.  As long as the suspend count is
+     positive newly created threads will not run.  This call does not
+     return until all threads are suspended.
+
+     The count may become greater than one, with the effect that it will
+     take more than one resume call to restart the task.
+
+     The function returns 'KERN_SUCCESS' if the task has been suspended
+     and 'KERN_INVALID_ARGUMENT' if TARGET_TASK is not a task.
+
+ -- Function: kern_return_t task_resume (task_t TARGET_TASK)
+     The function 'task_resume' decrements the task's suspend count.  If
+     it becomes zero, all threads with zero suspend counts in the task
+     are resumed.  The count may not become negative.
+
+     The function returns 'KERN_SUCCESS' if the task has been resumed,
+     'KERN_FAILURE' if the suspend count is already at zero and
+     'KERN_INVALID_ARGUMENT' if TARGET_TASK is not a task.
+
+ -- Function: kern_return_t task_priority (task_t TASK, int PRIORITY,
+          boolean_t CHANGE_THREADS)
+     The priority of a task is used only for creation of new threads; a
+     new thread's priority is set to the enclosing task's priority.
+     'task_priority' changes this task priority.  It also sets the
+     priorities of all threads in the task to this new priority if
+     CHANGE_THREADS is 'TRUE'.  Existing threads are not affected
+     otherwise.  If this priority change violates the maximum priority
+     of some threads, as many threads as possible will be changed and an
+     error code will be returned.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_ARGUMENT' if TASK is not a task, or PRIORITY is not a
+     valid priority and 'KERN_FAILURE' if CHANGE_THREADS was 'TRUE' and
+     the attempt to change the priority of at least one existing thread
+     failed because the new priority would have exceeded that thread's
+     maximum priority.
+
+ -- Function: kern_return_t task_ras_control (task_t TARGET_TASK,
+          vm_address_t START_PC, vm_address_t END_PC, int FLAVOR)
+     The function 'task_ras_control' manipulates a task's set of
+     restartable atomic sequences.  If a sequence is installed, and any
+     thread in the task is preempted within the range [START_PC,END_PC],
+     then the thread is resumed at START_PC.  This enables applications
+     to build atomic sequences which, when executed to completion, will
+     have executed atomically.  Restartable atomic sequences are
+     intended to be used on systems that do not have hardware support
+     for low-overhead atomic primitives.
+
+     As a thread can be rolled-back, the code in the sequence should
+     have no side effects other than a final store at END_PC.  The
+     kernel does not guarantee that the sequence is restartable.  It
+     assumes the application knows what it's doing.
+
+     A task may have a finite number of atomic sequences that is defined
+     at compile time.
+
+     The flavor specifies the particular operation that should be
+     applied to this restartable atomic sequence.  Possible values for
+     flavor can be:
+
+     'TASK_RAS_CONTROL_PURGE_ALL'
+          Remove all registered sequences for this task.
+
+     'TASK_RAS_CONTROL_PURGE_ONE'
+          Remove the named registered sequence for this task.
+
+     'TASK_RAS_CONTROL_PURGE_ALL_AND_INSTALL_ONE'
+          Atomically remove all registered sequences and install the
+          named sequence.
+
+     'TASK_RAS_CONTROL_INSTALL_ONE'
+          Install this sequence.
+
+     The function returns 'KERN_SUCCESS' if the operation has been
+     performed, 'KERN_INVALID_ADDRESS' if the START_PC or END_PC values
+     are not a valid address for the requested operation (for example,
+     it is invalid to purge a sequence that has not been registered),
+     'KERN_RESOURCE_SHORTAGE' if an attempt was made to install more
+     restartable atomic sequences for a task than can be supported by
+     the kernel, 'KERN_INVALID_VALUE' if a bad flavor was specified,
+     'KERN_INVALID_ARGUMENT' if TARGET_TASK is not a task and
+     'KERN_FAILURE' if the call is not not supported on this
+     configuration.
+
+
+File: mach.info,  Node: Task Special Ports,  Next: Syscall Emulation,  Prev: 
Task Execution,  Up: Task Interface
+
+7.2.5 Task Special Ports
+------------------------
+
+ -- Function: kern_return_t task_get_special_port (task_t TASK,
+          int WHICH_PORT, mach_port_t *SPECIAL_PORT)
+     The function 'task_get_special_port' returns send rights to one of
+     a set of special ports for the task specified by TASK.
+
+     The special ports associated with a task are the kernel port
+     ('TASK_KERNEL_PORT'), the bootstrap port ('TASK_BOOTSTRAP_PORT')
+     and the exception port ('TASK_EXCEPTION_PORT').  The bootstrap port
+     is a port to which a task may send a message requesting other
+     system service ports.  This port is not used by the kernel.  The
+     task's exception port is the port to which messages are sent by the
+     kernel when an exception occurs and the thread causing the
+     exception has no exception port of its own.
+
+     The following macros to call 'task_get_special_port' for a specific
+     port are defined in 'mach/task_special_ports.h':
+     'task_get_exception_port' and 'task_get_bootstrap_port'.
+
+     The function returns 'KERN_SUCCESS' if the port was returned and
+     'KERN_INVALID_ARGUMENT' if TASK is not a task or WHICH_PORT is an
+     invalid port selector.
+
+ -- Function: kern_return_t task_get_kernel_port (task_t TASK,
+          mach_port_t *KERNEL_PORT)
+     The function 'task_get_kernel_port' is equivalent to the function
+     'task_get_special_port' with the WHICH_PORT argument set to
+     'TASK_KERNEL_PORT'.
+
+ -- Function: kern_return_t task_get_exception_port (task_t TASK,
+          mach_port_t *EXCEPTION_PORT)
+     The function 'task_get_exception_port' is equivalent to the
+     function 'task_get_special_port' with the WHICH_PORT argument set
+     to 'TASK_EXCEPTION_PORT'.
+
+ -- Function: kern_return_t task_get_bootstrap_port (task_t TASK,
+          mach_port_t *BOOTSTRAP_PORT)
+     The function 'task_get_bootstrap_port' is equivalent to the
+     function 'task_get_special_port' with the WHICH_PORT argument set
+     to 'TASK_BOOTSTRAP_PORT'.
+
+ -- Function: kern_return_t task_set_special_port (task_t TASK,
+          int WHICH_PORT, mach_port_t SPECIAL_PORT)
+     The function 'thread_set_special_port' sets one of a set of special
+     ports for the task specified by TASK.
+
+     The special ports associated with a task are the kernel port
+     ('TASK_KERNEL_PORT'), the bootstrap port ('TASK_BOOTSTRAP_PORT')
+     and the exception port ('TASK_EXCEPTION_PORT').  The bootstrap port
+     is a port to which a thread may send a message requesting other
+     system service ports.  This port is not used by the kernel.  The
+     task's exception port is the port to which messages are sent by the
+     kernel when an exception occurs and the thread causing the
+     exception has no exception port of its own.
+
+     The function returns 'KERN_SUCCESS' if the port was set and
+     'KERN_INVALID_ARGUMENT' if TASK is not a task or WHICH_PORT is an
+     invalid port selector.
+
+ -- Function: kern_return_t task_set_kernel_port (task_t TASK,
+          mach_port_t KERNEL_PORT)
+     The function 'task_set_kernel_port' is equivalent to the function
+     'task_set_special_port' with the WHICH_PORT argument set to
+     'TASK_KERNEL_PORT'.
+
+ -- Function: kern_return_t task_set_exception_port (task_t TASK,
+          mach_port_t EXCEPTION_PORT)
+     The function 'task_set_exception_port' is equivalent to the
+     function 'task_set_special_port' with the WHICH_PORT argument set
+     to 'TASK_EXCEPTION_PORT'.
+
+ -- Function: kern_return_t task_set_bootstrap_port (task_t TASK,
+          mach_port_t BOOTSTRAP_PORT)
+     The function 'task_set_bootstrap_port' is equivalent to the
+     function 'task_set_special_port' with the WHICH_PORT argument set
+     to 'TASK_BOOTSTRAP_PORT'.
+
+
+File: mach.info,  Node: Syscall Emulation,  Prev: Task Special Ports,  Up: 
Task Interface
+
+7.2.6 Syscall Emulation
+-----------------------
+
+ -- Function: kern_return_t task_get_emulation_vector (task_t TASK,
+          int *VECTOR_START, emulation_vector_t *EMULATION_VECTOR,
+          mach_msg_type_number_t *EMULATION_VECTOR_COUNT)
+     The function 'task_get_emulation_vector' gets the user-level
+     handler entry points for all emulated system calls.
+
+ -- Function: kern_return_t task_set_emulation_vector (task_t TASK,
+          int VECTOR_START, emulation_vector_t EMULATION_VECTOR,
+          mach_msg_type_number_t EMULATION_VECTOR_COUNT)
+     The function 'task_set_emulation_vector' establishes user-level
+     handlers for the specified system calls.  Non-emulated system calls
+     are specified with an entry of 'EML_ROUTINE_NULL'.  System call
+     emulation handlers are inherited by the children of TASK.
+
+ -- Function: kern_return_t task_set_emulation (task_t TASK,
+          vm_address_t ROUTINE_ENTRY_PT, int ROUTINE_NUMBER)
+     The function 'task_set_emulation' establishes a user-level handler
+     for the specified system call.  System call emulation handlers are
+     inherited by the children of TASK.
+
+
+File: mach.info,  Node: Profiling,  Prev: Task Interface,  Up: Threads and 
Tasks
+
+7.3 Profiling
+=============
+
+ -- Function: kern_return_t task_enable_pc_sampling (task_t TASK,
+          int *TICKS, sampled_pc_flavor_t FLAVOR)
+ -- Function: kern_return_t thread_enable_pc_sampling (thread_t THREAD,
+          int *TICKS, sampled_pc_flavor_t FLAVOR)
+     The function 'task_enable_pc_sampling' enables PC sampling for
+     TASK, the function 'thread_enable_pc_sampling' enables PC sampling
+     for THREAD.  The kernel's idea of clock granularity is returned in
+     TICKS in usecs.  (this value should not be trusted).  The sampling
+     flavor is specified by FLAVOR.
+
+     The function returns 'KERN_SUCCESS' if the operation is completed
+     successfully and 'KERN_INVALID_ARGUMENT' if THREAD is not a valid
+     thread.
+
+ -- Function: kern_return_t task_disable_pc_sampling (task_t TASK,
+          int *SAMPLE_COUNT)
+ -- Function: kern_return_t thread_disable_pc_sampling (thread_t THREAD,
+          int *SAMPLE_COUNT)
+     The function 'task_disable_pc_sampling' disables PC sampling for
+     TASK, the function 'thread_disable_pc_sampling' disables PC
+     sampling for THREAD.  The number of sample elements in the kernel
+     for the thread is returned in SAMPLE_COUNT.
+
+     The function returns 'KERN_SUCCESS' if the operation is completed
+     successfully and 'KERN_INVALID_ARGUMENT' if THREAD is not a valid
+     thread.
+
+ -- Function: kern_return_t task_get_sampled_pcs (task_t TASK,
+          sampled_pc_seqno_t *SEQNO, sampled_pc_array_t SAMPLED_PCS,
+          mach_msg_type_number_t *SAMPLE_COUNT)
+ -- Function: kern_return_t thread_get_sampled_pcs (thread_t THREAD,
+          sampled_pc_seqno_t *SEQNO, sampled_pc_array_t SAMPLED_PCS,
+          int *SAMPLE_COUNT)
+     The function 'task_get_sampled_pcs' extracts the PC samples for
+     TASK, the function 'thread_get_sampled_pcs' extracts the PC samples
+     for THREAD.  SEQNO is the sequence number of the sampled PCs.  This
+     is useful for determining when a collector thread has missed a
+     sample.  The sampled PCs for the thread are returned in
+     SAMPLED_PCS.  SAMPLE_COUNT contains the number of sample elements
+     returned.
+
+     The function returns 'KERN_SUCCESS' if the operation is completed
+     successfully, 'KERN_INVALID_ARGUMENT' if THREAD is not a valid
+     thread and 'KERN_FAILURE' if THREAD is not sampled.
+
+ -- Data type: sampled_pc_t
+     This structure is returned in SAMPLED_PCS by the
+     'thread_get_sampled_pcs' and 'task_get_sampled_pcs' functions and
+     provides pc samples for threads or tasks.  It has the following
+     members:
+
+     'natural_t id'
+          A thread-specific unique identifier.
+
+     'vm_offset_t pc'
+          A pc value.
+
+     'sampled_pc_flavor_t sampletype'
+          The type of the sample as per flavor.
+
+ -- Data type: sampled_pc_flavor_t
+     This data type specifies a pc sample flavor, either as argument
+     passed in FLAVOR to the 'thread_enable_pc_sample' and
+     'thread_disable_pc_sample' functions, or as member 'sampletype' in
+     the 'sample_pc_t' data type.  The flavor is a bitwise-or of the
+     possible flavors defined in 'mach/pc_sample.h':
+
+     'SAMPLED_PC_PERIODIC'
+          default
+     'SAMPLED_PC_VM_ZFILL_FAULTS'
+          zero filled fault
+     'SAMPLED_PC_VM_REACTIVATION_FAULTS'
+          reactivation fault
+     'SAMPLED_PC_VM_PAGEIN_FAULTS'
+          pagein fault
+     'SAMPLED_PC_VM_COW_FAULTS'
+          copy-on-write fault
+     'SAMPLED_PC_VM_FAULTS_ANY'
+          any fault
+     'SAMPLED_PC_VM_FAULTS'
+          the bitwise-or of 'SAMPLED_PC_VM_ZFILL_FAULTS',
+          'SAMPLED_PC_VM_REACTIVATION_FAULTS',
+          'SAMPLED_PC_VM_PAGEIN_FAULTS' and 'SAMPLED_PC_VM_COW_FAULTS'.
+
+
+File: mach.info,  Node: Host Interface,  Next: Processors and Processor Sets,  
Prev: Threads and Tasks,  Up: Top
+
+8 Host Interface
+****************
+
+This section describes the Mach interface to a host executing a Mach
+kernel.  The interface allows to query statistics about a host and
+control its behaviour.
+
+   A host is represented by two ports, a name port HOST used to query
+information about the host accessible to everyone, and a control port
+HOST_PRIV used to manipulate it.  For example, you can query the current
+time using the name port, but to change the time you need to send a
+message to the host control port.
+
+   Everything described in this section is declared in the header file
+'mach.h'.
+
+* Menu:
+
+* Host Ports::                    Ports representing a host.
+* Host Information::              Retrieval of information about a host.
+* Host Time::                     Operations on the time as seen by a host.
+* Host Reboot::                   Rebooting the system.
+
+
+File: mach.info,  Node: Host Ports,  Next: Host Information,  Up: Host 
Interface
+
+8.1 Host Ports
+==============
+
+ -- Data type: host_t
+     This is a 'mach_port_t' and used to hold the port name of a host
+     name port (or short: host port).  Any task can get a send right to
+     the name port of the host running the task using the
+     'mach_host_self' system call.  The name port can be used query
+     information about the host, for example the current time.
+
+ -- Function: host_t mach_host_self ()
+     The 'mach_host_self' system call returns the calling thread's host
+     name port.  It has an effect equivalent to receiving a send right
+     for the host port.  'mach_host_self' returns the name of the send
+     right.  In particular, successive calls will increase the calling
+     task's user-reference count for the send right.
+
+     As a special exception, the kernel will overrun the user reference
+     count of the host name port, so that this function can not fail for
+     that reason.  Because of this, the user should not deallocate the
+     port right if an overrun might have happened.  Otherwise the
+     reference count could drop to zero and the send right be destroyed
+     while the user still expects to be able to use it.  As the kernel
+     does not make use of the number of extant send rights anyway, this
+     is safe to do (the host port itself is never destroyed).
+
+     The function returns 'MACH_PORT_NULL' if a resource shortage
+     prevented the reception of the send right.
+
+     This function is also available in 'mach/mach_traps.h'.
+
+ -- Data type: host_priv_t
+     This is a 'mach_port_t' and used to hold the port name of a
+     privileged host control port.  A send right to the host control
+     port is inserted into the first task at bootstrap (*note
+     Modules::).  This is the only way to get access to the host control
+     port in Mach, so the initial task has to preserve the send right
+     carefully, moving a copy of it to other privileged tasks if
+     necessary and denying access to unprivileged tasks.
+
+
+File: mach.info,  Node: Host Information,  Next: Host Time,  Prev: Host Ports, 
 Up: Host Interface
+
+8.2 Host Information
+====================
+
+ -- Function: kern_return_t host_info (host_t HOST, int FLAVOR,
+          host_info_t HOST_INFO,
+          mach_msg_type_number_t *HOST_INFO_COUNT)
+     The 'host_info' function returns various information about HOST.
+     HOST_INFO is an array of integers that is supplied by the caller.
+     It will be filled with the requested information.  HOST_INFO_COUNT
+     is supplied as the maximum number of integers in HOST_INFO.  On
+     return, it contains the actual number of integers in HOST_INFO.
+     The maximum number of integers returned by any flavor is
+     'HOST_INFO_MAX'.
+
+     The type of information returned is defined by FLAVOR, which can be
+     one of the following:
+
+     'HOST_BASIC_INFO'
+          The function returns basic information about the host, as
+          defined by 'host_basic_info_t'.  This includes the number of
+          processors, their type, and the amount of memory installed in
+          the system.  The number of integers returned is
+          'HOST_BASIC_INFO_COUNT'.  For how to get more information
+          about the processor, see *note Processor Interface::.
+
+     'HOST_PROCESSOR_SLOTS'
+          The function returns the numbers of the slots with active
+          processors in them.  The number of integers returned can be up
+          to 'max_cpus', as returned by the 'HOST_BASIC_INFO' flavor of
+          'host_info'.
+
+     'HOST_SCHED_INFO'
+          The function returns information of interest to schedulers as
+          defined by 'host_sched_info_t'.  The number of integers
+          returned is 'HOST_SCHED_INFO_COUNT'.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if HOST is not a host or FLAVOR is not
+     recognized.  The function returns 'MIG_ARRAY_TOO_LARGE' if the
+     returned info array is too large for HOST_INFO.  In this case,
+     HOST_INFO is filled as much as possible and HOST_INFO_COUNT is set
+     to the number of elements that would be returned if there were
+     enough room.
+
+ -- Data type: struct host_basic_info
+     A pointer to this structure is returned in HOST_INFO by the
+     'host_info' function and provides basic information about the host.
+     You can cast a variable of type 'host_info_t' to a pointer of this
+     type if you provided it as the HOST_INFO parameter for the
+     'HOST_BASIC_INFO' flavor of 'host_info'.  It has the following
+     members:
+
+     'int max_cpus'
+          The maximum number of possible processors for which the kernel
+          is configured.
+
+     'int avail_cpus'
+          The number of cpus currently available.
+
+     'vm_size_t memory_size'
+          The size of physical memory in bytes.
+
+     'cpu_type_t cpu_type'
+          The type of the master processor.
+
+     'cpu_subtype_t cpu_subtype'
+          The subtype of the master processor.
+
+     The type and subtype of the individual processors are also
+     available by 'processor_info', see *note Processor Interface::.
+
+ -- Data type: host_basic_info_t
+     This is a pointer to a 'struct host_basic_info'.
+
+ -- Data type: struct host_sched_info
+     A pointer to this structure is returned in HOST_INFO by the
+     'host_info' function and provides information of interest to
+     schedulers.  You can cast a variable of type 'host_info_t' to a
+     pointer of this type if you provided it as the HOST_INFO parameter
+     for the 'HOST_SCHED_INFO' flavor of 'host_info'.  It has the
+     following members:
+
+     'int min_timeout'
+          The minimum timeout and unit of time in milliseconds.
+
+     'int min_quantum'
+          The minimum quantum and unit of quantum in milliseconds.
+
+ -- Data type: host_sched_info_t
+     This is a pointer to a 'struct host_sched_info'.
+
+ -- Function: kern_return_t host_kernel_version (host_t HOST,
+          kernel_version_t *VERSION)
+     The 'host_kernel_version' function returns the version string
+     compiled into the kernel executing on HOST at the time it was built
+     in the character string VERSION.  This string describes the version
+     of the kernel.  The constant 'KERNEL_VERSION_MAX' should be used to
+     dimension storage for the returned string if the 'kernel_version_t'
+     declaration is not used.
+
+     If the version string compiled into the kernel is longer than
+     'KERNEL_VERSION_MAX', the result is truncated and not necessarily
+     null-terminated.
+
+     If HOST is not a valid send right to a host port, the function
+     returns 'KERN_INVALID_ARGUMENT'.  If VERSION points to inaccessible
+     memory, it returns 'KERN_INVALID_ADDRESS', and 'KERN_SUCCESS'
+     otherwise.
+
+ -- Function: kern_return_t host_get_boot_info (host_priv_t HOST_PRIV,
+          kernel_boot_info_t BOOT_INFO)
+     The 'host_get_boot_info' function returns the boot-time information
+     string supplied by the operator to the kernel executing on
+     HOST_PRIV in the character string BOOT_INFO.  The constant
+     'KERNEL_BOOT_INFO_MAX' should be used to dimension storage for the
+     returned string if the 'kernel_boot_info_t' declaration is not
+     used.
+
+     If the boot-time information string supplied by the operator is
+     longer than 'KERNEL_BOOT_INFO_MAX', the result is truncated and not
+     necessarily null-terminated.
+
+
+File: mach.info,  Node: Host Time,  Next: Host Reboot,  Prev: Host 
Information,  Up: Host Interface
+
+8.3 Host Time
+=============
+
+ -- Data type: time_value_t
+     This is the representation of a time in Mach.  It is a 'struct
+     time_value' and consists of the following members:
+
+     'integer_t seconds'
+          The number of seconds.
+     'integer_t microseconds'
+          The number of microseconds.
+
+   The number of microseconds should always be smaller than
+'TIME_MICROS_MAX' (100000).  A time with this property is "normalized".
+Normalized time values can be manipulated with the following macros:
+
+ -- Macro: time_value_add_usec (time_value_t *VAL, integer_t *MICROS)
+     Add MICROS microseconds to VAL.  If VAL is normalized and MICROS
+     smaller than 'TIME_MICROS_MAX', VAL will be normalized afterwards.
+
+ -- Macro: time_value_add (time_value_t *RESULT, time_value_t *ADDEND)
+     Add the values in ADDEND to RESULT.  If both are normalized, RESULT
+     will be normalized afterwards.
+
+   A variable of type 'time_value_t' can either represent a duration or
+a fixed point in time.  In the latter case, it shall be interpreted as
+the number of seconds and microseconds after the epoch 1.  Jan 1970.
+
+ -- Function: kern_return_t host_get_time (host_t HOST,
+          time_value_t *CURRENT_TIME)
+     Get the current time as seen by HOST.  On success, the time passed
+     since the epoch is returned in CURRENT_TIME.
+
+ -- Function: kern_return_t host_set_time (host_priv_t HOST_PRIV,
+          time_value_t NEW_TIME)
+     Set the time of HOST_PRIV to NEW_TIME.
+
+ -- Function: kern_return_t host_adjust_time (host_priv_t HOST_PRIV,
+          time_value_t NEW_ADJUSTMENT, time_value_t *OLD_ADJUSTMENT)
+     Arrange for the current time as seen by HOST_PRIV to be gradually
+     changed by the adjustment value NEW_ADJUSTMENT, and return the old
+     adjustment value in OLD_ADJUSTMENT.
+
+   For efficiency, the current time is available through a mapped-time
+interface.
+
+ -- Data type: mapped_time_value_t
+     This structure defines the mapped-time interface.  It has the
+     following members:
+
+     'integer_t seconds'
+          The number of seconds.
+
+     'integer_t microseconds'
+          The number of microseconds.
+
+     'integer_t check_seconds'
+          This is a copy of the seconds value, which must be checked to
+          protect against a race condition when reading out the two time
+          values.
+
+   Here is an example how to read out the current time using the
+mapped-time interface:
+
+     do
+       {
+         secs = mtime->seconds;
+         usecs = mtime->microseconds;
+       }
+     while (secs != mtime->check_seconds);
+
+
+File: mach.info,  Node: Host Reboot,  Prev: Host Time,  Up: Host Interface
+
+8.4 Host Reboot
+===============
+
+ -- Function: kern_return_t host_reboot (host_priv_t HOST_PRIV,
+          int OPTIONS)
+     Reboot the host specified by HOST_PRIV.  The argument OPTIONS
+     specifies the flags.  The available flags are defined in
+     'sys/reboot.h':
+
+     'RB_HALT'
+          Do not reboot, but halt the machine.
+
+     'RB_DEBUGGER'
+          Do not reboot, but enter kernel debugger from user space.
+
+     If successful, the function might not return.
+
+
+File: mach.info,  Node: Processors and Processor Sets,  Next: Device 
Interface,  Prev: Host Interface,  Up: Top
+
+9 Processors and Processor Sets
+*******************************
+
+This section describes the Mach interface to processor sets and
+individual processors.  The interface allows to group processors into
+sets and control the processors and processor sets.
+
+   A processor is not a central part of the interface.  It is mostly of
+relevance as a part of a processor set.  Threads are always assigned to
+processor sets, and all processors in a set are equally involved in
+executing all threads assigned to that set.
+
+   The processor set is represented by two ports, a name port
+PROCESSOR_SET_NAME used to query information about the host accessible
+to everyone, and a control port PROCESSOR_SET used to manipulate it.
+
+* Menu:
+
+* Processor Set Interface::       How to work with processor sets.
+* Processor Interface::           How to work with individual processors.
+
+
+File: mach.info,  Node: Processor Set Interface,  Next: Processor Interface,  
Up: Processors and Processor Sets
+
+9.1 Processor Set Interface
+===========================
+
+* Menu:
+
+* Processor Set Ports::           Ports representing a processor set.
+* Processor Set Access::          How the processor sets are accessed.
+* Processor Set Creation::        How new processor sets are created.
+* Processor Set Destruction::     How processor sets are destroyed.
+* Tasks and Threads on Sets::     Assigning tasks, threads to processor sets.
+* Processor Set Priority::        Specifying the priority of a processor set.
+* Processor Set Policy::          Changing the processor set policies.
+* Processor Set Info::            Obtaining information about a processor set.
+
+
+File: mach.info,  Node: Processor Set Ports,  Next: Processor Set Access,  Up: 
Processor Set Interface
+
+9.1.1 Processor Set Ports
+-------------------------
+
+ -- Data type: processor_set_name_t
+     This is a 'mach_port_t' and used to hold the port name of a
+     processor set name port that names the processor set.  Any task can
+     get a send right to name port of a processor set.  The processor
+     set name port allows to get information about the processor set.
+
+ -- Data type: processor_set_t
+     This is a 'mach_port_t' and used to hold the port name of a
+     privileged processor set control port that represents the processor
+     set.  Operations on the processor set are implemented as remote
+     procedure calls to the processor set port.  The processor set port
+     allows to manipulate the processor set.
+
+
+File: mach.info,  Node: Processor Set Access,  Next: Processor Set Creation,  
Prev: Processor Set Ports,  Up: Processor Set Interface
+
+9.1.2 Processor Set Access
+--------------------------
+
+ -- Function: kern_return_t host_processor_sets (host_t HOST,
+          processor_set_name_array_t *PROCESSOR_SETS,
+          mach_msg_type_number_t *PROCESSOR_SETS_COUNT)
+     The function 'host_processor_sets' gets send rights to the name
+     port for each processor set currently assigned to HOST.
+
+     'host_processor_set_priv' can be used to obtain the control ports
+     from these if desired.  PROCESSOR_SETS is an array that is created
+     as a result of this call.  The caller may wish to 'vm_deallocate'
+     this array when the data is no longer needed.  PROCESSOR_SETS_COUNT
+     is set to the number of processor sets in the PROCESSOR_SETS.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if HOST is not a host.
+
+ -- Function: kern_return_t host_processor_set_priv
+          (host_priv_t HOST_PRIV, processor_set_name_t SET_NAME,
+          processor_set_t *SET)
+     The function 'host_processor_set_priv' allows a privileged
+     application to obtain the control port SET for an existing
+     processor set from its name port SET_NAME.  The privileged host
+     port HOST_PRIV is required.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if HOST_PRIV is not a valid host control
+     port.
+
+ -- Function: kern_return_t processor_set_default (host_t HOST,
+          processor_set_name_t *DEFAULT_SET)
+     The function 'processor_set_default' returns the default processor
+     set of HOST in DEFAULT_SET.  The default processor set is used by
+     all threads, tasks, and processors that are not explicitly assigned
+     to other sets.  processor_set_default returns a port that can be
+     used to obtain information about this set (e.g.  how many threads
+     are assigned to it).  This port cannot be used to perform
+     operations on that set.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_ARGUMENT' if HOST is not a host and
+     'KERN_INVALID_ADDRESS' if DEFAULT_SET points to inaccessible
+     memory.
+
+
+File: mach.info,  Node: Processor Set Creation,  Next: Processor Set 
Destruction,  Prev: Processor Set Access,  Up: Processor Set Interface
+
+9.1.3 Processor Set Creation
+----------------------------
+
+ -- Function: kern_return_t processor_set_create (host_t HOST,
+          processor_set_t *NEW_SET, processor_set_name_t *NEW_NAME)
+     The function 'processor_set_create' creates a new processor set on
+     HOST and returns the two ports associated with it.  The port
+     returned in NEW_SET is the actual port representing the set.  It is
+     used to perform operations such as assigning processors, tasks, or
+     threads.  The port returned in NEW_NAME identifies the set, and is
+     used to obtain information about the set.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_ARGUMENT' if HOST is not a host,
+     'KERN_INVALID_ADDRESS' if NEW_SET or NEW_NAME points to
+     inaccessible memory and 'KERN_FAILURE' is the operating system does
+     not support processor allocation.
+
+
+File: mach.info,  Node: Processor Set Destruction,  Next: Tasks and Threads on 
Sets,  Prev: Processor Set Creation,  Up: Processor Set Interface
+
+9.1.4 Processor Set Destruction
+-------------------------------
+
+ -- Function: kern_return_t processor_set_destroy
+          (processor_set_t PROCESSOR_SET)
+     The function 'processor_set_destroy' destroys the specified
+     processor set.  Any assigned processors, tasks, or threads are
+     reassigned to the default set.  The object port for the processor
+     set is required (not the name port).  The default processor set
+     cannot be destroyed.
+
+     This function returns 'KERN_SUCCESS' if the set was destroyed,
+     'KERN_FAILURE' if an attempt was made to destroy the default
+     processor set, or the operating system does not support processor
+     allocation, and 'KERN_INVALID_ARGUMENT' if PROCESSOR_SET is not a
+     valid processor set control port.
+
+
+File: mach.info,  Node: Tasks and Threads on Sets,  Next: Processor Set 
Priority,  Prev: Processor Set Destruction,  Up: Processor Set Interface
+
+9.1.5 Tasks and Threads on Sets
+-------------------------------
+
+ -- Function: kern_return_t processor_set_tasks
+          (processor_set_t PROCESSOR_SET, task_array_t *TASK_LIST,
+          mach_msg_type_number_t *TASK_COUNT)
+     The function 'processor_set_tasks' gets send rights to the kernel
+     port for each task currently assigned to PROCESSOR_SET.
+
+     TASK_LIST is an array that is created as a result of this call.
+     The caller may wish to 'vm_deallocate' this array when the data is
+     no longer needed.  TASK_COUNT is set to the number of tasks in the
+     TASK_LIST.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if PROCESSOR_SET is not a processor set.
+
+ -- Function: kern_return_t processor_set_threads
+          (processor_set_t PROCESSOR_SET, thread_array_t *THREAD_LIST,
+          mach_msg_type_number_t *THREAD_COUNT)
+     The function 'processor_set_thread' gets send rights to the kernel
+     port for each thread currently assigned to PROCESSOR_SET.
+
+     THREAD_LIST is an array that is created as a result of this call.
+     The caller may wish to 'vm_deallocate' this array when the data is
+     no longer needed.  THREAD_COUNT is set to the number of threads in
+     the THREAD_LIST.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if PROCESSOR_SET is not a processor set.
+
+ -- Function: kern_return_t task_assign (task_t TASK,
+          processor_set_t PROCESSOR_SET, boolean_t ASSIGN_THREADS)
+     The function 'task_assign' assigns TASK the set PROCESSOR_SET.
+     This assignment is for the purposes of determining the initial
+     assignment of newly created threads in task.  Any previous
+     assignment of the task is nullified.  Existing threads within the
+     task are also reassigned if ASSIGN_THREADS is 'TRUE'.  They are not
+     affected if it is 'FALSE'.
+
+     This function returns 'KERN_SUCCESS' if the assignment has been
+     performed and 'KERN_INVALID_ARGUMENT' if TASK is not a task, or
+     PROCESSOR_SET is not a processor set on the same host as TASK.
+
+ -- Function: kern_return_t task_assign_default (task_t TASK,
+          boolean_t ASSIGN_THREADS)
+     The function 'task_assign_default' is a variant of 'task_assign'
+     that assigns the task to the default processor set on that task's
+     host.  This variant exists because the control port for the default
+     processor set is privileged and not usually available to users.
+
+     This function returns 'KERN_SUCCESS' if the assignment has been
+     performed and 'KERN_INVALID_ARGUMENT' if TASK is not a task.
+
+ -- Function: kern_return_t task_get_assignment (task_t TASK,
+          processor_set_name_t *ASSIGNED_SET)
+     The function 'task_get_assignment' returns the name of the
+     processor set to which the thread is currently assigned in
+     ASSIGNED_SET.  This port can only be used to obtain information
+     about the processor set.
+
+     This function returns 'KERN_SUCCESS' if the assignment has been
+     performed, 'KERN_INVALID_ADDRESS' if PROCESSOR_SET points to
+     inaccessible memory, and 'KERN_INVALID_ARGUMENT' if TASK is not a
+     task.
+
+ -- Function: kern_return_t thread_assign (thread_t THREAD,
+          processor_set_t PROCESSOR_SET)
+     The function 'thread_assign' assigns THREAD the set PROCESSOR_SET.
+     After the assignment is completed, the thread only executes on
+     processors assigned to the designated processor set.  If there are
+     no such processors, then the thread is unable to execute.  Any
+     previous assignment of the thread is nullified.  Unix system call
+     compatibility code may temporarily force threads to execute on the
+     master processor.
+
+     This function returns 'KERN_SUCCESS' if the assignment has been
+     performed and 'KERN_INVALID_ARGUMENT' if THREAD is not a thread, or
+     PROCESSOR_SET is not a processor set on the same host as THREAD.
+
+ -- Function: kern_return_t thread_assign_default (thread_t THREAD)
+     The function 'thread_assign_default' is a variant of
+     'thread_assign' that assigns the thread to the default processor
+     set on that thread's host.  This variant exists because the control
+     port for the default processor set is privileged and not usually
+     available to users.
+
+     This function returns 'KERN_SUCCESS' if the assignment has been
+     performed and 'KERN_INVALID_ARGUMENT' if THREAD is not a thread.
+
+ -- Function: kern_return_t thread_get_assignment (thread_t THREAD,
+          processor_set_name_t *ASSIGNED_SET)
+     The function 'thread_get_assignment' returns the name of the
+     processor set to which the thread is currently assigned in
+     ASSIGNED_SET.  This port can only be used to obtain information
+     about the processor set.
+
+     This function returns 'KERN_SUCCESS' if the assignment has been
+     performed, 'KERN_INVALID_ADDRESS' if PROCESSOR_SET points to
+     inaccessible memory, and 'KERN_INVALID_ARGUMENT' if THREAD is not a
+     thread.
+
+
+File: mach.info,  Node: Processor Set Priority,  Next: Processor Set Policy,  
Prev: Tasks and Threads on Sets,  Up: Processor Set Interface
+
+9.1.6 Processor Set Priority
+----------------------------
+
+ -- Function: kern_return_t processor_set_max_priority
+          (processor_set_t PROCESSOR_SET, int MAX_PRIORITY,
+          boolean_t CHANGE_THREADS)
+     The function 'processor_set_max_priority' is used to set the
+     maximum priority for a processor set.  The priority of a processor
+     set is used only for newly created threads (thread's maximum
+     priority is set to processor set's) and the assignment of threads
+     to the set (thread's maximum priority is reduced if it exceeds the
+     set's maximum priority, thread's priority is similarly reduced).
+     'processor_set_max_priority' changes this priority.  It also sets
+     the maximum priority of all threads assigned to the processor set
+     to this new priority if CHANGE_THREADS is 'TRUE'.  If this maximum
+     priority is less than the priorities of any of these threads, their
+     priorities will also be set to this new value.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if PROCESSOR_SET is not a processor set or
+     PRIORITY is not a valid priority.
+
+
+File: mach.info,  Node: Processor Set Policy,  Next: Processor Set Info,  
Prev: Processor Set Priority,  Up: Processor Set Interface
+
+9.1.7 Processor Set Policy
+--------------------------
+
+ -- Function: kern_return_t processor_set_policy_enable
+          (processor_set_t PROCESSOR_SET, int POLICY)
+ -- Function: kern_return_t processor_set_policy_disable
+          (processor_set_t PROCESSOR_SET, int POLICY,
+          boolean_t CHANGE_THREADS)
+     Processor sets may restrict the scheduling policies to be used for
+     threads assigned to them.  These two calls provide the mechanism
+     for designating permitted and forbidden policies.  The current set
+     of permitted policies can be obtained from 'processor_set_info'.
+     Timesharing may not be forbidden by any processor set.  This is a
+     compromise to reduce the complexity of the assign operation; any
+     thread whose policy is forbidden by the target processor set has
+     its policy reset to timesharing.  If the CHANGE_THREADS argument to
+     'processor_set_policy_disable' is true, threads currently assigned
+     to this processor set and using the newly disabled policy will have
+     their policy reset to timesharing.
+
+     'mach/policy.h' contains the allowed policies; it is included by
+     'mach.h'.  Not all policies (e.g.  fixed priority) are supported by
+     all systems.
+
+     This function returns 'KERN_SUCCESS' if the operation was completed
+     successfully and 'KERN_INVALID_ARGUMENT' if PROCESSOR_SET is not a
+     processor set or POLICY is not a valid policy, or an attempt was
+     made to disable timesharing.
+
+
+File: mach.info,  Node: Processor Set Info,  Prev: Processor Set Policy,  Up: 
Processor Set Interface
+
+9.1.8 Processor Set Info
+------------------------
+
+ -- Function: kern_return_t processor_set_info
+          (processor_set_name_t SET_NAME, int FLAVOR, host_t *HOST,
+          processor_set_info_t PROCESSOR_SET_INFO,
+          mach_msg_type_number_t *PROCESSOR_SET_INFO_COUNT)
+     The function 'processor_set_info' returns the selected information
+     array for a processor set, as specified by FLAVOR.
+
+     HOST is set to the host on which the processor set resides.  This
+     is the non-privileged host port.
+
+     PROCESSOR_SET_INFO is an array of integers that is supplied by the
+     caller and returned filled with specified information.
+     PROCESSOR_SET_INFO_COUNT is supplied as the maximum number of
+     integers in PROCESSOR_SET_INFO.  On return, it contains the actual
+     number of integers in PROCESSOR_SET_INFO.  The maximum number of
+     integers returned by any flavor is 'PROCESSOR_SET_INFO_MAX'.
+
+     The type of information returned is defined by FLAVOR, which can be
+     one of the following:
+
+     'PROCESSOR_SET_BASIC_INFO'
+          The function returns basic information about the processor
+          set, as defined by 'processor_set_basic_info_t'.  This
+          includes the number of tasks and threads assigned to the
+          processor set.  The number of integers returned is
+          'PROCESSOR_SET_BASIC_INFO_COUNT'.
+
+     'PROCESSOR_SET_SCHED_INFO'
+          The function returns information about the scheduling policy
+          for the processor set as defined by
+          'processor_set_sched_info_t'.  The number of integers returned
+          is 'PROCESSOR_SET_SCHED_INFO_COUNT'.
+
+     Some machines may define additional (machine-dependent) flavors.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if PROCESSOR_SET is not a processor set or
+     FLAVOR is not recognized.  The function returns
+     'MIG_ARRAY_TOO_LARGE' if the returned info array is too large for
+     PROCESSOR_SET_INFO.  In this case, PROCESSOR_SET_INFO is filled as
+     much as possible and PROCESSOR_SET_INFO_COUNT is set to the number
+     of elements that would have been returned if there were enough
+     room.
+
+ -- Data type: struct processor_set_basic_info
+     This structure is returned in PROCESSOR_SET_INFO by the
+     'processor_set_info' function and provides basic information about
+     the processor set.  You can cast a variable of type
+     'processor_set_info_t' to a pointer of this type if you provided it
+     as the PROCESSOR_SET_INFO parameter for the
+     'PROCESSOR_SET_BASIC_INFO' flavor of 'processor_set_info'.  It has
+     the following members:
+
+     'int processor_count'
+          number of processors
+
+     'int task_count'
+          number of tasks
+
+     'int thread_count'
+          number of threads
+
+     'int load_average'
+          scaled load average
+
+     'int mach_factor'
+          scaled mach factor
+
+ -- Data type: processor_set_basic_info_t
+     This is a pointer to a 'struct processor_set_basic_info'.
+
+ -- Data type: struct processor_set_sched_info
+     This structure is returned in PROCESSOR_SET_INFO by the
+     'processor_set_info' function and provides schedule information
+     about the processor set.  You can cast a variable of type
+     'processor_set_info_t' to a pointer of this type if you provided it
+     as the PROCESSOR_SET_INFO parameter for the
+     'PROCESSOR_SET_SCHED_INFO' flavor of 'processor_set_info'.  It has
+     the following members:
+
+     'int policies'
+          allowed policies
+
+     'int max_priority'
+          max priority for new threads
+
+ -- Data type: processor_set_sched_info_t
+     This is a pointer to a 'struct processor_set_sched_info'.
+
+
+File: mach.info,  Node: Processor Interface,  Prev: Processor Set Interface,  
Up: Processors and Processor Sets
+
+9.2 Processor Interface
+=======================
+
+ -- Data type: processor_t
+     This is a 'mach_port_t' and used to hold the port name of a
+     processor port that represents the processor.  Operations on the
+     processor are implemented as remote procedure calls to the
+     processor port.
+
+* Menu:
+
+* Hosted Processors::             Getting a list of all processors on a host.
+* Processor Control::             Starting, stopping, controlling processors.
+* Processors and Sets::           Combining processors into processor sets.
+* Processor Info::                Obtaining information on processors.
+
+
+File: mach.info,  Node: Hosted Processors,  Next: Processor Control,  Up: 
Processor Interface
+
+9.2.1 Hosted Processors
+-----------------------
+
+ -- Function: kern_return_t host_processors (host_priv_t HOST_PRIV,
+          processor_array_t *PROCESSOR_LIST,
+          mach_msg_type_number_t *PROCESSOR_COUNT)
+     The function 'host_processors' gets send rights to the processor
+     port for each processor existing on HOST_PRIV.  This is the
+     privileged port that allows its holder to control a processor.
+
+     PROCESSOR_LIST is an array that is created as a result of this
+     call.  The caller may wish to 'vm_deallocate' this array when the
+     data is no longer needed.  PROCESSOR_COUNT is set to the number of
+     processors in the PROCESSOR_LIST.
+
+     This function returns 'KERN_SUCCESS' if the call succeeded,
+     'KERN_INVALID_ARGUMENT' if HOST_PRIV is not a privileged host port,
+     and 'KERN_INVALID_ADDRESS' if PROCESSOR_COUNT points to
+     inaccessible memory.
+
+
+File: mach.info,  Node: Processor Control,  Next: Processors and Sets,  Prev: 
Hosted Processors,  Up: Processor Interface
+
+9.2.2 Processor Control
+-----------------------
+
+ -- Function: kern_return_t processor_start (processor_t PROCESSOR)
+ -- Function: kern_return_t processor_exit (processor_t PROCESSOR)
+ -- Function: kern_return_t processor_control (processor_t PROCESSOR,
+          processor_info_t *CMD, mach_msg_type_number_t COUNT)
+     Some multiprocessors may allow privileged software to control
+     processors.  The 'processor_start', 'processor_exit', and
+     'processor_control' operations implement this.  The interpretation
+     of the command in CMD is machine dependent.  A newly started
+     processor is assigned to the default processor set.  An exited
+     processor is removed from the processor set to which it was
+     assigned and ceases to be active.
+
+     COUNT contains the length of the command CMD as a number of ints.
+
+     Availability limited.  All of these operations are
+     machine-dependent.  They may do nothing.  The ability to restart an
+     exited processor is also machine-dependent.
+
+     This function returns 'KERN_SUCCESS' if the operation was
+     performed, 'KERN_FAILURE' if the operation was not performed (a
+     likely reason is that it is not supported on this processor),
+     'KERN_INVALID_ARGUMENT' if PROCESSOR is not a processor, and
+     'KERN_INVALID_ADDRESS' if CMD points to inaccessible memory.
+
+
+File: mach.info,  Node: Processors and Sets,  Next: Processor Info,  Prev: 
Processor Control,  Up: Processor Interface
+
+9.2.3 Processors and Sets
+-------------------------
+
+ -- Function: kern_return_t processor_assign (processor_t PROCESSOR,
+          processor_set_t PROCESSOR_SET, boolean_t WAIT)
+     The function 'processor_assign' assigns PROCESSOR to the set
+     PROCESSOR_SET.  After the assignment is completed, the processor
+     only executes threads that are assigned to that processor set.  Any
+     previous assignment of the processor is nullified.  The master
+     processor cannot be reassigned.  All processors take clock
+     interrupts at all times.  The WAIT argument indicates whether the
+     caller should wait for the assignment to be completed or should
+     return immediately.  Dedicated kernel threads are used to perform
+     processor assignment, so setting wait to 'FALSE' allows assignment
+     requests to be queued and performed faster, especially if the
+     kernel has more than one dedicated internal thread for processor
+     assignment.  Redirection of other device interrupts away from
+     processors assigned to other than the default processor set is
+     machine-dependent.  Intermediaries that interpose on ports must be
+     sure to interpose on both ports involved in this call if they
+     interpose on either.
+
+     This function returns 'KERN_SUCCESS' if the assignment has been
+     performed, 'KERN_INVALID_ARGUMENT' if PROCESSOR is not a processor,
+     or PROCESSOR_SET is not a processor set on the same host as
+     PROCESSOR.
+
+ -- Function: kern_return_t processor_get_assignment
+          (processor_t PROCESSOR, processor_set_name_t *ASSIGNED_SET)
+     The function 'processor_get_assignment' obtains the current
+     assignment of a processor.  The name port of the processor set is
+     returned in ASSIGNED_SET.
+
+
+File: mach.info,  Node: Processor Info,  Prev: Processors and Sets,  Up: 
Processor Interface
+
+9.2.4 Processor Info
+--------------------
+
+ -- Function: kern_return_t processor_info (processor_t PROCESSOR,
+          int FLAVOR, host_t *HOST, processor_info_t PROCESSOR_INFO,
+          mach_msg_type_number_t *PROCESSOR_INFO_COUNT)
+     The function 'processor_info' returns the selected information
+     array for a processor, as specified by FLAVOR.
+
+     HOST is set to the host on which the processor set resides.  This
+     is the non-privileged host port.
+
+     PROCESSOR_INFO is an array of integers that is supplied by the
+     caller and returned filled with specified information.
+     PROCESSOR_INFO_COUNT is supplied as the maximum number of integers
+     in PROCESSOR_INFO.  On return, it contains the actual number of
+     integers in PROCESSOR_INFO.  The maximum number of integers
+     returned by any flavor is 'PROCESSOR_INFO_MAX'.
+
+     The type of information returned is defined by FLAVOR, which can be
+     one of the following:
+
+     'PROCESSOR_BASIC_INFO'
+          The function returns basic information about the processor, as
+          defined by 'processor_basic_info_t'.  This includes the slot
+          number of the processor.  The number of integers returned is
+          'PROCESSOR_BASIC_INFO_COUNT'.
+
+     Machines which require more configuration information beyond the
+     slot number are expected to define additional (machine-dependent)
+     flavors.
+
+     The function returns 'KERN_SUCCESS' if the call succeeded and
+     'KERN_INVALID_ARGUMENT' if PROCESSOR is not a processor or FLAVOR
+     is not recognized.  The function returns 'MIG_ARRAY_TOO_LARGE' if
+     the returned info array is too large for PROCESSOR_INFO.  In this
+     case, PROCESSOR_INFO is filled as much as possible and
+     PROCESSOR_INFOCNT is set to the number of elements that would have
+     been returned if there were enough room.
+
+ -- Data type: struct processor_basic_info
+     This structure is returned in PROCESSOR_INFO by the
+     'processor_info' function and provides basic information about the
+     processor.  You can cast a variable of type 'processor_info_t' to a
+     pointer of this type if you provided it as the PROCESSOR_INFO
+     parameter for the 'PROCESSOR_BASIC_INFO' flavor of
+     'processor_info'.  It has the following members:
+
+     'cpu_type_t cpu_type'
+          cpu type
+
+     'cpu_subtype_t cpu_subtype'
+          cpu subtype
+
+     'boolean_t running'
+          is processor running?
+
+     'int slot_num'
+          slot number
+
+     'boolean_t is_master'
+          is this the master processor
+
+ -- Data type: processor_basic_info_t
+     This is a pointer to a 'struct processor_basic_info'.
+
+
+File: mach.info,  Node: Device Interface,  Next: Kernel Debugger,  Prev: 
Processors and Processor Sets,  Up: Top
+
+10 Device Interface
+*******************
+
+The GNU Mach microkernel provides a simple device interface that allows
+the user space programs to access the underlying hardware devices.  Each
+device has a unique name, which is a string up to 127 characters long.
+To open a device, the device master port has to be supplied.  The device
+master port is only available through the bootstrap port.  Anyone who
+has control over the device master port can use all hardware devices.
+
+ -- Data type: device_t
+     This is a 'mach_port_t' and used to hold the port name of a device
+     port that represents the device.  Operations on the device are
+     implemented as remote procedure calls to the device port.  Each
+     device provides a sequence of records.  The length of a record is
+     specific to the device.  Data can be transferred "out-of-line" or
+     "in-line" (*note Memory::).
+
+   All constants and functions in this chapter are defined in
+'device/device.h'.
+
+* Menu:
+
+* Device Reply Server::           Handling device reply messages.
+* Device Open::                   Opening hardware devices.
+* Device Close::                  Closing hardware devices.
+* Device Read::                   Reading data from the device.
+* Device Write::                  Writing data to the device.
+* Device Map::                    Mapping devices into virtual memory.
+* Device Status::                 Querying and manipulating a device.
+* Device Filter::                 Filtering packets arriving on a device.
+
+
+File: mach.info,  Node: Device Reply Server,  Next: Device Open,  Up: Device 
Interface
+
+10.1 Device Reply Server
+========================
+
+Beside the usual synchronous interface, an asynchronous interface is
+provided.  For this, the caller has to receive and handle the reply
+messages separately from the function call.
+
+ -- Function: boolean_t device_reply_server (msg_header_t *IN_MSG,
+          msg_header_t *OUT_MSG)
+     The function 'device_reply_server' is produced by the remote
+     procedure call generator to handle a received message.  This
+     function does all necessary argument handling, and actually calls
+     one of the following functions: 'ds_device_open_reply',
+     'ds_device_read_reply', 'ds_device_read_reply_inband',
+     'ds_device_write_reply' and 'ds_device_write_reply_inband'.
+
+     The IN_MSG argument is the message that has been received from the
+     kernel.  The OUT_MSG is a reply message, but this is not used for
+     this server.
+
+     The function returns 'TRUE' to indicate that the message in
+     question was applicable to this interface, and that the appropriate
+     routine was called to interpret the message.  It returns 'FALSE' to
+     indicate that the message did not apply to this interface, and that
+     no other action was taken.
+
+
+File: mach.info,  Node: Device Open,  Next: Device Close,  Prev: Device Reply 
Server,  Up: Device Interface
+
+10.2 Device Open
+================
+
+ -- Function: kern_return_t device_open (mach_port_t MASTER_PORT,
+          dev_mode_t MODE, dev_name_t NAME, device_t *DEVICE)
+     The function 'device_open' opens the device NAME and returns a port
+     to it in DEVICE.  The open count for the device is incremented by
+     one.  If the open count was 0, the open handler for the device is
+     invoked.
+
+     MASTER_PORT must hold the master device port.  NAME specifies the
+     device to open, and is a string up to 128 characters long.  MODE is
+     the open mode.  It is a bitwise-or of the following constants:
+
+     'D_READ'
+          Request read access for the device.
+
+     'D_WRITE'
+          Request write access for the device.
+
+     'D_NODELAY'
+          Do not delay an open.
+
+     The function returns 'D_SUCCESS' if the device was successfully
+     opened, 'D_INVALID_OPERATION' if MASTER_PORT is not the master
+     device port, 'D_WOULD_BLOCK' is the device is busy and 'D_NOWAIT'
+     was specified in mode, 'D_ALREADY_OPEN' if the device is already
+     open in an incompatible mode and 'D_NO_SUCH_DEVICE' if NAME does
+     not denote a know device.
+
+ -- Function: kern_return_t device_open_request
+          (mach_port_t MASTER_PORT, mach_port_t REPLY_PORT,
+          dev_mode_t MODE, dev_name_t NAME)
+ -- Function: kern_return_t ds_device_open_reply
+          (mach_port_t REPLY_PORT, kern_return_t RETURN,
+          device_t *DEVICE)
+     This is the asynchronous form of the 'device_open' function.
+     'device_open_request' performs the open request.  The meaning for
+     the parameters is as in 'device_open'.  Additionally, the caller
+     has to supply a reply port to which the 'ds_device_open_reply'
+     message is sent by the kernel when the open has been performed.
+     The return value of the open operation is stored in RETURN_CODE.
+
+     As neither function receives a reply message, only message
+     transmission errors apply.  If no error occurs, 'KERN_SUCCESS' is
+     returned.
+
+
+File: mach.info,  Node: Device Close,  Next: Device Read,  Prev: Device Open,  
Up: Device Interface
+
+10.3 Device Close
+=================
+
+ -- Function: kern_return_t device_close (device_t DEVICE)
+     The function 'device_close' decrements the open count of the device
+     by one.  If the open count drops to zero, the close handler for the
+     device is called.  The device to close is specified by its port
+     DEVICE.
+
+     The function returns 'D_SUCCESS' if the device was successfully
+     closed and 'D_NO_SUCH_DEVICE' if DEVICE does not denote a device
+     port.
+
+
+File: mach.info,  Node: Device Read,  Next: Device Write,  Prev: Device Close, 
 Up: Device Interface
+
+10.4 Device Read
+================
+
+ -- Function: kern_return_t device_read (device_t DEVICE,
+          dev_mode_t MODE, recnum_t RECNUM, int BYTES_WANTED,
+          io_buf_ptr_t *DATA, mach_msg_type_number_t *DATA_COUNT)
+     The function 'device_read' reads BYTES_WANTED bytes from DEVICE,
+     and stores them in a buffer allocated with 'vm_allocate', which
+     address is returned in DATA.  The caller must deallocated it if it
+     is no longer needed.  The number of bytes actually returned is
+     stored in DATA_COUNT.
+
+     If MODE is 'D_NOWAIT', the operation does not block.  Otherwise
+     MODE should be 0.  RECNUM is the record number to be read, its
+     meaning is device specific.
+
+     The function returns 'D_SUCCESS' if some data was successfully
+     read, 'D_WOULD_BLOCK' if no data is currently available and
+     'D_NOWAIT' is specified, and 'D_NO_SUCH_DEVICE' if DEVICE does not
+     denote a device port.
+
+ -- Function: kern_return_t device_read_inband (device_t DEVICE,
+          dev_mode_t MODE, recnum_t RECNUM, int BYTES_WANTED,
+          io_buf_ptr_inband_t *DATA, mach_msg_type_number_t *DATA_COUNT)
+     The 'device_read_inband' function works as the 'device_read'
+     function, except that the data is returned "in-line" in the reply
+     IPC message (*note Memory::).
+
+ -- Function: kern_return_t device_read_request (device_t DEVICE,
+          mach_port_t REPLY_PORT, dev_mode_t MODE, recnum_t RECNUM,
+          int BYTES_WANTED)
+ -- Function: kern_return_t ds_device_read_reply
+          (mach_port_t REPLY_PORT, kern_return_t RETURN_CODE,
+          io_buf_ptr_t DATA, mach_msg_type_number_t DATA_COUNT)
+     This is the asynchronous form of the 'device_read' function.
+     'device_read_request' performs the read request.  The meaning for
+     the parameters is as in 'device_read'.  Additionally, the caller
+     has to supply a reply port to which the 'ds_device_read_reply'
+     message is sent by the kernel when the read has been performed.
+     The return value of the read operation is stored in RETURN_CODE.
+
+     As neither function receives a reply message, only message
+     transmission errors apply.  If no error occurs, 'KERN_SUCCESS' is
+     returned.
+
+ -- Function: kern_return_t device_read_request_inband (device_t DEVICE,
+          mach_port_t REPLY_PORT, dev_mode_t MODE, recnum_t RECNUM,
+          int BYTES_WANTED)
+ -- Function: kern_return_t ds_device_read_reply_inband
+          (mach_port_t REPLY_PORT, kern_return_t RETURN_CODE,
+          io_buf_ptr_t DATA, mach_msg_type_number_t DATA_COUNT)
+     The 'device_read_request_inband' and 'ds_device_read_reply_inband'
+     functions work as the 'device_read_request' and
+     'ds_device_read_reply' functions, except that the data is returned
+     "in-line" in the reply IPC message (*note Memory::).
+
+
+File: mach.info,  Node: Device Write,  Next: Device Map,  Prev: Device Read,  
Up: Device Interface
+
+10.5 Device Write
+=================
+
+ -- Function: kern_return_t device_write (device_t DEVICE,
+          dev_mode_t MODE, recnum_t RECNUM, io_buf_ptr_t DATA,
+          mach_msg_type_number_t DATA_COUNT, int *BYTES_WRITTEN)
+     The function 'device_write' writes DATA_COUNT bytes from the buffer
+     DATA to DEVICE.  The number of bytes actually written is returned
+     in BYTES_WRITTEN.
+
+     If MODE is 'D_NOWAIT', the function returns without waiting for I/O
+     completion.  Otherwise MODE should be 0.  RECNUM is the record
+     number to be written, its meaning is device specific.
+
+     The function returns 'D_SUCCESS' if some data was successfully
+     written and 'D_NO_SUCH_DEVICE' if DEVICE does not denote a device
+     port or the device is dead or not completely open.
+
+ -- Function: kern_return_t device_write_inband (device_t DEVICE,
+          dev_mode_t MODE, recnum_t RECNUM, int BYTES_WANTED,
+          io_buf_ptr_inband_t *DATA, mach_msg_type_number_t *DATA_COUNT)
+     The 'device_write_inband' function works as the 'device_write'
+     function, except that the data is sent "in-line" in the request IPC
+     message (*note Memory::).
+
+ -- Function: kern_return_t device_write_request (device_t DEVICE,
+          mach_port_t REPLY_PORT, dev_mode_t MODE, recnum_t RECNUM,
+          io_buf_ptr_t DATA, mach_msg_type_number_t DATA_COUNT)
+ -- Function: kern_return_t ds_device_write_reply
+          (mach_port_t REPLY_PORT, kern_return_t RETURN_CODE,
+          int BYTES_WRITTEN)
+     This is the asynchronous form of the 'device_write' function.
+     'device_write_request' performs the write request.  The meaning for
+     the parameters is as in 'device_write'.  Additionally, the caller
+     has to supply a reply port to which the 'ds_device_write_reply'
+     message is sent by the kernel when the write has been performed.
+     The return value of the write operation is stored in RETURN_CODE.
+
+     As neither function receives a reply message, only message
+     transmission errors apply.  If no error occurs, 'KERN_SUCCESS' is
+     returned.
+
+ -- Function: kern_return_t device_write_request_inband
+          (device_t DEVICE, mach_port_t REPLY_PORT, dev_mode_t MODE,
+          recnum_t RECNUM, io_buf_ptr_t DATA,
+          mach_msg_type_number_t DATA_COUNT)
+ -- Function: kern_return_t ds_device_write_reply_inband
+          (mach_port_t REPLY_PORT, kern_return_t RETURN_CODE,
+          int BYTES_WRITTEN)
+     The 'device_write_request_inband' and
+     'ds_device_write_reply_inband' functions work as the
+     'device_write_request' and 'ds_device_write_reply' functions,
+     except that the data is sent "in-line" in the request IPC message
+     (*note Memory::).
+
+
+File: mach.info,  Node: Device Map,  Next: Device Status,  Prev: Device Write, 
 Up: Device Interface
+
+10.6 Device Map
+===============
+
+ -- Function: kern_return_t device_map (device_t DEVICE, vm_prot_t PROT,
+          vm_offset_t OFFSET, vm_size_t SIZE, mach_port_t *PAGER,
+          int UNMAP)
+     The function 'device_map' creates a new memory manager for DEVICE
+     and returns a port to it in PAGER.  The memory manager is usable as
+     a memory object in a 'vm_map' call.  The call is device dependent.
+
+     The protection for the memory object is specified by PROT.  The
+     memory object starts at OFFSET within the device and extends SIZE
+     bytes.  UNMAP is currently unused.
+
+     The function returns 'D_SUCCESS' if some data was successfully
+     written and 'D_NO_SUCH_DEVICE' if DEVICE does not denote a device
+     port or the device is dead or not completely open.
+
+
+File: mach.info,  Node: Device Status,  Next: Device Filter,  Prev: Device 
Map,  Up: Device Interface
+
+10.7 Device Status
+==================
+
+ -- Function: kern_return_t device_set_status (device_t DEVICE,
+          dev_flavor_t FLAVOR, dev_status_t STATUS,
+          mach_msg_type_number_t STATUS_COUNT)
+     The function 'device_set_status' sets the status of a device.  The
+     possible values for FLAVOR and their interpretation is device
+     specific.
+
+     The function returns 'D_SUCCESS' if some data was successfully
+     written and 'D_NO_SUCH_DEVICE' if DEVICE does not denote a device
+     port or the device is dead or not completely open.
+
+ -- Function: kern_return_t device_get_status (device_t DEVICE,
+          dev_flavor_t FLAVOR, dev_status_t STATUS,
+          mach_msg_type_number_t *STATUS_COUNT)
+     The function 'device_get_status' gets the status of a device.  The
+     possible values for FLAVOR and their interpretation is device
+     specific.
+
+     The function returns 'D_SUCCESS' if some data was successfully
+     written and 'D_NO_SUCH_DEVICE' if DEVICE does not denote a device
+     port or the device is dead or not completely open.
+
+
+File: mach.info,  Node: Device Filter,  Prev: Device Status,  Up: Device 
Interface
+
+10.8 Device Filter
+==================
+
+ -- Function: kern_return_t device_set_filter (device_t DEVICE,
+          mach_port_t RECEIVE_PORT,
+          mach_msg_type_name_t RECEIVE_PORT_TYPE, int PRIORITY,
+          filter_array_t FILTER, mach_msg_type_number_t FILTER_COUNT)
+     The function 'device_set_filter' makes it possible to filter out
+     selected data arriving at or leaving the device and forward it to a
+     port.  FILTER is a list of filter commands, which are applied to
+     incoming data to determine if the data should be sent to
+     RECEIVE_PORT.  The IPC type of the send right is specified by
+     RECEIVE_PORT_RIGHT, it is either 'MACH_MSG_TYPE_MAKE_SEND' or
+     'MACH_MSG_TYPE_MOVE_SEND'.  The PRIORITY value is used to order
+     multiple filters.
+
+     There can be up to 'NET_MAX_FILTER' commands in FILTER.  The actual
+     number of commands is passed in FILTER_COUNT.  For the purpose of
+     the filter test, an internal stack is provided.  After all commands
+     have been processed, the value on the top of the stack determines
+     if the data is forwarded or the next filter is tried.
+
+     The first command is a header which contains two fields: one for
+     flags and the other for the type of interpreter used to run the
+     rest of the commands.
+
+     Any combination of the following flags is allowed but at least one
+     of them must be specified.
+
+     'NETF_IN'
+          The filter will be applied to data received by the device.
+
+     'NETF_OUT'
+          The filter will be applied to data transmitted by the device.
+
+     Unless the type is given explicitly the native NETF interpreter
+     will be used.  To select an alternative implementation use one of
+     the following types:
+
+     'NETF_BPF'
+          Use Berkeley Packet Filter.
+
+     For the listener to know what kind of packet is being received,
+     when the filter code accepts a packet the message sent to
+     RECEIVE_PORT is tagged with either NETF_IN or NETF_OUT.
+
+     Each word of the command list specifies a data (push) operation
+     (high order NETF_NBPO bits) as well as a binary operator (low order
+     NETF_NBPA bits).  The value to be pushed onto the stack is chosen
+     as follows.
+
+     'NETF_PUSHLIT'
+          Use the next short word of the filter as the value.
+
+     'NETF_PUSHZERO'
+          Use 0 as the value.
+
+     'NETF_PUSHWORD+N'
+          Use short word N of the "data" portion of the message as the
+          value.
+
+     'NETF_PUSHHDR+N'
+          Use short word N of the "header" portion of the message as the
+          value.
+
+     'NETF_PUSHIND+N'
+          Pops the top long word from the stack and then uses short word
+          N of the "data" portion of the message as the value.
+
+     'NETF_PUSHHDRIND+N'
+          Pops the top long word from the stack and then uses short word
+          N of the "header" portion of the message as the value.
+
+     'NETF_PUSHSTK+N'
+          Use long word N of the stack (where the top of stack is long
+          word 0) as the value.
+
+     'NETF_NOPUSH'
+          Don't push a value.
+
+     The unsigned value so chosen is promoted to a long word before
+     being pushed.  Once a value is pushed (except for the case of
+     'NETF_NOPUSH'), the top two long words of the stack are popped and
+     a binary operator applied to them (with the old top of stack as the
+     second operand).  The result of the operator is pushed on the
+     stack.  These operators are:
+
+     'NETF_NOP'
+          Don't pop off any values and do no operation.
+
+     'NETF_EQ'
+          Perform an equal comparison.
+
+     'NETF_LT'
+          Perform a less than comparison.
+
+     'NETF_LE'
+          Perform a less than or equal comparison.
+
+     'NETF_GT'
+          Perform a greater than comparison.
+
+     'NETF_GE'
+          Perform a greater than or equal comparison.
+
+     'NETF_AND'
+          Perform a bitise boolean AND operation.
+
+     'NETF_OR'
+          Perform a bitise boolean inclusive OR operation.
+
+     'NETF_XOR'
+          Perform a bitise boolean exclusive OR operation.
+
+     'NETF_NEQ'
+          Perform a not equal comparison.
+
+     'NETF_LSH'
+          Perform a left shift operation.
+
+     'NETF_RSH'
+          Perform a right shift operation.
+
+     'NETF_ADD'
+          Perform an addition.
+
+     'NETF_SUB'
+          Perform a subtraction.
+
+     'NETF_COR'
+          Perform an equal comparison.  If the comparison is 'TRUE',
+          terminate the filter list.  Otherwise, pop the result of the
+          comparison off the stack.
+
+     'NETF_CAND'
+          Perform an equal comparison.  If the comparison is 'FALSE',
+          terminate the filter list.  Otherwise, pop the result of the
+          comparison off the stack.
+
+     'NETF_CNOR'
+          Perform a not equal comparison.  If the comparison is 'FALSE',
+          terminate the filter list.  Otherwise, pop the result of the
+          comparison off the stack.
+
+     'NETF_CNAND'
+          Perform a not equal comparison.  If the comparison is 'TRUE',
+          terminate the filter list.  Otherwise, pop the result of the
+          comparison off the stack.  The scan of the filter list
+          terminates when the filter list is emptied, or a 'NETF_C...'
+          operation terminates the list.  At this time, if the final
+          value of the top of the stack is 'TRUE', then the message is
+          accepted for the filter.
+
+     The function returns 'D_SUCCESS' if some data was successfully
+     written, 'D_INVALID_OPERATION' if RECEIVE_PORT is not a valid send
+     right, and 'D_NO_SUCH_DEVICE' if DEVICE does not denote a device
+     port or the device is dead or not completely open.
+
+
+File: mach.info,  Node: Kernel Debugger,  Next: Copying,  Prev: Device 
Interface,  Up: Top
+
+11 Kernel Debugger
+******************
+
+The GNU Mach kernel debugger 'ddb' is a powerful built-in debugger with
+a gdb like syntax.  It is enabled at compile time using the
+'--enable-kdb' option.  Whenever you want to enter the debugger while
+running the kernel, you can press the key combination <Ctrl-Alt-D>.
+
+* Menu:
+
+* Operation::                     Basic architecture of the kernel debugger.
+* Commands::                      Available commands in the kernel debugger.
+* Variables::                     Access of variables from the kernel debugger.
+* Expressions::                   Usage of expressions in the kernel debugger.
+
+
+File: mach.info,  Node: Operation,  Next: Commands,  Up: Kernel Debugger
+
+11.1 Operation
+==============
+
+The current location is called "dot".  The dot is displayed with a
+hexadecimal format at a prompt.  Examine and write commands update dot
+to the address of the last line examined or the last location modified,
+and set "next" to the address of the next location to be examined or
+changed.  Other commands don't change dot, and set next to be the same
+as dot.
+
+   The general command syntax is:
+
+     COMMAND[/MODIFIER] ADDRESS [,COUNT]
+
+   '!!' repeats the previous command, and a blank line repeats from the
+address next with count 1 and no modifiers.  Specifying ADDRESS sets dot
+to the address.  Omitting ADDRESS uses dot.  A missing COUNT is taken to
+be 1 for printing commands or infinity for stack traces.
+
+   Current 'ddb' is enhanced to support multi-thread debugging.  A break
+point can be set only for a specific thread, and the address space or
+registers of non current thread can be examined or modified if supported
+by machine dependent routines.  For example,
+
+     break/t mach_msg_trap $task11.0
+
+   sets a break point at 'mach_msg_trap' for the first thread of task 11
+listed by a 'show all threads' command.
+
+   In the above example, '$task11.0' is translated to the corresponding
+thread structure's address by variable translation mechanism described
+later.  If a default target thread is set in a variable '$thread', the
+'$task11.0' can be omitted.  In general, if 't' is specified in a
+modifier of a command line, a specified thread or a default target
+thread is used as a target thread instead of the current one.  The 't'
+modifier in a command line is not valid in evaluating expressions in a
+command line.  If you want to get a value indirectly from a specific
+thread's address space or access to its registers within an expression,
+you have to specify a default target thread in advance, and to use ':t'
+modifier immediately after the indirect access or the register reference
+like as follows:
+
+     set $thread $task11.0
+     print $eax:t *(0x100):tuh
+
+   No sign extension and indirection 'size(long, half word, byte)' can
+be specified with 'u', 'l', 'h' and 'b' respectively for the indirect
+access.
+
+   Note: Support of non current space/register access and user space
+break point depend on the machines.  If not supported, attempts of such
+operation may provide incorrect information or may cause strange
+behavior.  Even if supported, the user space access is limited to the
+pages resident in the main memory at that time.  If a target page is not
+in the main memory, an error will be reported.
+
+   'ddb' has a feature like a command 'more' for the output.  If an
+output line exceeds the number set in the '$lines' variable, it displays
+'--db_more--' and waits for a response.  The valid responses for it are:
+
+'<SPC>'
+     one more page
+
+'<RET>'
+     one more line
+
+'q'
+     abort the current command, and return to the command input mode
+
diff --git a/doc/mach.info-2 b/doc/mach.info-2
new file mode 100644
index 0000000..2ca87f1
--- /dev/null
+++ b/doc/mach.info-2
@@ -0,0 +1,1700 @@
+This is mach.info, produced by makeinfo version 5.1 from mach.texi.
+
+This file documents the GNU Mach microkernel.
+
+   This is edition 0.4, last updated on 27 September 2013, of 'The GNU
+Mach Reference Manual', for version 1.4.
+
+   Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
+Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Section, with no Front-Cover Texts,
+     and with no Back-Cover Texts.  A copy of the license is included in
+     the section entitled "GNU Free Documentation License".
+
+     This work is based on manual pages under the following copyright
+     and license:
+
+     Mach Operating System
+     Copyright (C) 1991,1990 Carnegie Mellon University
+     All Rights Reserved.
+
+     Permission to use, copy, modify and distribute this software and
+     its documentation is hereby granted, provided that both the
+     copyright notice and this permission notice appear in all copies of
+     the software, derivative works or modified versions, and any
+     portions thereof, and that both notices appear in supporting
+     documentation.
+
+     CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+     CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+     ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+INFO-DIR-SECTION Kernel
+START-INFO-DIR-ENTRY
+* GNUMach: (mach).              Using and programming the GNU Mach microkernel.
+END-INFO-DIR-ENTRY
+
+
+File: mach.info,  Node: Commands,  Next: Variables,  Prev: Operation,  Up: 
Kernel Debugger
+
+11.2 Commands
+=============
+
+'examine(x) [/MODIFIER] ADDR[,COUNT] [ THREAD ]'
+     Display the addressed locations according to the formats in the
+     modifier.  Multiple modifier formats display multiple locations.
+     If no format is specified, the last formats specified for this
+     command is used.  Address space other than that of the current
+     thread can be specified with 't' option in the modifier and THREAD
+     parameter.  The format characters are
+
+     'b'
+          look at by bytes(8 bits)
+
+     'h'
+          look at by half words(16 bits)
+
+     'l'
+          look at by long words(32 bits)
+
+     'a'
+          print the location being displayed
+
+     ','
+          skip one unit producing no output
+
+     'A'
+          print the location with a line number if possible
+
+     'x'
+          display in unsigned hex
+
+     'z'
+          display in signed hex
+
+     'o'
+          display in unsigned octal
+
+     'd'
+          display in signed decimal
+
+     'u'
+          display in unsigned decimal
+
+     'r'
+          display in current radix, signed
+
+     'c'
+          display low 8 bits as a character.  Non-printing characters
+          are displayed as an octal escape code (e.g.  '\000').
+
+     's'
+          display the null-terminated string at the location.
+          Non-printing characters are displayed as octal escapes.
+
+     'm'
+          display in unsigned hex with character dump at the end of each
+          line.  The location is also displayed in hex at the beginning
+          of each line.
+
+     'i'
+          display as an instruction
+
+     'I'
+          display as an instruction with possible alternate formats
+          depending on the machine:
+
+          'vax'
+               don't assume that each external label is a procedure
+               entry mask
+
+          'i386'
+               don't round to the next long word boundary
+
+          'mips'
+               print register contents
+
+'xf'
+     Examine forward.  It executes an examine command with the last
+     specified parameters to it except that the next address displayed
+     by it is used as the start address.
+
+'xb'
+     Examine backward.  It executes an examine command with the last
+     specified parameters to it except that the last start address
+     subtracted by the size displayed by it is used as the start
+     address.
+
+'print[/axzodurc] ADDR1 [ ADDR2 ... ]'
+     Print ADDR's according to the modifier character.  Valid formats
+     are: 'a' 'x' 'z' 'o' 'd' 'u' 'r' 'c'.  If no modifier is specified,
+     the last one specified to it is used.  ADDR can be a string, and it
+     is printed as it is.  For example,
+
+          print/x "eax = " $eax "\necx = " $ecx "\n"
+
+     will print like
+
+          eax = xxxxxx
+          ecx = yyyyyy
+
+'write[/bhlt] ADDR [ THREAD ] EXPR1 [ EXPR2 ... ]'
+     Write the expressions at succeeding locations.  The write unit size
+     can be specified in the modifier with a letter b (byte), h (half
+     word) or l(long word) respectively.  If omitted, long word is
+     assumed.  Target address space can also be specified with 't'
+     option in the modifier and THREAD parameter.  Warning: since there
+     is no delimiter between expressions, strange things may happen.
+     It's best to enclose each expression in parentheses.
+
+'set $VARIABLE [=] EXPR'
+     Set the named variable or register with the value of EXPR.  Valid
+     variable names are described below.
+
+'break[/tuTU] ADDR[,COUNT] [ THREAD1 ... ]'
+     Set a break point at ADDR.  If count is supplied, continues
+     (COUNT-1) times before stopping at the break point.  If the break
+     point is set, a break point number is printed with '#'.  This
+     number can be used in deleting the break point or adding conditions
+     to it.
+
+     't'
+          Set a break point only for a specific thread.  The thread is
+          specified by THREAD parameter, or default one is used if the
+          parameter is omitted.
+
+     'u'
+          Set a break point in user space address.  It may be combined
+          with 't' or 'T' option to specify the non-current target user
+          space.  Without 'u' option, the address is considered in the
+          kernel space, and wrong space address is rejected with an
+          error message.  This option can be used only if it is
+          supported by machine dependent routines.
+
+     'T'
+          Set a break point only for threads in a specific task.  It is
+          like 't' option except that the break point is valid for all
+          threads which belong to the same task as the specified target
+          thread.
+
+     'U'
+          Set a break point in shared user space address.  It is like
+          'u' option, except that the break point is valid for all
+          threads which share the same address space even if 't' option
+          is specified.  't' option is used only to specify the target
+          shared space.  Without 't' option, 'u' and 'U' have the same
+          meanings.  'U' is useful for setting a user space break point
+          in non-current address space with 't' option such as in an
+          emulation library space.  This option can be used only if it
+          is supported by machine dependent routines.
+
+     Warning: if a user text is shadowed by a normal user space
+     debugger, user space break points may not work correctly.  Setting
+     a break point at the low-level code paths may also cause strange
+     behavior.
+
+'delete[/tuTU] ADDR|#NUMBER [ THREAD1 ... ]'
+     Delete the break point.  The target break point can be specified by
+     a break point number with '#', or by ADDR like specified in 'break'
+     command.
+
+'cond #NUMBER [ CONDITION COMMANDS ]'
+     Set or delete a condition for the break point specified by the
+     NUMBER.  If the CONDITION and COMMANDS are null, the condition is
+     deleted.  Otherwise the condition is set for it.  When the break
+     point is hit, the CONDITION is evaluated.  The COMMANDS will be
+     executed if the condition is true and the break point count set by
+     a break point command becomes zero.  COMMANDS is a list of commands
+     separated by semicolons.  Each command in the list is executed in
+     that order, but if a 'continue' command is executed, the command
+     execution stops there, and the stopped thread resumes execution.
+     If the command execution reaches the end of the list, and it enters
+     into a command input mode.  For example,
+
+          set $work0 0
+          break/Tu xxx_start $task7.0
+          cond #1  (1)  set $work0 1; set $work1 0; cont
+          break/T  vm_fault $task7.0
+          cond #2  ($work0) set $work1 ($work1+1); cont
+          break/Tu xxx_end $task7.0
+          cond #3  ($work0) print $work1 " faults\n"; set $work0 0
+          cont
+
+     will print page fault counts from 'xxx_start' to 'xxx_end' in
+     'task7'.
+
+'step[/p] [,COUNT]'
+     Single step COUNT times.  If 'p' option is specified, print each
+     instruction at each step.  Otherwise, only print the last
+     instruction.
+
+     Warning: depending on machine type, it may not be possible to
+     single-step through some low-level code paths or user space code.
+     On machines with software-emulated single-stepping (e.g., pmax),
+     stepping through code executed by interrupt handlers will probably
+     do the wrong thing.
+
+'continue[/c]'
+     Continue execution until a breakpoint or watchpoint.  If '/c',
+     count instructions while executing.  Some machines (e.g., pmax)
+     also count loads and stores.
+
+     Warning: when counting, the debugger is really silently
+     single-stepping.  This means that single-stepping on low-level code
+     may cause strange behavior.
+
+'until'
+     Stop at the next call or return instruction.
+
+'next[/p]'
+     Stop at the matching return instruction.  If 'p' option is
+     specified, print the call nesting depth and the cumulative
+     instruction count at each call or return.  Otherwise, only print
+     when the matching return is hit.
+
+'match[/p]'
+     A synonym for 'next'.
+
+'trace[/tu] [ FRAME_ADDR|THREAD ][,COUNT]'
+     Stack trace.  'u' option traces user space; if omitted, only traces
+     kernel space.  If 't' option is specified, it shows the stack trace
+     of the specified thread or a default target thread.  Otherwise, it
+     shows the stack trace of the current thread from the frame address
+     specified by a parameter or from the current frame.  COUNT is the
+     number of frames to be traced.  If the COUNT is omitted, all frames
+     are printed.
+
+     Warning: If the target thread's stack is not in the main memory at
+     that time, the stack trace will fail.  User space stack trace is
+     valid only if the machine dependent code supports it.
+
+'search[/bhl] ADDR VALUE [MASK] [,COUNT]'
+     Search memory for a value.  This command might fail in interesting
+     ways if it doesn't find the searched-for value.  This is because
+     'ddb' doesn't always recover from touching bad memory.  The
+     optional count argument limits the search.
+
+'macro NAME COMMANDS'
+     Define a debugger macro as NAME.  COMMANDS is a list of commands to
+     be associated with the macro.  In the expressions of the command
+     list, a variable '$argxx' can be used to get a parameter passed to
+     the macro.  When a macro is called, each argument is evaluated as
+     an expression, and the value is assigned to each parameter,
+     '$arg1', '$arg2', ... respectively.  10 '$arg' variables are
+     reserved to each level of macros, and they can be used as local
+     variables.  The nesting of macro can be allowed up to 5 levels.
+     For example,
+
+          macro xinit set $work0 $arg1
+          macro xlist examine/m $work0,4; set $work0 *($work0)
+          xinit *(xxx_list)
+          xlist
+          ...
+
+     will print the contents of a list starting from 'xxx_list' by each
+     'xlist' command.
+
+'dmacro NAME'
+     Delete the macro named NAME.
+
+'show all threads[/ul]'
+     Display all tasks and threads information.  This version of 'ddb'
+     prints more information than previous one.  It shows UNIX process
+     information like 'ps' for each task.  The UNIX process information
+     may not be shown if it is not supported in the machine, or the
+     bottom of the stack of the target task is not in the main memory at
+     that time.  It also shows task and thread identification numbers.
+     These numbers can be used to specify a task or a thread
+     symbolically in various commands.  The numbers are valid only in
+     the same debugger session.  If the execution is resumed again, the
+     numbers may change.  The current thread can be distinguished from
+     others by a '#' after the thread id instead of ':'.  Without 'l'
+     option, it only shows thread id, thread structure address and the
+     status for each thread.  The status consists of 5 letters, R(run),
+     W(wait), S(suspended), O(swapped out) and N(interruptible), and if
+     corresponding status bit is off, '.' is printed instead.  If 'l'
+     option is specified, more detail information is printed for each
+     thread.
+
+'show task [ ADDR ]'
+     Display the information of a task specified by ADDR.  If ADDR is
+     omitted, current task information is displayed.
+
+'show thread [ ADDR ]'
+     Display the information of a thread specified by ADDR.  If ADDR is
+     omitted, current thread information is displayed.
+
+'show registers[/tu [ THREAD ]]'
+     Display the register set.  Target thread can be specified with 't'
+     option and THREAD parameter.  If 'u' option is specified, it
+     displays user registers instead of kernel or currently saved one.
+
+     Warning: The support of 't' and 'u' option depends on the machine.
+     If not supported, incorrect information will be displayed.
+
+'show map ADDR'
+     Prints the 'vm_map' at ADDR.
+
+'show object ADDR'
+     Prints the 'vm_object' at ADDR.
+
+'show page ADDR'
+     Prints the 'vm_page' structure at ADDR.
+
+'show port ADDR'
+     Prints the 'ipc_port' structure at ADDR.
+
+'show ipc_port[/t [ THREAD ]]'
+     Prints all 'ipc_port' structure's addresses the target thread has.
+     The target thread is a current thread or that specified by a
+     parameter.
+
+'show macro [ NAME ]'
+     Show the definitions of macros.  If NAME is specified, only the
+     definition of it is displayed.  Otherwise, definitions of all
+     macros are displayed.
+
+'show watches'
+     Displays all watchpoints.
+
+'watch[/T] ADDR,SIZE [ TASK ]'
+     Set a watchpoint for a region.  Execution stops when an attempt to
+     modify the region occurs.  The SIZE argument defaults to 4.
+     Without 'T' option, ADDR is assumed to be a kernel address.  If you
+     want to set a watch point in user space, specify 'T' and TASK
+     parameter where the address belongs to.  If the TASK parameter is
+     omitted, a task of the default target thread or a current task is
+     assumed.  If you specify a wrong space address, the request is
+     rejected with an error message.
+
+     Warning: Attempts to watch wired kernel memory may cause
+     unrecoverable error in some systems such as i386.  Watchpoints on
+     user addresses work best.
+
+'dwatch[/T] ADDR [ TASK ]'
+     Clears a watchpoint previously set for a region.  Without 'T'
+     option, ADDR is assumed to be a kernel address.  If you want to
+     clear a watch point in user space, specify 'T' and TASK parameter
+     where the address belongs to.  If the TASK parameter is omitted, a
+     task of the default target thread or a current task is assumed.  If
+     you specify a wrong space address, the request is rejected with an
+     error message.
+
+
+File: mach.info,  Node: Variables,  Next: Expressions,  Prev: Commands,  Up: 
Kernel Debugger
+
+11.3 Variables
+==============
+
+The debugger accesses registers and variables as $NAME.  Register names
+are as in the 'show registers' command.  Some variables are suffixed
+with numbers, and may have some modifier following a colon immediately
+after the variable name.  For example, register variables can have 'u'
+and 't' modifier to indicate user register and that of a default target
+thread instead of that of the current thread (e.g.  '$eax:tu').
+
+   Built-in variables currently supported are:
+
+'taskXX[.YY]'
+     Task or thread structure address.  XX and YY are task and thread
+     identification numbers printed by a 'show all threads' command
+     respectively.  This variable is read only.
+
+'thread'
+     The default target thread.  The value is used when 't' option is
+     specified without explicit thread structure address parameter in
+     command lines or expression evaluation.
+
+'radix'
+     Input and output radix
+
+'maxoff'
+     Addresses are printed as SYMBOL+OFFSET unless offset is greater
+     than maxoff.
+
+'maxwidth'
+     The width of the displayed line.
+
+'lines'
+     The number of lines.  It is used by 'more' feature.
+
+'tabstops'
+     Tab stop width.
+
+'argXX'
+     Parameters passed to a macro.  XX can be 1 to 10.
+
+'workXX'
+     Work variable.  XX can be 0 to 31.
+
+
+File: mach.info,  Node: Expressions,  Prev: Variables,  Up: Kernel Debugger
+
+11.4 Expressions
+================
+
+Almost all expression operators in C are supported except '~', '^', and
+unary '&'.  Special rules in 'ddb' are:
+
+'IDENTIFIER'
+     name of a symbol.  It is translated to the address(or value) of it.
+     '.' and ':' can be used in the identifier.  If supported by an
+     object format dependent routine, [FILE_NAME:]FUNC[:LINE_NUMBER]
+     [FILE_NAME:]VARIABLE, and FILE_NAME[:LINE_NUMBER] can be accepted
+     as a symbol.  The symbol may be prefixed with 'SYMBOL_TABLE_NAME::'
+     like 'emulator::mach_msg_trap' to specify other than kernel
+     symbols.
+
+'NUMBER'
+     radix is determined by the first two letters:
+     '0x'
+          hex
+     '0o'
+          octal
+     '0t'
+          decimal
+
+     otherwise, follow current radix.
+
+'.'
+     dot
+
+'+'
+     next
+
+'..'
+     address of the start of the last line examined.  Unlike dot or
+     next, this is only changed by 'examine' or 'write' command.
+
+'�'
+     last address explicitly specified.
+
+'$VARIABLE'
+     register name or variable.  It is translated to the value of it.
+     It may be followed by a ':' and modifiers as described above.
+
+'a'
+     multiple of right hand side.
+
+'*EXPR'
+     indirection.  It may be followed by a ':' and modifiers as
+     described above.
+
+
+File: mach.info,  Node: Copying,  Next: Documentation License,  Prev: Kernel 
Debugger,  Up: Top
+
+GNU General Public License
+**************************
+
+                         Version 2, June 1991
+
+     Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+Preamble
+========
+
+The licenses for most software are designed to take away your freedom to
+share and change it.  By contrast, the GNU General Public License is
+intended to guarantee your freedom to share and change free software--to
+make sure the software is free for all its users.  This General Public
+License applies to most of the Free Software Foundation's software and
+to any other program whose authors commit to using it.  (Some other Free
+Software Foundation software is covered by the GNU Lesser General Public
+License instead.)  You can apply it to your programs, too.
+
+   When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it if
+you want it, that you can change the software or use pieces of it in new
+free programs; and that you know you can do these things.
+
+   To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+   For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+   We protect your rights with two steps: (1) copyright the software,
+and (2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+   Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+   Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+   The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+===============================================================
+
+  0. This License applies to any program or other work which contains a
+     notice placed by the copyright holder saying it may be distributed
+     under the terms of this General Public License.  The "Program",
+     below, refers to any such program or work, and a "work based on the
+     Program" means either the Program or any derivative work under
+     copyright law: that is to say, a work containing the Program or a
+     portion of it, either verbatim or with modifications and/or
+     translated into another language.  (Hereinafter, translation is
+     included without limitation in the term "modification".)  Each
+     licensee is addressed as "you".
+
+     Activities other than copying, distribution and modification are
+     not covered by this License; they are outside its scope.  The act
+     of running the Program is not restricted, and the output from the
+     Program is covered only if its contents constitute a work based on
+     the Program (independent of having been made by running the
+     Program).  Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's source
+     code as you receive it, in any medium, provided that you
+     conspicuously and appropriately publish on each copy an appropriate
+     copyright notice and disclaimer of warranty; keep intact all the
+     notices that refer to this License and to the absence of any
+     warranty; and give any other recipients of the Program a copy of
+     this License along with the Program.
+
+     You may charge a fee for the physical act of transferring a copy,
+     and you may at your option offer warranty protection in exchange
+     for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion of
+     it, thus forming a work based on the Program, and copy and
+     distribute such modifications or work under the terms of Section 1
+     above, provided that you also meet all of these conditions:
+
+       a. You must cause the modified files to carry prominent notices
+          stating that you changed the files and the date of any change.
+
+       b. You must cause any work that you distribute or publish, that
+          in whole or in part contains or is derived from the Program or
+          any part thereof, to be licensed as a whole at no charge to
+          all third parties under the terms of this License.
+
+       c. If the modified program normally reads commands interactively
+          when run, you must cause it, when started running for such
+          interactive use in the most ordinary way, to print or display
+          an announcement including an appropriate copyright notice and
+          a notice that there is no warranty (or else, saying that you
+          provide a warranty) and that users may redistribute the
+          program under these conditions, and telling the user how to
+          view a copy of this License.  (Exception: if the Program
+          itself is interactive but does not normally print such an
+          announcement, your work based on the Program is not required
+          to print an announcement.)
+
+     These requirements apply to the modified work as a whole.  If
+     identifiable sections of that work are not derived from the
+     Program, and can be reasonably considered independent and separate
+     works in themselves, then this License, and its terms, do not apply
+     to those sections when you distribute them as separate works.  But
+     when you distribute the same sections as part of a whole which is a
+     work based on the Program, the distribution of the whole must be on
+     the terms of this License, whose permissions for other licensees
+     extend to the entire whole, and thus to each and every part
+     regardless of who wrote it.
+
+     Thus, it is not the intent of this section to claim rights or
+     contest your rights to work written entirely by you; rather, the
+     intent is to exercise the right to control the distribution of
+     derivative or collective works based on the Program.
+
+     In addition, mere aggregation of another work not based on the
+     Program with the Program (or with a work based on the Program) on a
+     volume of a storage or distribution medium does not bring the other
+     work under the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+     under Section 2) in object code or executable form under the terms
+     of Sections 1 and 2 above provided that you also do one of the
+     following:
+
+       a. Accompany it with the complete corresponding machine-readable
+          source code, which must be distributed under the terms of
+          Sections 1 and 2 above on a medium customarily used for
+          software interchange; or,
+
+       b. Accompany it with a written offer, valid for at least three
+          years, to give any third party, for a charge no more than your
+          cost of physically performing source distribution, a complete
+          machine-readable copy of the corresponding source code, to be
+          distributed under the terms of Sections 1 and 2 above on a
+          medium customarily used for software interchange; or,
+
+       c. Accompany it with the information you received as to the offer
+          to distribute corresponding source code.  (This alternative is
+          allowed only for noncommercial distribution and only if you
+          received the program in object code or executable form with
+          such an offer, in accord with Subsection b above.)
+
+     The source code for a work means the preferred form of the work for
+     making modifications to it.  For an executable work, complete
+     source code means all the source code for all modules it contains,
+     plus any associated interface definition files, plus the scripts
+     used to control compilation and installation of the executable.
+     However, as a special exception, the source code distributed need
+     not include anything that is normally distributed (in either source
+     or binary form) with the major components (compiler, kernel, and so
+     on) of the operating system on which the executable runs, unless
+     that component itself accompanies the executable.
+
+     If distribution of executable or object code is made by offering
+     access to copy from a designated place, then offering equivalent
+     access to copy the source code from the same place counts as
+     distribution of the source code, even though third parties are not
+     compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense or distribute the Program is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses terminated
+     so long as such parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+     signed it.  However, nothing else grants you permission to modify
+     or distribute the Program or its derivative works.  These actions
+     are prohibited by law if you do not accept this License.
+     Therefore, by modifying or distributing the Program (or any work
+     based on the Program), you indicate your acceptance of this License
+     to do so, and all its terms and conditions for copying,
+     distributing or modifying the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+     Program), the recipient automatically receives a license from the
+     original licensor to copy, distribute or modify the Program subject
+     to these terms and conditions.  You may not impose any further
+     restrictions on the recipients' exercise of the rights granted
+     herein.  You are not responsible for enforcing compliance by third
+     parties to this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+     infringement or for any other reason (not limited to patent
+     issues), conditions are imposed on you (whether by court order,
+     agreement or otherwise) that contradict the conditions of this
+     License, they do not excuse you from the conditions of this
+     License.  If you cannot distribute so as to satisfy simultaneously
+     your obligations under this License and any other pertinent
+     obligations, then as a consequence you may not distribute the
+     Program at all.  For example, if a patent license would not permit
+     royalty-free redistribution of the Program by all those who receive
+     copies directly or indirectly through you, then the only way you
+     could satisfy both it and this License would be to refrain entirely
+     from distribution of the Program.
+
+     If any portion of this section is held invalid or unenforceable
+     under any particular circumstance, the balance of the section is
+     intended to apply and the section as a whole is intended to apply
+     in other circumstances.
+
+     It is not the purpose of this section to induce you to infringe any
+     patents or other property right claims or to contest validity of
+     any such claims; this section has the sole purpose of protecting
+     the integrity of the free software distribution system, which is
+     implemented by public license practices.  Many people have made
+     generous contributions to the wide range of software distributed
+     through that system in reliance on consistent application of that
+     system; it is up to the author/donor to decide if he or she is
+     willing to distribute software through any other system and a
+     licensee cannot impose that choice.
+
+     This section is intended to make thoroughly clear what is believed
+     to be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+     certain countries either by patents or by copyrighted interfaces,
+     the original copyright holder who places the Program under this
+     License may add an explicit geographical distribution limitation
+     excluding those countries, so that distribution is permitted only
+     in or among countries not thus excluded.  In such case, this
+     License incorporates the limitation as if written in the body of
+     this License.
+
+  9. The Free Software Foundation may publish revised and/or new
+     versions of the General Public License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.
+
+     Each version is given a distinguishing version number.  If the
+     Program specifies a version number of this License which applies to
+     it and "any later version", you have the option of following the
+     terms and conditions either of that version or of any later version
+     published by the Free Software Foundation.  If the Program does not
+     specify a version number of this License, you may choose any
+     version ever published by the Free Software Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+     programs whose distribution conditions are different, write to the
+     author to ask for permission.  For software which is copyrighted by
+     the Free Software Foundation, write to the Free Software
+     Foundation; we sometimes make exceptions for this.  Our decision
+     will be guided by the two goals of preserving the free status of
+     all derivatives of our free software and of promoting the sharing
+     and reuse of software generally.
+
+  11. NO WARRANTY
+
+     BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
+     WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
+     LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
+     AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+     OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+     FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+     PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+     DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR
+     OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
+     MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
+     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+     INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
+     OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
+     OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+                      END OF TERMS AND CONDITIONS
+
+Appendix: How to Apply These Terms to Your New Programs
+=======================================================
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+   To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+     ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
+     Copyright (C) YYYY  NAME OF AUTHOR
+
+     This program is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+     the Free Software Foundation; either version 2 of the License, or
+     (at your option) any later version.
+
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+     GNU General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with this program; if not, write to the Free Software
+     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
02110-1301, USA.
+
+   Also add information on how to contact you by electronic and paper
+mail.
+
+   If the program is interactive, make it output a short notice like
+this when it starts in an interactive mode:
+
+     Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR
+     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+     This is free software, and you are welcome to redistribute it
+     under certain conditions; type `show c' for details.
+
+   The hypothetical commands 'show w' and 'show c' should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than 'show w' and 'show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+   You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the program,
+if necessary.  Here is a sample; alter the names:
+
+     Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+     `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+     SIGNATURE OF TY COON, 1 April 1989
+     Ty Coon, President of Vice
+
+   This General Public License does not permit incorporating your
+program into proprietary programs.  If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library.  If this is what you want to do, use the
+GNU Lesser General Public License instead of this License.
+
+
+File: mach.info,  Node: Documentation License,  Next: Concept Index,  Prev: 
Copying,  Up: Top
+
+Appendix A Documentation License
+********************************
+
+This manual is copyrighted and licensed under the GNU Free Documentation
+license.
+
+   Parts of this manual are derived from the Mach manual packages
+originally provided by Carnegie Mellon University.
+
+* Menu:
+
+* GNU Free Documentation License:: The GNU Free Documentation License.
+* CMU License::                   The CMU license applies to the original Mach
+                                  kernel and its documentation.
+
+
+File: mach.info,  Node: GNU Free Documentation License,  Next: CMU License,  
Up: Documentation License
+
+A.1 GNU Free Documentation License
+==================================
+
+                      Version 1.2, November 2002
+
+     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.  We
+     recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it can
+     be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You accept
+     the license if you copy, modify or distribute the work in a way
+     requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in the
+     notice that says that the Document is released under this License.
+     If a section does not fit the above definition of Secondary then it
+     is not allowed to be designated as Invariant.  The Document may
+     contain zero Invariant Sections.  If the Document does not identify
+     any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images composed
+     of pixels) generic paint programs or (for drawings) some widely
+     available drawing editor, and that is suitable for input to text
+     formatters or for automatic translation to a variety of formats
+     suitable for input to text formatters.  A copy made in an otherwise
+     Transparent file format whose markup, or absence of markup, has
+     been arranged to thwart or discourage subsequent modification by
+     readers is not Transparent.  An image format is not Transparent if
+     used for any substantial amount of text.  A copy that is not
+     "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and standard-conforming
+     simple HTML, PostScript or PDF designed for human modification.
+     Examples of transparent image formats include PNG, XCF and JPG.
+     Opaque formats include proprietary formats that can be read and
+     edited only by proprietary word processors, SGML or XML for which
+     the DTD and/or processing tools are not generally available, and
+     the machine-generated HTML, PostScript or PDF produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow the
+     conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the title
+     equally prominent and visible.  You may add other material on the
+     covers in addition.  Copying with changes limited to the covers, as
+     long as they preserve the title of the Document and satisfy these
+     conditions, can be treated as verbatim copying in other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a machine-readable
+     Transparent copy along with each Opaque copy, or state in or with
+     each Opaque copy a computer-network location from which the general
+     network-using public has access to download using public-standard
+     network protocols a complete Transparent copy of the Document, free
+     of added material.  If you use the latter option, you must take
+     reasonably prudent steps, when you begin distribution of Opaque
+     copies in quantity, to ensure that this Transparent copy will
+     remain thus accessible at the stated location until at least one
+     year after the last time you distribute an Opaque copy (directly or
+     through your agents or retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of copies,
+     to give them a chance to provide you with an updated version of the
+     Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with the
+     Modified Version filling the role of the Document, thus licensing
+     distribution and modification of the Modified Version to whoever
+     possesses a copy of it.  In addition, you must do these things in
+     the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of previous
+          versions (which should, if there were any, be listed in the
+          History section of the Document).  You may use the same title
+          as a previous version if the original publisher of that
+          version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on the
+          Title Page.  If there is no section Entitled "History" in the
+          Document, create one stating the title, year, authors, and
+          publisher of the Document as given on its Title Page, then add
+          an item describing the Modified Version as stated in the
+          previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in the
+          "History" section.  You may omit a network location for a work
+          that was published at least four years before the Document
+          itself, or if the original publisher of the version it refers
+          to gives permission.
+
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the section
+          all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document, unaltered
+          in their text and in their titles.  Section numbers or the
+          equivalent are not considered part of the section titles.
+
+       M. Delete any section Entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option designate
+     some or all of these sections as invariant.  To do this, add their
+     titles to the list of Invariant Sections in the Modified Version's
+     license notice.  These titles must be distinct from any other
+     section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end of
+     the list of Cover Texts in the Modified Version.  Only one passage
+     of Front-Cover Text and one of Back-Cover Text may be added by (or
+     through arrangements made by) any one entity.  If the Document
+     already includes a cover text for the same cover, previously added
+     by you or by arrangement made by the same entity you are acting on
+     behalf of, you may not add another; but you may replace the old
+     one, on explicit permission from the previous publisher that added
+     the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination all
+     of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the documents
+     in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow this
+     License in all other respects regarding verbatim copying of that
+     document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of a
+     storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses terminated
+     so long as such parties remain in full compliance.
+
+  10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     <http://www.gnu.org/copyleft/>.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If the
+     Document does not specify a version number of this License, you may
+     choose any version ever published (not as a draft) by the Free
+     Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+       Copyright (C)  YEAR  YOUR NAME.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.2
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts."  line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with
+         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+         being LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+
+File: mach.info,  Node: CMU License,  Prev: GNU Free Documentation License,  
Up: Documentation License
+
+A.2 CMU License
+===============
+
+          Mach Operating System
+          Copyright (C) 1991,1990,1989 Carnegie Mellon University
+          All Rights Reserved.
+
+     Permission to use, copy, modify and distribute this software and
+     its documentation is hereby granted, provided that both the
+     copyright notice and this permission notice appear in all copies of
+     the software, derivative works or modified versions, and any
+     portions thereof, and that both notices appear in supporting
+     documentation.
+
+     CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+     CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+     ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+
+     Carnegie Mellon requests users of this software to return to
+
+           Software Distribution Coordinator
+           School of Computer Science
+           Carnegie Mellon University
+           Pittsburgh PA 15213-3890
+
+     or <address@hidden> any improvements or
+     extensions that they make and grant Carnegie Mellon the rights to
+     redistribute these changes.
+
+
+File: mach.info,  Node: Concept Index,  Next: Function and Data Index,  Prev: 
Documentation License,  Up: Top
+
+Concept Index
+*************
+
+[index]
+* Menu:
+
+* communication between tasks:           Major Concepts.       (line  6)
+* composing messages:                    Message Format.       (line  6)
+* device port:                           Device Interface.     (line 13)
+* FDL, GNU Free Documentation License:   GNU Free Documentation License.
+                                                               (line  6)
+* format of a message:                   Message Format.       (line  6)
+* GPL, GNU General Public License:       Copying.              (line  6)
+* GRand Unified Bootloader:              Bootloader.           (line 13)
+* GRUB:                                  Bootloader.           (line 13)
+* host control port:                     Host Ports.           (line 34)
+* host interface:                        Host Interface.       (line  6)
+* host name port:                        Host Ports.           (line  6)
+* host ports:                            Host Ports.           (line  6)
+* interprocess communication (IPC):      Major Concepts.       (line  6)
+* IPC (interprocess communication):      Major Concepts.       (line  6)
+* IPC space port:                        Port Manipulation Interface.
+                                                               (line  9)
+* message composition:                   Message Format.       (line  6)
+* message format:                        Message Format.       (line  6)
+* messages:                              Major Concepts.       (line  6)
+* moving port rights:                    Exchanging Port Rights.
+                                                               (line  6)
+* port representing a device:            Device Interface.     (line 13)
+* port representing a processor:         Processor Interface.  (line  6)
+* port representing a processor set name: Processor Set Ports. (line  6)
+* port representing a task:              Task Interface.       (line  6)
+* port representing a thread:            Thread Interface.     (line  6)
+* port representing a virtual memory map: Virtual Memory Interface.
+                                                               (line  6)
+* port representing an IPC space:        Port Manipulation Interface.
+                                                               (line  9)
+* ports representing a host:             Host Ports.           (line  6)
+* ports representing a processor set:    Processor Set Ports.  (line  6)
+* processor port:                        Processor Interface.  (line  6)
+* processor set name port:               Processor Set Ports.  (line  6)
+* processor set port:                    Processor Set Ports.  (line 12)
+* processor set ports:                   Processor Set Ports.  (line  6)
+* receiving memory:                      Memory.               (line  6)
+* receiving port rights:                 Exchanging Port Rights.
+                                                               (line  6)
+* remote procedure calls (RPC):          Major Concepts.       (line  6)
+* RPC (remote procedure calls):          Major Concepts.       (line  6)
+* sending memory:                        Memory.               (line  6)
+* sending messages:                      Message Send.         (line  6)
+* sending port rights:                   Exchanging Port Rights.
+                                                               (line  6)
+* serverboot:                            Modules.              (line  6)
+* task port:                             Task Interface.       (line  6)
+* thread port:                           Thread Interface.     (line  6)
+* virtual memory map port:               Virtual Memory Interface.
+                                                               (line  6)
+
+
+File: mach.info,  Node: Function and Data Index,  Prev: Concept Index,  Up: Top
+
+Function and Data Index
+***********************
+
+[index]
+* Menu:
+
+* catch_exception_raise:                 Exceptions.          (line   6)
+* device_close:                          Device Close.        (line   6)
+* device_get_status:                     Device Status.       (line  17)
+* device_map:                            Device Map.          (line   6)
+* device_open:                           Device Open.         (line   6)
+* device_open_request:                   Device Open.         (line  33)
+* device_read:                           Device Read.         (line   6)
+* device_read_inband:                    Device Read.         (line  24)
+* device_read_request:                   Device Read.         (line  31)
+* device_read_request_inband:            Device Read.         (line  48)
+* device_reply_server:                   Device Reply Server. (line  10)
+* device_set_filter:                     Device Filter.       (line   6)
+* device_set_status:                     Device Status.       (line   6)
+* device_t:                              Device Interface.    (line  13)
+* device_write:                          Device Write.        (line   6)
+* device_write_inband:                   Device Write.        (line  21)
+* device_write_request:                  Device Write.        (line  28)
+* device_write_request_inband:           Device Write.        (line  45)
+* ds_device_open_reply:                  Device Open.         (line  36)
+* ds_device_read_reply:                  Device Read.         (line  34)
+* ds_device_read_reply_inband:           Device Read.         (line  52)
+* ds_device_write_reply:                 Device Write.        (line  31)
+* ds_device_write_reply_inband:          Device Write.        (line  49)
+* evc_wait:                              Exceptions.          (line  17)
+* exception_raise:                       Exceptions.          (line  11)
+* host_adjust_time:                      Host Time.           (line  40)
+* host_basic_info_t:                     Host Information.    (line  74)
+* host_get_boot_info:                    Host Information.    (line 112)
+* host_get_time:                         Host Time.           (line  31)
+* host_info:                             Host Information.    (line   6)
+* host_kernel_version:                   Host Information.    (line  94)
+* host_priv_t:                           Host Ports.          (line  34)
+* host_processors:                       Hosted Processors.   (line   6)
+* host_processor_sets:                   Processor Set Access.
+                                                              (line   6)
+* host_processor_set_priv:               Processor Set Access.
+                                                              (line  21)
+* host_reboot:                           Host Reboot.         (line   6)
+* host_sched_info_t:                     Host Information.    (line  91)
+* host_set_time:                         Host Time.           (line  36)
+* host_t:                                Host Ports.          (line   6)
+* ipc_space_t:                           Port Manipulation Interface.
+                                                              (line   9)
+* mach_host_self:                        Host Ports.          (line  13)
+* mach_msg:                              Mach Message Call.   (line   9)
+* MACH_MSGH_BITS:                        Message Format.      (line  94)
+* MACH_MSGH_BITS_LOCAL:                  Message Format.      (line 106)
+* MACH_MSGH_BITS_OTHER:                  Message Format.      (line 116)
+* MACH_MSGH_BITS_PORTS:                  Message Format.      (line 111)
+* MACH_MSGH_BITS_REMOTE:                 Message Format.      (line 101)
+* mach_msg_bits_t:                       Message Format.      (line  20)
+* mach_msg_header_t:                     Message Format.      (line  32)
+* mach_msg_id_t:                         Message Format.      (line  28)
+* mach_msg_size_t:                       Message Format.      (line  24)
+* mach_msg_timeout_t:                    Mach Message Call.   (line  60)
+* mach_msg_type_long_t:                  Message Format.      (line 231)
+* mach_msg_type_name_t:                  Message Format.      (line 127)
+* mach_msg_type_number_t:                Message Format.      (line 137)
+* MACH_MSG_TYPE_PORT_ANY:                Message Format.      (line 217)
+* MACH_MSG_TYPE_PORT_ANY_RIGHT:          Message Format.      (line 226)
+* MACH_MSG_TYPE_PORT_ANY_SEND:           Message Format.      (line 221)
+* mach_msg_type_size_t:                  Message Format.      (line 132)
+* mach_msg_type_t:                       Message Format.      (line 142)
+* mach_port_allocate:                    Port Creation.       (line   6)
+* mach_port_allocate_name:               Port Creation.       (line  64)
+* mach_port_deallocate:                  Port Destruction.    (line   6)
+* mach_port_destroy:                     Port Destruction.    (line  28)
+* mach_port_extract_right:               Ports and other Tasks.
+                                                              (line  57)
+* mach_port_get_receive_status:          Receive Rights.      (line  54)
+* mach_port_get_refs:                    Port Rights.         (line   6)
+* mach_port_get_set_status:              Port Sets.           (line   6)
+* mach_port_insert_right:                Ports and other Tasks.
+                                                              (line   6)
+* mach_port_mod_refs:                    Port Rights.         (line  35)
+* mach_port_move_member:                 Port Sets.           (line  26)
+* mach_port_mscount_t:                   Receive Rights.      (line  10)
+* mach_port_msgcount_t:                  Receive Rights.      (line  14)
+* mach_port_names:                       Port Names.          (line   6)
+* mach_port_rename:                      Port Names.          (line  75)
+* mach_port_request_notification:        Request Notifications.
+                                                              (line   6)
+* mach_port_rights_t:                    Receive Rights.      (line  18)
+* mach_port_seqno_t:                     Receive Rights.      (line   6)
+* mach_port_set_mscount:                 Receive Rights.      (line  71)
+* mach_port_set_qlimit:                  Receive Rights.      (line  88)
+* mach_port_set_seqno:                   Receive Rights.      (line 106)
+* mach_port_status_t:                    Receive Rights.      (line  22)
+* mach_port_t:                           Message Format.      (line  13)
+* mach_port_type:                        Port Names.          (line  33)
+* mach_reply_port:                       Port Creation.       (line  47)
+* mach_task_self:                        Task Information.    (line   6)
+* mach_thread_self:                      Thread Information.  (line   6)
+* mapped_time_value_t:                   Host Time.           (line  49)
+* memory_object_change_attributes:       Memory Object Attributes.
+                                                              (line  25)
+* memory_object_change_completed:        Memory Object Attributes.
+                                                              (line  60)
+* memory_object_copy:                    Memory Objects and Data.
+                                                              (line 202)
+* memory_object_create:                  Default Memory Manager.
+                                                              (line  25)
+* memory_object_data_error:              Memory Objects and Data.
+                                                              (line 152)
+* memory_object_data_initialize:         Default Memory Manager.
+                                                              (line  69)
+* memory_object_data_provided:           Memory Objects and Data.
+                                                              (line 284)
+* memory_object_data_request:            Memory Objects and Data.
+                                                              (line  45)
+* memory_object_data_return:             Memory Objects and Data.
+                                                              (line   6)
+* memory_object_data_supply:             Memory Objects and Data.
+                                                              (line  80)
+* memory_object_data_unavailable:        Memory Objects and Data.
+                                                              (line 172)
+* memory_object_data_unlock:             Memory Object Locking.
+                                                              (line  81)
+* memory_object_data_write:              Memory Objects and Data.
+                                                              (line 254)
+* memory_object_default_server:          Memory Object Server.
+                                                              (line   8)
+* memory_object_destroy:                 Memory Object Termination.
+                                                              (line  35)
+* memory_object_get_attributes:          Memory Object Attributes.
+                                                              (line   6)
+* memory_object_init:                    Memory Object Creation.
+                                                              (line   6)
+* memory_object_lock_completed:          Memory Object Locking.
+                                                              (line  55)
+* memory_object_lock_request:            Memory Object Locking.
+                                                              (line   6)
+* memory_object_ready:                   Memory Object Creation.
+                                                              (line  48)
+* memory_object_server:                  Memory Object Server.
+                                                              (line   6)
+* memory_object_set_attributes:          Memory Object Attributes.
+                                                              (line  76)
+* memory_object_supply_completed:        Memory Objects and Data.
+                                                              (line 121)
+* memory_object_terminate:               Memory Object Termination.
+                                                              (line   6)
+* processor_assign:                      Processors and Sets. (line   6)
+* processor_basic_info_t:                Processor Info.      (line  66)
+* processor_control:                     Processor Control.   (line   8)
+* processor_exit:                        Processor Control.   (line   7)
+* processor_get_assignment:              Processors and Sets. (line  30)
+* processor_info:                        Processor Info.      (line   6)
+* processor_set_basic_info_t:            Processor Set Info.  (line  74)
+* processor_set_create:                  Processor Set Creation.
+                                                              (line   6)
+* processor_set_default:                 Processor Set Access.
+                                                              (line  33)
+* processor_set_destroy:                 Processor Set Destruction.
+                                                              (line   6)
+* processor_set_info:                    Processor Set Info.  (line   6)
+* processor_set_max_priority:            Processor Set Priority.
+                                                              (line   6)
+* processor_set_name_t:                  Processor Set Ports. (line   6)
+* processor_set_policy_disable:          Processor Set Policy.
+                                                              (line   8)
+* processor_set_policy_enable:           Processor Set Policy.
+                                                              (line   6)
+* processor_set_sched_info_t:            Processor Set Info.  (line  92)
+* processor_set_t:                       Processor Set Ports. (line  12)
+* processor_set_tasks:                   Tasks and Threads on Sets.
+                                                              (line   6)
+* processor_set_threads:                 Tasks and Threads on Sets.
+                                                              (line  20)
+* processor_start:                       Processor Control.   (line   6)
+* processor_t:                           Processor Interface. (line   6)
+* sampled_pc_flavor_t:                   Profiling.           (line  67)
+* sampled_pc_t:                          Profiling.           (line  52)
+* seqnos_memory_object_change_completed: Memory Object Attributes.
+                                                              (line  63)
+* seqnos_memory_object_copy:             Memory Objects and Data.
+                                                              (line 207)
+* seqnos_memory_object_create:           Default Memory Manager.
+                                                              (line  30)
+* seqnos_memory_object_data_initialize:  Default Memory Manager.
+                                                              (line  73)
+* seqnos_memory_object_data_request:     Memory Objects and Data.
+                                                              (line  49)
+* seqnos_memory_object_data_return:      Memory Objects and Data.
+                                                              (line  11)
+* seqnos_memory_object_data_unlock:      Memory Object Locking.
+                                                              (line  85)
+* seqnos_memory_object_data_write:       Memory Objects and Data.
+                                                              (line 258)
+* seqnos_memory_object_default_server:   Memory Object Server.
+                                                              (line  12)
+* seqnos_memory_object_init:             Memory Object Creation.
+                                                              (line  11)
+* seqnos_memory_object_lock_completed:   Memory Object Locking.
+                                                              (line  59)
+* seqnos_memory_object_server:           Memory Object Server.
+                                                              (line  10)
+* seqnos_memory_object_supply_completed: Memory Objects and Data.
+                                                              (line 126)
+* seqnos_memory_object_terminate:        Memory Object Termination.
+                                                              (line  10)
+* struct host_basic_info:                Host Information.    (line  47)
+* struct host_sched_info:                Host Information.    (line  77)
+* struct processor_basic_info:           Processor Info.      (line  43)
+* struct processor_set_basic_info:       Processor Set Info.  (line  50)
+* struct processor_set_sched_info:       Processor Set Info.  (line  77)
+* struct task_basic_info:                Task Information.    (line  81)
+* struct task_events_info:               Task Information.    (line 112)
+* struct task_thread_times_info:         Task Information.    (line 143)
+* struct thread_basic_info:              Thread Information.  (line  65)
+* struct thread_sched_info:              Thread Information.  (line 126)
+* swtch:                                 Hand-Off Scheduling. (line  81)
+* swtch_pri:                             Hand-Off Scheduling. (line  93)
+* task_assign:                           Tasks and Threads on Sets.
+                                                              (line  34)
+* task_assign_default:                   Tasks and Threads on Sets.
+                                                              (line  47)
+* task_basic_info_t:                     Task Information.    (line 109)
+* task_create:                           Task Creation.       (line   6)
+* task_disable_pc_sampling:              Profiling.           (line  20)
+* task_enable_pc_sampling:               Profiling.           (line   6)
+* task_events_info_t:                    Task Information.    (line 140)
+* task_get_assignment:                   Tasks and Threads on Sets.
+                                                              (line  57)
+* task_get_bootstrap_port:               Task Special Ports.  (line  40)
+* task_get_emulation_vector:             Syscall Emulation.   (line   6)
+* task_get_exception_port:               Task Special Ports.  (line  34)
+* task_get_kernel_port:                  Task Special Ports.  (line  28)
+* task_get_sampled_pcs:                  Profiling.           (line  34)
+* task_get_special_port:                 Task Special Ports.  (line   6)
+* task_info:                             Task Information.    (line  41)
+* task_priority:                         Task Execution.      (line  27)
+* task_ras_control:                      Task Execution.      (line  45)
+* task_resume:                           Task Execution.      (line  18)
+* task_set_bootstrap_port:               Task Special Ports.  (line  76)
+* task_set_emulation:                    Syscall Emulation.   (line  20)
+* task_set_emulation_vector:             Syscall Emulation.   (line  12)
+* task_set_exception_port:               Task Special Ports.  (line  70)
+* task_set_kernel_port:                  Task Special Ports.  (line  64)
+* task_set_special_port:                 Task Special Ports.  (line  46)
+* task_suspend:                          Task Execution.      (line   6)
+* task_t:                                Task Interface.      (line   6)
+* task_terminate:                        Task Termination.    (line   6)
+* task_threads:                          Task Information.    (line  30)
+* task_thread_times_info_t:              Task Information.    (line 157)
+* thread_abort:                          Thread Execution.    (line  36)
+* thread_assign:                         Tasks and Threads on Sets.
+                                                              (line  69)
+* thread_assign_default:                 Tasks and Threads on Sets.
+                                                              (line  83)
+* thread_basic_info_t:                   Thread Information.  (line 123)
+* thread_create:                         Thread Creation.     (line   6)
+* thread_depress_abort:                  Hand-Off Scheduling. (line  74)
+* thread_disable_pc_sampling:            Profiling.           (line  22)
+* thread_enable_pc_sampling:             Profiling.           (line   8)
+* thread_get_assignment:                 Tasks and Threads on Sets.
+                                                              (line  93)
+* thread_get_exception_port:             Thread Special Ports.
+                                                              (line  25)
+* thread_get_kernel_port:                Thread Special Ports.
+                                                              (line  19)
+* thread_get_sampled_pcs:                Profiling.           (line  37)
+* thread_get_special_port:               Thread Special Ports.
+                                                              (line   6)
+* thread_get_state:                      Thread Execution.    (line  98)
+* thread_info:                           Thread Information.  (line  30)
+* thread_max_priority:                   Thread Priority.     (line  36)
+* thread_policy:                         Scheduling Policy.   (line   6)
+* thread_priority:                       Thread Priority.     (line  18)
+* thread_resume:                         Thread Execution.    (line  27)
+* thread_sched_info_t:                   Thread Information.  (line 157)
+* thread_set_exception_port:             Thread Special Ports.
+                                                              (line  50)
+* thread_set_kernel_port:                Thread Special Ports.
+                                                              (line  44)
+* thread_set_special_port:               Thread Special Ports.
+                                                              (line  31)
+* thread_set_state:                      Thread Execution.    (line 122)
+* thread_suspend:                        Thread Execution.    (line   6)
+* thread_switch:                         Hand-Off Scheduling. (line   6)
+* thread_t:                              Thread Interface.    (line   6)
+* thread_terminate:                      Thread Termination.  (line   6)
+* thread_wire:                           Thread Settings.     (line   6)
+* time_value_add:                        Host Time.           (line  23)
+* time_value_add_usec:                   Host Time.           (line  19)
+* time_value_t:                          Host Time.           (line   6)
+* vm_allocate:                           Memory Allocation.   (line   6)
+* vm_copy:                               Data Transfer.       (line  50)
+* vm_deallocate:                         Memory Deallocation. (line   6)
+* vm_inherit:                            Memory Attributes.   (line  68)
+* vm_machine_attribute:                  Memory Attributes.   (line 130)
+* vm_map:                                Mapping Memory Objects.
+                                                              (line   6)
+* vm_protect:                            Memory Attributes.   (line  34)
+* vm_read:                               Data Transfer.       (line   6)
+* vm_region:                             Memory Attributes.   (line   6)
+* vm_set_default_memory_manager:         Default Memory Manager.
+                                                              (line   6)
+* vm_statistics:                         Memory Statistics.   (line  50)
+* vm_statistics_data_t:                  Memory Statistics.   (line   6)
+* vm_task_t:                             Virtual Memory Interface.
+                                                              (line   6)
+* vm_wire:                               Memory Attributes.   (line  98)
+* vm_write:                              Data Transfer.       (line  31)
+
diff --git a/doc/stamp-vti b/doc/stamp-vti
new file mode 100644
index 0000000..5517e3f
--- /dev/null
+++ b/doc/stamp-vti
@@ -0,0 +1,4 @@
address@hidden UPDATED 27 September 2013
address@hidden UPDATED-MONTH September 2013
address@hidden EDITION 1.4
address@hidden VERSION 1.4
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644
index 0000000..5517e3f
--- /dev/null
+++ b/doc/version.texi
@@ -0,0 +1,4 @@
address@hidden UPDATED 27 September 2013
address@hidden UPDATED-MONTH September 2013
address@hidden EDITION 1.4
address@hidden VERSION 1.4
diff --git a/gitlog-to-changelog b/gitlog-to-changelog
deleted file mode 100755
index e02d34c..0000000
--- a/gitlog-to-changelog
+++ /dev/null
@@ -1,432 +0,0 @@
-eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
-  & eval 'exec perl -wS "$0" $argv:q'
-    if 0;
-# Convert git log output to ChangeLog format.
-
-my $VERSION = '2012-07-29 06:11'; # UTC
-# The definition above must lie within the first 8 lines in order
-# for the Emacs time-stamp write hook (at end) to update it.
-# If you change this file with Emacs, please let the write hook
-# do its job.  Otherwise, update this string manually.
-
-# Copyright (C) 2008-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Written by Jim Meyering
-
-use strict;
-use warnings;
-use Getopt::Long;
-use POSIX qw(strftime);
-
-(my $ME = $0) =~ s|.*/||;
-
-# use File::Coda; # http://meyering.net/code/Coda/
-END {
-  defined fileno STDOUT or return;
-  close STDOUT and return;
-  warn "$ME: failed to close standard output: $!\n";
-  $? ||= 1;
-}
-
-sub usage ($)
-{
-  my ($exit_code) = @_;
-  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
-  if ($exit_code != 0)
-    {
-      print $STREAM "Try '$ME --help' for more information.\n";
-    }
-  else
-    {
-      print $STREAM <<EOF;
-Usage: $ME [OPTIONS] [ARGS]
-
-Convert git log output to ChangeLog format.  If present, any ARGS
-are passed to "git log".  To avoid ARGS being parsed as options to
-$ME, they may be preceded by '--'.
-
-OPTIONS:
-
-   --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
-                  makes a change to SHA1's commit log text or metadata.
-   --append-dot append a dot to the first line of each commit message if
-                  there is no other punctuation or blank at the end.
-   --no-cluster never cluster commit messages under the same date/author
-                  header; the default is to cluster adjacent commit messages
-                  if their headers are the same and neither commit message
-                  contains multiple paragraphs.
-   --srcdir=DIR the root of the source tree, from which the .git/
-                  directory can be derived.
-   --since=DATE convert only the logs since DATE;
-                  the default is to convert all log entries.
-   --format=FMT set format string for commit subject and body;
-                  see 'man git-log' for the list of format metacharacters;
-                  the default is '%s%n%b%n'
-   --strip-tab  remove one additional leading TAB from commit message lines.
-   --strip-cherry-pick  remove data inserted by "git cherry-pick";
-                  this includes the "cherry picked from commit ..." line,
-                  and the possible final "Conflicts:" paragraph.
-   --help       display this help and exit
-   --version    output version information and exit
-
-EXAMPLE:
-
-  $ME --since=2008-01-01 > ChangeLog
-  $ME -- -n 5 foo > last-5-commits-to-branch-foo
-
-SPECIAL SYNTAX:
-
-The following types of strings are interpreted specially when they appear
-at the beginning of a log message line.  They are not copied to the output.
-
-  Copyright-paperwork-exempt: Yes
-    Append the "(tiny change)" notation to the usual "date name email"
-    ChangeLog header to mark a change that does not require a copyright
-    assignment.
-  Co-authored-by: Joe User <address@hidden>
-    List the specified name and email address on a second
-    ChangeLog header, denoting a co-author.
-  Signed-off-by: Joe User <address@hidden>
-    These lines are simply elided.
-
-In a FILE specified via --amend, comment lines (starting with "#") are ignored.
-FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
-a line) referring to a commit in the current project, and CODE refers to one
-or more consecutive lines of Perl code.  Pairs must be separated by one or
-more blank line.
-
-Here is sample input for use with --amend=FILE, from coreutils:
-
-3a169f4c5d9159283548178668d2fae6fced3030
-# fix typo in title:
-s/all tile types/all file types/
-
-1379ed974f1fa39b12e2ffab18b3f7a607082202
-# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
-# Change the author to be Paul.  Note the escaped "@":
-s,Jim .*>,Paul Eggert <address@hidden>,
-
-EOF
-    }
-  exit $exit_code;
-}
-
-# If the string $S is a well-behaved file name, simply return it.
-# If it contains white space, quotes, etc., quote it, and return the new 
string.
-sub shell_quote($)
-{
-  my ($s) = @_;
-  if ($s =~ m![^\w+/.,-]!)
-    {
-      # Convert each single quote to '\''
-      $s =~ s/\'/\'\\\'\'/g;
-      # Then single quote the string.
-      $s = "'$s'";
-    }
-  return $s;
-}
-
-sub quoted_cmd(@)
-{
-  return join (' ', map {shell_quote $_} @_);
-}
-
-# Parse file F.
-# Comment lines (starting with "#") are ignored.
-# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
-# (alone on a line) referring to a commit in the current project, and
-# CODE refers to one or more consecutive lines of Perl code.
-# Pairs must be separated by one or more blank line.
-sub parse_amend_file($)
-{
-  my ($f) = @_;
-
-  open F, '<', $f
-    or die "$ME: $f: failed to open for reading: $!\n";
-
-  my $fail;
-  my $h = {};
-  my $in_code = 0;
-  my $sha;
-  while (defined (my $line = <F>))
-    {
-      $line =~ /^\#/
-        and next;
-      chomp $line;
-      $line eq ''
-        and $in_code = 0, next;
-
-      if (!$in_code)
-        {
-          $line =~ /^([0-9a-fA-F]{40})$/
-            or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
-              $fail = 1, next;
-          $sha = lc $1;
-          $in_code = 1;
-          exists $h->{$sha}
-            and (warn "$ME: $f:$.: duplicate SHA1\n"),
-              $fail = 1, next;
-        }
-      else
-        {
-          $h->{$sha} ||= '';
-          $h->{$sha} .= "$line\n";
-        }
-    }
-  close F;
-
-  $fail
-    and exit 1;
-
-  return $h;
-}
-
-# git_dir_option $SRCDIR
-#
-# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR
-# is undef).  Return as a list (0 or 1 element).
-sub git_dir_option($)
-{
-  my ($srcdir) = @_;
-  my @res = ();
-  if (defined $srcdir)
-    {
-      my $qdir = shell_quote $srcdir;
-      my $cmd = "cd $qdir && git rev-parse --show-toplevel";
-      my $qcmd = shell_quote $cmd;
-      my $git_dir = qx($cmd);
-      defined $git_dir
-        or die "$ME: cannot run $qcmd: $!\n";
-      $? == 0
-        or die "$ME: $qcmd had unexpected exit code or signal ($?)\n";
-      chomp $git_dir;
-      push @res, "--git-dir=$git_dir/.git";
-    }
-  @res;
-}
-
-{
-  my $since_date;
-  my $format_string = '%s%n%b%n';
-  my $amend_file;
-  my $append_dot = 0;
-  my $cluster = 1;
-  my $strip_tab = 0;
-  my $strip_cherry_pick = 0;
-  my $srcdir;
-  GetOptions
-    (
-     help => sub { usage 0 },
-     version => sub { print "$ME version $VERSION\n"; exit },
-     'since=s' => \$since_date,
-     'format=s' => \$format_string,
-     'amend=s' => \$amend_file,
-     'append-dot' => \$append_dot,
-     'cluster!' => \$cluster,
-     'strip-tab' => \$strip_tab,
-     'strip-cherry-pick' => \$strip_cherry_pick,
-     'srcdir=s' => \$srcdir,
-    ) or usage 1;
-
-  defined $since_date
-    and unshift @ARGV, "--since=$since_date";
-
-  # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
-  # that makes a correction in the log or attribution of that commit.
-  my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
-
-  my @cmd = ('git',
-             git_dir_option $srcdir,
-             qw(log --log-size),
-             '--pretty=format:%H:%ct  %an  <%ae>%n%n'.$format_string, @ARGV);
-  open PIPE, '-|', @cmd
-    or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n"
-            . "(Is your Git too old?  Version 1.5.1 or later is required.)\n");
-
-  my $prev_multi_paragraph;
-  my $prev_date_line = '';
-  my @prev_coauthors = ();
-  while (1)
-    {
-      defined (my $in = <PIPE>)
-        or last;
-      $in =~ /^log size (\d+)$/
-        or die "$ME:$.: Invalid line (expected log size):\n$in";
-      my $log_nbytes = $1;
-
-      my $log;
-      my $n_read = read PIPE, $log, $log_nbytes;
-      $n_read == $log_nbytes
-        or die "$ME:$.: unexpected EOF\n";
-
-      # Extract leading hash.
-      my ($sha, $rest) = split ':', $log, 2;
-      defined $sha
-        or die "$ME:$.: malformed log entry\n";
-      $sha =~ /^[0-9a-fA-F]{40}$/
-        or die "$ME:$.: invalid SHA1: $sha\n";
-
-      # If this commit's log requires any transformation, do it now.
-      my $code = $amend_code->{$sha};
-      if (defined $code)
-        {
-          eval 'use Safe';
-          my $s = new Safe;
-          # Put the unpreprocessed entry into "$_".
-          $_ = $rest;
-
-          # Let $code operate on it, safely.
-          my $r = $s->reval("$code")
-            or die "$ME:$.:$sha: failed to eval \"$code\":address@hidden";
-
-          # Note that we've used this entry.
-          delete $amend_code->{$sha};
-
-          # Update $rest upon success.
-          $rest = $_;
-        }
-
-      # Remove lines inserted by "git cherry-pick".
-      if ($strip_cherry_pick)
-        {
-          $rest =~ s/^\s*Conflicts:\n.*//sm;
-          $rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m;
-        }
-
-      my @line = split "\n", $rest;
-      my $author_line = shift @line;
-      defined $author_line
-        or die "$ME:$.: unexpected EOF\n";
-      $author_line =~ /^(\d+)  (.*>)$/
-        or die "$ME:$.: Invalid line "
-          . "(expected date/author/email):\n$author_line\n";
-
-      # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
-      # `(tiny change)' annotation.
-      my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
-                  ? '  (tiny change)' : '');
-
-      my $date_line = sprintf "%s  %s$tiny\n",
-        strftime ("%F", localtime ($1)), $2;
-
-      my @coauthors = grep /^Co-authored-by:.*$/, @line;
-      # Omit meta-data lines we've already interpreted.
-      @line = grep !/^(?:Signed-off-by:[ ].*>$
-                       |Co-authored-by:[ ]
-                       |Copyright-paperwork-exempt:[ ]
-                       )/x, @line;
-
-      # Remove leading and trailing blank lines.
-      if (@line)
-        {
-          while ($line[0] =~ /^\s*$/) { shift @line; }
-          while ($line[$#line] =~ /^\s*$/) { pop @line; }
-        }
-
-      # Record whether there are two or more paragraphs.
-      my $multi_paragraph = grep /^\s*$/, @line;
-
-      # Format 'Co-authored-by: A U Thor <address@hidden>' lines in
-      # standard multi-author ChangeLog format.
-      for (@coauthors)
-        {
-          s/^Co-authored-by:\s*/\t    /;
-          s/\s*</  </;
-
-          /<address@hidden>/
-            or warn "$ME: warning: missing email address for "
-              . substr ($_, 5) . "\n";
-        }
-
-      # If clustering of commit messages has been disabled, if this header
-      # would be different from the previous date/name/email/coauthors header,
-      # or if this or the previous entry consists of two or more paragraphs,
-      # then print the header.
-      if ( ! $cluster
-          || $date_line ne $prev_date_line
-          || "@coauthors" ne "@prev_coauthors"
-          || $multi_paragraph
-          || $prev_multi_paragraph)
-        {
-          $prev_date_line eq ''
-            or print "\n";
-          print $date_line;
-          @coauthors
-            and print join ("\n", @coauthors), "\n";
-        }
-      $prev_date_line = $date_line;
-      @prev_coauthors = @coauthors;
-      $prev_multi_paragraph = $multi_paragraph;
-
-      # If there were any lines
-      if (@line == 0)
-        {
-          warn "$ME: warning: empty commit message:\n  $date_line\n";
-        }
-      else
-        {
-          if ($append_dot)
-            {
-              # If the first line of the message has enough room, then
-              if (length $line[0] < 72)
-                {
-                  # append a dot if there is no other punctuation or blank
-                  # at the end.
-                  $line[0] =~ /[[:punct:]\s]$/
-                    or $line[0] .= '.';
-                }
-            }
-
-          # Remove one additional leading TAB from each line.
-          $strip_tab
-            and map { s/^\t// } @line;
-
-          # Prefix each non-empty line with a TAB.
-          @line = map { length $_ ? "\t$_" : '' } @line;
-
-          print "\n", join ("\n", @line), "\n";
-        }
-
-      defined ($in = <PIPE>)
-        or last;
-      $in ne "\n"
-        and die "$ME:$.: unexpected line:\n$in";
-    }
-
-  close PIPE
-    or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
-  # FIXME-someday: include $PROCESS_STATUS in the diagnostic
-
-  # Complain about any unused entry in the --amend=F specified file.
-  my $fail = 0;
-  foreach my $sha (keys %$amend_code)
-    {
-      warn "$ME:$amend_file: unused entry: $sha\n";
-      $fail = 1;
-    }
-
-  exit $fail;
-}
-
-# Local Variables:
-# mode: perl
-# indent-tabs-mode: nil
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "my $VERSION = '"
-# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "'; # UTC"
-# End:
diff --git a/i386/i386/.gitignore b/i386/i386/.gitignore
deleted file mode 100644
index 4520a2a..0000000
--- a/i386/i386/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/i386asm.h
diff --git a/ipc/ipc_print.h b/ipc/ipc_print.h
deleted file mode 100644
index ef676a7..0000000
--- a/ipc/ipc_print.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _IPC_PRINT_H_
-#define        _IPC_PRINT_H_
-
-#if MACH_KDB
-
-#include <mach/mach_types.h>
-#include <mach/message.h>
-#include <ipc/ipc_types.h>
-
-extern void ipc_port_print(ipc_port_t);
-
-extern void ipc_pset_print(ipc_pset_t);
-
-extern void ipc_kmsg_print(ipc_kmsg_t);
-
-extern void ipc_msg_print(mach_msg_header_t*);
-
-#endif  /* MACH_KDB */
-
-#endif /* IPC_PRINT_H */
diff --git a/kern/server_loop.ch b/kern/server_loop.ch
deleted file mode 100644
index 409e013..0000000
--- a/kern/server_loop.ch
+++ /dev/null
@@ -1,104 +0,0 @@
-/* 
- * Mach Operating System
- * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
- * All Rights Reserved.
- * 
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
- * Carnegie Mellon requests users of this software to return to
- * 
- *  Software Distribution Coordinator  or  address@hidden
- *  School of Computer Science
- *  Carnegie Mellon University
- *  Pittsburgh PA 15213-3890
- * 
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
- */
-/*
- *     File:   kern/server_loop.c
- *
- *     A common server loop for builtin tasks.
- */
-
-/*
- *     Must define symbols for:
- *             SERVER_NAME             String name of this module
- *             SERVER_LOOP             Routine name for the loop
- *             SERVER_DISPATCH         MiG function(s) to handle message
- *
- *     Must redefine symbols for pager_server functions.
- */
-
-#include <kern/debug.h>
-#include <kern/kalloc.h>
-#include <mach/port.h>
-#include <mach/message.h>
-#include <vm/vm_kern.h>                /* for kernel_map */
-
-void SERVER_LOOP(rcv_set, max_size)
-{
-       register mach_msg_header_t *in_msg;
-       register mach_msg_header_t *out_msg;
-       register mach_msg_header_t *tmp_msg;
-       vm_offset_t messages;
-       mach_msg_return_t r;
-
-       /*
-        *      Allocate our message buffers.
-        */
-
-       messages = kalloc(2 * max_size);
-       if (messages == 0)
-               panic(SERVER_NAME);
-       in_msg = (mach_msg_header_t *) messages;
-       out_msg = (mach_msg_header_t *) (messages + max_size);
-
-       /*
-        *      Service loop... receive messages and process them.
-        */
-
-       for (;;) {
-               /* receive first message */
-
-           receive_msg:
-               r = mach_msg(in_msg, MACH_RCV_MSG, 0, max_size, rcv_set,
-                            MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
-               if (r == MACH_MSG_SUCCESS)
-                       break;
-
-               printf("%s: receive failed, 0x%x.\n", SERVER_NAME, r);
-       }
-
-       for (;;) {
-               /* process request message */
-
-               (void) SERVER_DISPATCH(in_msg, out_msg);
-
-               /* send reply and receive next request */
-
-               if (out_msg->msgh_remote_port == MACH_PORT_NULL)
-                       goto receive_msg;
-
-               r = mach_msg(out_msg, MACH_SEND_MSG|MACH_RCV_MSG,
-                            out_msg->msgh_size, max_size, rcv_set,
-                            MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
-               if (r != MACH_MSG_SUCCESS) {
-                       printf("%s: send/receive failed, 0x%x.\n",
-                              SERVER_NAME, r);
-                       goto receive_msg;
-               }
-
-               /* swap message buffers */
-
-               tmp_msg = in_msg; in_msg = out_msg; out_msg = tmp_msg;
-       }
-}
diff --git a/linux/src/arch/i386/kernel/irq.c b/linux/src/arch/i386/kernel/irq.c
deleted file mode 100644
index 6db6115..0000000
--- a/linux/src/arch/i386/kernel/irq.c
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- *     linux/arch/i386/kernel/irq.c
- *
- *     Copyright (C) 1992 Linus Torvalds
- *
- * This file contains the code used by various IRQ handling routines:
- * asking for different IRQ's should be done through these routines
- * instead of just grabbing them. Thus setups with different IRQ numbers
- * shouldn't result in any weird surprises, and installing new handlers
- * should be easier.
- */
-
-/*
- * IRQ's are in fact implemented a bit like signal handlers for the kernel.
- * Naturally it's not a 1:1 relation, but there are similarities.
- */
-
-#include <linux/ptrace.h>
-#include <linux/errno.h>
-#include <linux/kernel_stat.h>
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/ioport.h>
-#include <linux/interrupt.h>
-#include <linux/timex.h>
-#include <linux/malloc.h>
-#include <linux/random.h>
-
-#include <asm/system.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/bitops.h>
-#include <asm/smp.h>
-
-#define CR0_NE 32
-
-static unsigned char cache_21 = 0xff;
-static unsigned char cache_A1 = 0xff;
-
-#ifdef __SMP_PROF__
-static unsigned int int_count[NR_CPUS][NR_IRQS] = {{0},};
-#endif
-
-static inline void mask_irq(unsigned int irq_nr)
-{
-       unsigned char mask;
-
-       mask = 1 << (irq_nr & 7);
-       if (irq_nr < 8) {
-               cache_21 |= mask;
-               outb(cache_21,0x21);
-       } else {
-               cache_A1 |= mask;
-               outb(cache_A1,0xA1);
-       }
-}
-
-static inline void unmask_irq(unsigned int irq_nr)
-{
-       unsigned char mask;
-
-       mask = ~(1 << (irq_nr & 7));
-       if (irq_nr < 8) {
-               cache_21 &= mask;
-               outb(cache_21,0x21);
-       } else {
-               cache_A1 &= mask;
-               outb(cache_A1,0xA1);
-       }
-}
-
-void disable_irq(unsigned int irq_nr)
-{
-       unsigned long flags;
-
-       save_flags(flags);
-       cli();
-       mask_irq(irq_nr);
-       restore_flags(flags);
-}
-
-void enable_irq(unsigned int irq_nr)
-{
-       unsigned long flags;
-       save_flags(flags);
-       cli();
-       unmask_irq(irq_nr);
-       restore_flags(flags);
-}
-
-/*
- * This builds up the IRQ handler stubs using some ugly macros in irq.h
- *
- * These macros create the low-level assembly IRQ routines that do all
- * the operations that are needed to keep the AT interrupt-controller
- * happy. They are also written to be fast - and to disable interrupts
- * as little as humanly possible.
- *
- * NOTE! These macros expand to three different handlers for each line: one
- * complete handler that does all the fancy stuff (including signal handling),
- * and one fast handler that is meant for simple IRQ's that want to be
- * atomic. The specific handler is chosen depending on the SA_INTERRUPT
- * flag when installing a handler. Finally, one "bad interrupt" handler, that
- * is used when no handler is present.
- *
- * The timer interrupt is handled specially to insure that the jiffies
- * variable is updated at all times.  Specifically, the timer interrupt is
- * just like the complete handlers except that it is invoked with interrupts
- * disabled and should never re-enable them.  If other interrupts were
- * allowed to be processed while the timer interrupt is active, then the
- * other interrupts would have to avoid using the jiffies variable for delay
- * and interval timing operations to avoid hanging the system.
- */
-BUILD_TIMER_IRQ(FIRST,0,0x01)
-BUILD_IRQ(FIRST,1,0x02)
-BUILD_IRQ(FIRST,2,0x04)
-BUILD_IRQ(FIRST,3,0x08)
-BUILD_IRQ(FIRST,4,0x10)
-BUILD_IRQ(FIRST,5,0x20)
-BUILD_IRQ(FIRST,6,0x40)
-BUILD_IRQ(FIRST,7,0x80)
-BUILD_IRQ(SECOND,8,0x01)
-BUILD_IRQ(SECOND,9,0x02)
-BUILD_IRQ(SECOND,10,0x04)
-BUILD_IRQ(SECOND,11,0x08)
-BUILD_IRQ(SECOND,12,0x10)
-#ifdef __SMP__
-BUILD_MSGIRQ(SECOND,13,0x20)
-#else
-BUILD_IRQ(SECOND,13,0x20)
-#endif
-BUILD_IRQ(SECOND,14,0x40)
-BUILD_IRQ(SECOND,15,0x80)
-#ifdef __SMP__
-BUILD_RESCHEDIRQ(16)
-#endif
-
-/*
- * Pointers to the low-level handlers: first the general ones, then the
- * fast ones, then the bad ones.
- */
-static void (*interrupt[17])(void) = {
-       IRQ0_interrupt, IRQ1_interrupt, IRQ2_interrupt, IRQ3_interrupt,
-       IRQ4_interrupt, IRQ5_interrupt, IRQ6_interrupt, IRQ7_interrupt,
-       IRQ8_interrupt, IRQ9_interrupt, IRQ10_interrupt, IRQ11_interrupt,
-       IRQ12_interrupt, IRQ13_interrupt, IRQ14_interrupt, IRQ15_interrupt      
-#ifdef __SMP__ 
-       ,IRQ16_interrupt
-#endif
-};
-
-static void (*fast_interrupt[16])(void) = {
-       fast_IRQ0_interrupt, fast_IRQ1_interrupt,
-       fast_IRQ2_interrupt, fast_IRQ3_interrupt,
-       fast_IRQ4_interrupt, fast_IRQ5_interrupt,
-       fast_IRQ6_interrupt, fast_IRQ7_interrupt,
-       fast_IRQ8_interrupt, fast_IRQ9_interrupt,
-       fast_IRQ10_interrupt, fast_IRQ11_interrupt,
-       fast_IRQ12_interrupt, fast_IRQ13_interrupt,
-       fast_IRQ14_interrupt, fast_IRQ15_interrupt
-};
-
-static void (*bad_interrupt[16])(void) = {
-       bad_IRQ0_interrupt, bad_IRQ1_interrupt,
-       bad_IRQ2_interrupt, bad_IRQ3_interrupt,
-       bad_IRQ4_interrupt, bad_IRQ5_interrupt,
-       bad_IRQ6_interrupt, bad_IRQ7_interrupt,
-       bad_IRQ8_interrupt, bad_IRQ9_interrupt,
-       bad_IRQ10_interrupt, bad_IRQ11_interrupt,
-       bad_IRQ12_interrupt, bad_IRQ13_interrupt,
-       bad_IRQ14_interrupt, bad_IRQ15_interrupt
-};
-
-/*
- * Initial irq handlers.
- */
-
-static void no_action(int cpl, void *dev_id, struct pt_regs *regs) { }
-
-#ifdef __SMP__
-
-/*
- * On SMP boards, irq13 is used for interprocessor interrupts (IPI's).
- */
-static struct irqaction irq13 = { smp_message_irq, SA_INTERRUPT, 0, "IPI", 
NULL, NULL };
-
-#else
-
-/*
- * Note that on a 486, we don't want to do a SIGFPE on a irq13
- * as the irq is unreliable, and exception 16 works correctly
- * (ie as explained in the intel literature). On a 386, you
- * can't use exception 16 due to bad IBM design, so we have to
- * rely on the less exact irq13.
- *
- * Careful.. Not only is IRQ13 unreliable, but it is also
- * leads to races. IBM designers who came up with it should
- * be shot.
- */
- 
-
-static void math_error_irq(int cpl, void *dev_id, struct pt_regs *regs)
-{
-       outb(0,0xF0);
-       if (ignore_irq13 || !hard_math)
-               return;
-       math_error();
-}
-
-static struct irqaction irq13 = { math_error_irq, 0, 0, "math error", NULL, 
NULL };
-
-#endif
-
-/*
- * IRQ2 is cascade interrupt to second interrupt controller
- */
-static struct irqaction irq2  = { no_action, 0, 0, "cascade", NULL, NULL};
-
-static struct irqaction *irq_action[16] = {
-       NULL, NULL, NULL, NULL,
-       NULL, NULL, NULL, NULL,
-       NULL, NULL, NULL, NULL,
-       NULL, NULL, NULL, NULL
-};
-
-int get_irq_list(char *buf)
-{
-       int i, len = 0;
-       struct irqaction * action;
-
-       for (i = 0 ; i < 16 ; i++) {
-               action = irq_action[i];
-               if (!action) 
-                       continue;
-               len += sprintf(buf+len, "%2d: %10u %c %s",
-                       i, kstat.interrupts[i],
-                       (action->flags & SA_INTERRUPT) ? '+' : ' ',
-                       action->name);
-               for (action=action->next; action; action = action->next) {
-                       len += sprintf(buf+len, ",%s %s",
-                               (action->flags & SA_INTERRUPT) ? " +" : "",
-                               action->name);
-               }
-               len += sprintf(buf+len, "\n");
-       }
-/*
- *     Linus - should you add NMI counts here ?????
- */
-#ifdef __SMP_PROF__
-       len+=sprintf(buf+len, "IPI: %8lu received\n",
-               ipi_count);
-#endif         
-       return len;
-}
-
-#ifdef __SMP_PROF__
-
-int get_smp_prof_list(char *buf) {
-       int i,j, len = 0;
-       struct irqaction * action;
-       unsigned long sum_spins = 0;
-       unsigned long sum_spins_syscall = 0;
-       unsigned long sum_spins_sys_idle = 0;
-       unsigned long sum_smp_idle_count = 0;
-
-       for (i=0;i<smp_num_cpus;i++) {
-               int cpunum = cpu_logical_map[i];
-               sum_spins+=smp_spins[cpunum];
-               sum_spins_syscall+=smp_spins_syscall[cpunum];
-               sum_spins_sys_idle+=smp_spins_sys_idle[cpunum];
-               sum_smp_idle_count+=smp_idle_count[cpunum];
-       }
-
-       len += sprintf(buf+len,"CPUS: %10i \n", smp_num_cpus);
-       len += sprintf(buf+len,"            SUM ");
-       for (i=0;i<smp_num_cpus;i++)
-               len += sprintf(buf+len,"        P%1d ",cpu_logical_map[i]);
-       len += sprintf(buf+len,"\n");
-       for (i = 0 ; i < NR_IRQS ; i++) {
-               action = *(i + irq_action);
-               if (!action || !action->handler)
-                       continue;
-               len += sprintf(buf+len, "%3d: %10d ",
-                       i, kstat.interrupts[i]);
-               for (j=0;j<smp_num_cpus;j++)
-                       len+=sprintf(buf+len, "%10d ",
-                               int_count[cpu_logical_map[j]][i]);
-               len += sprintf(buf+len, "%c %s",
-                       (action->flags & SA_INTERRUPT) ? '+' : ' ',
-                       action->name);
-               for (action=action->next; action; action = action->next) {
-                       len += sprintf(buf+len, ",%s %s",
-                               (action->flags & SA_INTERRUPT) ? " +" : "",
-                               action->name);
-               }
-               len += sprintf(buf+len, "\n");
-       }
-       len+=sprintf(buf+len, "LCK: %10lu",
-               sum_spins);
-
-       for (i=0;i<smp_num_cpus;i++)
-               len+=sprintf(buf+len," %10lu",smp_spins[cpu_logical_map[i]]);
-
-       len +=sprintf(buf+len,"   spins from int\n");
-
-       len+=sprintf(buf+len, "LCK: %10lu",
-               sum_spins_syscall);
-
-       for (i=0;i<smp_num_cpus;i++)
-               len+=sprintf(buf+len," 
%10lu",smp_spins_syscall[cpu_logical_map[i]]);
-
-       len +=sprintf(buf+len,"   spins from syscall\n");
-
-       len+=sprintf(buf+len, "LCK: %10lu",
-               sum_spins_sys_idle);
-
-       for (i=0;i<smp_num_cpus;i++)
-               len+=sprintf(buf+len," 
%10lu",smp_spins_sys_idle[cpu_logical_map[i]]);
-
-       len +=sprintf(buf+len,"   spins from sysidle\n");
-       len+=sprintf(buf+len,"IDLE %10lu",sum_smp_idle_count);
-
-       for (i=0;i<smp_num_cpus;i++)
-               len+=sprintf(buf+len," 
%10lu",smp_idle_count[cpu_logical_map[i]]);
-
-       len +=sprintf(buf+len,"   idle ticks\n");
-
-       len+=sprintf(buf+len, "IPI: %10lu   received\n",
-               ipi_count);
-
-       return len;
-}
-#endif 
-
-
-
-/*
- * do_IRQ handles IRQ's that have been installed without the
- * SA_INTERRUPT flag: it uses the full signal-handling return
- * and runs with other interrupts enabled. All relatively slow
- * IRQ's should use this format: notably the keyboard/timer
- * routines.
- */
-asmlinkage void do_IRQ(int irq, struct pt_regs * regs)
-{
-       struct irqaction * action = *(irq + irq_action);
-       int do_random = 0;
-       int c,intm,mask;
-#ifdef IRQ_DEBUG
-       static int count;
-       if (smp_processor_id() != 0 && count++ < 1000)
-         printk("IRQ %d: done by CPU %d\n",irq,smp_processor_id());
-#endif   
-       if (irq  >= 8) {
-         c = cache_A1;
-         intm = inb(0xA1);
-         mask =  1 << (irq - 8);
-       } else {
-         c = cache_21;
-         intm = inb(0x21);
-         mask =  1 << irq;
-       }
-       if (!(c & mask) || !(intm & mask)) {
-#ifdef IRQ_DEBUG       
-         printk("IRQ %d (proc %d):cache_x1=0x%x,INT mask=0x%x\n", irq, 
smp_processor_id(),c,intm);
-#endif   
-         /* better to return because the interrupt may be asserted again,
-            the bad thing is that we may loose some interrupts */
-         return;
-       }
-#ifdef __SMP__
-       if(smp_threads_ready && active_kernel_processor!=smp_processor_id())
-               panic("IRQ %d: active processor set wrongly(%d not %d).\n", 
irq, active_kernel_processor, smp_processor_id());
-#endif
-
-       kstat.interrupts[irq]++;
-#ifdef __SMP_PROF__
-       int_count[smp_processor_id()][irq]++;
-#endif
-       while (action) {
-               do_random |= action->flags;
-               action->handler(irq, action->dev_id, regs);
-               action = action->next;
-       }
-       if (do_random & SA_SAMPLE_RANDOM)
-               add_interrupt_randomness(irq);
-}
-
-/*
- * do_fast_IRQ handles IRQ's that don't need the fancy interrupt return
- * stuff - the handler is also running with interrupts disabled unless
- * it explicitly enables them later.
- */
-asmlinkage void do_fast_IRQ(int irq)
-{
-       struct irqaction * action = *(irq + irq_action);
-       int do_random = 0;
-       
-#ifdef __SMP__
-       /* IRQ 13 is allowed - that's a flush tlb */
-       if(smp_threads_ready && active_kernel_processor!=smp_processor_id() && 
irq!=13)
-               panic("fast_IRQ %d: active processor set wrongly(%d not 
%d).\n", irq, active_kernel_processor, smp_processor_id());
-#endif
-
-       kstat.interrupts[irq]++;
-#ifdef __SMP_PROF__
-       int_count[smp_processor_id()][irq]++;
-#endif
-       while (action) {
-               do_random |= action->flags;
-               action->handler(irq, action->dev_id, NULL);
-               action = action->next;
-       }
-       if (do_random & SA_SAMPLE_RANDOM)
-               add_interrupt_randomness(irq);
-}
-
-int setup_x86_irq(int irq, struct irqaction * new)
-{
-       int shared = 0;
-       struct irqaction *old, **p;
-       unsigned long flags;
-
-       p = irq_action + irq;
-       if ((old = *p) != NULL) {
-               /* Can't share interrupts unless both agree to */
-               if (!(old->flags & new->flags & SA_SHIRQ))
-                       return -EBUSY;
-
-               /* Can't share interrupts unless both are same type */
-               if ((old->flags ^ new->flags) & SA_INTERRUPT)
-                       return -EBUSY;
-
-               /* add new interrupt at end of irq queue */
-               do {
-                       p = &old->next;
-                       old = *p;
-               } while (old);
-               shared = 1;
-       }
-
-       if (new->flags & SA_SAMPLE_RANDOM)
-               rand_initialize_irq(irq);
-
-       save_flags(flags);
-       cli();
-       *p = new;
-
-       if (!shared) {
-               if (new->flags & SA_INTERRUPT)
-                       set_intr_gate(0x20+irq,fast_interrupt[irq]);
-               else
-                       set_intr_gate(0x20+irq,interrupt[irq]);
-               unmask_irq(irq);
-       }
-       restore_flags(flags);
-       return 0;
-}
-
-int request_irq(unsigned int irq, 
-               void (*handler)(int, void *, struct pt_regs *),
-               unsigned long irqflags, 
-               const char * devname,
-               void *dev_id)
-{
-       int retval;
-       struct irqaction * action;
-
-       if (irq > 15)
-               return -EINVAL;
-       if (!handler)
-               return -EINVAL;
-
-       action = (struct irqaction *)kmalloc(sizeof(struct irqaction), 
GFP_KERNEL);
-       if (!action)
-               return -ENOMEM;
-
-       action->handler = handler;
-       action->flags = irqflags;
-       action->mask = 0;
-       action->name = devname;
-       action->next = NULL;
-       action->dev_id = dev_id;
-
-       retval = setup_x86_irq(irq, action);
-
-       if (retval)
-               kfree(action);
-       return retval;
-}
-               
-void free_irq(unsigned int irq, void *dev_id)
-{
-       struct irqaction * action, **p;
-       unsigned long flags;
-
-       if (irq > 15) {
-               printk("Trying to free IRQ%d\n",irq);
-               return;
-       }
-       for (p = irq + irq_action; (action = *p) != NULL; p = &action->next) {
-               if (action->dev_id != dev_id)
-                       continue;
-
-               /* Found it - now free it */
-               save_flags(flags);
-               cli();
-               *p = action->next;
-               if (!irq[irq_action]) {
-                       mask_irq(irq);
-                       set_intr_gate(0x20+irq,bad_interrupt[irq]);
-               }
-               restore_flags(flags);
-               kfree(action);
-               return;
-       }
-       printk("Trying to free free IRQ%d\n",irq);
-}
-
-unsigned long probe_irq_on (void)
-{
-       unsigned int i, irqs = 0, irqmask;
-       unsigned long delay;
-
-       /* first, enable any unassigned irqs */
-       for (i = 15; i > 0; i--) {
-               if (!irq_action[i]) {
-                       enable_irq(i);
-                       irqs |= (1 << i);
-               }
-       }
-
-       /* wait for spurious interrupts to mask themselves out again */
-       for (delay = jiffies + HZ/10; delay > jiffies; )
-               /* about 100ms delay */;
-
-       /* now filter out any obviously spurious interrupts */
-       irqmask = (((unsigned int)cache_A1)<<8) | (unsigned int)cache_21;
-       return irqs & ~irqmask;
-}
-
-int probe_irq_off (unsigned long irqs)
-{
-       unsigned int i, irqmask;
-
-       irqmask = (((unsigned int)cache_A1)<<8) | (unsigned int)cache_21;
-#ifdef DEBUG
-       printk("probe_irq_off: irqs=0x%04lx irqmask=0x%04x\n", irqs, irqmask);
-#endif
-       irqs &= irqmask;
-       if (!irqs)
-               return 0;
-       i = ffz(~irqs);
-       if (irqs != (irqs & (1 << i)))
-               i = -i;
-       return i;
-}
-
-void init_IRQ(void)
-{
-       int i;
-       static unsigned char smptrap=0;
-       if(smptrap)
-               return;
-       smptrap=1;
-
-       /* set the clock to 100 Hz */
-       outb_p(0x34,0x43);              /* binary, mode 2, LSB/MSB, ch 0 */
-       outb_p(LATCH & 0xff , 0x40);    /* LSB */
-       outb(LATCH >> 8 , 0x40);        /* MSB */
-       for (i = 0; i < 16 ; i++)
-               set_intr_gate(0x20+i,bad_interrupt[i]);
-       /* This bit is a hack because we don't send timer messages to all 
processors yet */
-       /* It has to be here .. it doesn't work if you put it down the bottom - 
assembler explodes 8) */
-#ifdef __SMP__ 
-       set_intr_gate(0x20+i, interrupt[i]);    /* IRQ '16' - IPI for 
rescheduling */
-#endif 
-       request_region(0x20,0x20,"pic1");
-       request_region(0xa0,0x20,"pic2");
-       setup_x86_irq(2, &irq2);
-       setup_x86_irq(13, &irq13);
-} 
diff --git a/linux/src/drivers/block/floppy.c b/linux/src/drivers/block/floppy.c
deleted file mode 100644
index 1b96c44..0000000
--- a/linux/src/drivers/block/floppy.c
+++ /dev/null
@@ -1,4284 +0,0 @@
-/*
- *  linux/kernel/floppy.c
- *
- *  Copyright (C) 1991, 1992  Linus Torvalds
- *  Copyright (C) 1993, 1994  Alain Knaff
- */
-/*
- * 02.12.91 - Changed to static variables to indicate need for reset
- * and recalibrate. This makes some things easier (output_byte reset
- * checking etc), and means less interrupt jumping in case of errors,
- * so the code is hopefully easier to understand.
- */
-
-/*
- * This file is certainly a mess. I've tried my best to get it working,
- * but I don't like programming floppies, and I have only one anyway.
- * Urgel. I should check for more errors, and do more graceful error
- * recovery. Seems there are problems with several drives. I've tried to
- * correct them. No promises.
- */
-
-/*
- * As with hd.c, all routines within this file can (and will) be called
- * by interrupts, so extreme caution is needed. A hardware interrupt
- * handler may not sleep, or a kernel panic will happen. Thus I cannot
- * call "floppy-on" directly, but have to set a special timer interrupt
- * etc.
- */
-
-/*
- * 28.02.92 - made track-buffering routines, based on the routines written
- * by address@hidden (Lawrence Foard). Linus.
- */
-
-/*
- * Automatic floppy-detection and formatting written by Werner Almesberger
- * (address@hidden), who also corrected some problems with
- * the floppy-change signal detection.
- */
-
-/*
- * 1992/7/22 -- Hennus Bergman: Added better error reporting, fixed
- * FDC data overrun bug, added some preliminary stuff for vertical
- * recording support.
- *
- * 1992/9/17: Added DMA allocation & DMA functions. -- hhb.
- *
- * TODO: Errors are still not counted properly.
- */
-
-/* 1992/9/20
- * Modifications for ``Sector Shifting'' by Rob Hooft (address@hidden)
- * modeled after the freeware MS-DOS program fdformat/88 V1.8 by
- * Christoph H. Hochst\"atter.
- * I have fixed the shift values to the ones I always use. Maybe a new
- * ioctl() should be created to be able to modify them.
- * There is a bug in the driver that makes it impossible to format a
- * floppy as the first thing after bootup.
- */
-
-/*
- * 1993/4/29 -- Linus -- cleaned up the timer handling in the kernel, and
- * this helped the floppy driver as well. Much cleaner, and still seems to
- * work.
- */
-
-/* 1994/6/24 --bbroad-- added the floppy table entries and made
- * minor modifications to allow 2.88 floppies to be run.
- */
-
-/* 1994/7/13 -- Paul Vojta -- modified the probing code to allow three or more
- * disk types.
- */
-
-/*
- * 1994/8/8 -- Alain Knaff -- Switched to fdpatch driver: Support for bigger
- * format bug fixes, but unfortunately some new bugs too...
- */
-
-/* 1994/9/17 -- Koen Holtman -- added logging of physical floppy write
- * errors to allow safe writing by specialized programs.
- */
-
-/* 1995/4/24 -- Dan Fandrich -- added support for Commodore 1581 3.5" disks
- * by defining bit 1 of the "stretch" parameter to mean put sectors on the
- * opposite side of the disk, leaving the sector IDs alone (i.e. Commodore's
- * drives are "upside-down").
- */
-
-/*
- * 1995/8/26 -- Andreas Busse -- added Mips support.
- */
-
-/*
- * 1995/10/18 -- Ralf Baechle -- Portability cleanup; move machine dependent
- * features to asm/floppy.h.
- */
-
-
-#define FLOPPY_SANITY_CHECK
-#undef  FLOPPY_SILENT_DCL_CLEAR
-
-#define REALLY_SLOW_IO
-
-#define DEBUGT 2
-#define DCL_DEBUG /* debug disk change line */
-
-/* do print messages for unexpected interrupts */
-static int print_unex=1;
-#include <linux/utsname.h>
-#include <linux/module.h>
-
-/* the following is the mask of allowed drives. By default units 2 and
- * 3 of both floppy controllers are disabled, because switching on the
- * motor of these drives causes system hangs on some PCI computers. drive
- * 0 is the low bit (0x1), and drive 7 is the high bit (0x80). Bits are on if
- * a drive is allowed. */
-static int FLOPPY_IRQ=6;
-static int FLOPPY_DMA=2;
-static int allowed_drive_mask = 0x33;
-
-static int irqdma_allocated = 0; 
-
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/kernel.h>
-#include <linux/timer.h>
-#include <linux/tqueue.h>
-#define FDPATCHES
-#include <linux/fdreg.h>
-
-
-#include <linux/fd.h>
-
-
-#define OLDFDRAWCMD 0x020d /* send a raw command to the FDC */
-
-struct old_floppy_raw_cmd {
-  void *data;
-  long length;
-
-  unsigned char rate;
-  unsigned char flags;
-  unsigned char cmd_count;
-  unsigned char cmd[9];
-  unsigned char reply_count;
-  unsigned char reply[7];
-  int track;
-};
-
-#include <linux/errno.h>
-#include <linux/malloc.h>
-#include <linux/mm.h>
-#include <linux/string.h>
-#include <linux/fcntl.h>
-#include <linux/delay.h>
-#include <linux/mc146818rtc.h> /* CMOS defines */
-#include <linux/ioport.h>
-#include <linux/interrupt.h>
-
-#include <asm/dma.h>
-#include <asm/irq.h>
-#include <asm/system.h>
-#include <asm/io.h>
-#include <asm/segment.h>
-
-static int use_virtual_dma=0; /* virtual DMA for Intel */
-static unsigned short virtual_dma_port=0x3f0;
-void floppy_interrupt(int irq, void *dev_id, struct pt_regs * regs);
-static int set_dor(int fdc, char mask, char data);
-static inline int __get_order(unsigned long size);
-#include <asm/floppy.h>
-
-
-#define MAJOR_NR FLOPPY_MAJOR
-
-#include <linux/blk.h>
-#include <linux/cdrom.h> /* for the compatibility eject ioctl */
-
-#include <linux/dev/glue/glue.h>
-
-
-#ifndef FLOPPY_MOTOR_MASK
-#define FLOPPY_MOTOR_MASK 0xf0
-#endif
-
-#ifndef fd_get_dma_residue
-#define fd_get_dma_residue() get_dma_residue(FLOPPY_DMA)
-#endif
-
-/* Dma Memory related stuff */
-
-/* Pure 2^n version of get_order */
-static inline int __get_order(unsigned long size)
-{
-       int order;
-
-       size = (size-1) >> (PAGE_SHIFT-1);
-       order = -1;
-       do {
-               size >>= 1;
-               order++;
-       } while (size);
-       return order;
-}
-
-#ifndef fd_dma_mem_free
-#define fd_dma_mem_free(addr, size) free_pages(addr, __get_order(size))
-#endif
-
-#ifndef fd_dma_mem_alloc
-#define fd_dma_mem_alloc(size) __get_dma_pages(GFP_KERNEL,__get_order(size))
-#endif
-
-/* End dma memory related stuff */
-
-static unsigned int fake_change = 0;
-static int initialising=1;
-
-static inline int TYPE(kdev_t x) {
-       return  (MINOR(x)>>2) & 0x1f;
-}
-static inline int DRIVE(kdev_t x) {
-       return (MINOR(x)&0x03) | ((MINOR(x)&0x80) >> 5);
-}
-#define ITYPE(x) (((x)>>2) & 0x1f)
-#define TOMINOR(x) ((x & 3) | ((x & 4) << 5))
-#define UNIT(x) ((x) & 0x03)           /* drive on fdc */
-#define FDC(x) (((x) & 0x04) >> 2)  /* fdc of drive */
-#define REVDRIVE(fdc, unit) ((unit) + ((fdc) << 2))
-                               /* reverse mapping from unit and fdc to drive */
-#define DP (&drive_params[current_drive])
-#define DRS (&drive_state[current_drive])
-#define DRWE (&write_errors[current_drive])
-#define FDCS (&fdc_state[fdc])
-#define CLEARF(x) (clear_bit(x##_BIT, &DRS->flags))
-#define SETF(x) (set_bit(x##_BIT, &DRS->flags))
-#define TESTF(x) (test_bit(x##_BIT, &DRS->flags))
-
-#define UDP (&drive_params[drive])
-#define UDRS (&drive_state[drive])
-#define UDRWE (&write_errors[drive])
-#define UFDCS (&fdc_state[FDC(drive)])
-#define UCLEARF(x) (clear_bit(x##_BIT, &UDRS->flags))
-#define USETF(x) (set_bit(x##_BIT, &UDRS->flags))
-#define UTESTF(x) (test_bit(x##_BIT, &UDRS->flags))
-
-#define DPRINT(format, args...) printk(DEVICE_NAME "%d: " format, 
current_drive , ## args)
-
-#define PH_HEAD(floppy,head) (((((floppy)->stretch & 2) >>1) ^ head) << 2)
-#define STRETCH(floppy) ((floppy)->stretch & FD_STRETCH)
-
-#define CLEARSTRUCT(x) memset((x), 0, sizeof(*(x)))
-
-#define INT_OFF save_flags(flags); cli()
-#define INT_ON  restore_flags(flags)
-
-/* read/write */
-#define COMMAND raw_cmd->cmd[0]
-#define DR_SELECT raw_cmd->cmd[1]
-#define TRACK raw_cmd->cmd[2]
-#define HEAD raw_cmd->cmd[3]
-#define SECTOR raw_cmd->cmd[4]
-#define SIZECODE raw_cmd->cmd[5]
-#define SECT_PER_TRACK raw_cmd->cmd[6]
-#define GAP raw_cmd->cmd[7]
-#define SIZECODE2 raw_cmd->cmd[8]
-#define NR_RW 9
-
-/* format */
-#define F_SIZECODE raw_cmd->cmd[2]
-#define F_SECT_PER_TRACK raw_cmd->cmd[3]
-#define F_GAP raw_cmd->cmd[4]
-#define F_FILL raw_cmd->cmd[5]
-#define NR_F 6
-
-/*
- * Maximum disk size (in kilobytes). This default is used whenever the
- * current disk size is unknown.
- * [Now it is rather a minimum]
- */
-#define MAX_DISK_SIZE 4 /* 3984*/
-
-#define K_64   0x10000         /* 64KB */
-
-/*
- * globals used by 'result()'
- */
-#define MAX_REPLIES 16
-static unsigned char reply_buffer[MAX_REPLIES];
-static int inr; /* size of reply buffer, when called from interrupt */
-#define ST0 (reply_buffer[0])
-#define ST1 (reply_buffer[1])
-#define ST2 (reply_buffer[2])
-#define ST3 (reply_buffer[0]) /* result of GETSTATUS */
-#define R_TRACK (reply_buffer[3])
-#define R_HEAD (reply_buffer[4])
-#define R_SECTOR (reply_buffer[5])
-#define R_SIZECODE (reply_buffer[6])
-
-#define SEL_DLY (2*HZ/100)
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-/*
- * this struct defines the different floppy drive types.
- */
-static struct {
-       struct floppy_drive_params params;
-       const char *name; /* name printed while booting */
-} default_drive_params[]= {
-/* NOTE: the time values in jiffies should be in msec!
- CMOS drive type
-  |     Maximum data rate supported by drive type
-  |     |   Head load time, msec
-  |     |   |   Head unload time, msec (not used)
-  |     |   |   |     Step rate interval, usec
-  |     |   |   |     |       Time needed for spinup time (jiffies)
-  |     |   |   |     |       |      Timeout for spinning down (jiffies)
-  |     |   |   |     |       |      |   Spindown offset (where disk stops)
-  |     |   |   |     |       |      |   |     Select delay
-  |     |   |   |     |       |      |   |     |     RPS
-  |     |   |   |     |       |      |   |     |     |    Max number of tracks
-  |     |   |   |     |       |      |   |     |     |    |     Interrupt 
timeout
-  |     |   |   |     |       |      |   |     |     |    |     |   Max 
nonintlv. sectors
-  |     |   |   |     |       |      |   |     |     |    |     |   | -Max 
Errors- flags */
-{{0,  500, 16, 16, 8000,    1*HZ, 3*HZ,  0, SEL_DLY, 5,  80, 3*HZ, 20, 
{3,1,2,0,2}, 0,
-      0, { 7, 4, 8, 2, 1, 5, 3,10}, 3*HZ/2, 0 }, "unknown" },
-
-{{1,  300, 16, 16, 8000,    1*HZ, 3*HZ,  0, SEL_DLY, 5,  40, 3*HZ, 17, 
{3,1,2,0,2}, 0,
-      0, { 1, 0, 0, 0, 0, 0, 0, 0}, 3*HZ/2, 1 }, "360K PC" }, /*5 1/4 360 KB 
PC*/
-
-{{2,  500, 16, 16, 6000, 4*HZ/10, 3*HZ, 14, SEL_DLY, 6,  83, 3*HZ, 17, 
{3,1,2,0,2}, 0,
-      0, { 2, 5, 6,23,10,20,12, 0}, 3*HZ/2, 2 }, "1.2M" }, /*5 1/4 HD AT*/
-
-{{3,  250, 16, 16, 3000,    1*HZ, 3*HZ,  0, SEL_DLY, 5,  83, 3*HZ, 20, 
{3,1,2,0,2}, 0,
-      0, { 4,22,21,30, 3, 0, 0, 0}, 3*HZ/2, 4 }, "720k" }, /*3 1/2 DD*/
-
-{{4,  500, 16, 16, 4000, 4*HZ/10, 3*HZ, 10, SEL_DLY, 5,  83, 3*HZ, 20, 
{3,1,2,0,2}, 0,
-      0, { 7, 4,25,22,31,21,29,11}, 3*HZ/2, 7 }, "1.44M" }, /*3 1/2 HD*/
-
-{{5, 1000, 15,  8, 3000, 4*HZ/10, 3*HZ, 10, SEL_DLY, 5,  83, 3*HZ, 40, 
{3,1,2,0,2}, 0,
-      0, { 7, 8, 4,25,28,22,31,21}, 3*HZ/2, 8 }, "2.88M AMI BIOS" }, /*3 1/2 
ED*/
-
-{{6, 1000, 15,  8, 3000, 4*HZ/10, 3*HZ, 10, SEL_DLY, 5,  83, 3*HZ, 40, 
{3,1,2,0,2}, 0,
-      0, { 7, 8, 4,25,28,22,31,21}, 3*HZ/2, 8 }, "2.88M" } /*3 1/2 ED*/
-/*    |  --autodetected formats---    |      |      |
- *    read_track                      |      |    Name printed when booting
- *                                   |     Native format
- *                 Frequency of disk change checks */
-};
-
-static struct floppy_drive_params drive_params[N_DRIVE];
-static struct floppy_drive_struct drive_state[N_DRIVE];
-static struct floppy_write_errors write_errors[N_DRIVE];
-static struct floppy_raw_cmd *raw_cmd, default_raw_cmd;
-
-/*
- * This struct defines the different floppy types.
- *
- * Bit 0 of 'stretch' tells if the tracks need to be doubled for some
- * types (e.g. 360kB diskette in 1.2MB drive, etc.).  Bit 1 of 'stretch'
- * tells if the disk is in Commodore 1581 format, which means side 0 sectors
- * are located on side 1 of the disk but with a side 0 ID, and vice-versa.
- * This is the same as the Sharp MZ-80 5.25" CP/M disk format, except that the
- * 1581's logical side 0 is on physical side 1, whereas the Sharp's logical
- * side 0 is on physical side 0 (but with the misnamed sector IDs).
- * 'stretch' should probably be renamed to something more general, like
- * 'options'.  Other parameters should be self-explanatory (see also
- * setfdprm(8)).
- */
-static struct floppy_struct floppy_type[32] = {
-       {    0, 0,0, 0,0,0x00,0x00,0x00,0x00,NULL    }, /*  0 no testing    */
-       {  720, 9,2,40,0,0x2A,0x02,0xDF,0x50,"d360"  }, /*  1 360KB PC      */
-       { 2400,15,2,80,0,0x1B,0x00,0xDF,0x54,"h1200" }, /*  2 1.2MB AT      */
-       {  720, 9,1,80,0,0x2A,0x02,0xDF,0x50,"D360"  }, /*  3 360KB SS 3.5" */
-       { 1440, 9,2,80,0,0x2A,0x02,0xDF,0x50,"D720"  }, /*  4 720KB 3.5"    */
-       {  720, 9,2,40,1,0x23,0x01,0xDF,0x50,"h360"  }, /*  5 360KB AT      */
-       { 1440, 9,2,80,0,0x23,0x01,0xDF,0x50,"h720"  }, /*  6 720KB AT      */
-       { 2880,18,2,80,0,0x1B,0x00,0xCF,0x6C,"H1440" }, /*  7 1.44MB 3.5"   */
-       { 5760,36,2,80,0,0x1B,0x43,0xAF,0x54,"E2880" }, /*  8 2.88MB 3.5"   */
-       { 6240,39,2,80,0,0x1B,0x43,0xAF,0x28,"E3120"},  /*  9 3.12MB 3.5"   */
-
-       { 2880,18,2,80,0,0x25,0x00,0xDF,0x02,"h1440" }, /* 10 1.44MB 5.25"  */
-       { 3360,21,2,80,0,0x1C,0x00,0xCF,0x0C,"H1680" }, /* 11 1.68MB 3.5"   */
-       {  820,10,2,41,1,0x25,0x01,0xDF,0x2E,"h410"  }, /* 12 410KB 5.25"   */
-       { 1640,10,2,82,0,0x25,0x02,0xDF,0x2E,"H820"  }, /* 13 820KB 3.5"    */
-       { 2952,18,2,82,0,0x25,0x00,0xDF,0x02,"h1476" }, /* 14 1.48MB 5.25"  */
-       { 3444,21,2,82,0,0x25,0x00,0xDF,0x0C,"H1722" }, /* 15 1.72MB 3.5"   */
-       {  840,10,2,42,1,0x25,0x01,0xDF,0x2E,"h420"  }, /* 16 420KB 5.25"   */
-       { 1660,10,2,83,0,0x25,0x02,0xDF,0x2E,"H830"  }, /* 17 830KB 3.5"    */
-       { 2988,18,2,83,0,0x25,0x00,0xDF,0x02,"h1494" }, /* 18 1.49MB 5.25"  */
-       { 3486,21,2,83,0,0x25,0x00,0xDF,0x0C,"H1743" }, /* 19 1.74 MB 3.5"  */
-
-       { 1760,11,2,80,0,0x1C,0x09,0xCF,0x00,"h880"  }, /* 20 880KB 5.25"   */
-       { 2080,13,2,80,0,0x1C,0x01,0xCF,0x00,"D1040" }, /* 21 1.04MB 3.5"   */
-       { 2240,14,2,80,0,0x1C,0x19,0xCF,0x00,"D1120" }, /* 22 1.12MB 3.5"   */
-       { 3200,20,2,80,0,0x1C,0x20,0xCF,0x2C,"h1600" }, /* 23 1.6MB 5.25"   */
-       { 3520,22,2,80,0,0x1C,0x08,0xCF,0x2e,"H1760" }, /* 24 1.76MB 3.5"   */
-       { 3840,24,2,80,0,0x1C,0x20,0xCF,0x00,"H1920" }, /* 25 1.92MB 3.5"   */
-       { 6400,40,2,80,0,0x25,0x5B,0xCF,0x00,"E3200" }, /* 26 3.20MB 3.5"   */
-       { 7040,44,2,80,0,0x25,0x5B,0xCF,0x00,"E3520" }, /* 27 3.52MB 3.5"   */
-       { 7680,48,2,80,0,0x25,0x63,0xCF,0x00,"E3840" }, /* 28 3.84MB 3.5"   */
-
-       { 3680,23,2,80,0,0x1C,0x10,0xCF,0x00,"H1840" }, /* 29 1.84MB 3.5"   */
-       { 1600,10,2,80,0,0x25,0x02,0xDF,0x2E,"D800"  }, /* 30 800KB 3.5"    */
-       { 3200,20,2,80,0,0x1C,0x00,0xCF,0x2C,"H1600" }, /* 31 1.6MB 3.5"    */
-};
-
-#define        NUMBER(x)       (sizeof(x) / sizeof(*(x)))
-#define SECTSIZE (_FD_SECTSIZE(*floppy))
-
-/* Auto-detection: Disk type used until the next media change occurs. */
-static struct floppy_struct *current_type[N_DRIVE] = {
-       NULL, NULL, NULL, NULL,
-       NULL, NULL, NULL, NULL
-};
-
-/*
- * User-provided type information. current_type points to
- * the respective entry of this array.
- */
-static struct floppy_struct user_params[N_DRIVE];
-
-static int floppy_sizes[256];
-static int floppy_blocksizes[256] = { 0, };
-
-/*
- * The driver is trying to determine the correct media format
- * while probing is set. rw_interrupt() clears it after a
- * successful access.
- */
-static int probing = 0;
-
-/* Synchronization of FDC access. */
-#define FD_COMMAND_NONE -1
-#define FD_COMMAND_ERROR 2
-#define FD_COMMAND_OKAY 3
-
-static volatile int command_status = FD_COMMAND_NONE, fdc_busy = 0;
-static struct wait_queue *fdc_wait = NULL, *command_done = NULL;
-#define NO_SIGNAL (!(current->signal & ~current->blocked) || !interruptible)
-#define CALL(x) if ((x) == -EINTR) return -EINTR
-#define ECALL(x) if ((ret = (x))) return ret;
-#define _WAIT(x,i) CALL(ret=wait_til_done((x),i))
-#define WAIT(x) _WAIT((x),interruptible)
-#define IWAIT(x) _WAIT((x),1)
-
-/* Errors during formatting are counted here. */
-static int format_errors;
-
-/* Format request descriptor. */
-static struct format_descr format_req;
-
-/*
- * Rate is 0 for 500kb/s, 1 for 300kbps, 2 for 250kbps
- * Spec1 is 0xSH, where S is stepping rate (F=1ms, E=2ms, D=3ms etc),
- * H is head unload time (1=16ms, 2=32ms, etc)
- */
-
-/*
- * Track buffer
- * Because these are written to by the DMA controller, they must
- * not contain a 64k byte boundary crossing, or data will be
- * corrupted/lost.
- */
-static char *floppy_track_buffer=0;
-static int max_buffer_sectors=0;
-
-static int *errors;
-typedef void (*done_f)(int);
-static struct cont_t {
-       void (*interrupt)(void); /* this is called after the interrupt of the
-                                 * main command */
-       void (*redo)(void); /* this is called to retry the operation */
-       void (*error)(void); /* this is called to tally an error */
-       done_f done; /* this is called to say if the operation has 
-                     * succeeded/failed */
-} *cont=NULL;
-
-static void floppy_ready(void);
-static void floppy_start(void);
-static void process_fd_request(void);
-static void recalibrate_floppy(void);
-static void floppy_shutdown(void);
-
-static int floppy_grab_irq_and_dma(void);
-static void floppy_release_irq_and_dma(void);
-
-/*
- * The "reset" variable should be tested whenever an interrupt is scheduled,
- * after the commands have been sent. This is to ensure that the driver doesn't
- * get wedged when the interrupt doesn't come because of a failed command.
- * reset doesn't need to be tested before sending commands, because
- * output_byte is automatically disabled when reset is set.
- */
-#define CHECK_RESET { if (FDCS->reset){ reset_fdc(); return; } }
-static void reset_fdc(void);
-
-/*
- * These are global variables, as that's the easiest way to give
- * information to interrupts. They are the data used for the current
- * request.
- */
-#define NO_TRACK -1
-#define NEED_1_RECAL -2
-#define NEED_2_RECAL -3
-
-/* */
-static int usage_count = 0;
-
-
-/* buffer related variables */
-static int buffer_track = -1;
-static int buffer_drive = -1;
-static int buffer_min = -1;
-static int buffer_max = -1;
-
-/* fdc related variables, should end up in a struct */
-static struct floppy_fdc_state fdc_state[N_FDC];
-static int fdc; /* current fdc */
-
-static struct floppy_struct *_floppy = floppy_type;
-static unsigned char current_drive = 0;
-static long current_count_sectors = 0;
-static unsigned char sector_t; /* sector in track */
-
-#ifndef fd_eject
-#define fd_eject(x) -EINVAL
-#endif
-
-
-#ifdef DEBUGT
-static long unsigned debugtimer;
-#endif
-
-/*
- * Debugging
- * =========
- */
-static inline void set_debugt(void)
-{
-#ifdef DEBUGT
-       debugtimer = jiffies;
-#endif
-}
-
-static inline void debugt(const char *message)
-{
-#ifdef DEBUGT
-       if (DP->flags & DEBUGT)
-               printk("%s dtime=%lu\n", message, jiffies-debugtimer);
-#endif
-}
-
-typedef void (*timeout_fn)(unsigned long);
-static struct timer_list fd_timeout ={ NULL, NULL, 0, 0,
-                                      (timeout_fn) floppy_shutdown };
-
-static const char *timeout_message;
-
-#ifdef FLOPPY_SANITY_CHECK
-static void is_alive(const char *message)
-{
-       /* this routine checks whether the floppy driver is "alive" */
-       if (fdc_busy && command_status < 2 && !fd_timeout.prev){
-               DPRINT("timeout handler died: %s\n",message);
-       }
-}
-#endif
-
-#ifdef FLOPPY_SANITY_CHECK
-
-#define OLOGSIZE 20
-
-static void (*lasthandler)(void) = NULL;
-static int interruptjiffies=0;
-static int resultjiffies=0;
-static int resultsize=0;
-static int lastredo=0;
-
-static struct output_log {
-       unsigned char data;
-       unsigned char status;
-       unsigned long jiffies;
-} output_log[OLOGSIZE];
-
-static int output_log_pos=0;
-#endif
-
-#define CURRENTD -1
-#define MAXTIMEOUT -2
-
-static void reschedule_timeout(int drive, const char *message, int marg)
-{
-       if (drive == CURRENTD)
-               drive = current_drive;
-       del_timer(&fd_timeout);
-       if (drive < 0 || drive > N_DRIVE) {
-               fd_timeout.expires = jiffies + 20*HZ;
-               drive=0;
-       } else
-               fd_timeout.expires = jiffies + UDP->timeout;
-       add_timer(&fd_timeout);
-       if (UDP->flags & FD_DEBUG){
-               DPRINT("reschedule timeout ");
-               printk(message, marg);
-               printk("\n");
-       }
-       timeout_message = message;
-}
-
-static int maximum(int a, int b)
-{
-       if(a > b)
-               return a;
-       else
-               return b;
-}
-#define INFBOUND(a,b) (a)=maximum((a),(b));
-
-static int minimum(int a, int b)
-{
-       if(a < b)
-               return a;
-       else
-               return b;
-}
-#define SUPBOUND(a,b) (a)=minimum((a),(b));
-
-
-/*
- * Bottom half floppy driver.
- * ==========================
- *
- * This part of the file contains the code talking directly to the hardware,
- * and also the main service loop (seek-configure-spinup-command)
- */
-
-/*
- * disk change.
- * This routine is responsible for maintaining the FD_DISK_CHANGE flag,
- * and the last_checked date.
- *
- * last_checked is the date of the last check which showed 'no disk change'
- * FD_DISK_CHANGE is set under two conditions:
- * 1. The floppy has been changed after some i/o to that floppy already
- *    took place.
- * 2. No floppy disk is in the drive. This is done in order to ensure that
- *    requests are quickly flushed in case there is no disk in the drive. It
- *    follows that FD_DISK_CHANGE can only be cleared if there is a disk in
- *    the drive.
- *
- * For 1., maxblock is observed. Maxblock is 0 if no i/o has taken place yet.
- * For 2., FD_DISK_NEWCHANGE is watched. FD_DISK_NEWCHANGE is cleared on
- *  each seek. If a disk is present, the disk change line should also be
- *  cleared on each seek. Thus, if FD_DISK_NEWCHANGE is clear, but the disk
- *  change line is set, this means either that no disk is in the drive, or
- *  that it has been removed since the last seek.
- *
- * This means that we really have a third possibility too:
- *  The floppy has been changed after the last seek.
- */
-
-static int disk_change(int drive)
-{
-       int fdc=FDC(drive);
-#ifdef FLOPPY_SANITY_CHECK
-       if (jiffies - UDRS->select_date < UDP->select_delay)
-               DPRINT("WARNING disk change called early\n");
-       if (!(FDCS->dor & (0x10 << UNIT(drive))) ||
-          (FDCS->dor & 3) != UNIT(drive) ||
-          fdc != FDC(drive)){
-               DPRINT("probing disk change on unselected drive\n");
-               DPRINT("drive=%d fdc=%d dor=%x\n",drive, FDC(drive),
-                       FDCS->dor);
-       }
-#endif
-
-#ifdef DCL_DEBUG
-       if (UDP->flags & FD_DEBUG){
-               DPRINT("checking disk change line for drive %d\n",drive);
-               DPRINT("jiffies=%ld\n", jiffies);
-               DPRINT("disk change line=%x\n",fd_inb(FD_DIR)&0x80);
-               DPRINT("flags=%x\n",UDRS->flags);
-       }
-#endif
-       if (UDP->flags & FD_BROKEN_DCL)
-               return UTESTF(FD_DISK_CHANGED);
-       if ((fd_inb(FD_DIR) ^ UDP->flags) & 0x80){
-               USETF(FD_VERIFY); /* verify write protection */
-               if (UDRS->maxblock){
-                       /* mark it changed */
-                       USETF(FD_DISK_CHANGED);
-               }
-
-               /* invalidate its geometry */
-               if (UDRS->keep_data >= 0) {
-                       if ((UDP->flags & FTD_MSG) &&
-                           current_type[drive] != NULL)
-                               DPRINT("Disk type is undefined after "
-                                      "disk change\n");
-                       current_type[drive] = NULL;
-                       floppy_sizes[TOMINOR(drive)] = MAX_DISK_SIZE;
-               }
-
-               /*USETF(FD_DISK_NEWCHANGE);*/
-               return 1;
-       } else {
-               UDRS->last_checked=jiffies;
-               UCLEARF(FD_DISK_NEWCHANGE);
-       }
-       return 0;
-}
-
-static inline int is_selected(int dor, int unit)
-{
-       return ((dor  & (0x10 << unit)) && (dor &3) == unit);
-}
-
-static int set_dor(int fdc, char mask, char data)
-{
-       register unsigned char drive, unit, newdor,olddor;
-
-       if (FDCS->address == -1)
-               return -1;
-
-       olddor = FDCS->dor;
-       newdor =  (olddor & mask) | data;
-       if (newdor != olddor){
-               unit = olddor & 0x3;
-               if (is_selected(olddor, unit) && !is_selected(newdor,unit)){
-                       drive = REVDRIVE(fdc,unit);
-#ifdef DCL_DEBUG
-                       if (UDP->flags & FD_DEBUG){
-                               DPRINT("calling disk change from set_dor\n");
-                       }
-#endif
-                       disk_change(drive);
-               }
-               FDCS->dor = newdor;
-               fd_outb(newdor, FD_DOR);
-
-               unit = newdor & 0x3;
-               if (!is_selected(olddor, unit) && is_selected(newdor,unit)){
-                       drive = REVDRIVE(fdc,unit);
-                       UDRS->select_date = jiffies;
-               }
-       }
-       
-       /* FIXME: we should be more graceful here */
-       
-       if (newdor & FLOPPY_MOTOR_MASK)
-               floppy_grab_irq_and_dma();
-       if (olddor & FLOPPY_MOTOR_MASK)
-               floppy_release_irq_and_dma();
-       return olddor;
-}
-
-static void twaddle(void)
-{
-       if (DP->select_delay)
-               return;
-       fd_outb(FDCS->dor & ~(0x10<<UNIT(current_drive)),FD_DOR);
-       fd_outb(FDCS->dor, FD_DOR);
-       DRS->select_date = jiffies;
-}
-
-/* reset all driver information about the current fdc. This is needed after
- * a reset, and after a raw command. */
-static void reset_fdc_info(int mode)
-{
-       int drive;
-
-       FDCS->spec1 = FDCS->spec2 = -1;
-       FDCS->need_configure = 1;
-       FDCS->perp_mode = 1;
-       FDCS->rawcmd = 0;
-       for (drive = 0; drive < N_DRIVE; drive++)
-               if (FDC(drive) == fdc &&
-                   (mode || UDRS->track != NEED_1_RECAL))
-                       UDRS->track = NEED_2_RECAL;
-}
-
-/* selects the fdc and drive, and enables the fdc's input/dma. */
-static void set_fdc(int drive)
-{
-       if (drive >= 0 && drive < N_DRIVE){
-               fdc = FDC(drive);
-               current_drive = drive;
-       }
-       if (fdc != 1 && fdc != 0) {
-               printk("bad fdc value\n");
-               return;
-       }
-       set_dor(fdc,~0,8);
-#if N_FDC > 1
-       set_dor(1-fdc, ~8, 0);
-#endif
-       if (FDCS->rawcmd == 2)
-               reset_fdc_info(1);
-       if (fd_inb(FD_STATUS) != STATUS_READY)
-               FDCS->reset = 1;
-}
-
-/* locks the driver */
-static int lock_fdc(int drive, int interruptible)
-{
-       unsigned long flags;
-
-       if (!usage_count){
-               printk(KERN_ERR "trying to lock fdc while usage count=0\n");
-               return -1;
-       }
-       if(floppy_grab_irq_and_dma()==-1)
-               return -EBUSY;
-       INT_OFF;
-       while (fdc_busy && NO_SIGNAL)
-               interruptible_sleep_on(&fdc_wait);
-       if (fdc_busy){
-               INT_ON;
-               return -EINTR;
-       }
-       fdc_busy = 1;
-       INT_ON;
-       command_status = FD_COMMAND_NONE;
-       reschedule_timeout(drive, "lock fdc", 0);
-       set_fdc(drive);
-       return 0;
-}
-
-#define LOCK_FDC(drive,interruptible) \
-if (lock_fdc(drive,interruptible)) return -EINTR;
-
-
-/* unlocks the driver */
-static inline void unlock_fdc(void)
-{
-       raw_cmd = 0;
-       if (!fdc_busy)
-               DPRINT("FDC access conflict!\n");
-
-       if (DEVICE_INTR)
-               DPRINT("device interrupt still active at FDC release: %p!\n",
-                       DEVICE_INTR);
-       command_status = FD_COMMAND_NONE;
-       del_timer(&fd_timeout);
-       cont = NULL;
-       fdc_busy = 0;
-       floppy_release_irq_and_dma();
-       wake_up(&fdc_wait);
-}
-
-/* switches the motor off after a given timeout */
-static void motor_off_callback(unsigned long nr)
-{
-       unsigned char mask = ~(0x10 << UNIT(nr));
-
-       set_dor(FDC(nr), mask, 0);
-}
-
-static struct timer_list motor_off_timer[N_DRIVE] = {
-       { NULL, NULL, 0, 0, motor_off_callback },
-       { NULL, NULL, 0, 1, motor_off_callback },
-       { NULL, NULL, 0, 2, motor_off_callback },
-       { NULL, NULL, 0, 3, motor_off_callback },
-       { NULL, NULL, 0, 4, motor_off_callback },
-       { NULL, NULL, 0, 5, motor_off_callback },
-       { NULL, NULL, 0, 6, motor_off_callback },
-       { NULL, NULL, 0, 7, motor_off_callback }
-};
-
-/* schedules motor off */
-static void floppy_off(unsigned int drive)
-{
-       unsigned long volatile delta;
-       register int fdc=FDC(drive);
-
-       if (!(FDCS->dor & (0x10 << UNIT(drive))))
-               return;
-
-       del_timer(motor_off_timer+drive);
-
-       /* make spindle stop in a position which minimizes spinup time
-        * next time */
-       if (UDP->rps){
-               delta = jiffies - UDRS->first_read_date + HZ -
-                       UDP->spindown_offset;
-               delta = ((delta * UDP->rps) % HZ) / UDP->rps;
-               motor_off_timer[drive].expires = jiffies + UDP->spindown - 
delta;
-       }
-       add_timer(motor_off_timer+drive);
-}
-
-/*
- * cycle through all N_DRIVE floppy drives, for disk change testing.
- * stopping at current drive. This is done before any long operation, to
- * be sure to have up to date disk change information.
- */
-static void scandrives(void)
-{
-       int i, drive, saved_drive;
-
-       if (DP->select_delay)
-               return;
-
-       saved_drive = current_drive;
-       for (i=0; i < N_DRIVE; i++){
-               drive = (saved_drive + i + 1) % N_DRIVE;
-               if (UDRS->fd_ref == 0 || UDP->select_delay != 0)
-                       continue; /* skip closed drives */
-               set_fdc(drive);
-               if (!(set_dor(fdc, ~3, UNIT(drive) | (0x10 << UNIT(drive))) &
-                     (0x10 << UNIT(drive))))
-                       /* switch the motor off again, if it was off to
-                        * begin with */
-                       set_dor(fdc, ~(0x10 << UNIT(drive)), 0);
-       }
-       set_fdc(saved_drive);
-}
-
-static void empty(void)
-{
-}
-
-static struct tq_struct floppy_tq =
-{ 0, 0, 0, 0 };
-
-static struct timer_list fd_timer ={ NULL, NULL, 0, 0, 0 };
-
-static void cancel_activity(void)
-{
-       CLEAR_INTR;
-       floppy_tq.routine = (void *)(void *) empty;
-       del_timer(&fd_timer);
-}
-
-/* this function makes sure that the disk stays in the drive during the
- * transfer */
-static void fd_watchdog(void)
-{
-#ifdef DCL_DEBUG
-       if (DP->flags & FD_DEBUG){
-               DPRINT("calling disk change from watchdog\n");
-       }
-#endif
-
-       if (disk_change(current_drive)){
-               DPRINT("disk removed during i/o\n");
-               cancel_activity();
-               cont->done(0);
-               reset_fdc();
-       } else {
-               del_timer(&fd_timer);
-               fd_timer.function = (timeout_fn) fd_watchdog;
-               fd_timer.expires = jiffies + HZ / 10;
-               add_timer(&fd_timer);
-       }
-}
-
-static void main_command_interrupt(void)
-{
-       del_timer(&fd_timer);
-       cont->interrupt();
-}
-
-/* waits for a delay (spinup or select) to pass */
-static int wait_for_completion(int delay, timeout_fn function)
-{
-       if (FDCS->reset){
-               reset_fdc(); /* do the reset during sleep to win time
-                             * if we don't need to sleep, it's a good
-                             * occasion anyways */
-               return 1;
-       }
-
-       if ((signed) (jiffies - delay) < 0){
-               del_timer(&fd_timer);
-               fd_timer.function = function;
-               fd_timer.expires = delay;
-               add_timer(&fd_timer);
-               return 1;
-       }
-       return 0;
-}
-
-static int hlt_disabled=0;
-static void floppy_disable_hlt(void)
-{
-       unsigned long flags;
-
-       INT_OFF;
-       if (!hlt_disabled){
-               hlt_disabled=1;
-#ifdef HAVE_DISABLE_HLT
-               disable_hlt();
-#endif
-       }
-       INT_ON;
-}
-
-static void floppy_enable_hlt(void)
-{
-       unsigned long flags;
-
-       INT_OFF;
-       if (hlt_disabled){
-               hlt_disabled=0;
-#ifdef HAVE_DISABLE_HLT
-               enable_hlt();
-#endif
-       }
-       INT_ON;
-}
-
-
-static void setup_DMA(void)
-{
-       unsigned long flags;
-
-#ifdef FLOPPY_SANITY_CHECK
-       if (raw_cmd->length == 0){
-               int i;
-
-               printk("zero dma transfer size:");
-               for (i=0; i < raw_cmd->cmd_count; i++)
-                       printk("%x,", raw_cmd->cmd[i]);
-               printk("\n");
-               cont->done(0);
-               FDCS->reset = 1;
-               return;
-       }
-       if ((long) raw_cmd->kernel_data % 512){
-               printk("non aligned address: %p\n", raw_cmd->kernel_data);
-               cont->done(0);
-               FDCS->reset=1;
-               return;
-       }
-       if (CROSS_64KB(raw_cmd->kernel_data, raw_cmd->length)) {
-               printk("DMA crossing 64-K boundary %p-%p\n",
-                      raw_cmd->kernel_data,
-                      raw_cmd->kernel_data + raw_cmd->length);
-               cont->done(0);
-               FDCS->reset=1;
-               return;
-       }
-#endif
-       INT_OFF;
-       fd_disable_dma();
-       fd_clear_dma_ff();
-       fd_cacheflush(raw_cmd->kernel_data, raw_cmd->length);
-       fd_set_dma_mode((raw_cmd->flags & FD_RAW_READ)?
-                       DMA_MODE_READ : DMA_MODE_WRITE);
-       fd_set_dma_addr(virt_to_bus(raw_cmd->kernel_data));
-       fd_set_dma_count(raw_cmd->length);
-       virtual_dma_port = FDCS->address;
-       fd_enable_dma();
-       INT_ON;
-       floppy_disable_hlt();
-}
-
-void show_floppy(void);
-
-/* waits until the fdc becomes ready */
-static int wait_til_ready(void)
-{
-       int counter, status;
-       if(FDCS->reset)
-               return -1;
-       for (counter = 0; counter < 10000; counter++) {
-               status = fd_inb(FD_STATUS);             
-               if (status & STATUS_READY)
-                       return status;
-       }
-       if (!initialising) {
-               DPRINT("Getstatus times out (%x) on fdc %d\n",
-                       status, fdc);
-               show_floppy();
-       }
-       FDCS->reset = 1;
-       return -1;
-}
-
-/* sends a command byte to the fdc */
-static int output_byte(char byte)
-{
-       int status;
-
-       if ((status = wait_til_ready()) < 0)
-               return -1;
-       if ((status & (STATUS_READY|STATUS_DIR|STATUS_DMA)) == STATUS_READY){
-               fd_outb(byte,FD_DATA);
-#ifdef FLOPPY_SANITY_CHECK
-               output_log[output_log_pos].data = byte;
-               output_log[output_log_pos].status = status;
-               output_log[output_log_pos].jiffies = jiffies;
-               output_log_pos = (output_log_pos + 1) % OLOGSIZE;
-#endif
-               return 0;
-       }
-       FDCS->reset = 1;
-       if (!initialising) {
-               DPRINT("Unable to send byte %x to FDC. Fdc=%x Status=%x\n",
-                      byte, fdc, status);
-               show_floppy();
-       }
-       return -1;
-}
-#define LAST_OUT(x) if (output_byte(x)<0){ reset_fdc();return;}
-
-/* gets the response from the fdc */
-static int result(void)
-{
-       int i, status;
-
-       for(i=0; i < MAX_REPLIES; i++) {
-               if ((status = wait_til_ready()) < 0)
-                       break;
-               status &= STATUS_DIR|STATUS_READY|STATUS_BUSY|STATUS_DMA;
-               if ((status & ~STATUS_BUSY) == STATUS_READY){
-#ifdef FLOPPY_SANITY_CHECK
-                       resultjiffies = jiffies;
-                       resultsize = i;
-#endif
-                       return i;
-               }
-               if (status == (STATUS_DIR|STATUS_READY|STATUS_BUSY))
-                       reply_buffer[i] = fd_inb(FD_DATA);
-               else
-                       break;
-       }
-       if(!initialising) {
-               DPRINT("get result error. Fdc=%d Last status=%x Read 
bytes=%d\n",
-                      fdc, status, i);
-               show_floppy();
-       }
-       FDCS->reset = 1;
-       return -1;
-}
-
-#define MORE_OUTPUT -2
-/* does the fdc need more output? */
-static int need_more_output(void)
-{
-       int status;
-       if( (status = wait_til_ready()) < 0)
-               return -1;
-       if ((status & (STATUS_READY|STATUS_DIR|STATUS_DMA)) == STATUS_READY)
-               return MORE_OUTPUT;
-       return result();
-}
-
-/* Set perpendicular mode as required, based on data rate, if supported.
- * 82077 Now tested. 1Mbps data rate only possible with 82077-1.
- */
-static inline void perpendicular_mode(void)
-{
-       unsigned char perp_mode;
-
-       if (raw_cmd->rate & 0x40){
-               switch(raw_cmd->rate & 3){
-                       case 0:
-                               perp_mode=2;
-                               break;
-                       case 3:
-                               perp_mode=3;
-                               break;
-                       default:
-                               DPRINT("Invalid data rate for perpendicular 
mode!\n");
-                               cont->done(0);
-                               FDCS->reset = 1; /* convenient way to return to
-                                                 * redo without to much hassle 
(deep
-                                                 * stack et al. */
-                               return;
-               }
-       } else
-               perp_mode = 0;
-
-       if (FDCS->perp_mode == perp_mode)
-               return;
-       if (FDCS->version >= FDC_82077_ORIG) {
-               output_byte(FD_PERPENDICULAR);
-               output_byte(perp_mode);
-               FDCS->perp_mode = perp_mode;
-       } else if (perp_mode) {
-               DPRINT("perpendicular mode not supported by this FDC.\n");
-       }
-} /* perpendicular_mode */
-
-static int fifo_depth = 0xa;
-static int no_fifo = 0;
-
-static int fdc_configure(void)
-{
-       /* Turn on FIFO */
-       output_byte(FD_CONFIGURE);
-       if(need_more_output() != MORE_OUTPUT)
-               return 0;
-       output_byte(0);
-       output_byte(0x10 | (no_fifo & 0x20) | (fifo_depth & 0xf));
-       output_byte(0); /* pre-compensation from track 
-                          0 upwards */
-       return 1;
-}      
-
-#define NOMINAL_DTR 500
-
-/* Issue a "SPECIFY" command to set the step rate time, head unload time,
- * head load time, and DMA disable flag to values needed by floppy.
- *
- * The value "dtr" is the data transfer rate in Kbps.  It is needed
- * to account for the data rate-based scaling done by the 82072 and 82077
- * FDC types.  This parameter is ignored for other types of FDCs (i.e.
- * 8272a).
- *
- * Note that changing the data transfer rate has a (probably deleterious)
- * effect on the parameters subject to scaling for 82072/82077 FDCs, so
- * fdc_specify is called again after each data transfer rate
- * change.
- *
- * srt: 1000 to 16000 in microseconds
- * hut: 16 to 240 milliseconds
- * hlt: 2 to 254 milliseconds
- *
- * These values are rounded up to the next highest available delay time.
- */
-static void fdc_specify(void)
-{
-       unsigned char spec1, spec2;
-       int srt, hlt, hut;
-       unsigned long dtr = NOMINAL_DTR;
-       unsigned long scale_dtr = NOMINAL_DTR;
-       int hlt_max_code = 0x7f;
-       int hut_max_code = 0xf;
-
-       if (FDCS->need_configure && FDCS->version >= FDC_82072A) {
-               fdc_configure();
-               FDCS->need_configure = 0;
-               /*DPRINT("FIFO enabled\n");*/
-       }
-
-       switch (raw_cmd->rate & 0x03) {
-               case 3:
-                       dtr = 1000;
-                       break;
-               case 1:
-                       dtr = 300;
-                       if (FDCS->version >= FDC_82078) {
-                               /* chose the default rate table, not the one
-                                * where 1 = 2 Mbps */
-                               output_byte(FD_DRIVESPEC);
-                               if(need_more_output() == MORE_OUTPUT) {
-                                       output_byte(UNIT(current_drive));
-                                       output_byte(0xc0);
-                               }
-                       }
-                       break;
-               case 2:
-                       dtr = 250;
-                       break;
-       }
-
-       if (FDCS->version >= FDC_82072) {
-               scale_dtr = dtr;
-               hlt_max_code = 0x00; /* 0==256msec*dtr0/dtr (not linear!) */
-               hut_max_code = 0x0; /* 0==256msec*dtr0/dtr (not linear!) */
-       }
-
-       /* Convert step rate from microseconds to milliseconds and 4 bits */
-       srt = 16 - (DP->srt*scale_dtr/1000 + NOMINAL_DTR - 1)/NOMINAL_DTR;
-       SUPBOUND(srt, 0xf);
-       INFBOUND(srt, 0);
-
-       hlt = (DP->hlt*scale_dtr/2 + NOMINAL_DTR - 1)/NOMINAL_DTR;
-       if (hlt < 0x01)
-               hlt = 0x01;
-       else if (hlt > 0x7f)
-               hlt = hlt_max_code;
-
-       hut = (DP->hut*scale_dtr/16 + NOMINAL_DTR - 1)/NOMINAL_DTR;
-       if (hut < 0x1)
-               hut = 0x1;
-       else if (hut > 0xf)
-               hut = hut_max_code;
-
-       spec1 = (srt << 4) | hut;
-       spec2 = (hlt << 1) | (use_virtual_dma & 1);
-
-       /* If these parameters did not change, just return with success */
-       if (FDCS->spec1 != spec1 || FDCS->spec2 != spec2) {
-               /* Go ahead and set spec1 and spec2 */
-               output_byte(FD_SPECIFY);
-               output_byte(FDCS->spec1 = spec1);
-               output_byte(FDCS->spec2 = spec2);
-       }
-} /* fdc_specify */
-
-/* Set the FDC's data transfer rate on behalf of the specified drive.
- * NOTE: with 82072/82077 FDCs, changing the data rate requires a reissue
- * of the specify command (i.e. using the fdc_specify function).
- */
-static int fdc_dtr(void)
-{
-       /* If data rate not already set to desired value, set it. */
-       if ((raw_cmd->rate & 3) == FDCS->dtr)
-               return 0;
-
-       /* Set dtr */
-       fd_outb(raw_cmd->rate & 3, FD_DCR);
-
-       /* TODO: some FDC/drive combinations (C&T 82C711 with TEAC 1.2MB)
-        * need a stabilization period of several milliseconds to be
-        * enforced after data rate changes before R/W operations.
-        * Pause 5 msec to avoid trouble. (Needs to be 2 jiffies)
-        */
-       FDCS->dtr = raw_cmd->rate & 3;
-       return(wait_for_completion(jiffies+2*HZ/100,
-                                  (timeout_fn) floppy_ready));
-} /* fdc_dtr */
-
-static void tell_sector(void)
-{
-       printk(": track %d, head %d, sector %d, size %d",
-              R_TRACK, R_HEAD, R_SECTOR, R_SIZECODE);
-} /* tell_sector */
-
-
-/*
- * OK, this error interpreting routine is called after a
- * DMA read/write has succeeded
- * or failed, so we check the results, and copy any buffers.
- * hhb: Added better error reporting.
- * ak: Made this into a separate routine.
- */
-static int interpret_errors(void)
-{
-       char bad;
-
-       if (inr!=7) {
-               DPRINT("-- FDC reply error");
-               FDCS->reset = 1;
-               return 1;
-       }
-
-       /* check IC to find cause of interrupt */
-       switch (ST0 & ST0_INTR) {
-               case 0x40:      /* error occurred during command execution */
-                       if (ST1 & ST1_EOC)
-                               return 0; /* occurs with pseudo-DMA */
-                       bad = 1;
-                       if (ST1 & ST1_WP) {
-                               DPRINT("Drive is write protected\n");
-                               CLEARF(FD_DISK_WRITABLE);
-                               cont->done(0);
-                               bad = 2;
-                       } else if (ST1 & ST1_ND) {
-                               SETF(FD_NEED_TWADDLE);
-                       } else if (ST1 & ST1_OR) {
-                               if (DP->flags & FTD_MSG)
-                                       DPRINT("Over/Underrun - retrying\n");
-                               bad = 0;
-                       }else if (*errors >= DP->max_errors.reporting){
-                               DPRINT("");
-                               if (ST0 & ST0_ECE) {
-                                       printk("Recalibrate failed!");
-                               } else if (ST2 & ST2_CRC) {
-                                       printk("data CRC error");
-                                       tell_sector();
-                               } else if (ST1 & ST1_CRC) {
-                                       printk("CRC error");
-                                       tell_sector();
-                               } else if ((ST1 & (ST1_MAM|ST1_ND)) || (ST2 & 
ST2_MAM)) {
-                                       if (!probing) {
-                                               printk("sector not found");
-                                               tell_sector();
-                                       } else
-                                               printk("probe failed...");
-                               } else if (ST2 & ST2_WC) {      /* seek error */
-                                       printk("wrong cylinder");
-                               } else if (ST2 & ST2_BC) {      /* cylinder 
marked as bad */
-                                       printk("bad cylinder");
-                               } else {
-                                       printk("unknown error. ST[0..2] are: 
0x%x 0x%x 0x%x", ST0, ST1, ST2);
-                                       tell_sector();
-                               }
-                               printk("\n");
-
-                       }
-                       if (ST2 & ST2_WC || ST2 & ST2_BC)
-                               /* wrong cylinder => recal */
-                               DRS->track = NEED_2_RECAL;
-                       return bad;
-               case 0x80: /* invalid command given */
-                       DPRINT("Invalid FDC command given!\n");
-                       cont->done(0);
-                       return 2;
-               case 0xc0:
-                       DPRINT("Abnormal termination caused by polling\n");
-                       cont->error();
-                       return 2;
-               default: /* (0) Normal command termination */
-                       return 0;
-       }
-}
-
-/*
- * This routine is called when everything should be correctly set up
- * for the transfer (i.e. floppy motor is on, the correct floppy is
- * selected, and the head is sitting on the right track).
- */
-static void setup_rw_floppy(void)
-{
-       int i,ready_date,r, flags,dflags;
-       timeout_fn function;
-
-       flags = raw_cmd->flags;
-       if (flags & (FD_RAW_READ | FD_RAW_WRITE))
-               flags |= FD_RAW_INTR;
-
-       if ((flags & FD_RAW_SPIN) && !(flags & FD_RAW_NO_MOTOR)){
-               ready_date = DRS->spinup_date + DP->spinup;
-               /* If spinup will take a long time, rerun scandrives
-                * again just before spinup completion. Beware that
-                * after scandrives, we must again wait for selection.
-                */
-               if ((signed) (ready_date - jiffies) > DP->select_delay){
-                       ready_date -= DP->select_delay;
-                       function = (timeout_fn) floppy_start;
-               } else
-                       function = (timeout_fn) setup_rw_floppy;
-
-               /* wait until the floppy is spinning fast enough */
-               if (wait_for_completion(ready_date,function))
-                       return;
-       }
-       dflags = DRS->flags;
-
-       if ((flags & FD_RAW_READ) || (flags & FD_RAW_WRITE))
-               setup_DMA();
-
-       if (flags & FD_RAW_INTR)
-               SET_INTR(main_command_interrupt);
-
-       r=0;
-       for (i=0; i< raw_cmd->cmd_count; i++)
-               r|=output_byte(raw_cmd->cmd[i]);
-
-#ifdef DEBUGT
-       debugt("rw_command: ");
-#endif
-       if (r){
-               cont->error();
-               reset_fdc();
-               return;
-       }
-
-       if (!(flags & FD_RAW_INTR)){
-               inr = result();
-               cont->interrupt();
-       } else if (flags & FD_RAW_NEED_DISK)
-               fd_watchdog();
-}
-
-static int blind_seek;
-
-/*
- * This is the routine called after every seek (or recalibrate) interrupt
- * from the floppy controller.
- */
-static void seek_interrupt(void)
-{
-#ifdef DEBUGT
-       debugt("seek interrupt:");
-#endif
-       if (inr != 2 || (ST0 & 0xF8) != 0x20) {
-               DPRINT("seek failed\n");
-               DRS->track = NEED_2_RECAL;
-               cont->error();
-               cont->redo();
-               return;
-       }
-       if (DRS->track >= 0 && DRS->track != ST1 && !blind_seek){
-#ifdef DCL_DEBUG
-               if (DP->flags & FD_DEBUG){
-                       DPRINT("clearing NEWCHANGE flag because of effective 
seek\n");
-                       DPRINT("jiffies=%ld\n", jiffies);
-               }
-#endif
-               CLEARF(FD_DISK_NEWCHANGE); /* effective seek */
-               DRS->select_date = jiffies;
-       }
-       DRS->track = ST1;
-       floppy_ready();
-}
-
-static void check_wp(void)
-{
-       if (TESTF(FD_VERIFY)) {
-               /* check write protection */
-               output_byte(FD_GETSTATUS);
-               output_byte(UNIT(current_drive));
-               if (result() != 1){
-                       FDCS->reset = 1;
-                       return;
-               }
-               CLEARF(FD_VERIFY);
-               CLEARF(FD_NEED_TWADDLE);
-#ifdef DCL_DEBUG
-               if (DP->flags & FD_DEBUG){
-                       DPRINT("checking whether disk is write protected\n");
-                       DPRINT("wp=%x\n",ST3 & 0x40);
-               }
-#endif
-               if (!(ST3  & 0x40))
-                       SETF(FD_DISK_WRITABLE);
-               else
-                       CLEARF(FD_DISK_WRITABLE);
-       }
-}
-
-static void seek_floppy(void)
-{
-       int track;
-
-       blind_seek=0;
-
-#ifdef DCL_DEBUG
-       if (DP->flags & FD_DEBUG){
-               DPRINT("calling disk change from seek\n");
-       }
-#endif
-
-       if (!TESTF(FD_DISK_NEWCHANGE) &&
-           disk_change(current_drive) &&
-           (raw_cmd->flags & FD_RAW_NEED_DISK)){
-               /* the media changed flag should be cleared after the seek.
-                * If it isn't, this means that there is really no disk in
-                * the drive.
-                */
-               SETF(FD_DISK_CHANGED);
-               cont->done(0);
-               cont->redo();
-               return;
-       }
-       if (DRS->track <= NEED_1_RECAL){
-               recalibrate_floppy();
-               return;
-       } else if (TESTF(FD_DISK_NEWCHANGE) &&
-                  (raw_cmd->flags & FD_RAW_NEED_DISK) &&
-                  (DRS->track <= NO_TRACK || DRS->track == raw_cmd->track)) {
-               /* we seek to clear the media-changed condition. Does anybody
-                * know a more elegant way, which works on all drives? */
-               if (raw_cmd->track)
-                       track = raw_cmd->track - 1;
-               else {
-                       if (DP->flags & FD_SILENT_DCL_CLEAR){
-                               set_dor(fdc, ~(0x10 << UNIT(current_drive)), 0);
-                               blind_seek = 1;
-                               raw_cmd->flags |= FD_RAW_NEED_SEEK;
-                       }
-                       track = 1;
-               }
-       } else {
-               check_wp();
-               if (raw_cmd->track != DRS->track &&
-                   (raw_cmd->flags & FD_RAW_NEED_SEEK))
-                       track = raw_cmd->track;
-               else {
-                       setup_rw_floppy();
-                       return;
-               }
-       }
-
-       SET_INTR(seek_interrupt);
-       output_byte(FD_SEEK);
-       output_byte(UNIT(current_drive));
-       LAST_OUT(track);
-#ifdef DEBUGT
-       debugt("seek command:");
-#endif
-}
-
-static void recal_interrupt(void)
-{
-#ifdef DEBUGT
-       debugt("recal interrupt:");
-#endif
-       if (inr !=2)
-               FDCS->reset = 1;
-       else if (ST0 & ST0_ECE) {
-               switch(DRS->track){
-                       case NEED_1_RECAL:
-#ifdef DEBUGT
-                               debugt("recal interrupt need 1 recal:");
-#endif
-                               /* after a second recalibrate, we still haven't
-                                * reached track 0. Probably no drive. Raise an
-                                * error, as failing immediately might upset
-                                * computers possessed by the Devil :-) */
-                               cont->error();
-                               cont->redo();
-                               return;
-                       case NEED_2_RECAL:
-#ifdef DEBUGT
-                               debugt("recal interrupt need 2 recal:");
-#endif
-                               /* If we already did a recalibrate,
-                                * and we are not at track 0, this
-                                * means we have moved. (The only way
-                                * not to move at recalibration is to
-                                * be already at track 0.) Clear the
-                                * new change flag */
-#ifdef DCL_DEBUG
-                               if (DP->flags & FD_DEBUG){
-                                       DPRINT("clearing NEWCHANGE flag because 
of second recalibrate\n");
-                               }
-#endif
-
-                               CLEARF(FD_DISK_NEWCHANGE);
-                               DRS->select_date = jiffies;
-                               /* fall through */
-                       default:
-#ifdef DEBUGT
-                               debugt("recal interrupt default:");
-#endif
-                               /* Recalibrate moves the head by at
-                                * most 80 steps. If after one
-                                * recalibrate we don't have reached
-                                * track 0, this might mean that we
-                                * started beyond track 80.  Try
-                                * again.  */
-                               DRS->track = NEED_1_RECAL;
-                               break;
-               }
-       } else
-               DRS->track = ST1;
-       floppy_ready();
-}
-
-static void print_result(char *message, int inr)
-{
-       int i;
-
-       DPRINT("%s ", message);
-       if (inr >= 0)
-               for (i=0; i<inr; i++)
-                       printk("repl[%d]=%x ", i, reply_buffer[i]);
-       printk("\n");
-}
-
-/* interrupt handler */
-void floppy_interrupt(int irq, void *dev_id, struct pt_regs * regs)
-{
-       void (*handler)(void) = DEVICE_INTR;
-       int do_print;
-
-       lasthandler = handler;
-       interruptjiffies = jiffies;
-
-       fd_disable_dma();
-       floppy_enable_hlt();
-       CLEAR_INTR;
-       if (fdc >= N_FDC || FDCS->address == -1){
-               /* we don't even know which FDC is the culprit */
-               printk("DOR0=%x\n", fdc_state[0].dor);
-               printk("floppy interrupt on bizarre fdc %d\n",fdc);
-               printk("handler=%p\n", handler);
-               is_alive("bizarre fdc");
-               return;
-       }
-
-       FDCS->reset = 0;
-       /* We have to clear the reset flag here, because apparently on boxes
-        * with level triggered interrupts (PS/2, Sparc, ...), it is needed to
-        * emit SENSEI's to clear the interrupt line. And FDCS->reset blocks the
-        * emission of the SENSEI's.
-        * It is OK to emit floppy commands because we are in an interrupt
-        * handler here, and thus we have to fear no interference of other
-        * activity.
-        */
-
-       do_print = !handler && print_unex && !initialising;
-
-       inr = result();
-       if(do_print)
-               print_result("unexpected interrupt", inr);
-       if (inr == 0){
-               int max_sensei = 4;
-               do {
-                       output_byte(FD_SENSEI);
-                       inr = result();
-                       if(do_print)
-                               print_result("sensei", inr);
-                       max_sensei--;
-               } while ((ST0 & 0x83) != UNIT(current_drive) && inr == 2 && 
max_sensei);
-       }
-       if (handler) {
-               if(intr_count >= 2) {
-                       /* expected interrupt */
-                       floppy_tq.routine = (void *)(void *) handler;
-                       queue_task_irq(&floppy_tq, &tq_immediate);
-                       mark_bh(IMMEDIATE_BH);
-               } else
-                       handler();
-       } else
-               FDCS->reset = 1;
-       is_alive("normal interrupt end");
-}
-
-static void recalibrate_floppy(void)
-{
-#ifdef DEBUGT
-       debugt("recalibrate floppy:");
-#endif
-       SET_INTR(recal_interrupt);
-       output_byte(FD_RECALIBRATE);
-       LAST_OUT(UNIT(current_drive));
-}
-
-/*
- * Must do 4 FD_SENSEIs after reset because of ``drive polling''.
- */
-static void reset_interrupt(void)
-{
-#ifdef DEBUGT
-       debugt("reset interrupt:");
-#endif
-       result();               /* get the status ready for set_fdc */
-       if (FDCS->reset) {
-               printk("reset set in interrupt, calling %p\n", cont->error);
-               cont->error(); /* a reset just after a reset. BAD! */
-       }
-       cont->redo();
-}
-
-/*
- * reset is done by pulling bit 2 of DOR low for a while (old FDCs),
- * or by setting the self clearing bit 7 of STATUS (newer FDCs)
- */
-static void reset_fdc(void)
-{
-       SET_INTR(reset_interrupt);
-       FDCS->reset = 0;
-       reset_fdc_info(0);
-
-       /* Pseudo-DMA may intercept 'reset finished' interrupt.  */
-       /* Irrelevant for systems with true DMA (i386).          */
-       fd_disable_dma();
-
-       if (FDCS->version >= FDC_82072A)
-               fd_outb(0x80 | (FDCS->dtr &3), FD_STATUS);
-       else {
-               fd_outb(FDCS->dor & ~0x04, FD_DOR);
-               udelay(FD_RESET_DELAY);
-               fd_outb(FDCS->dor, FD_DOR);
-       }
-}
-
-void show_floppy(void)
-{
-       int i;
-
-       printk("\n");
-       printk("floppy driver state\n");
-       printk("-------------------\n");
-       printk("now=%ld last interrupt=%d last called handler=%p\n",
-              jiffies, interruptjiffies, lasthandler);
-
-
-#ifdef FLOPPY_SANITY_CHECK
-       printk("timeout_message=%s\n", timeout_message);
-       printk("last output bytes:\n");
-       for (i=0; i < OLOGSIZE; i++)
-               printk("%2x %2x %ld\n",
-                      output_log[(i+output_log_pos) % OLOGSIZE].data,
-                      output_log[(i+output_log_pos) % OLOGSIZE].status,
-                      output_log[(i+output_log_pos) % OLOGSIZE].jiffies);
-       printk("last result at %d\n", resultjiffies);
-       printk("last redo_fd_request at %d\n", lastredo);
-       for (i=0; i<resultsize; i++){
-               printk("%2x ", reply_buffer[i]);
-       }
-       printk("\n");
-#endif
-
-       printk("status=%x\n", fd_inb(FD_STATUS));
-       printk("fdc_busy=%d\n", fdc_busy);
-       if (DEVICE_INTR)
-               printk("DEVICE_INTR=%p\n", DEVICE_INTR);
-       if (floppy_tq.sync)
-               printk("floppy_tq.routine=%p\n", floppy_tq.routine);
-       if (fd_timer.prev)
-               printk("fd_timer.function=%p\n", fd_timer.function);
-       if (fd_timeout.prev){
-               printk("timer_table=%p\n",fd_timeout.function);
-               printk("expires=%ld\n",fd_timeout.expires-jiffies);
-               printk("now=%ld\n",jiffies);
-       }
-       printk("cont=%p\n", cont);
-       printk("CURRENT=%p\n", CURRENT);
-       printk("command_status=%d\n", command_status);
-       printk("\n");
-}
-
-static void floppy_shutdown(void)
-{
-       if (!initialising)
-               show_floppy();
-       cancel_activity();
-       sti();
-
-       floppy_enable_hlt();
-       fd_disable_dma();
-       /* avoid dma going to a random drive after shutdown */
-
-       if (!initialising)
-               DPRINT("floppy timeout called\n");
-       FDCS->reset = 1;
-       if (cont){
-               cont->done(0);
-               cont->redo(); /* this will recall reset when needed */
-       } else {
-               printk("no cont in shutdown!\n");
-               process_fd_request();
-       }
-       is_alive("floppy shutdown");
-}
-/*typedef void (*timeout_fn)(unsigned long);*/
-
-/* start motor, check media-changed condition and write protection */
-static int start_motor(void (*function)(void) )
-{
-       int mask, data;
-
-       mask = 0xfc;
-       data = UNIT(current_drive);
-       if (!(raw_cmd->flags & FD_RAW_NO_MOTOR)){
-               if (!(FDCS->dor & (0x10 << UNIT(current_drive)))){
-                       set_debugt();
-                       /* no read since this drive is running */
-                       DRS->first_read_date = 0;
-                       /* note motor start time if motor is not yet running */
-                       DRS->spinup_date = jiffies;
-                       data |= (0x10 << UNIT(current_drive));
-               }
-       } else
-               if (FDCS->dor & (0x10 << UNIT(current_drive)))
-                       mask &= ~(0x10 << UNIT(current_drive));
-
-       /* starts motor and selects floppy */
-       del_timer(motor_off_timer + current_drive);
-       set_dor(fdc, mask, data);
-
-       /* wait_for_completion also schedules reset if needed. */
-       return(wait_for_completion(DRS->select_date+DP->select_delay,
-                                  (timeout_fn) function));
-}
-
-static void floppy_ready(void)
-{
-       CHECK_RESET;
-       if (start_motor(floppy_ready)) return;
-       if (fdc_dtr()) return;
-
-#ifdef DCL_DEBUG
-       if (DP->flags & FD_DEBUG){
-               DPRINT("calling disk change from floppy_ready\n");
-       }
-#endif
-
-       if (!(raw_cmd->flags & FD_RAW_NO_MOTOR) &&
-          disk_change(current_drive) &&
-          !DP->select_delay)
-               twaddle(); /* this clears the dcl on certain drive/controller
-                           * combinations */
-
-       if (raw_cmd->flags & (FD_RAW_NEED_SEEK | FD_RAW_NEED_DISK)){
-               perpendicular_mode();
-               fdc_specify(); /* must be done here because of hut, hlt ... */
-               seek_floppy();
-       } else
-               setup_rw_floppy();
-}
-
-static void floppy_start(void)
-{
-       reschedule_timeout(CURRENTD, "floppy start", 0);
-
-       scandrives();
-#ifdef DCL_DEBUG
-       if (DP->flags & FD_DEBUG){
-               DPRINT("setting NEWCHANGE in floppy_start\n");
-       }
-#endif
-       SETF(FD_DISK_NEWCHANGE);
-       floppy_ready();
-}
-
-/*
- * ========================================================================
- * here ends the bottom half. Exported routines are:
- * floppy_start, floppy_off, floppy_ready, lock_fdc, unlock_fdc, set_fdc,
- * start_motor, reset_fdc, reset_fdc_info, interpret_errors.
- * Initialization also uses output_byte, result, set_dor, floppy_interrupt
- * and set_dor.
- * ========================================================================
- */
-/*
- * General purpose continuations.
- * ==============================
- */
-
-static void do_wakeup(void)
-{
-       reschedule_timeout(MAXTIMEOUT, "do wakeup", 0);
-       cont = 0;
-       command_status += 2;
-       wake_up(&command_done);
-}
-
-static struct cont_t wakeup_cont={
-       empty,
-       do_wakeup,
-       empty,
-       (done_f)empty
-};
-
-
-static struct cont_t intr_cont={
-       empty,
-       process_fd_request,
-       empty,
-       (done_f) empty
-};
-
-static int wait_til_done(void (*handler)(void), int interruptible)
-{
-       int ret;
-       unsigned long flags;
-
-       floppy_tq.routine = (void *)(void *) handler;
-       queue_task(&floppy_tq, &tq_immediate);
-       mark_bh(IMMEDIATE_BH);
-       INT_OFF;
-       while(command_status < 2 && NO_SIGNAL){
-               is_alive("wait_til_done");
-               if (interruptible)
-                       interruptible_sleep_on(&command_done);
-               else
-                       sleep_on(&command_done);
-       }
-       if (command_status < 2){
-               cancel_activity();
-               cont = &intr_cont;
-               reset_fdc();
-               INT_ON;
-               return -EINTR;
-       }
-       INT_ON;
-
-       if (FDCS->reset)
-               command_status = FD_COMMAND_ERROR;
-       if (command_status == FD_COMMAND_OKAY)
-               ret=0;
-       else
-               ret=-EIO;
-       command_status = FD_COMMAND_NONE;
-       return ret;
-}
-
-static void generic_done(int result)
-{
-       command_status = result;
-       cont = &wakeup_cont;
-}
-
-static void generic_success(void)
-{
-       cont->done(1);
-}
-
-static void generic_failure(void)
-{
-       cont->done(0);
-}
-
-static void success_and_wakeup(void)
-{
-       generic_success();
-       cont->redo();
-}
-
-
-/*
- * formatting and rw support.
- * ==========================
- */
-
-static int next_valid_format(void)
-{
-       int probed_format;
-
-       probed_format = DRS->probed_format;
-       while(1){
-               if (probed_format >= 8 ||
-                    !DP->autodetect[probed_format]){
-                       DRS->probed_format = 0;
-                       return 1;
-               }
-               if (floppy_type[DP->autodetect[probed_format]].sect){
-                       DRS->probed_format = probed_format;
-                       return 0;
-               }
-               probed_format++;
-       }
-}
-
-static void bad_flp_intr(void)
-{
-       if (probing){
-               DRS->probed_format++;
-               if (!next_valid_format())
-                       return;
-       }
-       (*errors)++;
-       INFBOUND(DRWE->badness, *errors);
-       if (*errors > DP->max_errors.abort)
-               cont->done(0);
-       if (*errors > DP->max_errors.reset)
-               FDCS->reset = 1;
-       else if (*errors > DP->max_errors.recal)
-               DRS->track = NEED_2_RECAL;
-}
-
-static void set_floppy(kdev_t device)
-{
-       if (TYPE(device))
-               _floppy = TYPE(device) + floppy_type;
-       else
-               _floppy = current_type[ DRIVE(device) ];
-}
-
-/*
- * formatting support.
- * ===================
- */
-static void format_interrupt(void)
-{
-       switch (interpret_errors()){
-               case 1:
-                       cont->error();
-               case 2:
-                       break;
-               case 0:
-                       cont->done(1);
-       }
-       cont->redo();
-}
-
-#define CODE2SIZE (ssize = ((1 << SIZECODE) + 3) >> 2)
-#define FM_MODE(x,y) ((y) & ~(((x)->rate & 0x80) >>1))
-#define CT(x) ((x) | 0x40)
-static void setup_format_params(int track)
-{
-       struct fparm {
-               unsigned char track,head,sect,size;
-       } *here = (struct fparm *)floppy_track_buffer;
-       int il,n;
-       int count,head_shift,track_shift;
-
-       raw_cmd = &default_raw_cmd;
-       raw_cmd->track = track;
-
-       raw_cmd->flags = FD_RAW_WRITE | FD_RAW_INTR | FD_RAW_SPIN |
-               FD_RAW_NEED_DISK | FD_RAW_NEED_SEEK;
-       raw_cmd->rate = _floppy->rate & 0x43;
-       raw_cmd->cmd_count = NR_F;
-       COMMAND = FM_MODE(_floppy,FD_FORMAT);
-       DR_SELECT = UNIT(current_drive) + PH_HEAD(_floppy,format_req.head);
-       F_SIZECODE = FD_SIZECODE(_floppy);
-       F_SECT_PER_TRACK = _floppy->sect << 2 >> F_SIZECODE;
-       F_GAP = _floppy->fmt_gap;
-       F_FILL = FD_FILL_BYTE;
-
-       raw_cmd->kernel_data = floppy_track_buffer;
-       raw_cmd->length = 4 * F_SECT_PER_TRACK;
-
-       /* allow for about 30ms for data transport per track */
-       head_shift  = (F_SECT_PER_TRACK + 5) / 6;
-
-       /* a ``cylinder'' is two tracks plus a little stepping time */
-       track_shift = 2 * head_shift + 3;
-
-       /* position of logical sector 1 on this track */
-       n = (track_shift * format_req.track + head_shift * format_req.head)
-               % F_SECT_PER_TRACK;
-
-       /* determine interleave */
-       il = 1;
-       if (_floppy->fmt_gap < 0x22)
-               il++;
-
-       /* initialize field */
-       for (count = 0; count < F_SECT_PER_TRACK; ++count) {
-               here[count].track = format_req.track;
-               here[count].head = format_req.head;
-               here[count].sect = 0;
-               here[count].size = F_SIZECODE;
-       }
-       /* place logical sectors */
-       for (count = 1; count <= F_SECT_PER_TRACK; ++count) {
-               here[n].sect = count;
-               n = (n+il) % F_SECT_PER_TRACK;
-               if (here[n].sect) { /* sector busy, find next free sector */
-                       ++n;
-                       if (n>= F_SECT_PER_TRACK) {
-                               n-=F_SECT_PER_TRACK;
-                               while (here[n].sect) ++n;
-                       }
-               }
-       }
-}
-
-static void redo_format(void)
-{
-       buffer_track = -1;
-       setup_format_params(format_req.track << STRETCH(_floppy));
-       floppy_start();
-#ifdef DEBUGT
-       debugt("queue format request");
-#endif
-}
-
-static struct cont_t format_cont={
-       format_interrupt,
-       redo_format,
-       bad_flp_intr,
-       generic_done };
-
-static int do_format(kdev_t device, struct format_descr *tmp_format_req)
-{
-       int ret;
-       int drive=DRIVE(device);
-
-       LOCK_FDC(drive,1);
-       set_floppy(device);
-       if (!_floppy ||
-           _floppy->track > DP->tracks ||
-           tmp_format_req->track >= _floppy->track ||
-           tmp_format_req->head >= _floppy->head ||
-           (_floppy->sect << 2) % (1 <<  FD_SIZECODE(_floppy)) ||
-           !_floppy->fmt_gap) {
-               process_fd_request();
-               return -EINVAL;
-       }
-       format_req = *tmp_format_req;
-       format_errors = 0;
-       cont = &format_cont;
-       errors = &format_errors;
-       IWAIT(redo_format);
-       process_fd_request();
-       return ret;
-}
-
-/*
- * Buffer read/write and support
- * =============================
- */
-
-/* new request_done. Can handle physical sectors which are smaller than a
- * logical buffer */
-static void request_done(int uptodate)
-{
-       int block;
-
-       probing = 0;
-       reschedule_timeout(MAXTIMEOUT, "request done %d", uptodate);
-
-       if (!CURRENT){
-               DPRINT("request list destroyed in floppy request done\n");
-               return;
-       }
-
-       if (uptodate){
-               /* maintain values for invalidation on geometry
-                * change */
-               block = current_count_sectors + CURRENT->sector;
-               INFBOUND(DRS->maxblock, block);
-               if (block > _floppy->sect)
-                       DRS->maxtrack = 1;
-
-               /* unlock chained buffers */
-               while (current_count_sectors && CURRENT &&
-                      current_count_sectors >= CURRENT->current_nr_sectors){
-                       current_count_sectors -= CURRENT->current_nr_sectors;
-                       CURRENT->nr_sectors -= CURRENT->current_nr_sectors;
-                       CURRENT->sector += CURRENT->current_nr_sectors;
-                       end_request(1);
-               }
-               if (current_count_sectors && CURRENT){
-                       /* "unlock" last subsector */
-                       CURRENT->buffer += current_count_sectors <<9;
-                       CURRENT->current_nr_sectors -= current_count_sectors;
-                       CURRENT->nr_sectors -= current_count_sectors;
-                       CURRENT->sector += current_count_sectors;
-                       return;
-               }
-
-               if (current_count_sectors && !CURRENT)
-                       DPRINT("request list destroyed in floppy request 
done\n");
-
-       } else {
-               if (CURRENT->cmd == WRITE) {
-                       /* record write error information */
-                       DRWE->write_errors++;
-                       if (DRWE->write_errors == 1) {
-                               DRWE->first_error_sector = CURRENT->sector;
-                               DRWE->first_error_generation = DRS->generation;
-                       }
-                       DRWE->last_error_sector = CURRENT->sector;
-                       DRWE->last_error_generation = DRS->generation;
-               }
-               end_request(0);
-       }
-}
-
-/* Interrupt handler evaluating the result of the r/w operation */
-static void rw_interrupt(void)
-{
-       int nr_sectors, ssize, eoc;
-
-       if (!DRS->first_read_date)
-               DRS->first_read_date = jiffies;
-
-       nr_sectors = 0;
-       CODE2SIZE;
-
-       if(ST1 & ST1_EOC)
-               eoc = 1;
-       else
-               eoc = 0;
-       nr_sectors = ((R_TRACK-TRACK)*_floppy->head+R_HEAD-HEAD) *
-               _floppy->sect + ((R_SECTOR-SECTOR+eoc) <<  SIZECODE >> 2) -
-               (sector_t % _floppy->sect) % ssize;
-
-#ifdef FLOPPY_SANITY_CHECK
-       if (nr_sectors > current_count_sectors + ssize -
-            (current_count_sectors + sector_t) % ssize +
-            sector_t % ssize){
-               DPRINT("long rw: %x instead of %lx\n",
-                       nr_sectors, current_count_sectors);
-               printk("rs=%d s=%d\n", R_SECTOR, SECTOR);
-               printk("rh=%d h=%d\n", R_HEAD, HEAD);
-               printk("rt=%d t=%d\n", R_TRACK, TRACK);
-               printk("spt=%d st=%d ss=%d\n", SECT_PER_TRACK,
-                      sector_t, ssize);
-       }
-#endif
-       INFBOUND(nr_sectors,0);
-       SUPBOUND(current_count_sectors, nr_sectors);
-
-       switch (interpret_errors()){
-               case 2:
-                       cont->redo();
-                       return;
-               case 1:
-                       if (!current_count_sectors){
-                               cont->error();
-                               cont->redo();
-                               return;
-                       }
-                       break;
-               case 0:
-                       if (!current_count_sectors){
-                               cont->redo();
-                               return;
-                       }
-                       current_type[current_drive] = _floppy;
-                       floppy_sizes[TOMINOR(current_drive) ]= _floppy->size>>1;
-                       break;
-       }
-
-       if (probing) {
-               if (DP->flags & FTD_MSG)
-                       DPRINT("Auto-detected floppy type %s in fd%d\n",
-                               _floppy->name,current_drive);
-               current_type[current_drive] = _floppy;
-               floppy_sizes[TOMINOR(current_drive)] = _floppy->size >> 1;
-               probing = 0;
-       }
-
-       if (CT(COMMAND) != FD_READ || 
-            raw_cmd->kernel_data == CURRENT->buffer){
-               /* transfer directly from buffer */
-               cont->done(1);
-       } else if (CT(COMMAND) == FD_READ){
-               buffer_track = raw_cmd->track;
-               buffer_drive = current_drive;
-               INFBOUND(buffer_max, nr_sectors + sector_t);
-       }
-       cont->redo();
-}
-
-/* Compute maximal contiguous buffer size. */
-static int buffer_chain_size(void)
-{
-       struct buffer_head *bh;
-       int size;
-       char *base;
-
-       base = CURRENT->buffer;
-       size = CURRENT->current_nr_sectors << 9;
-       bh = CURRENT->bh;
-
-       if (bh){
-               bh = bh->b_reqnext;
-               while (bh && bh->b_data == base + size){
-                       size += bh->b_size;
-                       bh = bh->b_reqnext;
-               }
-       }
-       return size >> 9;
-}
-
-/* Compute the maximal transfer size */
-static int transfer_size(int ssize, int max_sector, int max_size)
-{
-       SUPBOUND(max_sector, sector_t + max_size);
-
-       /* alignment */
-       max_sector -= (max_sector % _floppy->sect) % ssize;
-
-       /* transfer size, beginning not aligned */
-       current_count_sectors = max_sector - sector_t ;
-
-       return max_sector;
-}
-
-/*
- * Move data from/to the track buffer to/from the buffer cache.
- */
-static void copy_buffer(int ssize, int max_sector, int max_sector_2)
-{
-       int remaining; /* number of transferred 512-byte sectors */
-       struct buffer_head *bh;
-       char *buffer, *dma_buffer;
-       int size;
-
-       max_sector = transfer_size(ssize,
-                                  minimum(max_sector, max_sector_2),
-                                  CURRENT->nr_sectors);
-
-       if (current_count_sectors <= 0 && CT(COMMAND) == FD_WRITE &&
-           buffer_max > sector_t + CURRENT->nr_sectors)
-               current_count_sectors = minimum(buffer_max - sector_t,
-                                               CURRENT->nr_sectors);
-
-       remaining = current_count_sectors << 9;
-#ifdef FLOPPY_SANITY_CHECK
-       if ((remaining >> 9) > CURRENT->nr_sectors  &&
-           CT(COMMAND) == FD_WRITE){
-               DPRINT("in copy buffer\n");
-               printk("current_count_sectors=%ld\n", current_count_sectors);
-               printk("remaining=%d\n", remaining >> 9);
-               printk("CURRENT->nr_sectors=%ld\n",CURRENT->nr_sectors);
-               printk("CURRENT->current_nr_sectors=%ld\n",
-                      CURRENT->current_nr_sectors);
-               printk("max_sector=%d\n", max_sector);
-               printk("ssize=%d\n", ssize);
-       }
-#endif
-
-       buffer_max = maximum(max_sector, buffer_max);
-
-       dma_buffer = floppy_track_buffer + ((sector_t - buffer_min) << 9);
-
-       bh = CURRENT->bh;
-       size = CURRENT->current_nr_sectors << 9;
-       buffer = CURRENT->buffer;
-
-       while (remaining > 0){
-               SUPBOUND(size, remaining);
-#ifdef FLOPPY_SANITY_CHECK
-               if (dma_buffer + size >
-                   floppy_track_buffer + (max_buffer_sectors << 10) ||
-                   dma_buffer < floppy_track_buffer){
-                       DPRINT("buffer overrun in copy buffer %d\n",
-                               (int) ((floppy_track_buffer - dma_buffer) >>9));
-                       printk("sector_t=%d buffer_min=%d\n",
-                              sector_t, buffer_min);
-                       printk("current_count_sectors=%ld\n",
-                              current_count_sectors);
-                       if (CT(COMMAND) == FD_READ)
-                               printk("read\n");
-                       if (CT(COMMAND) == FD_READ)
-                               printk("write\n");
-                       break;
-               }
-               if (((unsigned long)buffer) % 512)
-                       DPRINT("%p buffer not aligned\n", buffer);
-#endif
-               if (CT(COMMAND) == FD_READ)
-                       memcpy(buffer, dma_buffer, size);
-               else
-                       memcpy(dma_buffer, buffer, size);
-               remaining -= size;
-               if (!remaining)
-                       break;
-
-               dma_buffer += size;
-               bh = bh->b_reqnext;
-#ifdef FLOPPY_SANITY_CHECK
-               if (!bh){
-                       DPRINT("bh=null in copy buffer after copy\n");
-                       break;
-               }
-#endif
-               size = bh->b_size;
-               buffer = bh->b_data;
-       }
-#ifdef FLOPPY_SANITY_CHECK
-       if (remaining){
-               if (remaining > 0)
-                       max_sector -= remaining >> 9;
-               DPRINT("weirdness: remaining %d\n", remaining>>9);
-       }
-#endif
-}
-
-/*
- * Formulate a read/write request.
- * this routine decides where to load the data (directly to buffer, or to
- * tmp floppy area), how much data to load (the size of the buffer, the whole
- * track, or a single sector)
- * All floppy_track_buffer handling goes in here. If we ever add track buffer
- * allocation on the fly, it should be done here. No other part should need
- * modification.
- */
-
-static int make_raw_rw_request(void)
-{
-       int aligned_sector_t;
-       int max_sector, max_size, tracksize, ssize;
-
-       set_fdc(DRIVE(CURRENT->rq_dev));
-
-       raw_cmd = &default_raw_cmd;
-       raw_cmd->flags = FD_RAW_SPIN | FD_RAW_NEED_DISK | FD_RAW_NEED_DISK |
-               FD_RAW_NEED_SEEK;
-       raw_cmd->cmd_count = NR_RW;
-       if (CURRENT->cmd == READ){
-               raw_cmd->flags |= FD_RAW_READ;
-               COMMAND = FM_MODE(_floppy,FD_READ);
-       } else if (CURRENT->cmd == WRITE){
-               raw_cmd->flags |= FD_RAW_WRITE;
-               COMMAND = FM_MODE(_floppy,FD_WRITE);
-       } else {
-               DPRINT("make_raw_rw_request: unknown command\n");
-               return 0;
-       }
-
-       max_sector = _floppy->sect * _floppy->head;
-
-       TRACK = CURRENT->sector / max_sector;
-       sector_t = CURRENT->sector % max_sector;
-       if (_floppy->track && TRACK >= _floppy->track)
-               return 0;
-       HEAD = sector_t / _floppy->sect;
-
-       if (((_floppy->stretch & FD_SWAPSIDES) || TESTF(FD_NEED_TWADDLE)) &&
-           sector_t < _floppy->sect)
-               max_sector = _floppy->sect;
-
-       /* 2M disks have phantom sectors on the first track */
-       if ((_floppy->rate & FD_2M) && (!TRACK) && (!HEAD)){
-               max_sector = 2 * _floppy->sect / 3;
-               if (sector_t >= max_sector){
-                       current_count_sectors = minimum(_floppy->sect - 
sector_t,
-                                                       CURRENT->nr_sectors);
-                       return 1;
-               }
-               SIZECODE = 2;
-       } else
-               SIZECODE = FD_SIZECODE(_floppy);
-       raw_cmd->rate = _floppy->rate & 0x43;
-       if ((_floppy->rate & FD_2M) &&
-           (TRACK || HEAD) &&
-           raw_cmd->rate == 2)
-               raw_cmd->rate = 1;
-
-       if (SIZECODE)
-               SIZECODE2 = 0xff;
-       else
-               SIZECODE2 = 0x80;
-       raw_cmd->track = TRACK << STRETCH(_floppy);
-       DR_SELECT = UNIT(current_drive) + PH_HEAD(_floppy,HEAD);
-       GAP = _floppy->gap;
-       CODE2SIZE;
-       SECT_PER_TRACK = _floppy->sect << 2 >> SIZECODE;
-       SECTOR = ((sector_t % _floppy->sect) << 2 >> SIZECODE) + 1;
-       tracksize = _floppy->sect - _floppy->sect % ssize;
-       if (tracksize < _floppy->sect){
-               SECT_PER_TRACK ++;
-               if (tracksize <= sector_t % _floppy->sect)
-                       SECTOR--;
-               while (tracksize <= sector_t % _floppy->sect){
-                       while(tracksize + ssize > _floppy->sect){
-                               SIZECODE--;
-                               ssize >>= 1;
-                       }
-                       SECTOR++; SECT_PER_TRACK ++;
-                       tracksize += ssize;
-               }
-               max_sector = HEAD * _floppy->sect + tracksize;
-       } else if (!TRACK && !HEAD && !(_floppy->rate & FD_2M) && probing)
-               max_sector = _floppy->sect;
-
-       aligned_sector_t = sector_t - (sector_t % _floppy->sect) % ssize;
-       max_size = CURRENT->nr_sectors;
-       if ((raw_cmd->track == buffer_track) && 
-           (current_drive == buffer_drive) &&
-           (sector_t >= buffer_min) && (sector_t < buffer_max)) {
-               /* data already in track buffer */
-               if (CT(COMMAND) == FD_READ) {
-                       copy_buffer(1, max_sector, buffer_max);
-                       return 1;
-               }
-       } else if (aligned_sector_t != sector_t || CURRENT->nr_sectors < ssize){
-               if (CT(COMMAND) == FD_WRITE){
-                       if (sector_t + CURRENT->nr_sectors > ssize &&
-                           sector_t + CURRENT->nr_sectors < ssize + ssize)
-                               max_size = ssize + ssize;
-                       else
-                               max_size = ssize;
-               }
-               raw_cmd->flags &= ~FD_RAW_WRITE;
-               raw_cmd->flags |= FD_RAW_READ;
-               COMMAND = FM_MODE(_floppy,FD_READ);
-       } else if ((unsigned long)CURRENT->buffer < MAX_DMA_ADDRESS) {
-               unsigned long dma_limit;
-               int direct, indirect;
-
-               indirect= transfer_size(ssize,max_sector,max_buffer_sectors*2) -
-                       sector_t;
-
-               /*
-                * Do NOT use minimum() here---MAX_DMA_ADDRESS is 64 bits wide
-                * on a 64 bit machine!
-                */
-               max_size = buffer_chain_size();
-               dma_limit = (MAX_DMA_ADDRESS - ((unsigned long) 
CURRENT->buffer)) >> 9;
-               if ((unsigned long) max_size > dma_limit) {
-                       max_size = dma_limit;
-               }
-               /* 64 kb boundaries */
-               if (CROSS_64KB(CURRENT->buffer, max_size << 9))
-                       max_size = (K_64 - ((long) CURRENT->buffer) % K_64)>>9;
-               direct = transfer_size(ssize,max_sector,max_size) - sector_t;
-               /*
-                * We try to read tracks, but if we get too many errors, we
-                * go back to reading just one sector at a time.
-                *
-                * This means we should be able to read a sector even if there
-                * are other bad sectors on this track.
-                */
-               if (!direct ||
-                   (indirect * 2 > direct * 3 &&
-                    *errors < DP->max_errors.read_track &&
-                    /*!TESTF(FD_NEED_TWADDLE) &&*/
-                    ((!probing || (DP->read_track&(1<<DRS->probed_format)))))){
-                       max_size = CURRENT->nr_sectors;
-               } else {
-                       raw_cmd->kernel_data = CURRENT->buffer;
-                       raw_cmd->length = current_count_sectors << 9;
-                       if (raw_cmd->length == 0){
-                               DPRINT("zero dma transfer attempted from 
make_raw_request\n");
-                               DPRINT("indirect=%d direct=%d sector_t=%d",
-                                       indirect, direct, sector_t);
-                               return 0;
-                       }
-                       return 2;
-               }
-       }
-
-       if (CT(COMMAND) == FD_READ)
-               max_size = max_sector; /* unbounded */
-
-       /* claim buffer track if needed */
-       if (buffer_track != raw_cmd->track ||  /* bad track */
-           buffer_drive !=current_drive || /* bad drive */
-           sector_t > buffer_max ||
-           sector_t < buffer_min ||
-           ((CT(COMMAND) == FD_READ ||
-             (aligned_sector_t == sector_t && CURRENT->nr_sectors >= ssize))&&
-            max_sector > 2 * max_buffer_sectors + buffer_min &&
-            max_size + sector_t > 2 * max_buffer_sectors + buffer_min)
-           /* not enough space */){
-               buffer_track = -1;
-               buffer_drive = current_drive;
-               buffer_max = buffer_min = aligned_sector_t;
-       }
-       raw_cmd->kernel_data = floppy_track_buffer + 
-               ((aligned_sector_t-buffer_min)<<9);
-
-       if (CT(COMMAND) == FD_WRITE){
-               /* copy write buffer to track buffer.
-                * if we get here, we know that the write
-                * is either aligned or the data already in the buffer
-                * (buffer will be overwritten) */
-#ifdef FLOPPY_SANITY_CHECK
-               if (sector_t != aligned_sector_t && buffer_track == -1)
-                       DPRINT("internal error offset !=0 on write\n");
-#endif
-               buffer_track = raw_cmd->track;
-               buffer_drive = current_drive;
-               copy_buffer(ssize, max_sector, 2*max_buffer_sectors+buffer_min);
-       } else
-               transfer_size(ssize, max_sector,
-                             2*max_buffer_sectors+buffer_min-aligned_sector_t);
-
-       /* round up current_count_sectors to get dma xfer size */
-       raw_cmd->length = sector_t+current_count_sectors-aligned_sector_t;
-       raw_cmd->length = ((raw_cmd->length -1)|(ssize-1))+1;
-       raw_cmd->length <<= 9;
-#ifdef FLOPPY_SANITY_CHECK
-       if ((raw_cmd->length < current_count_sectors << 9) ||
-           (raw_cmd->kernel_data != CURRENT->buffer &&
-            CT(COMMAND) == FD_WRITE &&
-            (aligned_sector_t + (raw_cmd->length >> 9) > buffer_max ||
-             aligned_sector_t < buffer_min)) ||
-           raw_cmd->length % (128 << SIZECODE) ||
-           raw_cmd->length <= 0 || current_count_sectors <= 0){
-               DPRINT("fractionary current count b=%lx s=%lx\n",
-                       raw_cmd->length, current_count_sectors);
-               if (raw_cmd->kernel_data != CURRENT->buffer)
-                       printk("addr=%d, length=%ld\n",
-                              (int) ((raw_cmd->kernel_data - 
-                                      floppy_track_buffer) >> 9),
-                              current_count_sectors);
-               printk("st=%d ast=%d mse=%d msi=%d\n",
-                      sector_t, aligned_sector_t, max_sector, max_size);
-               printk("ssize=%x SIZECODE=%d\n", ssize, SIZECODE);
-               printk("command=%x SECTOR=%d HEAD=%d, TRACK=%d\n",
-                      COMMAND, SECTOR, HEAD, TRACK);
-               printk("buffer drive=%d\n", buffer_drive);
-               printk("buffer track=%d\n", buffer_track);
-               printk("buffer_min=%d\n", buffer_min);
-               printk("buffer_max=%d\n", buffer_max);
-               return 0;
-       }
-
-       if (raw_cmd->kernel_data != CURRENT->buffer){
-               if (raw_cmd->kernel_data < floppy_track_buffer ||
-                   current_count_sectors < 0 ||
-                   raw_cmd->length < 0 ||
-                   raw_cmd->kernel_data + raw_cmd->length >
-                   floppy_track_buffer + (max_buffer_sectors  << 10)){
-                       DPRINT("buffer overrun in schedule dma\n");
-                       printk("sector_t=%d buffer_min=%d current_count=%ld\n",
-                              sector_t, buffer_min,
-                              raw_cmd->length >> 9);
-                       printk("current_count_sectors=%ld\n",
-                              current_count_sectors);
-                       if (CT(COMMAND) == FD_READ)
-                               printk("read\n");
-                       if (CT(COMMAND) == FD_READ)
-                               printk("write\n");
-                       return 0;
-               }
-       } else if (raw_cmd->length > CURRENT->nr_sectors << 9 ||
-                  current_count_sectors > CURRENT->nr_sectors){
-               DPRINT("buffer overrun in direct transfer\n");
-               return 0;
-       } else if (raw_cmd->length < current_count_sectors << 9){
-               DPRINT("more sectors than bytes\n");
-               printk("bytes=%ld\n", raw_cmd->length >> 9);
-               printk("sectors=%ld\n", current_count_sectors);
-       }
-       if (raw_cmd->length == 0){
-               DPRINT("zero dma transfer attempted from make_raw_request\n");
-               return 0;
-       }
-#endif
-       return 2;
-}
-
-static void redo_fd_request(void)
-{
-#define REPEAT {request_done(0); continue; }
-       kdev_t device;
-       int tmp;
-
-       lastredo = jiffies;
-       if (current_drive < N_DRIVE)
-               floppy_off(current_drive);
-
-       if (CURRENT && CURRENT->rq_status == RQ_INACTIVE){
-               CLEAR_INTR;
-               unlock_fdc();
-               return;
-       }
-
-       while(1){
-               if (!CURRENT) {
-                       CLEAR_INTR;
-                       unlock_fdc();
-                       return;
-               }
-               if (MAJOR(CURRENT->rq_dev) != MAJOR_NR)
-                       panic(DEVICE_NAME ": request list destroyed");
-               if (CURRENT->bh && !buffer_locked(CURRENT->bh))
-                       panic(DEVICE_NAME ": block not locked");
-
-               device = CURRENT->rq_dev;
-               set_fdc(DRIVE(device));
-               reschedule_timeout(CURRENTD, "redo fd request", 0);
-
-               set_floppy(device);
-               raw_cmd = & default_raw_cmd;
-               raw_cmd->flags = 0;
-               if (start_motor(redo_fd_request)) return;
-               disk_change(current_drive);
-               if (test_bit(current_drive, &fake_change) ||
-                  TESTF(FD_DISK_CHANGED)){
-                       DPRINT("disk absent or changed during operation\n");
-                       REPEAT;
-               }
-               if (!_floppy) { /* Autodetection */
-                       if (!probing){
-                               DRS->probed_format = 0;
-                               if (next_valid_format()){
-                                       DPRINT("no autodetectable formats\n");
-                                       _floppy = NULL;
-                                       REPEAT;
-                               }
-                       }
-                       probing = 1;
-                       _floppy = 
floppy_type+DP->autodetect[DRS->probed_format];
-               } else
-                       probing = 0;
-               errors = & (CURRENT->errors);
-               tmp = make_raw_rw_request();
-               if (tmp < 2){
-                       request_done(tmp);
-                       continue;
-               }
-
-               if (TESTF(FD_NEED_TWADDLE))
-                       twaddle();
-               floppy_tq.routine = (void *)(void *) floppy_start;
-               queue_task(&floppy_tq, &tq_immediate);
-               mark_bh(IMMEDIATE_BH);
-#ifdef DEBUGT
-               debugt("queue fd request");
-#endif
-               return;
-       }
-#undef REPEAT
-}
-
-static struct cont_t rw_cont={
-       rw_interrupt,
-       redo_fd_request,
-       bad_flp_intr,
-       request_done };
-
-static struct tq_struct request_tq =
-{ 0, 0, (void *) (void *) redo_fd_request, 0 };
-
-static void process_fd_request(void)
-{
-       cont = &rw_cont;
-       queue_task(&request_tq, &tq_immediate);
-       mark_bh(IMMEDIATE_BH);
-}
-
-static void do_fd_request(void)
-{
-       sti();
-       if (fdc_busy){
-               /* fdc busy, this new request will be treated when the
-                  current one is done */
-               is_alive("do fd request, old request running");
-               return;
-       }
-       lock_fdc(MAXTIMEOUT,0);
-       process_fd_request();
-       is_alive("do fd request");
-}
-
-static struct cont_t poll_cont={
-       success_and_wakeup,
-       floppy_ready,
-       generic_failure,
-       generic_done };
-
-static int poll_drive(int interruptible, int flag)
-{
-       int ret;
-       /* no auto-sense, just clear dcl */
-       raw_cmd = &default_raw_cmd;
-       raw_cmd->flags= flag;
-       raw_cmd->track=0;
-       raw_cmd->cmd_count=0;
-       cont = &poll_cont;
-#ifdef DCL_DEBUG
-       if (DP->flags & FD_DEBUG){
-               DPRINT("setting NEWCHANGE in poll_drive\n");
-       }
-#endif
-       SETF(FD_DISK_NEWCHANGE);
-       WAIT(floppy_ready);
-       return ret;
-}
-
-/*
- * User triggered reset
- * ====================
- */
-
-static void reset_intr(void)
-{
-       printk("weird, reset interrupt called\n");
-}
-
-static struct cont_t reset_cont={
-       reset_intr,
-       success_and_wakeup,
-       generic_failure,
-       generic_done };
-
-static int user_reset_fdc(int drive, int arg, int interruptible)
-{
-       int ret;
-
-       ret=0;
-       LOCK_FDC(drive,interruptible);
-       if (arg == FD_RESET_ALWAYS)
-               FDCS->reset=1;
-       if (FDCS->reset){
-               cont = &reset_cont;
-               WAIT(reset_fdc);
-       }
-       process_fd_request();
-       return ret;
-}
-
-/*
- * Misc Ioctl's and support
- * ========================
- */
-static int fd_copyout(void *param, const void *address, int size)
-{
-       int ret;
-
-       ECALL(verify_area(VERIFY_WRITE,param,size));
-       memcpy_tofs(param,(void *) address, size);
-       return 0;
-}
-
-static int fd_copyin(void *param, void *address, int size)
-{
-       int ret;
-
-       ECALL(verify_area(VERIFY_READ,param,size));
-       memcpy_fromfs((void *) address, param, size);
-       return 0;
-}
-
-#define COPYOUT(x) ECALL(fd_copyout((void *)param, &(x), sizeof(x)))
-#define COPYIN(x) ECALL(fd_copyin((void *)param, &(x), sizeof(x)))
-
-static inline const char *drive_name(int type, int drive)
-{
-       struct floppy_struct *floppy;
-
-       if (type)
-               floppy = floppy_type + type;
-       else {
-               if (UDP->native_format)
-                       floppy = floppy_type + UDP->native_format;
-               else
-                       return "(null)";
-       }
-       if (floppy->name)
-               return floppy->name;
-       else
-               return "(null)";
-}
-
-
-/* raw commands */
-static void raw_cmd_done(int flag)
-{
-       int i;
-
-       if (!flag) {
-               raw_cmd->flags |= FD_RAW_FAILURE;
-               raw_cmd->flags |= FD_RAW_HARDFAILURE;
-       } else {
-               raw_cmd->reply_count = inr;
-               for (i=0; i< raw_cmd->reply_count; i++)
-                       raw_cmd->reply[i] = reply_buffer[i];
-
-               if (raw_cmd->flags & (FD_RAW_READ | FD_RAW_WRITE))
-                       raw_cmd->length = fd_get_dma_residue();
-               
-               if ((raw_cmd->flags & FD_RAW_SOFTFAILURE) &&
-                   (!raw_cmd->reply_count || (raw_cmd->reply[0] & 0xc0)))
-                       raw_cmd->flags |= FD_RAW_FAILURE;
-
-               if (disk_change(current_drive))
-                       raw_cmd->flags |= FD_RAW_DISK_CHANGE;
-               else
-                       raw_cmd->flags &= ~FD_RAW_DISK_CHANGE;
-               if (raw_cmd->flags & FD_RAW_NO_MOTOR_AFTER)
-                       motor_off_callback(current_drive);
-
-               if (raw_cmd->next &&
-                  (!(raw_cmd->flags & FD_RAW_FAILURE) ||
-                   !(raw_cmd->flags & FD_RAW_STOP_IF_FAILURE)) &&
-                  ((raw_cmd->flags & FD_RAW_FAILURE) ||
-                   !(raw_cmd->flags &FD_RAW_STOP_IF_SUCCESS))) {
-                       raw_cmd = raw_cmd->next;
-                       return;
-               }
-       }
-       generic_done(flag);
-}
-
-
-static struct cont_t raw_cmd_cont={
-       success_and_wakeup,
-       floppy_start,
-       generic_failure,
-       raw_cmd_done
-};
-
-static inline int raw_cmd_copyout(int cmd, char *param,
-                                 struct floppy_raw_cmd *ptr)
-{
-       struct old_floppy_raw_cmd old_raw_cmd;
-       int ret;
-
-       while(ptr) {
-               if (cmd == OLDFDRAWCMD) {
-                       old_raw_cmd.flags = ptr->flags;
-                       old_raw_cmd.data = ptr->data;
-                       old_raw_cmd.length = ptr->length;
-                       old_raw_cmd.rate = ptr->rate;
-                       old_raw_cmd.reply_count = ptr->reply_count;
-                       memcpy(old_raw_cmd.reply, ptr->reply, 7);
-                       COPYOUT(old_raw_cmd);
-                       param += sizeof(old_raw_cmd);
-               } else {
-                       COPYOUT(*ptr);
-                       param += sizeof(struct floppy_raw_cmd);
-               }
-
-               if ((ptr->flags & FD_RAW_READ) && ptr->buffer_length){
-                       if (ptr->length>=0 && ptr->length<=ptr->buffer_length)
-                               ECALL(fd_copyout(ptr->data, 
-                                                ptr->kernel_data, 
-                                                ptr->buffer_length - 
-                                                ptr->length));
-               }
-               ptr = ptr->next;
-       }
-       return 0;
-}
-
-
-static void raw_cmd_free(struct floppy_raw_cmd **ptr)
-{
-       struct floppy_raw_cmd *next,*this;
-
-       this = *ptr;
-       *ptr = 0;
-       while(this) {
-               if (this->buffer_length) {
-                       fd_dma_mem_free((unsigned long)this->kernel_data,
-                                       this->buffer_length);
-                       this->buffer_length = 0;
-               }
-               next = this->next;
-               kfree(this);
-               this = next;
-       }
-}
-
-
-static inline int raw_cmd_copyin(int cmd, char *param,
-                                struct floppy_raw_cmd **rcmd)
-{
-       struct floppy_raw_cmd *ptr;
-       struct old_floppy_raw_cmd old_raw_cmd;
-       int ret;
-       int i;
-       
-       *rcmd = 0;
-       while(1) {
-               ptr = (struct floppy_raw_cmd *) 
-                       kmalloc(sizeof(struct floppy_raw_cmd), GFP_USER);
-               if (!ptr)
-                       return -ENOMEM;
-               *rcmd = ptr;
-               if (cmd == OLDFDRAWCMD){
-                       COPYIN(old_raw_cmd);
-                       ptr->flags = old_raw_cmd.flags;
-                       ptr->data = old_raw_cmd.data;
-                       ptr->length = old_raw_cmd.length;
-                       ptr->rate = old_raw_cmd.rate;
-                       ptr->cmd_count = old_raw_cmd.cmd_count;
-                       ptr->track = old_raw_cmd.track;
-                       ptr->phys_length = 0;
-                       ptr->next = 0;
-                       ptr->buffer_length = 0;
-                       memcpy(ptr->cmd, old_raw_cmd.cmd, 9);
-                       param += sizeof(struct old_floppy_raw_cmd);
-                       if (ptr->cmd_count > 9)
-                               return -EINVAL;
-               } else {
-                       COPYIN(*ptr);
-                       ptr->next = 0;
-                       ptr->buffer_length = 0;
-                       param += sizeof(struct floppy_raw_cmd);
-                       if (ptr->cmd_count > 33)
-                               /* the command may now also take up the space
-                                * initially intended for the reply & the
-                                * reply count. Needed for long 82078 commands
-                                * such as RESTORE, which takes ... 17 command
-                                * bytes. Murphy's law #137: When you reserve
-                                * 16 bytes for a structure, you'll one day
-                                * discover that you really need 17...
-                                */
-                               return -EINVAL;
-               }
-
-               for (i=0; i< 16; i++)
-                       ptr->reply[i] = 0;
-               ptr->resultcode = 0;
-               ptr->kernel_data = 0;
-
-               if (ptr->flags & (FD_RAW_READ | FD_RAW_WRITE)) {
-                       if (ptr->length <= 0)
-                               return -EINVAL;
-                       ptr->kernel_data =(char*)fd_dma_mem_alloc(ptr->length);
-                       if (!ptr->kernel_data)
-                               return -ENOMEM;
-                       ptr->buffer_length = ptr->length;
-               }
-               if ( ptr->flags & FD_RAW_READ )
-                   ECALL( verify_area( VERIFY_WRITE, ptr->data, 
-                                       ptr->length ));
-               if (ptr->flags & FD_RAW_WRITE)
-                       ECALL(fd_copyin(ptr->data, ptr->kernel_data, 
-                                       ptr->length));
-               rcmd = & (ptr->next);
-               if (!(ptr->flags & FD_RAW_MORE))
-                       return 0;
-               ptr->rate &= 0x43;
-       }
-}
-
-
-static int raw_cmd_ioctl(int cmd, void *param)
-{
-       int drive, ret, ret2;
-       struct floppy_raw_cmd *my_raw_cmd;
-
-       if (FDCS->rawcmd <= 1)
-               FDCS->rawcmd = 1;
-       for (drive= 0; drive < N_DRIVE; drive++){
-               if (FDC(drive) != fdc)
-                       continue;
-               if (drive == current_drive){
-                       if (UDRS->fd_ref > 1){
-                               FDCS->rawcmd = 2;
-                               break;
-                       }
-               } else if (UDRS->fd_ref){
-                       FDCS->rawcmd = 2;
-                       break;
-               }
-       }
-
-       if (FDCS->reset)
-               return -EIO;
-
-       ret = raw_cmd_copyin(cmd, param, &my_raw_cmd);
-       if (ret) {
-               raw_cmd_free(&my_raw_cmd);
-               return ret;
-       }
-
-       raw_cmd = my_raw_cmd;
-       cont = &raw_cmd_cont;
-       ret=wait_til_done(floppy_start,1);
-#ifdef DCL_DEBUG
-       if (DP->flags & FD_DEBUG){
-               DPRINT("calling disk change from raw_cmd ioctl\n");
-       }
-#endif
-
-       if (ret != -EINTR && FDCS->reset)
-               ret = -EIO;
-
-       DRS->track = NO_TRACK;
-
-       ret2 = raw_cmd_copyout(cmd, param, my_raw_cmd);
-       if (!ret)
-               ret = ret2;
-       raw_cmd_free(&my_raw_cmd);
-       return ret;
-}
-
-static int invalidate_drive(kdev_t rdev)
-{
-       /* invalidate the buffer track to force a reread */
-       set_bit(DRIVE(rdev), &fake_change);
-       process_fd_request();
-       check_disk_change(rdev);
-       return 0;
-}
-
-
-static inline void clear_write_error(int drive)
-{
-       CLEARSTRUCT(UDRWE);
-}
-
-static inline int set_geometry(unsigned int cmd, struct floppy_struct *g,
-                              int drive, int type, kdev_t device)
-{
-       int cnt;
-
-       /* sanity checking for parameters.*/
-       if (g->sect <= 0 ||
-           g->head <= 0 ||
-           g->track <= 0 ||
-           g->track > UDP->tracks>>STRETCH(g) ||
-           /* check if reserved bits are set */
-           (g->stretch&~(FD_STRETCH|FD_SWAPSIDES)) != 0)
-               return -EINVAL;
-       if (type){
-               if (!suser())
-                       return -EPERM;
-               LOCK_FDC(drive,1);
-               for (cnt = 0; cnt < N_DRIVE; cnt++){
-                       if (ITYPE(drive_state[cnt].fd_device) == type &&
-                           drive_state[cnt].fd_ref)
-                               set_bit(drive, &fake_change);
-               }
-               floppy_type[type] = *g;
-               floppy_type[type].name="user format";
-               for (cnt = type << 2; cnt < (type << 2) + 4; cnt++)
-                       floppy_sizes[cnt]= floppy_sizes[cnt+0x80]=
-                               floppy_type[type].size>>1;
-               process_fd_request();
-               for (cnt = 0; cnt < N_DRIVE; cnt++){
-                       if (ITYPE(drive_state[cnt].fd_device) == type &&
-                           drive_state[cnt].fd_ref)
-                               check_disk_change(
-                                       MKDEV(FLOPPY_MAJOR,
-                                             drive_state[cnt].fd_device));
-               }
-       } else {
-               LOCK_FDC(drive,1);
-               if (cmd != FDDEFPRM)
-                       /* notice a disk change immediately, else
-                        * we loose our settings immediately*/
-                       CALL(poll_drive(1, FD_RAW_NEED_DISK));
-               user_params[drive] = *g;
-               if (buffer_drive == drive)
-                       SUPBOUND(buffer_max, user_params[drive].sect);
-               current_type[drive] = &user_params[drive];
-               floppy_sizes[drive] = user_params[drive].size >> 1;
-               if (cmd == FDDEFPRM)
-                       DRS->keep_data = -1;
-               else
-                       DRS->keep_data = 1;
-               /* invalidation. Invalidate only when needed, i.e.
-                * when there are already sectors in the buffer cache
-                * whose number will change. This is useful, because
-                * mtools often changes the geometry of the disk after
-                * looking at the boot block */
-               if (DRS->maxblock > user_params[drive].sect || DRS->maxtrack)
-                       invalidate_drive(device);
-               else
-                       process_fd_request();
-       }
-       return 0;
-}
-
-/* handle obsolete ioctl's */
-static struct translation_entry {
-    int newcmd;
-    int oldcmd;
-    int oldsize; /* size of 0x00xx-style ioctl. Reflects old structures, thus
-                 * use numeric values. NO SIZEOFS */
-} translation_table[]= {
-    {FDCLRPRM,          0,  0},
-    {FDSETPRM,          1, 28},
-    {FDDEFPRM,          2, 28},
-    {FDGETPRM,          3, 28},
-    {FDMSGON,           4,  0},
-    {FDMSGOFF,          5,  0},
-    {FDFMTBEG,          6,  0},
-    {FDFMTTRK,          7, 12},
-    {FDFMTEND,          8,  0},
-    {FDSETEMSGTRESH,   10,  0},
-    {FDFLUSH,          11,  0},
-    {FDSETMAXERRS,     12, 20},
-    {OLDFDRAWCMD,              30,  0},
-    {FDGETMAXERRS,     14, 20},
-    {FDGETDRVTYP,      16, 16},
-    {FDSETDRVPRM,      20, 88},
-    {FDGETDRVPRM,      21, 88},
-    {FDGETDRVSTAT,     22, 52},
-    {FDPOLLDRVSTAT,    23, 52},
-    {FDRESET,          24,  0},
-    {FDGETFDCSTAT,     25, 40},
-    {FDWERRORCLR,      27,  0},
-    {FDWERRORGET,      28, 24},
-    {FDRAWCMD,          0,  0},
-    {FDEJECT,           0,  0},
-    {FDTWADDLE,                40,  0} };
-
-static inline int normalize_0x02xx_ioctl(int *cmd, int *size)
-{
-       int i;
-
-       for (i=0; i < ARRAY_SIZE(translation_table); i++) {
-               if ((*cmd & 0xffff) == (translation_table[i].newcmd & 0xffff)){
-                       *size = _IOC_SIZE(*cmd);
-                       *cmd = translation_table[i].newcmd;
-                       if (*size > _IOC_SIZE(*cmd)) {
-                               printk("ioctl not yet supported\n");
-                               return -EFAULT;
-                       }
-                       return 0;
-               }
-       }
-       return -EINVAL;
-}
-
-static inline int xlate_0x00xx_ioctl(int *cmd, int *size)
-{
-       int i;
-       /* old ioctls' for kernels <= 1.3.33 */
-       /* When the next even release will come around, we'll start
-        * warning against these.
-        * When the next odd release will come around, we'll fail with
-        * -EINVAL */
-       if(strcmp(system_utsname.version, "1.4.0") >= 0)
-               printk("obsolete floppy ioctl %x\n", *cmd);
-       if((system_utsname.version[0] == '1' &&
-           strcmp(system_utsname.version, "1.5.0") >= 0) ||
-          (system_utsname.version[0] >= '2' &&
-           strcmp(system_utsname.version, "2.1.0") >= 0))
-               return -EINVAL;
-       for (i=0; i < ARRAY_SIZE(translation_table); i++) {
-               if (*cmd == translation_table[i].oldcmd) {
-                       *size = translation_table[i].oldsize;
-                       *cmd = translation_table[i].newcmd;
-                       return 0;
-               }
-       }
-       return -EINVAL;
-}
-
-static int fd_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
-                   unsigned long param)
-{
-#define IOCTL_MODE_BIT 8
-#define OPEN_WRITE_BIT 16
-#define IOCTL_ALLOWED (filp && (filp->f_mode & IOCTL_MODE_BIT))
-#define OUT(c,x) case c: outparam = (const char *) (x); break
-#define IN(c,x,tag) case c: *(x) = inparam. tag ; return 0
-
-       int i,drive,type;
-       kdev_t device;
-       int ret;
-       int size;
-       union inparam {
-               struct floppy_struct g; /* geometry */
-               struct format_descr f;
-               struct floppy_max_errors max_errors;
-               struct floppy_drive_params dp;
-       } inparam; /* parameters coming from user space */
-       const char *outparam; /* parameters passed back to user space */
-
-       device = inode->i_rdev;
-       switch (cmd) {
-               RO_IOCTLS(device,param);
-       }
-       type = TYPE(device);
-       drive = DRIVE(device);
-
-       /* convert compatibility eject ioctls into floppy eject ioctl.
-        * We do this in order to provide a means to eject floppy disks before
-        * installing the new fdutils package */
-       if(cmd == CDROMEJECT || /* CD-ROM eject */
-          cmd == 0x6470 /* SunOS floppy eject */) {
-               DPRINT("obsolete eject ioctl\n");
-               DPRINT("please use floppycontrol --eject\n");
-               cmd = FDEJECT;
-       }
-
-       /* convert the old style command into a new style command */
-       if ((cmd & 0xff00) == 0x0200) {
-               ECALL(normalize_0x02xx_ioctl(&cmd, &size));
-       } else if ((cmd & 0xff00) == 0x0000) {
-               ECALL(xlate_0x00xx_ioctl(&cmd, &size));
-       } else
-               return -EINVAL;
-
-       /* permission checks */
-       if (((cmd & 0x80) && !suser()) ||
-            ((cmd & 0x40) && !IOCTL_ALLOWED))
-               return -EPERM;
-
-       /* verify writability of result, and fail early */
-       if (_IOC_DIR(cmd) & _IOC_READ)
-               ECALL(verify_area(VERIFY_WRITE,(void *) param, size));
-               
-       /* copyin */
-       CLEARSTRUCT(&inparam);
-       if (_IOC_DIR(cmd) & _IOC_WRITE)
-               ECALL(fd_copyin((void *)param, &inparam, size))
-
-       switch (cmd) {
-               case FDEJECT:
-                       if(UDRS->fd_ref != 1)
-                               /* somebody else has this drive open */
-                               return -EBUSY;
-                       LOCK_FDC(drive,1);
-
-                       /* do the actual eject. Fails on
-                        * non-Sparc architectures */
-                       ret=fd_eject(UNIT(drive));
-
-                       USETF(FD_DISK_CHANGED);
-                       USETF(FD_VERIFY);
-                       process_fd_request();
-                       return ret;                     
-               case FDCLRPRM:
-                       LOCK_FDC(drive,1);
-                       current_type[drive] = NULL;
-                       floppy_sizes[drive] = MAX_DISK_SIZE;
-                       UDRS->keep_data = 0;
-                       return invalidate_drive(device);
-               case FDSETPRM:
-               case FDDEFPRM:
-                       return set_geometry(cmd, & inparam.g,
-                                           drive, type, device);
-               case FDGETPRM:
-                       LOCK_FDC(drive,1);
-                       CALL(poll_drive(1,0));
-                       process_fd_request();
-                       if (type)
-                               outparam = (char *) &floppy_type[type];
-                       else 
-                               outparam = (char *) current_type[drive];
-                       if(!outparam)
-                               return -ENODEV;
-                       break;
-
-               case FDMSGON:
-                       UDP->flags |= FTD_MSG;
-                       return 0;
-               case FDMSGOFF:
-                       UDP->flags &= ~FTD_MSG;
-                       return 0;
-
-               case FDFMTBEG:
-                       LOCK_FDC(drive,1);
-                       CALL(poll_drive(1, FD_RAW_NEED_DISK));
-                       ret = UDRS->flags;
-                       process_fd_request();
-                       if(ret & FD_VERIFY)
-                               return -ENODEV;
-                       if(!(ret & FD_DISK_WRITABLE))
-                               return -EROFS;
-                       return 0;
-               case FDFMTTRK:
-                       if (UDRS->fd_ref != 1)
-                               return -EBUSY;
-                       return do_format(device, &inparam.f);
-               case FDFMTEND:
-               case FDFLUSH:
-                       LOCK_FDC(drive,1);
-                       return invalidate_drive(device);
-
-               case FDSETEMSGTRESH:
-                       UDP->max_errors.reporting =
-                               (unsigned short) (param & 0x0f);
-                       return 0;
-               OUT(FDGETMAXERRS, &UDP->max_errors);
-               IN(FDSETMAXERRS, &UDP->max_errors, max_errors);
-
-               case FDGETDRVTYP:
-                       outparam = drive_name(type,drive);
-                       SUPBOUND(size,strlen(outparam)+1);
-                       break;
-
-               IN(FDSETDRVPRM, UDP, dp);
-               OUT(FDGETDRVPRM, UDP);
-
-               case FDPOLLDRVSTAT:
-                       LOCK_FDC(drive,1);
-                       CALL(poll_drive(1, FD_RAW_NEED_DISK));
-                       process_fd_request();
-                       /* fall through */
-               OUT(FDGETDRVSTAT, UDRS);
-
-               case FDRESET:
-                       return user_reset_fdc(drive, (int)param, 1);
-
-               OUT(FDGETFDCSTAT,UFDCS);
-
-               case FDWERRORCLR:
-                       CLEARSTRUCT(UDRWE);
-                       return 0;
-               OUT(FDWERRORGET,UDRWE);
-
-               case OLDFDRAWCMD:
-               case FDRAWCMD:
-                       if (type)
-                               return -EINVAL;
-                       LOCK_FDC(drive,1);
-                       set_floppy(device);
-                       CALL(i = raw_cmd_ioctl(cmd,(void *) param));
-                       process_fd_request();
-                       return i;
-
-               case FDTWADDLE:
-                       LOCK_FDC(drive,1);
-                       twaddle();
-                       process_fd_request();
-                       return 0;
-
-               default:
-                       return -EINVAL;
-       }
-
-       if (_IOC_DIR(cmd) & _IOC_READ)
-               return fd_copyout((void *)param, outparam, size);
-       else
-               return 0;
-#undef IOCTL_ALLOWED
-#undef OUT
-#undef IN
-}
-
-static void config_types(void)
-{
-       int first=1;
-       int drive;
-
-       /* read drive info out of physical CMOS */
-       drive=0;
-       if (!UDP->cmos)
-               UDP->cmos= FLOPPY0_TYPE;
-       drive=1;
-       if (!UDP->cmos && FLOPPY1_TYPE)
-               UDP->cmos = FLOPPY1_TYPE;
-
-       /* XXX */
-       /* additional physical CMOS drive detection should go here */
-
-       for (drive=0; drive < N_DRIVE; drive++){
-               if (UDP->cmos >= 16)
-                       UDP->cmos = 0;
-               if (UDP->cmos >= 0 && UDP->cmos <= NUMBER(default_drive_params))
-                       memcpy((char *) UDP,
-                              (char *) 
(&default_drive_params[(int)UDP->cmos].params),
-                              sizeof(struct floppy_drive_params));
-               if (UDP->cmos){
-                       if (first)
-                               printk(KERN_INFO "Floppy drive(s): ");
-                       else
-                               printk(", ");
-                       first=0;
-                       if (UDP->cmos > 0){
-                               allowed_drive_mask |= 1 << drive;
-                               printk("fd%d is %s", drive,
-                                      
default_drive_params[(int)UDP->cmos].name);
-                       } else
-                               printk("fd%d is unknown type %d",drive,
-                                      UDP->cmos);
-               }
-       }
-       if (!first)
-               printk("\n");
-}
-
-static int floppy_read(struct inode * inode, struct file * filp,
-                      char * buf, int count)
-{
-       int drive = DRIVE(inode->i_rdev);
-
-       check_disk_change(inode->i_rdev);
-       if (UTESTF(FD_DISK_CHANGED))
-               return -ENXIO;
-       return block_read(inode, filp, buf, count);
-}
-
-static int floppy_write(struct inode * inode, struct file * filp,
-                       const char * buf, int count)
-{
-       int block;
-       int ret;
-       int drive = DRIVE(inode->i_rdev);
-
-       if (!UDRS->maxblock)
-               UDRS->maxblock=1;/* make change detectable */
-       check_disk_change(inode->i_rdev);
-       if (UTESTF(FD_DISK_CHANGED))
-               return -ENXIO;
-       if (!UTESTF(FD_DISK_WRITABLE))
-               return -EROFS;
-       block = (filp->f_pos + count) >> 9;
-       INFBOUND(UDRS->maxblock, block);
-       ret= block_write(inode, filp, buf, count);
-       return ret;
-}
-
-static void floppy_release(struct inode * inode, struct file * filp)
-{
-       int drive;
-
-       drive = DRIVE(inode->i_rdev);
-
-       if (!filp || (filp->f_mode & (2 | OPEN_WRITE_BIT)))
-               /* if the file is mounted OR (writable now AND writable at
-                * open time) Linus: Does this cover all cases? */
-               block_fsync(inode,filp);
-
-       if (UDRS->fd_ref < 0)
-               UDRS->fd_ref=0;
-       else if (!UDRS->fd_ref--) {
-               DPRINT("floppy_release with fd_ref == 0");
-               UDRS->fd_ref = 0;
-       }
-       floppy_release_irq_and_dma();
-}
-
-/*
- * floppy_open check for aliasing (/dev/fd0 can be the same as
- * /dev/PS0 etc), and disallows simultaneous access to the same
- * drive with different device numbers.
- */
-#define RETERR(x) do{floppy_release(inode,filp); return -(x);}while(0)
-
-static int floppy_open(struct inode * inode, struct file * filp)
-{
-       int drive;
-       int old_dev;
-       int try;
-       char *tmp;
-
-       if (!filp) {
-               DPRINT("Weird, open called with filp=0\n");
-               return -EIO;
-       }
-
-       drive = DRIVE(inode->i_rdev);
-       if (drive >= N_DRIVE ||
-           !(allowed_drive_mask & (1 << drive)) ||
-           fdc_state[FDC(drive)].version == FDC_NONE)
-               return -ENXIO;
-
-       if (TYPE(inode->i_rdev) >= NUMBER(floppy_type))
-               return -ENXIO;
-       old_dev = UDRS->fd_device;
-       if (UDRS->fd_ref && old_dev != MINOR(inode->i_rdev))
-               return -EBUSY;
-
-       if (!UDRS->fd_ref && (UDP->flags & FD_BROKEN_DCL)){
-               USETF(FD_DISK_CHANGED);
-               USETF(FD_VERIFY);
-       }
-
-       if (UDRS->fd_ref == -1 ||
-          (UDRS->fd_ref && (filp->f_flags & O_EXCL)))
-               return -EBUSY;
-
-       if (floppy_grab_irq_and_dma())
-               return -EBUSY;
-
-       if (filp->f_flags & O_EXCL)
-               UDRS->fd_ref = -1;
-       else
-               UDRS->fd_ref++;
-
-       if (!floppy_track_buffer){
-               /* if opening an ED drive, reserve a big buffer,
-                * else reserve a small one */
-               if ((UDP->cmos == 6) || (UDP->cmos == 5))
-                       try = 64; /* Only 48 actually useful */
-               else
-                       try = 32; /* Only 24 actually useful */
-
-               tmp=(char *)fd_dma_mem_alloc(1024 * try);
-               if (!tmp) {
-                       try >>= 1; /* buffer only one side */
-                       INFBOUND(try, 16);
-                       tmp= (char *)fd_dma_mem_alloc(1024*try);
-               }
-               if (!tmp) {
-                       DPRINT("Unable to allocate DMA memory\n");
-                       RETERR(ENXIO);
-               }
-               if (floppy_track_buffer)
-                       fd_dma_mem_free((unsigned long)tmp,try*1024);
-               else {
-                       buffer_min = buffer_max = -1;
-                       floppy_track_buffer = tmp;
-                       max_buffer_sectors = try;
-               }
-       }
-
-       UDRS->fd_device = MINOR(inode->i_rdev);
-       if (old_dev != -1 && old_dev != MINOR(inode->i_rdev)) {
-               if (buffer_drive == drive)
-                       buffer_track = -1;
-               invalidate_buffers(MKDEV(FLOPPY_MAJOR,old_dev));
-       }
-
-       /* Allow ioctls if we have write-permissions even if read-only open */
-       if ((filp->f_mode & 2) || (permission(inode,2) == 0))
-               filp->f_mode |= IOCTL_MODE_BIT;
-       if (filp->f_mode & 2)
-               filp->f_mode |= OPEN_WRITE_BIT;
-
-       if (UFDCS->rawcmd == 1)
-               UFDCS->rawcmd = 2;
-
-       if (filp->f_flags & O_NDELAY)
-               return 0;
-       if (filp->f_mode & 3) {
-               UDRS->last_checked = 0;
-               check_disk_change(inode->i_rdev);
-               if (UTESTF(FD_DISK_CHANGED))
-                       RETERR(ENXIO);
-       }
-       if ((filp->f_mode & 2) && !(UTESTF(FD_DISK_WRITABLE)))
-               RETERR(EROFS);
-       return 0;
-#undef RETERR
-}
-
-/*
- * Check if the disk has been changed or if a change has been faked.
- */
-static int check_floppy_change(kdev_t dev)
-{
-       int drive = DRIVE(dev);
-
-       if (MAJOR(dev) != MAJOR_NR) {
-               DPRINT("check_floppy_change: not a floppy\n");
-               return 0;
-       }
-
-       if (UTESTF(FD_DISK_CHANGED) || UTESTF(FD_VERIFY))
-               return 1;
-
-       if (UDP->checkfreq < jiffies - UDRS->last_checked){
-               lock_fdc(drive,0);
-               poll_drive(0,0);
-               process_fd_request();
-       }
-
-       if (UTESTF(FD_DISK_CHANGED) ||
-          UTESTF(FD_VERIFY) ||
-          test_bit(drive, &fake_change) ||
-          (!TYPE(dev) && !current_type[drive]))
-               return 1;
-       return 0;
-}
-
-/* revalidate the floppy disk, i.e. trigger format autodetection by reading
- * the bootblock (block 0). "Autodetection" is also needed to check whether
- * there is a disk in the drive at all... Thus we also do it for fixed
- * geometry formats */
-static int floppy_revalidate(kdev_t dev)
-{
-#define NO_GEOM (!current_type[drive] && !TYPE(dev))
-       struct buffer_head * bh;
-       int drive=DRIVE(dev);
-       int cf;
-
-       if (UTESTF(FD_DISK_CHANGED) ||
-          UTESTF(FD_VERIFY) ||
-          test_bit(drive, &fake_change) ||
-          NO_GEOM){
-               lock_fdc(drive,0);
-               cf = UTESTF(FD_DISK_CHANGED) || UTESTF(FD_VERIFY);
-               if (!(cf || test_bit(drive, &fake_change) || NO_GEOM)){
-                       process_fd_request(); /*already done by another thread*/
-                       return 0;
-               }
-               UDRS->maxblock = 0;
-               UDRS->maxtrack = 0;
-               if (buffer_drive == drive)
-                       buffer_track = -1;
-               clear_bit(drive, &fake_change);
-               UCLEARF(FD_DISK_CHANGED);
-               if (cf)
-                       UDRS->generation++;
-               if (NO_GEOM){
-                       /* auto-sensing */
-                       int size = floppy_blocksizes[MINOR(dev)];
-                       if (!size)
-                               size = 1024;
-                       if (!(bh = getblk(dev,0,size))){
-                               process_fd_request();
-                               return 1;
-                       }
-                       if (bh && !buffer_uptodate(bh))
-                               ll_rw_block(READ, 1, &bh);
-                       process_fd_request();
-                       wait_on_buffer(bh);
-                       brelse(bh);
-                       return 0;
-               }
-               if (cf)
-                       poll_drive(0, FD_RAW_NEED_DISK);
-               process_fd_request();
-       }
-       return 0;
-}
-
-static struct file_operations floppy_fops = {
-       NULL,                   /* lseek - default */
-       floppy_read,            /* read - general block-dev read */
-       floppy_write,           /* write - general block-dev write */
-       NULL,                   /* readdir - bad */
-       NULL,                   /* select */
-       fd_ioctl,               /* ioctl */
-       NULL,                   /* mmap */
-       floppy_open,            /* open */
-       floppy_release,         /* release */
-       block_fsync,            /* fsync */
-       NULL,                   /* fasync */
-       check_floppy_change,    /* media_change */
-       floppy_revalidate,      /* revalidate */
-};
-
-/*
- * Floppy Driver initialization
- * =============================
- */
-
-/* Determine the floppy disk controller type */
-/* This routine was written by David C. Niemi */
-static char get_fdc_version(void)
-{
-       int r;
-
-       output_byte(FD_DUMPREGS);       /* 82072 and better know DUMPREGS */
-       if (FDCS->reset)
-               return FDC_NONE;
-       if ((r = result()) <= 0x00)
-               return FDC_NONE;        /* No FDC present ??? */
-       if ((r==1) && (reply_buffer[0] == 0x80)){
-               printk(KERN_INFO "FDC %d is an 8272A\n",fdc);
-               return FDC_8272A;       /* 8272a/765 don't know DUMPREGS */
-       }
-       if (r != 10) {
-               printk("FDC %d init: DUMPREGS: unexpected return of %d 
bytes.\n",
-                      fdc, r);
-               return FDC_UNKNOWN;
-       }
-
-       if(!fdc_configure()) {
-               printk(KERN_INFO "FDC %d is an 82072\n",fdc);
-               return FDC_82072;       /* 82072 doesn't know CONFIGURE */
-       }
-
-       output_byte(FD_PERPENDICULAR);
-       if(need_more_output() == MORE_OUTPUT) {
-               output_byte(0);
-       } else {
-               printk(KERN_INFO "FDC %d is an 82072A\n", fdc);
-               return FDC_82072A;      /* 82072A as found on Sparcs. */
-       }
-
-       output_byte(FD_UNLOCK);
-       r = result();
-       if ((r == 1) && (reply_buffer[0] == 0x80)){
-               printk(KERN_INFO "FDC %d is a pre-1991 82077\n", fdc);
-               return FDC_82077_ORIG;  /* Pre-1991 82077, doesn't know 
-                                        * LOCK/UNLOCK */
-       }
-       if ((r != 1) || (reply_buffer[0] != 0x00)) {
-               printk("FDC %d init: UNLOCK: unexpected return of %d bytes.\n",
-                      fdc, r);
-               return FDC_UNKNOWN;
-       }
-       output_byte(FD_PARTID);
-       r = result();
-       if (r != 1) {
-               printk("FDC %d init: PARTID: unexpected return of %d bytes.\n",
-                      fdc, r);
-               return FDC_UNKNOWN;
-       }
-       if (reply_buffer[0] == 0x80) {
-               printk(KERN_INFO "FDC %d is a post-1991 82077\n",fdc);
-               return FDC_82077;       /* Revised 82077AA passes all the tests 
*/
-       }
-       switch (reply_buffer[0] >> 5) {
-               case 0x0:
-                       /* Either a 82078-1 or a 82078SL running at 5Volt */
-                       printk(KERN_INFO "FDC %d is an 82078.\n",fdc);
-                       return FDC_82078;
-               case 0x1:
-                       printk(KERN_INFO "FDC %d is a 44pin 82078\n",fdc);
-                       return FDC_82078;
-               case 0x2:
-                       printk(KERN_INFO "FDC %d is a S82078B\n", fdc);
-                       return FDC_S82078B;
-               case 0x3:
-                       printk(KERN_INFO "FDC %d is a National Semiconductor 
PC87306\n", fdc);
-                       return FDC_87306;
-               default:
-                       printk(KERN_INFO "FDC %d init: 82078 variant with 
unknown PARTID=%d.\n",
-                              fdc, reply_buffer[0] >> 5);
-                       return FDC_82078_UNKN;
-       }
-} /* get_fdc_version */
-
-/* lilo configuration */
-
-/* we make the invert_dcl function global. One day, somebody might
- * want to centralize all thinkpad related options into one lilo option,
- * there are just so many thinkpad related quirks! */
-void floppy_invert_dcl(int *ints,int param)
-{
-       int i;
-
-       for (i=0; i < ARRAY_SIZE(default_drive_params); i++){
-               if (param)
-                       default_drive_params[i].params.flags |= 0x80;
-               else
-                       default_drive_params[i].params.flags &= ~0x80;
-       }
-       DPRINT("Configuring drives for inverted dcl\n");
-}
-
-static void daring(int *ints,int param)
-{
-       int i;
-
-       for (i=0; i < ARRAY_SIZE(default_drive_params); i++){
-               if (param){
-                       default_drive_params[i].params.select_delay = 0;
-                       default_drive_params[i].params.flags |= 
FD_SILENT_DCL_CLEAR;
-               } else {
-                       default_drive_params[i].params.select_delay = 2*HZ/100;
-                       default_drive_params[i].params.flags &= 
~FD_SILENT_DCL_CLEAR;
-               }
-       }
-       DPRINT("Assuming %s floppy hardware\n", param ? "standard" : "broken");
-}
-
-static void set_cmos(int *ints, int dummy)
-{
-       int current_drive=0;
-
-       if (ints[0] != 2){
-               DPRINT("wrong number of parameter for cmos\n");
-               return;
-       }
-       current_drive = ints[1];
-       if (current_drive < 0 || current_drive >= 8){
-               DPRINT("bad drive for set_cmos\n");
-               return;
-       }
-       if (current_drive >= 4 && !FDC2)
-               FDC2 = 0x370;
-       if (ints[2] <= 0 || 
-           (ints[2] >= NUMBER(default_drive_params) && ints[2] != 16)){
-               DPRINT("bad cmos code %d\n", ints[2]);
-               return;
-       }
-       DP->cmos = ints[2];
-       DPRINT("setting cmos code to %d\n", ints[2]);
-}
-
-static struct param_table {
-       const char *name;
-       void (*fn)(int *ints, int param);
-       int *var;
-       int def_param;
-} config_params[]={
-       { "allowed_drive_mask", 0, &allowed_drive_mask, 0xff },
-       { "all_drives", 0, &allowed_drive_mask, 0xff },
-       { "asus_pci", 0, &allowed_drive_mask, 0x33 },
-
-       { "daring", daring, 0, 1},
-
-       { "two_fdc",  0, &FDC2, 0x370 },
-       { "one_fdc", 0, &FDC2, 0 },
-
-       { "thinkpad", floppy_invert_dcl, 0, 1 },
-
-       { "nodma", 0, &use_virtual_dma, 1 },
-       { "omnibook", 0, &use_virtual_dma, 1 },
-       { "dma", 0, &use_virtual_dma, 0 },
-
-       { "fifo_depth", 0, &fifo_depth, 0xa },
-       { "nofifo", 0, &no_fifo, 0x20 },
-       { "usefifo", 0, &no_fifo, 0 },
-
-       { "cmos", set_cmos, 0, 0 },
-
-       { "unexpected_interrupts", 0, &print_unex, 1 },
-       { "no_unexpected_interrupts", 0, &print_unex, 0 },
-       { "L40SX", 0, &print_unex, 0 } };
-
-#define FLOPPY_SETUP
-void floppy_setup(char *str, int *ints)
-{
-       int i;
-       int param;
-       if (str)
-               for (i=0; i< ARRAY_SIZE(config_params); i++){
-                       if (strcmp(str,config_params[i].name) == 0){
-                               if (ints[0])
-                                       param = ints[1];
-                               else
-                                       param = config_params[i].def_param;
-                               if(config_params[i].fn)
-                                       config_params[i].fn(ints,param);
-                               if(config_params[i].var) {
-                                       DPRINT("%s=%d\n", str, param);
-                                       *config_params[i].var = param;
-                               }
-                               return;
-                       }
-               }
-       if (str) {
-               DPRINT("unknown floppy option [%s]\n", str);
-               
-               DPRINT("allowed options are:");
-               for (i=0; i< ARRAY_SIZE(config_params); i++)
-                       printk(" %s",config_params[i].name);
-               printk("\n");
-       } else
-               DPRINT("botched floppy option\n");
-       DPRINT("Read linux/drivers/block/README.fd\n");
-}
-
-int floppy_init(void)
-{
-       int i,unit,drive;
-       int have_no_fdc= -EIO;
-
-       raw_cmd = 0;
-
-       if (register_blkdev(MAJOR_NR,"fd",&floppy_fops)) {
-               printk("Unable to get major %d for floppy\n",MAJOR_NR);
-               return -EBUSY;
-       }
-
-       for (i=0; i<256; i++)
-               if (ITYPE(i))
-                       floppy_sizes[i] = floppy_type[ITYPE(i)].size >> 1;
-               else
-                       floppy_sizes[i] = MAX_DISK_SIZE;
-
-       blk_size[MAJOR_NR] = floppy_sizes;
-       blksize_size[MAJOR_NR] = floppy_blocksizes;
-       blk_dev[MAJOR_NR].request_fn = DEVICE_REQUEST;
-       reschedule_timeout(MAXTIMEOUT, "floppy init", MAXTIMEOUT);
-       config_types();
-
-       for (i = 0; i < N_FDC; i++) {
-               fdc = i;
-               CLEARSTRUCT(FDCS);
-               FDCS->dtr = -1;
-               FDCS->dor = 0x4;
-#ifdef __sparc__
-               /*sparcs don't have a DOR reset which we can fall back on to*/
-               FDCS->version = FDC_82072A;
-#endif
-       }
-
-       fdc_state[0].address = FDC1;
-#if N_FDC > 1
-       fdc_state[1].address = FDC2;
-#endif
-
-       if (floppy_grab_irq_and_dma()){
-               del_timer(&fd_timeout);
-               blk_dev[MAJOR_NR].request_fn = NULL;
-               unregister_blkdev(MAJOR_NR,"fd");
-               return -EBUSY;
-       }
-
-       /* initialise drive state */
-       for (drive = 0; drive < N_DRIVE; drive++) {
-               CLEARSTRUCT(UDRS);
-               CLEARSTRUCT(UDRWE);
-               UDRS->flags = FD_VERIFY | FD_DISK_NEWCHANGE | FD_DISK_CHANGED;
-               UDRS->fd_device = -1;
-               floppy_track_buffer = NULL;
-               max_buffer_sectors = 0;
-       }
-
-       for (i = 0; i < N_FDC; i++) {
-               fdc = i;
-               FDCS->driver_version = FD_DRIVER_VERSION;
-               for (unit=0; unit<4; unit++)
-                       FDCS->track[unit] = 0;
-               if (FDCS->address == -1)
-                       continue;
-               FDCS->rawcmd = 2;
-               if (user_reset_fdc(-1,FD_RESET_ALWAYS,0)){
-                       FDCS->address = -1;
-                       FDCS->version = FDC_NONE;
-                       continue;
-               }
-               /* Try to determine the floppy controller type */
-               FDCS->version = get_fdc_version();
-               if (FDCS->version == FDC_NONE){
-                       FDCS->address = -1;
-                       continue;
-               }
-
-               request_region(FDCS->address, 6, "floppy");
-               request_region(FDCS->address+7, 1, "floppy DIR");
-               /* address + 6 is reserved, and may be taken by IDE.
-                * Unfortunately, Adaptec doesn't know this :-(, */
-
-               have_no_fdc = 0;
-               /* Not all FDCs seem to be able to handle the version command
-                * properly, so force a reset for the standard FDC clones,
-                * to avoid interrupt garbage.
-                */
-               user_reset_fdc(-1,FD_RESET_ALWAYS,0);
-       }
-       fdc=0;
-       del_timer(&fd_timeout);
-       current_drive = 0;
-       floppy_release_irq_and_dma();
-       initialising=0;
-       if (have_no_fdc) {
-               DPRINT("no floppy controllers found\n");
-               request_tq.routine = (void *)(void *) empty;
-               /*
-                *      When we return we may be unloaded. This little
-                *      trick forces the immediate_bh handler to have run
-                *      before we unload it, lest we cause bad things.
-                */
-               mark_bh(IMMEDIATE_BH);
-               schedule();
-               if (usage_count)
-                       floppy_release_irq_and_dma();
-               blk_dev[MAJOR_NR].request_fn = NULL;
-               unregister_blkdev(MAJOR_NR,"fd");
-       }
-       return have_no_fdc;
-}
-
-static int floppy_grab_irq_and_dma(void)
-{
-       int i;
-       unsigned long flags;
-
-       INT_OFF;
-       if (usage_count++){
-               INT_ON;
-               return 0;
-       }
-       INT_ON;
-       MOD_INC_USE_COUNT;
-       for (i=0; i< N_FDC; i++){
-               if (fdc_state[i].address != -1){
-                       fdc = i;
-                       reset_fdc_info(1);
-                       fd_outb(FDCS->dor, FD_DOR);
-               }
-       }
-       fdc = 0;
-       set_dor(0, ~0, 8);  /* avoid immediate interrupt */
-
-       if (fd_request_irq()) {
-               DPRINT("Unable to grab IRQ%d for the floppy driver\n",
-                       FLOPPY_IRQ);
-               MOD_DEC_USE_COUNT;
-               usage_count--;
-               return -1;
-       }
-       if (fd_request_dma()) {
-               DPRINT("Unable to grab DMA%d for the floppy driver\n",
-                       FLOPPY_DMA);
-               fd_free_irq();
-               MOD_DEC_USE_COUNT;
-               usage_count--;
-               return -1;
-       }
-       for (fdc = 0; fdc < N_FDC; fdc++)
-               if (FDCS->address != -1)
-                       fd_outb(FDCS->dor, FD_DOR);
-       fdc = 0;
-       fd_enable_irq();
-       irqdma_allocated=1;
-       return 0;
-}
-
-static void floppy_release_irq_and_dma(void)
-{
-#ifdef FLOPPY_SANITY_CHECK
-       int drive;
-#endif
-       long tmpsize;
-       unsigned long tmpaddr;
-       unsigned long flags;
-
-       INT_OFF;
-       if (--usage_count){
-               INT_ON;
-               return;
-       }
-       INT_ON;
-       if(irqdma_allocated)
-       {
-               fd_disable_dma();
-               fd_free_dma();
-               fd_disable_irq();
-               fd_free_irq();
-               irqdma_allocated=0;
-       }
-
-       set_dor(0, ~0, 8);
-#if N_FDC > 1
-       set_dor(1, ~8, 0);
-#endif
-       floppy_enable_hlt();
-
-       if (floppy_track_buffer && max_buffer_sectors) {
-               tmpsize = max_buffer_sectors*1024;
-               tmpaddr = (unsigned long)floppy_track_buffer;
-               floppy_track_buffer = 0;
-               max_buffer_sectors = 0;
-               buffer_min = buffer_max = -1;
-               fd_dma_mem_free(tmpaddr, tmpsize);
-       }
-
-#ifdef FLOPPY_SANITY_CHECK
-#ifndef __sparc__
-       for (drive=0; drive < N_FDC * 4; drive++)
-               if (motor_off_timer[drive].next)
-                       printk("motor off timer %d still active\n", drive);
-#endif
-
-       if (fd_timeout.next)
-               printk("floppy timer still active:%s\n", timeout_message);
-       if (fd_timer.next)
-               printk("auxiliary floppy timer still active\n");
-       if (floppy_tq.sync)
-               printk("task queue still active\n");
-#endif
-       MOD_DEC_USE_COUNT;
-}
-
-
-#ifdef MODULE
-
-char *floppy=NULL;
-
-static void parse_floppy_cfg_string(char *cfg)
-{
-       char *ptr;
-       int ints[11];
-
-       while(*cfg) {
-               for(ptr = cfg;*cfg && *cfg != ' ' && *cfg != '\t'; cfg++);
-               if(*cfg) {
-                       *cfg = '\0';
-                       cfg++;
-               }
-               if(*ptr)
-                       floppy_setup(get_options(ptr,ints),ints);
-       }
-}
-
-static void mod_setup(char *pattern, void (*setup)(char *, int *))
-{
-       unsigned long i;
-       char c;
-       int j;
-       int match;
-       char buffer[100];
-       int ints[11];
-       int length = strlen(pattern)+1;
-
-       match=0;
-       j=1;
-
-       for (i=current->mm->env_start; i< current->mm->env_end; i ++){
-               c= get_fs_byte(i);
-               if (match){
-                       if (j==99)
-                               c='\0';
-                       buffer[j] = c;
-                       if (!c || c == ' ' || c == '\t'){
-                               if (j){
-                                       buffer[j] = '\0';
-                                       setup(get_options(buffer,ints),ints);
-                               }
-                               j=0;
-                       } else
-                               j++;
-                       if (!c)
-                               break;
-                       continue;
-               }
-               if ((!j && !c) || (j && c == pattern[j-1]))
-                       j++;
-               else
-                       j=0;
-               if (j==length){
-                       match=1;
-                       j=0;
-               }
-       }
-}
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-int init_module(void)
-{
-       printk(KERN_INFO "inserting floppy driver for %s\n", kernel_version);
-               
-       if(floppy)
-               parse_floppy_cfg_string(floppy);
-       else
-               mod_setup("floppy=", floppy_setup);
-               
-       return floppy_init();
-}
-
-void cleanup_module(void)
-{
-       int fdc, dummy;
-               
-       for (fdc=0; fdc<2; fdc++)
-               if (FDCS->address != -1){
-                       release_region(FDCS->address, 6);
-                       release_region(FDCS->address+7, 1);
-       }
-               
-       unregister_blkdev(MAJOR_NR, "fd");
-
-       blk_dev[MAJOR_NR].request_fn = 0;
-       /* eject disk, if any */
-       dummy = fd_eject(0);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#else
-/* eject the boot floppy (if we need the drive for a different root floppy) */
-/* This should only be called at boot time when we're sure that there's no
- * resource contention. */
-void floppy_eject(void)
-{
-       int dummy;
-       if(floppy_grab_irq_and_dma()==0)
-       {
-               lock_fdc(MAXTIMEOUT,0);
-               dummy=fd_eject(0);
-               process_fd_request();
-               floppy_release_irq_and_dma();
-       }
-}
-#endif
diff --git a/linux/src/drivers/block/genhd.c b/linux/src/drivers/block/genhd.c
deleted file mode 100644
index ebee7ff..0000000
--- a/linux/src/drivers/block/genhd.c
+++ /dev/null
@@ -1,761 +0,0 @@
-/*
- *  Code extracted from
- *  linux/kernel/hd.c
- *
- *  Copyright (C) 1991, 1992  Linus Torvalds
- *
- *
- *  Thanks to Branko Lankester, address@hidden, who found a bug
- *  in the early extended-partition checks and added DM partitions
- *
- *  Support for DiskManager v6.0x added by Mark Lord,
- *  with information provided by OnTrack.  This now works for linux fdisk
- *  and LILO, as well as loadlin and bootln.  Note that disks other than
- *  /dev/hda *must* have a "DOS" type 0x51 partition in the first slot (hda1).
- *
- *  More flexible handling of extended partitions - aeb, 950831
- *
- *  Check partition table on IDE disks for common CHS translations
- */
-
-#include <linux/config.h>
-#include <linux/fs.h>
-#include <linux/genhd.h>
-#include <linux/kernel.h>
-#include <linux/major.h>
-#include <linux/string.h>
-#ifdef CONFIG_BLK_DEV_INITRD
-#include <linux/blk.h>
-#endif
-
-#include <asm/system.h>
-
-/*
- * Many architectures don't like unaligned accesses, which is
- * frequently the case with the nr_sects and start_sect partition
- * table entries.
- */
-#include <asm/unaligned.h>
-
-#define SYS_IND(p)     get_unaligned(&p->sys_ind)
-#define NR_SECTS(p)    get_unaligned(&p->nr_sects)
-#define START_SECT(p)  get_unaligned(&p->start_sect)
-
-
-struct gendisk *gendisk_head = NULL;
-
-static int current_minor = 0;
-extern int *blk_size[];
-extern void rd_load(void);
-extern void initrd_load(void);
-
-extern int chr_dev_init(void);
-extern int blk_dev_init(void);
-extern int scsi_dev_init(void);
-extern int net_dev_init(void);
-
-/*
- * disk_name() is used by genhd.c and md.c.
- * It formats the devicename of the indicated disk
- * into the supplied buffer, and returns a pointer
- * to that same buffer (for convenience).
- */
-char *disk_name (struct gendisk *hd, int minor, char *buf)
-{
-       unsigned int part;
-       const char *maj = hd->major_name;
-       char unit = (minor >> hd->minor_shift) + 'a';
-
-#ifdef CONFIG_BLK_DEV_IDE
-       /*
-        * IDE devices use multiple major numbers, but the drives
-        * are named as:  {hda,hdb}, {hdc,hdd}, {hde,hdf}, {hdg,hdh}..
-        * This requires special handling here.
-        */
-       switch (hd->major) {
-               case IDE3_MAJOR:
-                       unit += 2;
-               case IDE2_MAJOR:
-                       unit += 2;
-               case IDE1_MAJOR:
-                       unit += 2;
-               case IDE0_MAJOR:
-                       maj = "hd";
-       }
-#endif
-       part = minor & ((1 << hd->minor_shift) - 1);
-       if (part)
-               sprintf(buf, "%s%c%d", maj, unit, part);
-       else
-               sprintf(buf, "%s%c", maj, unit);
-       return buf;
-}
-
-static void add_partition (struct gendisk *hd, int minor, int start, int size)
-{
-       char buf[8];
-       hd->part[minor].start_sect = start;
-       hd->part[minor].nr_sects   = size;
-       printk(" %s", disk_name(hd, minor, buf));
-}
-
-static inline int is_extended_partition(struct partition *p)
-{
-       return (SYS_IND(p) == DOS_EXTENDED_PARTITION ||
-               SYS_IND(p) == WIN98_EXTENDED_PARTITION ||
-               SYS_IND(p) == LINUX_EXTENDED_PARTITION);
-}
-
-#ifdef CONFIG_MSDOS_PARTITION
-/*
- * Create devices for each logical partition in an extended partition.
- * The logical partitions form a linked list, with each entry being
- * a partition table with two entries.  The first entry
- * is the real data partition (with a start relative to the partition
- * table start).  The second is a pointer to the next logical partition
- * (with a start relative to the entire extended partition).
- * We do not create a Linux partition for the partition tables, but
- * only for the actual data partitions.
- */
-
-static void extended_partition(struct gendisk *hd, kdev_t dev)
-{
-       struct buffer_head *bh;
-       struct partition *p;
-       unsigned long first_sector, first_size, this_sector, this_size;
-       int mask = (1 << hd->minor_shift) - 1;
-       int i;
-
-       first_sector = hd->part[MINOR(dev)].start_sect;
-       first_size = hd->part[MINOR(dev)].nr_sects;
-       this_sector = first_sector;
-
-       while (1) {
-               if ((current_minor & mask) == 0)
-                       return;
-               if (!(bh = bread(dev,0,1024)))
-                       return;
-         /*
-          * This block is from a device that we're about to stomp on.
-          * So make sure nobody thinks this block is usable.
-          */
-               bh->b_state = 0;
-
-               if (*(unsigned short *) (bh->b_data+510) != 0xAA55)
-                       goto done;
-
-               p = (struct partition *) (0x1BE + bh->b_data);
-
-               this_size = hd->part[MINOR(dev)].nr_sects;
-
-               /*
-                * Usually, the first entry is the real data partition,
-                * the 2nd entry is the next extended partition, or empty,
-                * and the 3rd and 4th entries are unused.
-                * However, DRDOS sometimes has the extended partition as
-                * the first entry (when the data partition is empty),
-                * and OS/2 seems to use all four entries.
-                */
-
-               /* 
-                * First process the data partition(s)
-                */
-               for (i=0; i<4; i++, p++) {
-                   if (!NR_SECTS(p) || is_extended_partition(p))
-                     continue;
-
-                   /* Check the 3rd and 4th entries -
-                      these sometimes contain random garbage */
-                   if (i >= 2
-                       && START_SECT(p) + NR_SECTS(p) > this_size
-                       && (this_sector + START_SECT(p) < first_sector ||
-                           this_sector + START_SECT(p) + NR_SECTS(p) >
-                            first_sector + first_size))
-                     continue;
-
-                   add_partition(hd, current_minor, this_sector+START_SECT(p), 
NR_SECTS(p));
-                   current_minor++;
-                   if ((current_minor & mask) == 0)
-                     goto done;
-               }
-               /*
-                * Next, process the (first) extended partition, if present.
-                * (So far, there seems to be no reason to make
-                *  extended_partition()  recursive and allow a tree
-                *  of extended partitions.)
-                * It should be a link to the next logical partition.
-                * Create a minor for this just long enough to get the next
-                * partition table.  The minor will be reused for the next
-                * data partition.
-                */
-               p -= 4;
-               for (i=0; i<4; i++, p++)
-                 if(NR_SECTS(p) && is_extended_partition(p))
-                   break;
-               if (i == 4)
-                 goto done;     /* nothing left to do */
-
-               hd->part[current_minor].nr_sects = NR_SECTS(p);
-               hd->part[current_minor].start_sect = first_sector + 
START_SECT(p);
-               this_sector = first_sector + START_SECT(p);
-               dev = MKDEV(hd->major, current_minor);
-               brelse(bh);
-       }
-done:
-       brelse(bh);
-}
-
-#ifdef CONFIG_BSD_DISKLABEL
-/* 
- * Create devices for BSD partitions listed in a disklabel, under a
- * dos-like partition. See extended_partition() for more information.
- */
-static void bsd_disklabel_partition(struct gendisk *hd, kdev_t dev)
-{
-       struct buffer_head *bh;
-       struct bsd_disklabel *l;
-       struct bsd_partition *p;
-       int mask = (1 << hd->minor_shift) - 1;
-
-       if (!(bh = bread(dev,0,1024)))
-               return;
-       bh->b_state = 0;
-       l = (struct bsd_disklabel *) (bh->b_data+512);
-       if (l->d_magic != BSD_DISKMAGIC) {
-               brelse(bh);
-               return;
-       }
-
-       p = &l->d_partitions[0];
-       while (p - &l->d_partitions[0] <= BSD_MAXPARTITIONS) {
-               if ((current_minor & mask) >= (4 + hd->max_p))
-                       break;
-
-               if (p->p_fstype != BSD_FS_UNUSED) {
-                       add_partition(hd, current_minor, p->p_offset, 
p->p_size);
-                       current_minor++;
-               }
-               p++;
-       }
-       brelse(bh);
-
-}
-#endif
-
-static int msdos_partition(struct gendisk *hd, kdev_t dev, unsigned long 
first_sector)
-{
-       int i, minor = current_minor;
-       struct buffer_head *bh;
-       struct partition *p;
-       unsigned char *data;
-       int mask = (1 << hd->minor_shift) - 1;
-#ifdef CONFIG_BLK_DEV_IDE
-       int tested_for_xlate = 0;
-
-read_mbr:
-#endif
-       if (!(bh = bread(dev,0,1024))) {
-               printk(" unable to read partition table\n");
-               return -1;
-       }
-       data = bh->b_data;
-       /* In some cases we modify the geometry    */
-       /*  of the drive (below), so ensure that   */
-       /*  nobody else tries to re-use this data. */
-       bh->b_state = 0;
-#ifdef CONFIG_BLK_DEV_IDE
-check_table:
-#endif
-       if (*(unsigned short *)  (0x1fe + data) != 0xAA55) {
-               brelse(bh);
-               return 0;
-       }
-       p = (struct partition *) (0x1be + data);
-
-#ifdef CONFIG_BLK_DEV_IDE
-       if (!tested_for_xlate++) {      /* Do this only once per disk */
-               /*
-                * Look for various forms of IDE disk geometry translation
-                */
-               extern int ide_xlate_1024(kdev_t, int, const char *);
-               unsigned int sig = *(unsigned short *)(data + 2);
-               if (SYS_IND(p) == EZD_PARTITION) {
-                       /*
-                        * The remainder of the disk must be accessed using
-                        * a translated geometry that reduces the number of 
-                        * apparent cylinders to less than 1024 if possible.
-                        *
-                        * ide_xlate_1024() will take care of the necessary
-                        * adjustments to fool fdisk/LILO and partition check.
-                        */
-                       if (ide_xlate_1024(dev, -1, " [EZD]")) {
-                               data += 512;
-                               goto check_table;
-                       }
-               } else if (SYS_IND(p) == DM6_PARTITION) {
-
-                       /*
-                        * Everything on the disk is offset by 63 sectors,
-                        * including a "new" MBR with its own partition table,
-                        * and the remainder of the disk must be accessed using
-                        * a translated geometry that reduces the number of 
-                        * apparent cylinders to less than 1024 if possible.
-                        *
-                        * ide_xlate_1024() will take care of the necessary
-                        * adjustments to fool fdisk/LILO and partition check.
-                        */
-                       if (ide_xlate_1024(dev, 1, " [DM6:DDO]")) {
-                               brelse(bh);
-                               goto read_mbr;  /* start over with new MBR */
-                       }
-               } else if (sig <= 0x1ae && *(unsigned short *)(data + sig) == 
0x55AA
-                        && (1 & *(unsigned char *)(data + sig + 2)) ) 
-               {
-                       /*
-                        * DM6 signature in MBR, courtesy of OnTrack
-                        */
-                       (void) ide_xlate_1024 (dev, 0, " [DM6:MBR]");
-               } else if (SYS_IND(p) == DM6_AUX1PARTITION || SYS_IND(p) == 
DM6_AUX3PARTITION) {
-                       /*
-                        * DM6 on other than the first (boot) drive
-                        */
-                       (void) ide_xlate_1024(dev, 0, " [DM6:AUX]");
-               } else {
-                       /*
-                        * Examine the partition table for common translations.
-                        * This is necessary for drives for situations where
-                        * the translated geometry is unavailable from the BIOS.
-                        */
-                       for (i = 0; i < 4 ; i++) {
-                               struct partition *q = &p[i];
-                               if (NR_SECTS(q)
-                                  && (q->sector & 63) == 1
-                                  && (q->end_sector & 63) == 63) {
-                                       unsigned int heads = q->end_head + 1;
-                                       if (heads == 32 || heads == 64 || heads 
== 128 || heads == 255) {
-
-                                               (void) ide_xlate_1024(dev, 
heads, " [PTBL]");
-                                               break;
-                                       }
-                               }
-                       }
-               }
-       }
-#endif /* CONFIG_BLK_DEV_IDE */
-
-       current_minor += 4;  /* first "extra" minor (for extended partitions) */
-       for (i=1 ; i<=4 ; minor++,i++,p++) {
-               if (!NR_SECTS(p))
-                       continue;
-               add_partition(hd, minor, first_sector+START_SECT(p), 
NR_SECTS(p));
-               if (is_extended_partition(p)) {
-                       printk(" <");
-                       /*
-                        * If we are rereading the partition table, we need
-                        * to set the size of the partition so that we will
-                        * be able to bread the block containing the extended
-                        * partition info.
-                        */
-                       hd->sizes[minor] = hd->part[minor].nr_sects 
-                               >> (BLOCK_SIZE_BITS - 9);
-                       extended_partition(hd, MKDEV(hd->major, minor));
-                       printk(" >");
-                       /* prevent someone doing mkfs or mkswap on an
-                          extended partition, but leave room for LILO */
-                       if (hd->part[minor].nr_sects > 2)
-                               hd->part[minor].nr_sects = 2;
-               }
-#ifdef CONFIG_BSD_DISKLABEL
-               if (SYS_IND(p) == BSD_PARTITION) {
-                       printk(" <");
-                       bsd_disklabel_partition(hd, MKDEV(hd->major, minor));
-                       printk(" >");
-               }
-#endif
-       }
-       /*
-        *  Check for old-style Disk Manager partition table
-        */
-       if (*(unsigned short *) (data+0xfc) == 0x55AA) {
-               p = (struct partition *) (0x1be + data);
-               for (i = 4 ; i < 16 ; i++, current_minor++) {
-                       p--;
-                       if ((current_minor & mask) == 0)
-                               break;
-                       if (!(START_SECT(p) && NR_SECTS(p)))
-                               continue;
-                       add_partition(hd, current_minor, START_SECT(p), 
NR_SECTS(p));
-               }
-       }
-       printk("\n");
-       brelse(bh);
-       return 1;
-}
-
-#endif /* CONFIG_MSDOS_PARTITION */
-
-#ifdef CONFIG_OSF_PARTITION
-
-static int osf_partition(struct gendisk *hd, unsigned int dev, unsigned long 
first_sector)
-{
-       int i;
-       int mask = (1 << hd->minor_shift) - 1;
-       struct buffer_head *bh;
-       struct disklabel {
-               u32 d_magic;
-               u16 d_type,d_subtype;
-               u8 d_typename[16];
-               u8 d_packname[16];
-               u32 d_secsize;
-               u32 d_nsectors;
-               u32 d_ntracks;
-               u32 d_ncylinders;
-               u32 d_secpercyl;
-               u32 d_secprtunit;
-               u16 d_sparespertrack;
-               u16 d_sparespercyl;
-               u32 d_acylinders;
-               u16 d_rpm, d_interleave, d_trackskew, d_cylskew;
-               u32 d_headswitch, d_trkseek, d_flags;
-               u32 d_drivedata[5];
-               u32 d_spare[5];
-               u32 d_magic2;
-               u16 d_checksum;
-               u16 d_npartitions;
-               u32 d_bbsize, d_sbsize;
-               struct d_partition {
-                       u32 p_size;
-                       u32 p_offset;
-                       u32 p_fsize;
-                       u8  p_fstype;
-                       u8  p_frag;
-                       u16 p_cpg;
-               } d_partitions[8];
-       } * label;
-       struct d_partition * partition;
-#define DISKLABELMAGIC (0x82564557UL)
-
-       if (!(bh = bread(dev,0,1024))) {
-               printk("unable to read partition table\n");
-               return -1;
-       }
-       label = (struct disklabel *) (bh->b_data+64);
-       partition = label->d_partitions;
-       if (label->d_magic != DISKLABELMAGIC) {
-               printk("magic: %08x\n", label->d_magic);
-               brelse(bh);
-               return 0;
-       }
-       if (label->d_magic2 != DISKLABELMAGIC) {
-               printk("magic2: %08x\n", label->d_magic2);
-               brelse(bh);
-               return 0;
-       }
-       for (i = 0 ; i < label->d_npartitions; i++, partition++) {
-               if ((current_minor & mask) == 0)
-                       break;
-               if (partition->p_size)
-                       add_partition(hd, current_minor,
-                               first_sector+partition->p_offset,
-                               partition->p_size);
-               current_minor++;
-       }
-       printk("\n");
-       brelse(bh);
-       return 1;
-}
-
-#endif /* CONFIG_OSF_PARTITION */
-
-#ifdef CONFIG_SUN_PARTITION
-
-static int sun_partition(struct gendisk *hd, kdev_t dev, unsigned long 
first_sector)
-{
-       int i, csum;
-       unsigned short *ush;
-       struct buffer_head *bh;
-       struct sun_disklabel {
-               unsigned char info[128];   /* Informative text string */
-               unsigned char spare[292];  /* Boot information etc. */
-               unsigned short rspeed;     /* Disk rotational speed */
-               unsigned short pcylcount;  /* Physical cylinder count */
-               unsigned short sparecyl;   /* extra sects per cylinder */
-               unsigned char spare2[4];   /* More magic... */
-               unsigned short ilfact;     /* Interleave factor */
-               unsigned short ncyl;       /* Data cylinder count */
-               unsigned short nacyl;      /* Alt. cylinder count */
-               unsigned short ntrks;      /* Tracks per cylinder */
-               unsigned short nsect;      /* Sectors per track */
-               unsigned char spare3[4];   /* Even more magic... */
-               struct sun_partition {
-                       __u32 start_cylinder;
-                       __u32 num_sectors;
-               } partitions[8];
-               unsigned short magic;      /* Magic number */
-               unsigned short csum;       /* Label xor'd checksum */
-       } * label;              
-       struct sun_partition *p;
-       int other_endian;
-       unsigned long spc;
-#define SUN_LABEL_MAGIC          0xDABE
-#define SUN_LABEL_MAGIC_SWAPPED  0xBEDA
-/* No need to optimize these macros since they are called only when reading
- * the partition table. This occurs only at each disk change. */
-#define SWAP16(x)  (other_endian ? (((__u16)(x) & 0xFF) << 8) \
-                                | (((__u16)(x) & 0xFF00) >> 8) \
-                                : (__u16)(x))
-#define SWAP32(x)  (other_endian ? (((__u32)(x) & 0xFF) << 24) \
-                                | (((__u32)(x) & 0xFF00) << 8) \
-                                | (((__u32)(x) & 0xFF0000) >> 8) \
-                                | (((__u32)(x) & 0xFF000000) >> 24) \
-                                : (__u32)(x))
-
-       if(!(bh = bread(dev, 0, 1024))) {
-               printk("Dev %s: unable to read partition table\n",
-                      kdevname(dev));
-               return -1;
-       }
-       label = (struct sun_disklabel *) bh->b_data;
-       p = label->partitions;
-       if (label->magic != SUN_LABEL_MAGIC && label->magic != 
SUN_LABEL_MAGIC_SWAPPED) {
-               printk("Dev %s Sun disklabel: bad magic %04x\n",
-                      kdevname(dev), label->magic);
-               brelse(bh);
-               return 0;
-       }
-       other_endian = (label->magic == SUN_LABEL_MAGIC_SWAPPED);
-       /* Look at the checksum */
-       ush = ((unsigned short *) (label+1)) - 1;
-       for(csum = 0; ush >= ((unsigned short *) label);)
-               csum ^= *ush--;
-       if(csum) {
-               printk("Dev %s Sun disklabel: Csum bad, label corrupted\n",
-                      kdevname(dev));
-               brelse(bh);
-               return 0;
-       }
-       /* All Sun disks have 8 partition entries */
-       spc = SWAP16(label->ntrks) * SWAP16(label->nsect);
-       for(i=0; i < 8; i++, p++) {
-               unsigned long st_sector;
-
-               /* We register all partitions, even if zero size, so that
-                * the minor numbers end up ok as per SunOS interpretation.
-                */
-               st_sector = first_sector + SWAP32(p->start_cylinder) * spc;
-               add_partition(hd, current_minor, st_sector, 
SWAP32(p->num_sectors));
-               current_minor++;
-       }
-       printk("\n");
-       brelse(bh);
-       return 1;
-#undef SWAP16
-#undef SWAP32
-}
-
-#endif /* CONFIG_SUN_PARTITION */
-
-#ifdef CONFIG_AMIGA_PARTITION
-#include <asm/byteorder.h>
-#include <linux/affs_hardblocks.h>
-
-static __inline__ __u32
-checksum_block(__u32 *m, int size)
-{
-       __u32 sum = 0;
-
-       while (size--)
-               sum += htonl(*m++);
-       return sum;
-}
-
-static int
-amiga_partition(struct gendisk *hd, unsigned int dev, unsigned long 
first_sector)
-{
-       struct buffer_head      *bh;
-       struct RigidDiskBlock   *rdb;
-       struct PartitionBlock   *pb;
-       int                      start_sect;
-       int                      nr_sects;
-       int                      blk;
-       int                      part, res;
-
-       set_blocksize(dev,512);
-       res = 0;
-
-       for (blk = 0; blk < RDB_ALLOCATION_LIMIT; blk++) {
-               if(!(bh = bread(dev,blk,512))) {
-                       printk("Dev %d: unable to read RDB block %d\n",dev,blk);
-                       goto rdb_done;
-               }
-               if (*(__u32 *)bh->b_data == htonl(IDNAME_RIGIDDISK)) {
-                       rdb = (struct RigidDiskBlock *)bh->b_data;
-                       if (checksum_block((__u32 
*)bh->b_data,htonl(rdb->rdb_SummedLongs) & 0x7F)) {
-                               printk("Dev %d: RDB in block %d has bad 
checksum\n",dev,blk);
-                               brelse(bh);
-                               continue;
-                       }
-                       printk(" RDSK");
-                       blk = htonl(rdb->rdb_PartitionList);
-                       brelse(bh);
-                       for (part = 1; blk > 0 && part <= 16; part++) {
-                               if (!(bh = bread(dev,blk,512))) {
-                                       printk("Dev %d: unable to read 
partition block %d\n",
-                                                      dev,blk);
-                                       goto rdb_done;
-                               }
-                               pb  = (struct PartitionBlock *)bh->b_data;
-                               blk = htonl(pb->pb_Next);
-                               if (pb->pb_ID == htonl(IDNAME_PARTITION) && 
checksum_block(
-                                   (__u32 *)pb,htonl(pb->pb_SummedLongs) & 
0x7F) == 0 ) {
-                                       
-                                       /* Tell Kernel about it */
-
-                                       if (!(nr_sects = 
(htonl(pb->pb_Environment[10]) + 1 -
-                                                         
htonl(pb->pb_Environment[9])) *
-                                                        
htonl(pb->pb_Environment[3]) *
-                                                        
htonl(pb->pb_Environment[5]))) {
-                                               continue;
-                                       }
-                                       start_sect = 
htonl(pb->pb_Environment[9]) *
-                                                    
htonl(pb->pb_Environment[3]) *
-                                                    
htonl(pb->pb_Environment[5]);
-                                       
add_partition(hd,current_minor,start_sect,nr_sects);
-                                       current_minor++;
-                                       res = 1;
-                               }
-                               brelse(bh);
-                       }
-                       printk("\n");
-                       break;
-               }
-       }
-
-rdb_done:
-       set_blocksize(dev,BLOCK_SIZE);
-       return res;
-}
-#endif /* CONFIG_AMIGA_PARTITION */
-
-static void check_partition(struct gendisk *hd, kdev_t dev)
-{
-       static int first_time = 1;
-       unsigned long first_sector;
-       char buf[8];
-
-       if (first_time)
-               printk("Partition check:\n");
-       first_time = 0;
-       first_sector = hd->part[MINOR(dev)].start_sect;
-
-       /*
-        * This is a kludge to allow the partition check to be
-        * skipped for specific drives (e.g. IDE cd-rom drives)
-        */
-       if ((int)first_sector == -1) {
-               hd->part[MINOR(dev)].start_sect = 0;
-               return;
-       }
-
-       printk(" %s:", disk_name(hd, MINOR(dev), buf));
-#ifdef CONFIG_MSDOS_PARTITION
-       if (msdos_partition(hd, dev, first_sector))
-               return;
-#endif
-#ifdef CONFIG_OSF_PARTITION
-       if (osf_partition(hd, dev, first_sector))
-               return;
-#endif
-#ifdef CONFIG_SUN_PARTITION
-       if(sun_partition(hd, dev, first_sector))
-               return;
-#endif
-#ifdef CONFIG_AMIGA_PARTITION
-       if(amiga_partition(hd, dev, first_sector))
-               return;
-#endif
-       printk(" unknown partition table\n");
-}
-
-/* This function is used to re-read partition tables for removable disks.
-   Much of the cleanup from the old partition tables should have already been
-   done */
-
-/* This function will re-read the partition tables for a given device,
-and set things back up again.  There are some important caveats,
-however.  You must ensure that no one is using the device, and no one
-can start using the device while this function is being executed. */
-
-void resetup_one_dev(struct gendisk *dev, int drive)
-{
-       int i;
-       int first_minor = drive << dev->minor_shift;
-       int end_minor   = first_minor + dev->max_p;
-
-       blk_size[dev->major] = NULL;
-       current_minor = 1 + first_minor;
-       check_partition(dev, MKDEV(dev->major, first_minor));
-
-       /*
-        * We need to set the sizes array before we will be able to access
-        * any of the partitions on this device.
-        */
-       if (dev->sizes != NULL) {       /* optional safeguard in ll_rw_blk.c */
-               for (i = first_minor; i < end_minor; i++)
-                       dev->sizes[i] = dev->part[i].nr_sects >> 
(BLOCK_SIZE_BITS - 9);
-               blk_size[dev->major] = dev->sizes;
-       }
-}
-
-static void setup_dev(struct gendisk *dev)
-{
-       int i, drive;
-       int end_minor   = dev->max_nr * dev->max_p;
-
-       blk_size[dev->major] = NULL;
-       for (i = 0 ; i < end_minor; i++) {
-               dev->part[i].start_sect = 0;
-               dev->part[i].nr_sects = 0;
-       }
-       dev->init(dev); 
-       for (drive = 0 ; drive < dev->nr_real ; drive++) {
-               int first_minor = drive << dev->minor_shift;
-               current_minor = 1 + first_minor;
-               check_partition(dev, MKDEV(dev->major, first_minor));
-       }
-       if (dev->sizes != NULL) {       /* optional safeguard in ll_rw_blk.c */
-               for (i = 0; i < end_minor; i++)
-                       dev->sizes[i] = dev->part[i].nr_sects >> 
(BLOCK_SIZE_BITS - 9);
-               blk_size[dev->major] = dev->sizes;
-       }
-}
-
-void device_setup(void)
-{
-       extern void console_map_init(void);
-       struct gendisk *p;
-       int nr=0;
-
-       chr_dev_init();
-       blk_dev_init();
-       sti();
-#ifdef CONFIG_SCSI
-       scsi_dev_init();
-#endif
-#ifdef CONFIG_INET
-       net_dev_init();
-#endif
-       console_map_init();
-
-       for (p = gendisk_head ; p ; p=p->next) {
-               setup_dev(p);
-               nr += p->nr_real;
-       }
-#ifdef CONFIG_BLK_DEV_RAM
-#ifdef CONFIG_BLK_DEV_INITRD
-       if (initrd_start && mount_initrd) initrd_load();
-       else
-#endif
-       rd_load();
-#endif
-}
diff --git a/linux/src/drivers/net/Space.c b/linux/src/drivers/net/Space.c
deleted file mode 100644
index 083cdeb..0000000
--- a/linux/src/drivers/net/Space.c
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the 
LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Holds initial configuration information for devices.
- *
- * NOTE:       This file is a nice idea, but its current format does not work
- *             well for drivers that support multiple units, like the SLIP
- *             driver.  We should actually have only one pointer to a driver
- *             here, with the driver knowing how many units it supports.
- *             Currently, the SLIP driver abuses the "base_addr" integer
- *             field of the 'device' structure to store the unit number...
- *             -FvK
- *
- * Version:    @(#)Space.c     1.0.8   07/31/96
- *
- * Authors:    Ross Biro, <address@hidden>
- *             Fred N. van Kempen, <address@hidden>
- *             Donald J. Becker, <address@hidden>
- *
- *     FIXME:
- *             Sort the device chain fastest first.
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#include <linux/config.h>
-#include <linux/netdevice.h>
-#include <linux/errno.h>
-
-#define        NEXT_DEV        NULL
-
-
-/* A unified ethernet device probe.  This is the easiest way to have every
-   ethernet adaptor have the name "eth[0123...]".
-   */
-
-extern int tulip_probe(struct device *dev);
-extern int hp100_probe(struct device *dev);
-extern int ultra_probe(struct device *dev);
-extern int ultra32_probe(struct device *dev);
-extern int wd_probe(struct device *dev);
-extern int el2_probe(struct device *dev);
-extern int ne_probe(struct device *dev);
-extern int ne2k_pci_probe(struct device *dev);
-extern int hp_probe(struct device *dev);
-extern int hp_plus_probe(struct device *dev);
-extern int znet_probe(struct device *);
-extern int express_probe(struct device *);
-extern int eepro_probe(struct device *);
-extern int el3_probe(struct device *);
-extern int at1500_probe(struct device *);
-extern int at1700_probe(struct device *);
-extern int fmv18x_probe(struct device *);
-extern int eth16i_probe(struct device *);
-extern int depca_probe(struct device *);
-extern int apricot_probe(struct device *);
-extern int ewrk3_probe(struct device *);
-extern int de4x5_probe(struct device *);
-extern int el1_probe(struct device *);
-extern int via_rhine_probe(struct device *);
-#if    defined(CONFIG_WAVELAN)
-extern int wavelan_probe(struct device *);
-#endif /* defined(CONFIG_WAVELAN) */
-extern int el16_probe(struct device *);
-extern int elplus_probe(struct device *);
-extern int ac3200_probe(struct device *);
-extern int e2100_probe(struct device *);
-extern int ni52_probe(struct device *);
-extern int ni65_probe(struct device *);
-extern int SK_init(struct device *);
-extern int seeq8005_probe(struct device *);
-extern int tc59x_probe(struct device *);
-extern int dgrs_probe(struct device *);
-extern int smc_init( struct device * );
-extern int sparc_lance_probe(struct device *);
-extern int atarilance_probe(struct device *);
-extern int a2065_probe(struct device *);
-extern int ariadne_probe(struct device *);
-extern int hydra_probe(struct device *);
-extern int yellowfin_probe(struct device *);
-extern int eepro100_probe(struct device *);
-extern int epic100_probe(struct device *);
-extern int rtl8139_probe(struct device *);
-extern int tlan_probe(struct device *);
-extern int isa515_probe(struct device *);
-extern int pcnet32_probe(struct device *);
-extern int lance_probe(struct device *);
-/* Detachable devices ("pocket adaptors") */
-extern int atp_init(struct device *);
-extern int de600_probe(struct device *);
-extern int de620_probe(struct device *);
-/* The shaper hook */
-extern int shaper_probe(struct device *);
-/* Red Creek PCI hook */
-extern int rcpci_probe(struct device *);
-
-static int
-ethif_probe(struct device *dev)
-{
-    u_long base_addr = dev->base_addr;
-
-    if ((base_addr == 0xffe0)  ||  (base_addr == 1))
-       return 1;               /* ENXIO */
-
-    if (1
-       /* All PCI probes are safe, and thus should be first. */
-#ifdef CONFIG_DE4X5             /* DEC DE425, DE434, DE435 adapters */
-       && de4x5_probe(dev)
-#endif
-#ifdef CONFIG_DGRS
-       && dgrs_probe(dev)
-#endif
-#ifdef CONFIG_EEXPRESS_PRO100B /* Intel EtherExpress Pro100B */
-       && eepro100_probe(dev)
-#endif
-#ifdef CONFIG_EPIC
-       && epic100_probe(dev)
-#endif
-#if defined(CONFIG_HP100)
-       && hp100_probe(dev)
-#endif 
-#if defined(CONFIG_NE2K_PCI)
-       && ne2k_pci_probe(dev)
-#endif
-#ifdef CONFIG_PCNET32
-       && pcnet32_probe(dev)
-#endif
-#ifdef CONFIG_RTL8139
-       && rtl8139_probe(dev)
-#endif
-#if defined(CONFIG_VIA_RHINE)
-       && via_rhine_probe(dev)
-#endif
-#if defined(CONFIG_VORTEX)
-       && tc59x_probe(dev)
-#endif
-#if defined(CONFIG_DEC_ELCP)
-       && tulip_probe(dev)
-#endif
-#ifdef CONFIG_YELLOWFIN
-       && yellowfin_probe(dev)
-#endif
-       /* Next mostly-safe EISA-only drivers. */
-#ifdef CONFIG_AC3200           /* Ansel Communications EISA 3200. */
-       && ac3200_probe(dev)
-#endif
-#if defined(CONFIG_ULTRA32)
-       && ultra32_probe(dev)
-#endif
-       /* Third, sensitive ISA boards. */
-#ifdef CONFIG_AT1700
-       && at1700_probe(dev)
-#endif
-#if defined(CONFIG_ULTRA)
-       && ultra_probe(dev)
-#endif
-#if defined(CONFIG_SMC9194)
-       && smc_init(dev)
-#endif
-#if defined(CONFIG_WD80x3)
-       && wd_probe(dev)
-#endif
-#if defined(CONFIG_EL2)                /* 3c503 */
-       && el2_probe(dev)
-#endif
-#if defined(CONFIG_HPLAN)
-       && hp_probe(dev)
-#endif
-#if defined(CONFIG_HPLAN_PLUS)
-       && hp_plus_probe(dev)
-#endif
-#if defined(CONFIG_SEEQ8005)
-       && seeq8005_probe(dev)
-#endif
-#ifdef CONFIG_E2100            /* Cabletron E21xx series. */
-       && e2100_probe(dev)
-#endif
-#if defined(CONFIG_NE2000)
-       && ne_probe(dev)
-#endif
-#ifdef CONFIG_AT1500
-       && at1500_probe(dev)
-#endif
-#ifdef CONFIG_FMV18X           /* Fujitsu FMV-181/182 */
-       && fmv18x_probe(dev)
-#endif
-#ifdef CONFIG_ETH16I
-       && eth16i_probe(dev)    /* ICL EtherTeam 16i/32 */
-#endif
-#ifdef CONFIG_EL3              /* 3c509 */
-       && el3_probe(dev)
-#endif
-#ifdef CONFIG_3C515            /* 3c515 */
-       && tc515_probe(dev)
-#endif
-#ifdef CONFIG_ZNET             /* Zenith Z-Note and some IBM Thinkpads. */
-       && znet_probe(dev)
-#endif
-#ifdef CONFIG_EEXPRESS         /* Intel EtherExpress */
-       && express_probe(dev)
-#endif
-#ifdef CONFIG_EEXPRESS_PRO     /* Intel EtherExpress Pro/10 */
-       && eepro_probe(dev)
-#endif
-#ifdef CONFIG_DEPCA            /* DEC DEPCA */
-       && depca_probe(dev)
-#endif
-#ifdef CONFIG_EWRK3             /* DEC EtherWORKS 3 */
-        && ewrk3_probe(dev)
-#endif
-#ifdef CONFIG_APRICOT          /* Apricot I82596 */
-       && apricot_probe(dev)
-#endif
-#ifdef CONFIG_EL1              /* 3c501 */
-       && el1_probe(dev)
-#endif
-#if    defined(CONFIG_WAVELAN) /* WaveLAN */
-       && wavelan_probe(dev)
-#endif /* defined(CONFIG_WAVELAN) */
-#ifdef CONFIG_EL16             /* 3c507 */
-       && el16_probe(dev)
-#endif
-#ifdef CONFIG_ELPLUS           /* 3c505 */
-       && elplus_probe(dev)
-#endif
-#ifdef CONFIG_DE600            /* D-Link DE-600 adapter */
-       && de600_probe(dev)
-#endif
-#ifdef CONFIG_DE620            /* D-Link DE-620 adapter */
-       && de620_probe(dev)
-#endif
-#if defined(CONFIG_SK_G16)
-       && SK_init(dev)
-#endif
-#ifdef CONFIG_NI52
-       && ni52_probe(dev)
-#endif
-#ifdef CONFIG_NI65
-       && ni65_probe(dev)
-#endif
-#ifdef CONFIG_LANCE    /* ISA LANCE boards */
-       && lance_probe(dev)
-#endif
-#ifdef CONFIG_ATARILANCE       /* Lance-based Atari ethernet boards */
-       && atarilance_probe(dev)
-#endif
-#ifdef CONFIG_A2065            /* Commodore/Ameristar A2065 Ethernet Board */
-       && a2065_probe(dev)
-#endif
-#ifdef CONFIG_ARIADNE          /* Village Tronic Ariadne Ethernet Board */
-       && ariadne_probe(dev)
-#endif
-#ifdef CONFIG_HYDRA            /* Hydra Systems Amiganet Ethernet board */
-       && hydra_probe(dev)
-#endif
-#ifdef CONFIG_SUNLANCE
-       && sparc_lance_probe(dev)
-#endif
-#ifdef CONFIG_TLAN
-       && tlan_probe(dev)
-#endif
-#ifdef CONFIG_LANCE
-       && lance_probe(dev)
-#endif
-       && 1 ) {
-       return 1;       /* -ENODEV or -EAGAIN would be more accurate. */
-    }
-    return 0;
-}
-
-#ifdef CONFIG_SDLA
-    extern int sdla_init(struct device *);
-    static struct device sdla0_dev = { "sdla0", 0, 0, 0, 0, 0, 0, 0, 0, 0, 
NEXT_DEV, sdla_init, };
-
-#   undef NEXT_DEV
-#   define NEXT_DEV    (&sdla0_dev)
-#endif
-
-/* Run-time ATtachable (Pocket) devices have a different (not "eth#") name. */
-#ifdef CONFIG_ATP              /* AT-LAN-TEC (RealTek) pocket adaptor. */
-static struct device atp_dev = {
-    "atp0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, atp_init, /* ... */ };
-#   undef NEXT_DEV
-#   define NEXT_DEV    (&atp_dev)
-#endif
-
-#ifdef CONFIG_ARCNET
-    extern int arcnet_probe(struct device *dev);
-    static struct device arcnet_dev = {
-       "arc0", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, arcnet_probe, };
-#   undef      NEXT_DEV
-#   define     NEXT_DEV        (&arcnet_dev)
-#endif
-
-/* The first device defaults to I/O base '0', which means autoprobe. */
-#ifndef ETH0_ADDR
-# define ETH0_ADDR 0
-#endif
-#ifndef ETH0_IRQ
-# define ETH0_IRQ 0
-#endif
-/* "eth0" defaults to autoprobe (== 0), other use a base of 0xffe0 (== -0x20),
-   which means "don't probe".  These entries exist to only to provide empty
-   slots which may be enabled at boot-time. */
-
-static struct device eth7_dev = {
-    "eth7", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, NEXT_DEV, ethif_probe };
-static struct device eth6_dev = {
-    "eth6", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth7_dev, ethif_probe };
-static struct device eth5_dev = {
-    "eth5", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth6_dev, ethif_probe };
-static struct device eth4_dev = {
-    "eth4", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth5_dev, ethif_probe };
-static struct device eth3_dev = {
-    "eth3", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth4_dev, ethif_probe };
-static struct device eth2_dev = {
-    "eth2", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth3_dev, ethif_probe };
-static struct device eth1_dev = {
-    "eth1", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth2_dev, ethif_probe };
-
-static struct device eth0_dev = {
-    "eth0", 0, 0, 0, 0, ETH0_ADDR, ETH0_IRQ, 0, 0, 0, &eth1_dev, ethif_probe };
-
-#   undef NEXT_DEV
-#   define NEXT_DEV    (&eth0_dev)
-
-#if defined(PLIP) || defined(CONFIG_PLIP)
-    extern int plip_init(struct device *);
-    static struct device plip2_dev = {
-       "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
-    static struct device plip1_dev = {
-       "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, };
-    static struct device plip0_dev = {
-       "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, };
-#   undef NEXT_DEV
-#   define NEXT_DEV    (&plip0_dev)
-#endif  /* PLIP */
-
-#if defined(SLIP) || defined(CONFIG_SLIP)
-       /* To be exact, this node just hooks the initialization
-          routines to the device structures.                   */
-extern int slip_init_ctrl_dev(struct device *);
-static struct device slip_bootstrap = {
-  "slip_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, 
slip_init_ctrl_dev, };
-#undef NEXT_DEV
-#define NEXT_DEV (&slip_bootstrap)
-#endif /* SLIP */
-  
-#if defined(CONFIG_MKISS)
-       /* To be exact, this node just hooks the initialization
-          routines to the device structures.                   */
-extern int mkiss_init_ctrl_dev(struct device *);
-static struct device mkiss_bootstrap = {
-  "mkiss_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, 
mkiss_init_ctrl_dev, };
-#undef NEXT_DEV
-#define NEXT_DEV (&mkiss_bootstrap)
-#endif /* MKISS */
-  
-#if defined(CONFIG_STRIP)
-extern int strip_init_ctrl_dev(struct device *);
-static struct device strip_bootstrap = {
-    "strip_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, 
strip_init_ctrl_dev, };
-#undef NEXT_DEV
-#define NEXT_DEV (&strip_bootstrap)
-#endif   /* STRIP */
-
-#if defined(CONFIG_SHAPER)
-static struct device shaper_bootstrap = {
-    "shaper", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, shaper_probe, };
-#undef NEXT_DEV
-#define NEXT_DEV (&shaper_bootstrap)
-#endif   /* SHAPER */
-
-#if defined(CONFIG_RCPCI)
-static struct device rcpci_bootstrap = {
-    "rcpci", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, rcpci_probe, };
-#undef NEXT_DEV
-#define NEXT_DEV (&rcpci_bootstrap)
-#endif   /* RCPCI */
-
-#if defined(CONFIG_PPP)
-extern int ppp_init(struct device *);
-static struct device ppp_bootstrap = {
-    "ppp_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, ppp_init, };
-#undef NEXT_DEV
-#define NEXT_DEV (&ppp_bootstrap)
-#endif   /* PPP */
-
-#ifdef CONFIG_DUMMY
-    extern int dummy_init(struct device *dev);
-    static struct device dummy_dev = {
-       "dummy", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, dummy_init, };
-#   undef      NEXT_DEV
-#   define     NEXT_DEV        (&dummy_dev)
-#endif
-
-#ifdef CONFIG_EQUALIZER
-extern int eql_init(struct device *dev);
-struct device eql_dev = {
-  "eql",                       /* Master device for IP traffic load 
-                                  balancing */
-  0x0, 0x0, 0x0, 0x0,          /* recv end/start; mem end/start */
-  0,                           /* base I/O address */
-  0,                           /* IRQ */
-  0, 0, 0,                     /* flags */
-  NEXT_DEV,                    /* next device */
-  eql_init                     /* set up the rest */
-};
-#   undef       NEXT_DEV
-#   define      NEXT_DEV        (&eql_dev)
-#endif
-
-#ifdef CONFIG_IBMTR 
-
-    extern int tok_probe(struct device *dev);
-    static struct device ibmtr_dev1 = {
-       "tr1",                  /* IBM Token Ring (Non-DMA) Interface */
-       0x0,                    /* recv memory end                      */
-       0x0,                    /* recv memory start                    */
-       0x0,                    /* memory end                           */
-       0x0,                    /* memory start                         */
-       0xa24,                  /* base I/O address                     */
-       0,                      /* IRQ                                  */
-       0, 0, 0,                /* flags                                */
-       NEXT_DEV,               /* next device                          */
-       tok_probe               /* ??? Token_init should set up the rest        
*/
-    };
-#   undef      NEXT_DEV
-#   define     NEXT_DEV        (&ibmtr_dev1)
-
-
-    static struct device ibmtr_dev0 = {
-       "tr0",                  /* IBM Token Ring (Non-DMA) Interface */
-       0x0,                    /* recv memory end                      */
-       0x0,                    /* recv memory start                    */
-       0x0,                    /* memory end                           */
-       0x0,                    /* memory start                         */
-       0xa20,                  /* base I/O address                     */
-       0,                      /* IRQ                                  */
-       0, 0, 0,                /* flags                                */
-       NEXT_DEV,               /* next device                          */
-       tok_probe               /* ??? Token_init should set up the rest        
*/
-    };
-#   undef      NEXT_DEV
-#   define     NEXT_DEV        (&ibmtr_dev0)
-
-#endif 
-
-#ifdef CONFIG_DEFXX
-       extern int dfx_probe(struct device *dev);
-       static struct device fddi7_dev =
-               {"fddi7", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, dfx_probe};
-       static struct device fddi6_dev =
-               {"fddi6", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi7_dev, dfx_probe};
-       static struct device fddi5_dev =
-               {"fddi5", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi6_dev, dfx_probe};
-       static struct device fddi4_dev =
-               {"fddi4", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi5_dev, dfx_probe};
-       static struct device fddi3_dev =
-               {"fddi3", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi4_dev, dfx_probe};
-       static struct device fddi2_dev =
-               {"fddi2", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi3_dev, dfx_probe};
-       static struct device fddi1_dev =
-               {"fddi1", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi2_dev, dfx_probe};
-       static struct device fddi0_dev =
-               {"fddi0", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi1_dev, dfx_probe};
-
-#undef NEXT_DEV
-#define        NEXT_DEV        (&fddi0_dev)
-#endif 
-
-#ifdef CONFIG_NET_IPIP
-       extern int tunnel_init(struct device *);
-       
-       static struct device tunnel_dev1 = 
-       {
-               "tunl1",                /* IPIP tunnel                          
*/
-               0x0,                    /* recv memory end                      
*/
-               0x0,                    /* recv memory start                    
*/
-               0x0,                    /* memory end                           
*/
-               0x0,                    /* memory start                         
*/
-               0x0,                    /* base I/O address                     
*/
-               0,                      /* IRQ                                  
*/
-               0, 0, 0,                /* flags                                
*/
-               NEXT_DEV,               /* next device                          
*/
-               tunnel_init             /* Fill in the details                  
*/
-       };
-
-       static struct device tunnel_dev0 = 
-       {
-               "tunl0",                /* IPIP tunnel                          
*/
-               0x0,                    /* recv memory end                      
*/
-               0x0,                    /* recv memory start                    
*/
-               0x0,                    /* memory end                           
*/
-               0x0,                    /* memory start                         
*/
-               0x0,                    /* base I/O address                     
*/
-               0,                      /* IRQ                                  
*/
-               0, 0, 0,                /* flags                                
*/
-               &tunnel_dev1,           /* next device                          
*/
-               tunnel_init             /* Fill in the details                  
*/
-    };
-#   undef      NEXT_DEV
-#   define     NEXT_DEV        (&tunnel_dev0)
-
-#endif
-
-#ifdef CONFIG_APFDDI
-    extern int apfddi_init(struct device *dev);
-    static struct device fddi_dev = {
-       "fddi", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, apfddi_init };
-#   undef       NEXT_DEV
-#   define      NEXT_DEV        (&fddi_dev)
-#endif
-
-#ifdef CONFIG_APBIF
-    extern int bif_init(struct device *dev);
-    static struct device bif_dev = {
-        "bif", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, bif_init };
-#   undef       NEXT_DEV
-#   define      NEXT_DEV        (&bif_dev)
-#endif
-       
-extern int loopback_init(struct device *dev);
-struct device loopback_dev = {
-       "lo",                   /* Software Loopback interface          */
-       0x0,                    /* recv memory end                      */
-       0x0,                    /* recv memory start                    */
-       0x0,                    /* memory end                           */
-       0x0,                    /* memory start                         */
-       0,                      /* base I/O address                     */
-       0,                      /* IRQ                                  */
-       0, 0, 0,                /* flags                                */
-       NEXT_DEV,               /* next device                          */
-       loopback_init           /* loopback_init should set up the rest */
-};
-
-struct device *dev_base = &loopback_dev;
diff --git a/linux/src/drivers/net/auto_irq.c b/linux/src/drivers/net/auto_irq.c
deleted file mode 100644
index 82bc7b1..0000000
--- a/linux/src/drivers/net/auto_irq.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* auto_irq.c: Auto-configure IRQ lines for linux. */
-/*
-    Written 1994 by Donald Becker.
-
-    The author may be reached as address@hidden, or C/O
-    Center of Excellence in Space Data and Information Sciences
-      Code 930.5, Goddard Space Flight Center, Greenbelt MD 20771
-
-    This code is a general-purpose IRQ line detector for devices with
-    jumpered IRQ lines.  If you can make the device raise an IRQ (and
-    that IRQ line isn't already being used), these routines will tell
-    you what IRQ line it's using -- perfect for those oh-so-cool boot-time
-    device probes!
-
-    To use this, first call autoirq_setup(timeout). TIMEOUT is how many
-    'jiffies' (1/100 sec.) to detect other devices that have active IRQ lines,
-    and can usually be zero at boot.  'autoirq_setup()' returns the bit
-    vector of nominally-available IRQ lines (lines may be physically in-use,
-    but not yet registered to a device).
-    Next, set up your device to trigger an interrupt.
-    Finally call autoirq_report(TIMEOUT) to find out which IRQ line was
-    most recently active.  The TIMEOUT should usually be zero, but may
-    be set to the number of jiffies to wait for a slow device to raise an IRQ.
-
-    The idea of using the setup timeout to filter out bogus IRQs came from
-    the serial driver.
-*/
-
-
-#ifdef version
-static const char *version=
-"auto_irq.c:v1.11 Donald Becker (address@hidden)";
-#endif
-
-#include <linux/sched.h>
-#include <linux/delay.h>
-#include <asm/bitops.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <linux/netdevice.h>
-
-struct device *irq2dev_map[NR_IRQS] = {0, 0, /* ... zeroed */};
-
-unsigned long irqs_busy = 0x2147;              /* The set of fixed IRQs 
(keyboard, timer, etc) */
-unsigned long irqs_used = 0x0001;              /* The set of fixed IRQs 
sometimes enabled. */
-unsigned long irqs_reserved = 0x0000;          /* An advisory "reserved" 
table. */
-unsigned long irqs_shared = 0x0000;            /* IRQ lines "shared" among 
conforming cards.*/
-
-static volatile unsigned long irq_bitmap;      /* The irqs we actually found. 
*/
-static unsigned long irq_handled;              /* The irq lines we have a 
handler on. */
-static volatile int irq_number;                        /* The latest irq 
number we actually found. */
-
-static void autoirq_probe(int irq, void *dev_id, struct pt_regs * regs)
-{
-       irq_number = irq;
-       set_bit(irq, (void *)&irq_bitmap);      /* irq_bitmap |= 1 << irq; */
-       /* This code used to disable the irq. However, the interrupt stub
-        * would then re-enable the interrupt with (potentially) disastrous
-        * consequences
-        */
-       free_irq(irq, dev_id);
-       return;
-}
-
-int autoirq_setup(int waittime)
-{
-       int i;
-       unsigned long timeout = jiffies + waittime;
-       unsigned long boguscount = (waittime*loops_per_sec) / 100;
-
-       irq_handled = 0;
-       irq_bitmap = 0;
-
-       for (i = 0; i < 16; i++) {
-               if (test_bit(i, &irqs_busy) == 0
-                       && request_irq(i, autoirq_probe, SA_INTERRUPT, "irq 
probe", NULL) == 0)
-                       set_bit(i, (void *)&irq_handled);       /* irq_handled 
|= 1 << i;*/
-       }
-       /* Update our USED lists. */
-       irqs_used |= ~irq_handled;
-
-       /* Hang out at least <waittime> jiffies waiting for bogus IRQ hits. */
-       while (timeout > jiffies  &&  --boguscount > 0)
-               ;
-
-       irq_handled &= ~irq_bitmap;
-
-       irq_number = 0; /* We are interested in new interrupts from now on */
-
-       return irq_handled;
-}
-
-int autoirq_report(int waittime)
-{
-       int i;
-       unsigned long timeout = jiffies+waittime;
-       unsigned long boguscount = (waittime*loops_per_sec) / 100;
-
-       /* Hang out at least <waittime> jiffies waiting for the IRQ. */
-
-       while (timeout > jiffies  &&  --boguscount > 0)
-               if (irq_number)
-                       break;
-
-       irq_handled &= ~irq_bitmap;     /* This eliminates the already reset 
handlers */
-
-       /* Retract the irq handlers that we installed. */
-       for (i = 0; i < 16; i++) {
-               if (test_bit(i, (void *)&irq_handled))
-                       free_irq(i, NULL);
-       }
-       return irq_number;
-}
-
-/*
- * Local variables:
- *  compile-command: "gcc -DKERNEL -Wall -O6 -fomit-frame-pointer 
-I/usr/src/linux/net/tcp -c auto_irq.c"
- *  version-control: t
- *  kept-new-versions: 5
- *  c-indent-level: 4
- *  tab-width: 4
- * End:
- */
diff --git a/linux/src/drivers/net/cb_shim.c b/linux/src/drivers/net/cb_shim.c
deleted file mode 100644
index 599b5bb..0000000
--- a/linux/src/drivers/net/cb_shim.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/* cb_shim.c: Linux CardBus device support code. */
-/*
-       Written 1999-2002 by Donald Becker.
-
-       This software may be used and distributed according to the terms of
-       the GNU General Public License (GPL), incorporated herein by
-       reference.  This is not a documented interface.  Drivers incorporating
-       or interacting with these functions are derivative works and thus
-       are covered the GPL.  They must include an explicit GPL notice.
-
-       This code provides a shim to allow newer drivers to interact with the
-       older Cardbus driver activation code.  The functions supported are
-       attach, suspend, power-off, resume and eject.
-
-       The author may be reached as address@hidden, or
-       Donald Becker
-       Scyld Computing Corporation
-       410 Severn Ave., Suite 210
-       Annapolis MD 21403
-
-       Support and updates available at
-       http://www.scyld.com/network/drivers.html
-
-       Other contributers:  (none yet)
-*/
-
-static const char version1[] =
-"cb_shim.c:v1.03 7/12/2002  Donald Becker <address@hidden>\n";
-static const char version2[] =
-" http://www.scyld.com/linux/drivers.html\n";;
-
-/* Module options. */
-static int debug = 1;                  /* 1 normal messages, 0 quiet .. 7 
verbose. */
-
-#ifndef __KERNEL__
-#define __KERNEL__
-#endif
-#include <linux/config.h>
-#if defined(CONFIG_SMP) && ! defined(__SMP__)
-#define __SMP__
-#endif
-#if defined(CONFIG_MODVERSIONS) && ! defined(MODVERSIONS)
-#define MODVERSIONS
-#endif
-
-#include <linux/version.h>
-#if defined(MODVERSIONS)
-#include <linux/modversions.h>
-#endif
-#include <linux/module.h>
-
-#include <linux/kernel.h>
-#if LINUX_VERSION_CODE >= 0x20400
-#include <linux/slab.h>
-#else
-#include <linux/malloc.h>
-#endif
-#include <linux/netdevice.h>
-#include <linux/pci.h>
-#include <asm/io.h>
-
-/* These might be awkward to locate. */
-#include <pcmcia/driver_ops.h>
-#include "pci-scan.h"
-#include "kern_compat.h"
-
-MODULE_AUTHOR("Donald Becker <address@hidden>");
-MODULE_DESCRIPTION("Hot-swap-PCI and Cardbus event dispatch");
-MODULE_LICENSE("GPL");
-MODULE_PARM(debug, "i");
-MODULE_PARM_DESC(debug, "Enable additional status messages (0-7)");
-
-/* Note: this is used in a slightly sleazy manner: it is passed to routines
-   that expect and return just dev_node_t.  However using the too-simple
-   dev_node_t complicates devices management -- older drivers had to
-   look up dev_node_t.name in their private list. */
-
-struct registered_pci_device {
-       struct dev_node_t node;
-       int magic;
-       struct registered_pci_device *next;
-       struct drv_id_info *drv_info;
-       struct pci_dev *pci_loc;
-       void *dev_instance;
-} static *root_pci_devs = 0;
-
-struct drv_shim {
-       struct drv_id_info *did;
-       struct driver_operations drv_ops;
-       int magic;
-       struct drv_shim *next;
-} static *root_drv_id = 0;
-
-static void drv_power_op(struct dev_node_t *node, enum drv_pwr_action action)
-{
-       struct registered_pci_device **devp, **next, *rpin = (void *)node, *rp;
-       if (debug > 1)
-               printk(KERN_DEBUG "power operation(%s, %d).\n",
-                          rpin->drv_info->name, action);
-       /* With our wrapper structure we can almost do
-          rpin->drv_info->pwr_event(rpin->dev_instance, action);
-          But the detach operation requires us to remove the object from the
-          list, so we check for uncontrolled "ghost" devices. */
-       for (devp = &root_pci_devs; *devp; devp = next) {
-               rp = *devp;
-               next = &rp->next;
-               if (rp == rpin) {
-                       if (rp->drv_info->pwr_event)
-                               rp->drv_info->pwr_event((*devp)->dev_instance, 
action);
-                       else
-                               printk(KERN_ERR "No power event hander for 
driver %s.\n",
-                                          rpin->drv_info->name);
-                       if (action == DRV_DETACH) {
-                               kfree(rp);
-                               *devp = *next;
-                               MOD_DEC_USE_COUNT;
-                       }
-                       return;
-               }
-       }
-       if (debug)
-               printk(KERN_WARNING "power operation(%s, %d) for a ghost 
device.\n",
-                          node->dev_name, action);
-}
-/* Wrappers / static lambdas. */
-static void drv_suspend(struct dev_node_t *node)
-{
-       drv_power_op(node, DRV_SUSPEND);
-}
-static void drv_resume(struct dev_node_t *node)
-{
-       drv_power_op(node, DRV_RESUME);
-}
-static void drv_detach(struct dev_node_t *node)
-{
-       drv_power_op(node, DRV_DETACH);
-}
-
-/* The CardBus interaction does not identify the driver the attach() is
-   for, thus we must search for the ID in all PCI device tables.
-   While ugly, we likely only have one driver loaded anyway.
-*/
-static dev_node_t *drv_attach(struct dev_locator_t *loc)
-{
-       struct drv_shim *dp;
-       struct drv_id_info *drv_id = NULL;
-       struct pci_id_info *pci_tbl = NULL;
-       u32 pci_id, subsys_id, pci_rev, pciaddr;
-       u8 irq;
-       int chip_idx = 0, pci_flags, bus, devfn;
-       long ioaddr;
-       void *newdev;
-
-       if (debug > 1)
-               printk(KERN_INFO "drv_attach()\n");
-       if (loc->bus != LOC_PCI) return NULL;
-       bus = loc->b.pci.bus; devfn = loc->b.pci.devfn;
-       if (debug > 1)
-               printk(KERN_DEBUG "drv_attach(bus %d, function %d)\n", bus, 
devfn);
-
-       pcibios_read_config_dword(bus, devfn, PCI_VENDOR_ID, &pci_id);
-       pcibios_read_config_dword(bus, devfn, PCI_SUBSYSTEM_ID, &subsys_id);
-       pcibios_read_config_dword(bus, devfn, PCI_REVISION_ID, &pci_rev);
-       pcibios_read_config_byte(bus, devfn, PCI_INTERRUPT_LINE, &irq);
-       for (dp = root_drv_id; dp; dp = dp->next) {
-               drv_id = dp->did;
-               pci_tbl = drv_id->pci_dev_tbl;
-               for (chip_idx = 0; pci_tbl[chip_idx].name; chip_idx++) {
-                       struct pci_id_info *chip = &pci_tbl[chip_idx];
-                       if ((pci_id & chip->id.pci_mask) == chip->id.pci
-                               && (subsys_id & chip->id.subsystem_mask) == 
chip->id.subsystem
-                               && (pci_rev & chip->id.revision_mask) == 
chip->id.revision)
-                               break;
-               }
-               if (pci_tbl[chip_idx].name)             /* Compiled out! */
-                       break;
-       }
-       if (dp == 0) {
-               printk(KERN_WARNING "No driver match for device %8.8x at 
%d/%d.\n",
-                          pci_id, bus, devfn);
-               return 0;
-       }
-       pci_flags = pci_tbl[chip_idx].pci_flags;
-       pcibios_read_config_dword(bus, devfn, ((pci_flags >> 2) & 0x1C) + 0x10,
-                                                         &pciaddr);
-       if ((pciaddr & PCI_BASE_ADDRESS_SPACE_IO)) {
-               ioaddr = pciaddr & PCI_BASE_ADDRESS_IO_MASK;
-       } else
-               ioaddr = (long)ioremap(pciaddr & PCI_BASE_ADDRESS_MEM_MASK,
-                                                          
pci_tbl[chip_idx].io_size);
-       if (ioaddr == 0 || irq == 0) {
-               printk(KERN_ERR "The %s at %d/%d was not assigned an %s.\n"
-                          KERN_ERR "  It will not be activated.\n",
-                          pci_tbl[chip_idx].name, bus, devfn,
-                          ioaddr == 0 ? "address" : "IRQ");
-               return NULL;
-       }
-       printk(KERN_INFO "Found a %s at %d/%d address 0x%x->0x%lx IRQ %d.\n",
-                  pci_tbl[chip_idx].name, bus, devfn, pciaddr, ioaddr, irq);
-       {
-               u16 pci_command;
-               pcibios_read_config_word(bus, devfn, PCI_COMMAND, &pci_command);
-               printk(KERN_INFO "%s at %d/%d command 0x%x.\n",
-                  pci_tbl[chip_idx].name, bus, devfn, pci_command);
-       }
-
-       newdev = drv_id->probe1(pci_find_slot(bus, devfn), 0,
-                                                       ioaddr, irq, chip_idx, 
0);
-       if (newdev) {
-               struct registered_pci_device *hsdev =
-                       kmalloc(sizeof(struct registered_pci_device), 
GFP_KERNEL);
-               if (drv_id->pci_class == PCI_CLASS_NETWORK_ETHERNET<<8)
-                       strcpy(hsdev->node.dev_name, ((struct net_device 
*)newdev)->name);
-               hsdev->node.major = hsdev->node.minor = 0;
-               hsdev->node.next = NULL;
-               hsdev->drv_info = drv_id;
-               hsdev->dev_instance = newdev;
-               hsdev->next = root_pci_devs;
-               root_pci_devs = hsdev;
-               drv_id->pwr_event(newdev, DRV_ATTACH);
-               MOD_INC_USE_COUNT;
-               return &hsdev->node;
-       }
-       return NULL;
-}
-
-/* Add/remove a driver ID structure to our private list of known drivers. */
-int do_cb_register(struct drv_id_info *did)
-{
-       struct driver_operations *dop;
-       struct drv_shim *dshim = kmalloc(sizeof(*dshim), GFP_KERNEL);
-       if (dshim == 0)
-               return 0;
-       if (debug > 1)
-               printk(KERN_INFO "Registering driver support for '%s'.\n",
-                          did->name);
-       MOD_INC_USE_COUNT;
-       dshim->did = did;
-       dop = &dshim->drv_ops;
-       dop->name = (char *)did->name;
-       dop->attach = drv_attach;
-       dop->suspend = drv_suspend;
-       dop->resume = drv_resume;
-       dop->detach = drv_detach;
-       dshim->next = root_drv_id;
-       root_drv_id = dshim;
-       return register_driver(dop);
-}
-
-void do_cb_unregister(struct drv_id_info *did)
-{
-       struct drv_shim **dp;
-       for (dp = &root_drv_id; *dp; dp = &(*dp)->next)
-               if ((*dp)->did == did) {
-                       struct drv_shim *dshim = *dp;
-                       unregister_driver(&dshim->drv_ops);
-                       *dp = dshim->next;
-                       kfree(dshim);
-                       MOD_DEC_USE_COUNT;
-                       return;
-               }
-}
-
-extern int (*register_hotswap_hook)(struct drv_id_info *did);
-extern void (*unregister_hotswap_hook)(struct drv_id_info *did);
-
-int (*old_cb_hook)(struct drv_id_info *did);
-void (*old_un_cb_hook)(struct drv_id_info *did);
-
-int init_module(void)
-{
-       if (debug)
-               printk(KERN_INFO "%s" KERN_INFO "%s", version1, version2);
-       old_cb_hook = register_hotswap_hook;
-       old_un_cb_hook = unregister_hotswap_hook;
-       register_hotswap_hook = do_cb_register;
-       unregister_hotswap_hook = do_cb_unregister;
-       return 0;
-}
-void cleanup_module(void)
-{
-       register_hotswap_hook =         old_cb_hook;
-       unregister_hotswap_hook = old_un_cb_hook;
-       return;
-}
-
-
-/*
- * Local variables:
- *  compile-command: "gcc -DMODULE -Wall -Wstrict-prototypes -O6 -c cb_shim.c 
-I/usr/include/ -I/usr/src/pcmcia/include/"
- *  c-indent-level: 4
- *  c-basic-offset: 4
- *  tab-width: 4
- * End:
- */
-
diff --git a/linux/src/drivers/net/iow.h b/linux/src/drivers/net/iow.h
deleted file mode 100644
index 6e15688..0000000
--- a/linux/src/drivers/net/iow.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_IOW_H
-#define _ASM_IOW_H
-
-/* no longer used */
-
-#endif
diff --git a/linux/src/drivers/net/net_init.c b/linux/src/drivers/net/net_init.c
deleted file mode 100644
index 3d4c42d..0000000
--- a/linux/src/drivers/net/net_init.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/* netdrv_init.c: Initialization for network devices. */
-/*
-       Written 1993,1994,1995 by Donald Becker.
-
-       The author may be reached as address@hidden or
-       C/O Center of Excellence in Space Data and Information Sciences
-               Code 930.5, Goddard Space Flight Center, Greenbelt MD 20771
-
-       This file contains the initialization for the "pl14+" style ethernet
-       drivers.  It should eventually replace most of drivers/net/Space.c.
-       It's primary advantage is that it's able to allocate low-memory buffers.
-       A secondary advantage is that the dangerous NE*000 netcards can reserve
-       their I/O port region before the SCSI probes start.
-
-       Modifications/additions by Bjorn Ekwall <address@hidden>:
-               ethdev_index[MAX_ETH_CARDS]
-               register_netdev() / unregister_netdev()
-               
-       Modifications by Wolfgang Walter
-               Use dev_close cleanly so we always shut things down tidily.
-               
-       Changed 29/10/95, Alan Cox to pass sockaddr's around for mac addresses.
-       
-       14/06/96 - Paul Gortmaker:      Add generic eth_change_mtu() function.
-
-       August 12, 1996 - Lawrence V. Stefani: Added fddi_change_mtu() and
-                                         fddi_setup() functions.
-       Sept. 10, 1996  - Lawrence V. Stefani: Increased hard_header_len to
-                                         include 3 pad bytes.
-*/
-
-#include <linux/config.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/types.h>
-#include <linux/fs.h>
-#include <linux/malloc.h>
-#include <linux/if_ether.h>
-#include <linux/string.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/fddidevice.h>
-#include <linux/trdevice.h>
-#include <linux/if_arp.h>
-#ifdef CONFIG_NET_ALIAS
-#include <linux/net_alias.h>
-#endif
-
-/* The network devices currently exist only in the socket namespace, so these
-   entries are unused.  The only ones that make sense are
-    open       start the ethercard
-    close      stop  the ethercard
-    ioctl      To get statistics, perhaps set the interface port (AUI, BNC, 
etc.)
-   One can also imagine getting raw packets using
-    read & write
-   but this is probably better handled by a raw packet socket.
-
-   Given that almost all of these functions are handled in the current
-   socket-based scheme, putting ethercard devices in /dev/ seems pointless.
-   
-   [Removed all support for /dev network devices. When someone adds
-    streams then by magic we get them, but otherwise they are un-needed
-       and a space waste]
-*/
-
-/* The list of used and available "eth" slots (for "eth0", "eth1", etc.) */
-#define MAX_ETH_CARDS 16 /* same as the number if irq's in irq2dev[] */
-static struct device *ethdev_index[MAX_ETH_CARDS];
-
-
-/* Fill in the fields of the device structure with ethernet-generic values.
-
-   If no device structure is passed, a new one is constructed, complete with
-   a SIZEOF_PRIVATE private data area.
-
-   If an empty string area is passed as dev->name, or a new structure is made,
-   a new name string is constructed.  The passed string area should be 8 bytes
-   long.
- */
-
-struct device *
-init_etherdev(struct device *dev, int sizeof_priv)
-{
-       int new_device = 0;
-       int i;
-
-       /* Use an existing correctly named device in Space.c:dev_base. */
-       if (dev == NULL) {
-               int alloc_size = sizeof(struct device) + sizeof("eth%d  ")
-                       + sizeof_priv + 3;
-               struct device *cur_dev;
-               char pname[8];          /* Putative name for the device.  */
-
-               for (i = 0; i < MAX_ETH_CARDS; ++i)
-                       if (ethdev_index[i] == NULL) {
-                               sprintf(pname, "eth%d", i);
-                               for (cur_dev = dev_base; cur_dev; cur_dev = 
cur_dev->next)
-                                       if (strcmp(pname, cur_dev->name) == 0) {
-                                               dev = cur_dev;
-                                               dev->init = NULL;
-                                               sizeof_priv = (sizeof_priv + 3) 
& ~3;
-                                               dev->priv = sizeof_priv
-                                                         ? 
kmalloc(sizeof_priv, GFP_KERNEL)
-                                                         :     NULL;
-                                               if (dev->priv) 
memset(dev->priv, 0, sizeof_priv);
-                                               goto found;
-                                       }
-                       }
-
-               alloc_size &= ~3;               /* Round to dword boundary. */
-
-               dev = (struct device *)kmalloc(alloc_size, GFP_KERNEL);
-               memset(dev, 0, alloc_size);
-               if (sizeof_priv)
-                       dev->priv = (void *) (dev + 1);
-               dev->name = sizeof_priv + (char *)(dev + 1);
-               new_device = 1;
-       }
-
-       found:                                          /* From the double loop 
above. */
-
-       if (dev->name &&
-               ((dev->name[0] == '\0') || (dev->name[0] == ' '))) {
-               for (i = 0; i < MAX_ETH_CARDS; ++i)
-                       if (ethdev_index[i] == NULL) {
-                               sprintf(dev->name, "eth%d", i);
-                               ethdev_index[i] = dev;
-                               break;
-                       }
-       }
-
-       ether_setup(dev);       /* Hmmm, should this be called here? */
-       
-       if (new_device) {
-               /* Append the device to the device queue. */
-               struct device **old_devp = &dev_base;
-               while ((*old_devp)->next)
-                       old_devp = & (*old_devp)->next;
-               (*old_devp)->next = dev;
-               dev->next = 0;
-       }
-       return dev;
-}
-
-
-static int eth_mac_addr(struct device *dev, void *p)
-{
-       struct sockaddr *addr=p;
-       if(dev->start)
-               return -EBUSY;
-       memcpy(dev->dev_addr, addr->sa_data,dev->addr_len);
-       return 0;
-}
-
-static int eth_change_mtu(struct device *dev, int new_mtu)
-{
-       if ((new_mtu < 68) || (new_mtu > 1500))
-               return -EINVAL;
-       dev->mtu = new_mtu;
-       return 0;
-}
-
-#ifdef CONFIG_FDDI
-
-static int fddi_change_mtu(struct device *dev, int new_mtu)
-{
-       if ((new_mtu < FDDI_K_SNAP_HLEN) || (new_mtu > FDDI_K_SNAP_DLEN))
-               return(-EINVAL);
-       dev->mtu = new_mtu;
-       return(0);
-}
-
-#endif
-
-void ether_setup(struct device *dev)
-{
-       int i;
-       /* Fill in the fields of the device structure with ethernet-generic 
values.
-          This should be in a common file instead of per-driver.  */
-       for (i = 0; i < DEV_NUMBUFFS; i++)
-               skb_queue_head_init(&dev->buffs[i]);
-
-       /* register boot-defined "eth" devices */
-       if (dev->name && (strncmp(dev->name, "eth", 3) == 0)) {
-               i = simple_strtoul(dev->name + 3, NULL, 0);
-               if (ethdev_index[i] == NULL) {
-                       ethdev_index[i] = dev;
-               }
-               else if (dev != ethdev_index[i]) {
-                       /* Really shouldn't happen! */
-                       printk("ether_setup: Ouch! Someone else took %s\n",
-                               dev->name);
-               }
-       }
-
-       dev->change_mtu         = eth_change_mtu;
-       dev->hard_header        = eth_header;
-       dev->rebuild_header     = eth_rebuild_header;
-       dev->set_mac_address    = eth_mac_addr;
-       dev->header_cache_bind  = eth_header_cache_bind;
-       dev->header_cache_update= eth_header_cache_update;
-
-       dev->type               = ARPHRD_ETHER;
-       dev->hard_header_len    = ETH_HLEN;
-       dev->mtu                = 1500; /* eth_mtu */
-       dev->addr_len           = ETH_ALEN;
-       dev->tx_queue_len       = 100;  /* Ethernet wants good queues */        
-       
-       memset(dev->broadcast,0xFF, ETH_ALEN);
-
-       /* New-style flags. */
-       dev->flags              = IFF_BROADCAST|IFF_MULTICAST;
-       dev->family             = AF_INET;
-       dev->pa_addr    = 0;
-       dev->pa_brdaddr = 0;
-       dev->pa_mask    = 0;
-       dev->pa_alen    = 4;
-}
-
-#ifdef CONFIG_TR
-
-void tr_setup(struct device *dev)
-{
-       int i;
-       /* Fill in the fields of the device structure with ethernet-generic 
values.
-          This should be in a common file instead of per-driver.  */
-       for (i = 0; i < DEV_NUMBUFFS; i++)
-               skb_queue_head_init(&dev->buffs[i]);
-
-       dev->hard_header        = tr_header;
-       dev->rebuild_header     = tr_rebuild_header;
-
-       dev->type               = ARPHRD_IEEE802;
-       dev->hard_header_len    = TR_HLEN;
-       dev->mtu                = 2000; /* bug in fragmenter...*/
-       dev->addr_len           = TR_ALEN;
-       dev->tx_queue_len       = 100;  /* Long queues on tr */
-       
-       memset(dev->broadcast,0xFF, TR_ALEN);
-
-       /* New-style flags. */
-       dev->flags              = IFF_BROADCAST;
-       dev->family             = AF_INET;
-       dev->pa_addr    = 0;
-       dev->pa_brdaddr = 0;
-       dev->pa_mask    = 0;
-       dev->pa_alen    = 4;
-}
-
-#endif
-
-#ifdef CONFIG_FDDI
-
-void fddi_setup(struct device *dev)
-       {
-       int i;
-
-       /*
-        * Fill in the fields of the device structure with FDDI-generic values.
-        * This should be in a common file instead of per-driver.
-        */
-       for (i=0; i < DEV_NUMBUFFS; i++)
-               skb_queue_head_init(&dev->buffs[i]);
-
-       dev->change_mtu                 = fddi_change_mtu;
-       dev->hard_header                = fddi_header;
-       dev->rebuild_header             = fddi_rebuild_header;
-
-       dev->type                               = ARPHRD_FDDI;
-       dev->hard_header_len    = FDDI_K_SNAP_HLEN+3;   /* Assume 802.2 SNAP 
hdr len + 3 pad bytes */
-       dev->mtu                                = FDDI_K_SNAP_DLEN;             
/* Assume max payload of 802.2 SNAP frame */
-       dev->addr_len                   = FDDI_K_ALEN;
-       dev->tx_queue_len               = 100;  /* Long queues on FDDI */
-       
-       memset(dev->broadcast, 0xFF, FDDI_K_ALEN);
-
-       /* New-style flags */
-       dev->flags              = IFF_BROADCAST | IFF_MULTICAST;
-       dev->family             = AF_INET;
-       dev->pa_addr    = 0;
-       dev->pa_brdaddr = 0;
-       dev->pa_mask    = 0;
-       dev->pa_alen    = 4;
-       return;
-       }
-
-#endif
-
-int ether_config(struct device *dev, struct ifmap *map)
-{
-       if (map->mem_start != (u_long)(-1))
-               dev->mem_start = map->mem_start;
-       if (map->mem_end != (u_long)(-1))
-               dev->mem_end = map->mem_end;
-       if (map->base_addr != (u_short)(-1))
-               dev->base_addr = map->base_addr;
-       if (map->irq != (u_char)(-1))
-               dev->irq = map->irq;
-       if (map->dma != (u_char)(-1))
-               dev->dma = map->dma;
-       if (map->port != (u_char)(-1))
-               dev->if_port = map->port;
-       return 0;
-}
-
-int register_netdev(struct device *dev)
-{
-       struct device *d = dev_base;
-       unsigned long flags;
-       int i=MAX_ETH_CARDS;
-
-       save_flags(flags);
-       cli();
-
-       if (dev && dev->init) {
-               if (dev->name &&
-                       ((dev->name[0] == '\0') || (dev->name[0] == ' '))) {
-                       for (i = 0; i < MAX_ETH_CARDS; ++i)
-                               if (ethdev_index[i] == NULL) {
-                                       sprintf(dev->name, "eth%d", i);
-/*                                     printk("loading device '%s'...\n", 
dev->name);*/
-                                       ethdev_index[i] = dev;
-                                       break;
-                               }
-               }
-
-               sti();  /* device probes assume interrupts enabled */
-               if (dev->init(dev) != 0) {
-                   if (i < MAX_ETH_CARDS) ethdev_index[i] = NULL;
-                       restore_flags(flags);
-                       return -EIO;
-               }
-               cli();
-
-               /* Add device to end of chain */
-               if (dev_base) {
-                       while (d->next)
-                               d = d->next;
-                       d->next = dev;
-               }
-               else
-                       dev_base = dev;
-               dev->next = NULL;
-       }
-       restore_flags(flags);
-       return 0;
-}
-
-void unregister_netdev(struct device *dev)
-{
-       struct device *d = dev_base;
-       unsigned long flags;
-       int i;
-
-       save_flags(flags);
-       cli();
-
-       if (dev == NULL) 
-       {
-               printk("was NULL\n");
-               restore_flags(flags);
-               return;
-       }
-       /* else */
-       if (dev->start)
-               printk("ERROR '%s' busy and not MOD_IN_USE.\n", dev->name);
-
-       /*
-        *      must jump over main_device+aliases
-        *      avoid alias devices unregistration so that only
-        *      net_alias module manages them
-        */
-#ifdef CONFIG_NET_ALIAS                
-       if (dev_base == dev)
-               dev_base = net_alias_nextdev(dev);
-       else
-       {
-               while(d && (net_alias_nextdev(d) != dev)) /* skip aliases */
-                       d = net_alias_nextdev(d);
-         
-               if (d && (net_alias_nextdev(d) == dev))
-               {
-                       /*
-                        *      Critical: Bypass by consider devices as blocks 
(maindev+aliases)
-                        */
-                       net_alias_nextdev_set(d, net_alias_nextdev(dev)); 
-               }
-#else
-       if (dev_base == dev)
-               dev_base = dev->next;
-       else 
-       {
-               while (d && (d->next != dev))
-                       d = d->next;
-               
-               if (d && (d->next == dev)) 
-               {
-                       d->next = dev->next;
-               }
-#endif
-               else 
-               {
-                       printk("unregister_netdev: '%s' not found\n", 
dev->name);
-                       restore_flags(flags);
-                       return;
-               }
-       }
-       for (i = 0; i < MAX_ETH_CARDS; ++i) 
-       {
-               if (ethdev_index[i] == dev) 
-               {
-                       ethdev_index[i] = NULL;
-                       break;
-               }
-       }
-
-       restore_flags(flags);
-
-       /*
-        *      You can i.e use a interfaces in a route though it is not up.
-        *      We call close_dev (which is changed: it will down a device even 
if
-        *      dev->flags==0 (but it will not call dev->stop if IFF_UP
-        *      is not set).
-        *      This will call notifier_call_chain(&netdev_chain, NETDEV_DOWN, 
dev),
-        *      dev_mc_discard(dev), ....
-        */
-        
-       dev_close(dev);
-}
-
-
-/*
- * Local variables:
- *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/net/inet -Wall 
-Wstrict-prototypes -O6 -m486 -c net_init.c"
- *  version-control: t
- *  kept-new-versions: 5
- *  tab-width: 4
- * End:
- */
diff --git a/linux/src/drivers/net/smc9194.c b/linux/src/drivers/net/smc9194.c
deleted file mode 100644
index e3d648d..0000000
--- a/linux/src/drivers/net/smc9194.c
+++ /dev/null
@@ -1,1779 +0,0 @@
-/*------------------------------------------------------------------------
- . smc9194.c
- . This is a driver for SMC's 9000 series of Ethernet cards. 
- .
- . Copyright (C) 1996 by Erik Stahlman
- . This software may be used and distributed according to the terms
- . of the GNU Public License, incorporated herein by reference.
- .
- . "Features" of the SMC chip:  
- .   4608 byte packet memory. ( for the 91C92.  Others have more ) 
- .   EEPROM for configuration
- .   AUI/TP selection  ( mine has 10Base2/10BaseT select )
- .
- . Arguments:
- .     io               = for the base address
- .     irq      = for the IRQ 
- .     ifport = 0 for autodetect, 1 for TP, 2 for AUI ( or 10base2 )   
- .
- . author:  
- .     Erik Stahlman                           ( address@hidden )
- .   
- . Hardware multicast code from Peter Cammaert ( address@hidden )
- .
- . Sources:
- .    o   SMC databook
- .    o   skeleton.c by Donald Becker ( address@hidden )
- .    o   ( a LOT of advice from Becker as well )
- .
- . History:
- .     12/07/95  Erik Stahlman  written, got receive/xmit handled 
- .     01/03/96  Erik Stahlman  worked out some bugs, actually usable!!! :-)
- .     01/06/96  Erik Stahlman  cleaned up some, better testing, etc 
- .     01/29/96  Erik Stahlman  fixed autoirq, added multicast
- .     02/01/96  Erik Stahlman  1. disabled all interrupts in smc_reset
- .                              2. got rid of post-decrementing bug -- UGH.  
- .     02/13/96  Erik Stahlman  Tried to fix autoirq failure.  Added more
- .                              descriptive error messages.
- .     02/15/96  Erik Stahlman  Fixed typo that caused detection failure
- .     02/23/96  Erik Stahlman  Modified it to fit into kernel tree  
- .                              Added support to change hardware address
- .                              Cleared stats on opens
- .     02/26/96  Erik Stahlman  Trial support for Kernel 1.2.13
- .                              Kludge for automatic IRQ detection
- .     03/04/96  Erik Stahlman  Fixed kernel 1.3.70 + 
- .                              Fixed bug reported by Gardner Buchanan in 
- .                                smc_enable, with outw instead of outb
- .     03/06/96  Erik Stahlman  Added hardware multicast from Peter Cammaert
- ----------------------------------------------------------------------------*/
-
-static const char *version =
-       "smc9194.c:v0.12 03/06/96 by Erik Stahlman (address@hidden)\n";  
-
-#ifdef MODULE
-#include <linux/module.h>
-#include <linux/version.h>
-#endif 
-
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/types.h>
-#include <linux/fcntl.h>
-#include <linux/interrupt.h>
-#include <linux/ptrace.h>
-#include <linux/ioport.h>
-#include <linux/in.h>
-#include <linux/malloc.h>
-#include <linux/string.h>
-#include <linux/ioport.h>
-#include <asm/bitops.h>
-#include <asm/io.h>
-#include <linux/errno.h>
-
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-
-#include "smc9194.h"
-/*------------------------------------------------------------------------
- .  
- . Configuration options, for the experienced user to change. 
- .
- -------------------------------------------------------------------------*/
-
-/* 
- . this is for kernels > 1.2.70 
-*/
-#define REALLY_NEW_KERNEL 
-#ifndef REALLY_NEW_KERNEL
-#define free_irq( x, y ) free_irq( x )
-#define request_irq( x, y, z, u, v ) request_irq( x, y, z, u )
-#endif
-
-/*
- . Do you want to use this with old kernels.  
- . WARNING: this is not well tested.  
-#define SUPPORT_OLD_KERNEL
-*/
-
-
-/*
- . Do you want to use 32 bit xfers?  This should work on all chips, as
- . the chipset is designed to accommodate them.   
-*/
-#define USE_32_BIT 1
-
-/* 
- .the SMC9194 can be at any of the following port addresses.  To change,
- .for a slightly different card, you can add it to the array.  Keep in 
- .mind that the array must end in zero.
-*/
-static unsigned int smc_portlist[] =
-   { 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
-         0x300, 0x320, 0x340, 0x360, 0x380, 0x3A0, 0x3C0, 0x3E0, 0};
-
-/* 
- . Wait time for memory to be free.  This probably shouldn't be 
- . tuned that much, as waiting for this means nothing else happens 
- . in the system 
-*/
-#define MEMORY_WAIT_TIME 16
-
-/*
- . DEBUGGING LEVELS
- . 
- . 0 for normal operation
- . 1 for slightly more details
- . >2 for various levels of increasingly useless information
- .    2 for interrupt tracking, status flags
- .    3 for packet dumps, etc.
-*/
-#define SMC_DEBUG 0
-
-#if (SMC_DEBUG > 2 )
-#define PRINTK3(x) printk x 
-#else 
-#define PRINTK3(x) 
-#endif
-
-#if SMC_DEBUG > 1 
-#define PRINTK2(x) printk x 
-#else
-#define PRINTK2(x)
-#endif
-
-#ifdef SMC_DEBUG
-#define PRINTK(x) printk x
-#else
-#define PRINTK(x)
-#endif 
-
-
-/* the older versions of the kernel cannot support autoprobing */
-#ifdef SUPPORT_OLD_KERNEL
-#define NO_AUTOPROBE
-#endif
-
-
-/*------------------------------------------------------------------------
- .
- . The internal workings of the driver.  If you are changing anything 
- . here with the SMC stuff, you should have the datasheet and known 
- . what you are doing.  
- .  
- -------------------------------------------------------------------------*/
-#define CARDNAME "SMC9194"
-
-#ifdef SUPPORT_OLD_KERNEL
-char kernel_version[] = UTS_RELEASE;
-#endif 
-
-/* store this information for the driver.. */ 
-struct smc_local {
-       /*
-          these are things that the kernel wants me to keep, so users
-          can find out semi-useless statistics of how well the card is
-          performing 
-       */
-       struct enet_statistics stats;
-       
-       /* 
-          If I have to wait until memory is available to send
-          a packet, I will store the skbuff here, until I get the
-          desired memory.  Then, I'll send it out and free it.    
-       */
-       struct sk_buff * saved_skb;
-
-       /*
-        . This keeps track of how many packets that I have
-        . sent out.  When an TX_EMPTY interrupt comes, I know
-        . that all of these have been sent.
-       */
-       int     packets_waiting;
-};
-
-
-/*-----------------------------------------------------------------
- .
- .  The driver can be entered at any of the following entry points.
- . 
- .------------------------------------------------------------------  */
-
-/*
- . This is called by  register_netdev().  It is responsible for 
- . checking the portlist for the SMC9000 series chipset.  If it finds 
- . one, then it will initialize the device, find the hardware information,
- . and sets up the appropriate device parameters.   
- . NOTE: Interrupts are *OFF* when this procedure is called.
- .
- . NB:This shouldn't be static since it is referred to externally.
-*/
-int smc_init(struct device *dev);
-
-/*
- . The kernel calls this function when someone wants to use the device,
- . typically 'ifconfig ethX up'.   
-*/
-static int smc_open(struct device *dev);
-
-/*
- . This is called by the kernel to send a packet out into the net.  it's
- . responsible for doing a best-effort send, but if it's simply not possible
- . to send it, the packet gets dropped. 
-*/  
-static int smc_send_packet(struct sk_buff *skb, struct device *dev);
-
-/* 
- . This is called by the kernel in response to 'ifconfig ethX down'.  It
- . is responsible for cleaning up everything that the open routine 
- . does, and maybe putting the card into a powerdown state. 
-*/
-static int smc_close(struct device *dev);
-
-/*
- . This routine allows the proc file system to query the driver's 
- . statistics.  
-*/
-static struct enet_statistics * smc_query_statistics( struct device *dev);
-
-/*
- . Finally, a call to set promiscuous mode ( for TCPDUMP and related 
- . programs ) and multicast modes.
-*/
-#ifdef SUPPORT_OLD_KERNEL
-static void smc_set_multicast_list(struct device *dev, int num_addrs,
-                                void *addrs);
-#else
-static void smc_set_multicast_list(struct device *dev);
-#endif 
-
-/*---------------------------------------------------------------
- . 
- . Interrupt level calls.. 
- .
- ----------------------------------------------------------------*/
-
-/*
- . Handles the actual interrupt 
-*/
-#ifdef REALLY_NEW_KERNEL
-static void smc_interrupt(int irq, void *, struct pt_regs *regs);
-#else
-static void smc_interrupt(int irq, struct pt_regs *regs);
-#endif 
-/*
- . This is a separate procedure to handle the receipt of a packet, to
- . leave the interrupt code looking slightly cleaner 
-*/ 
-inline static void smc_rcv( struct device *dev );
-/*
- . This handles a TX interrupt, which is only called when an error
- . relating to a packet is sent.  
-*/
-inline static void smc_tx( struct device * dev );
-
-/*
- ------------------------------------------------------------
- . 
- . Internal routines
- .
- ------------------------------------------------------------
-*/
-
-/*
- . Test if a given location contains a chip, trying to cause as 
- . little damage as possible if it's not a SMC chip.
-*/
-static int smc_probe( int ioaddr );
-
-/*
- . this routine initializes the cards hardware, prints out the configuration
- . to the system log as well as the vanity message, and handles the setup
- . of a device parameter. 
- . It will give an error if it can't initialize the card.
-*/
-static int smc_initcard( struct device *, int ioaddr ); 
-
-/*
- . A rather simple routine to print out a packet for debugging purposes.
-*/ 
-#if SMC_DEBUG > 2 
-static void print_packet( byte *, int );
-#endif  
-
-#define tx_done(dev) 1
-
-/* this is called to actually send the packet to the chip */ 
-static void smc_hardware_send_packet( struct device * dev );
-
-/* Since I am not sure if I will have enough room in the chip's ram
- . to store the packet, I call this routine, which either sends it 
- . now, or generates an interrupt when the card is ready for the 
- . packet */
-static int  smc_wait_to_send_packet( struct sk_buff * skb, struct device *dev 
);
-
-/* this does a soft reset on the device */
-static void smc_reset( int ioaddr );
-
-/* Enable Interrupts, Receive, and Transmit */
-static void smc_enable( int ioaddr );
-
-/* this puts the device in an inactive state */
-static void smc_shutdown( int ioaddr );
-
-#ifndef NO_AUTOPROBE
-/* This routine will find the IRQ of the driver if one is not
- . specified in the input to the device.  */
-static int smc_findirq( int ioaddr );
-#endif
-
-/*
-  this routine will set the hardware multicast table to the specified 
-  values given it by the higher level routines
-*/
-#ifndef SUPPORT_OLD_KERNEL
-static void smc_setmulticast( int ioaddr, int count, struct dev_mc_list *  );
-static int crc32( char *, int );
-#endif
-
-#ifdef SUPPORT_OLD_KERNEL
-extern struct device *init_etherdev(struct device *dev, int sizeof_private,
-                       unsigned long *mem_startp );
-#endif 
-
-/*
- . Function: smc_reset( int ioaddr )
- . Purpose:
- .     This sets the SMC91xx chip to its normal state, hopefully from whatever
- .     mess that any other DOS driver has put it in.   
- . 
- . Maybe I should reset more registers to defaults in here?  SOFTRESET  should
- . do that for me.  
- . 
- . Method:
- .     1.  send a SOFT RESET 
- .     2.  wait for it to finish
- .     3.  enable autorelease mode
- .     4.  reset the memory management unit
- .     5.  clear all interrupts
- .
-*/  
-static void smc_reset( int ioaddr ) 
-{ 
-       /* This resets the registers mostly to defaults, but doesn't
-          affect EEPROM.  That seems unnecessary */
-       SMC_SELECT_BANK( 0 );
-       outw( RCR_SOFTRESET, ioaddr + RCR ); 
-       
-       /* this should pause enough for the chip to be happy */
-       SMC_DELAY( );
-
-       /* Set the transmit and receive configuration registers to 
-          default values */
-       outw( RCR_CLEAR, ioaddr + RCR );
-       outw( TCR_CLEAR, ioaddr + TCR );
-
-       /* set the control register to automatically
-          release successfully transmitted packets, to make the best 
-          use out of our limited memory */
-       SMC_SELECT_BANK( 1 );
-       outw( inw( ioaddr + CONTROL ) | CTL_AUTO_RELEASE , ioaddr + CONTROL );  
-
-       /* Reset the MMU */
-       SMC_SELECT_BANK( 2 );
-       outw( MC_RESET, ioaddr + MMU_CMD );
-
-       /* Note:  It doesn't seem that waiting for the MMU busy is needed here, 
-          but this is a place where future chipsets _COULD_ break.  Be wary
-          of issuing another MMU command right after this */
-
-       outb( 0, ioaddr + INT_MASK );
-}
-
-/* 
- . Function: smc_enable
- . Purpose: let the chip talk to the outside work
- . Method: 
- .     1.  Enable the transmitter
- .     2.  Enable the receiver
- .     3.  Enable interrupts
-*/
-static void smc_enable( int ioaddr ) 
-{
-       SMC_SELECT_BANK( 0 );
-       /* see the header file for options in TCR/RCR NORMAL*/
-       outw( TCR_NORMAL, ioaddr + TCR );
-       outw( RCR_NORMAL, ioaddr + RCR );
-
-       /* now, enable interrupts */
-       SMC_SELECT_BANK( 2 );
-       outb( SMC_INTERRUPT_MASK, ioaddr + INT_MASK );
-}      
-       
-/*
- . Function: smc_shutdown
- . Purpose:  closes down the SMC91xxx chip.
- . Method:   
- .     1. zero the interrupt mask
- .     2. clear the enable receive flag
- .     3. clear the enable xmit flags
- .
- . TODO: 
- .   (1) maybe utilize power down mode.
- .     Why not yet?  Because while the chip will go into power down mode,
- .     the manual says that it will wake up in response to any I/O requests
- .     in the register space.   Empirical results do not show this working.
-*/
-static void smc_shutdown( int ioaddr ) 
-{
-       /* no more interrupts for me */
-       SMC_SELECT_BANK( 2 );
-       outb( 0, ioaddr + INT_MASK );
-
-       /* and tell the card to stay away from that nasty outside world */
-       SMC_SELECT_BANK( 0 );
-       outb( RCR_CLEAR, ioaddr + RCR );
-       outb( TCR_CLEAR, ioaddr + TCR );
-#if 0 
-       /* finally, shut the chip down */
-       SMC_SELECT_BANK( 1 ); 
-       outw( inw( ioaddr + CONTROL ), CTL_POWERDOWN, ioaddr + CONTROL  );
-#endif 
-}
-
-
-#ifndef SUPPORT_OLD_KERNEL 
-/* 
- . Function: smc_setmulticast( int ioaddr, int count, dev_mc_list * adds )
- . Purpose:
- .    This sets the internal hardware table to filter out unwanted multicast
- .    packets before they take up memory.  
- .    
- .    The SMC chip uses a hash table where the high 6 bits of the CRC of
- .    address are the offset into the table.  If that bit is 1, then the 
- .    multicast packet is accepted.  Otherwise, it's dropped silently.
- .  
- .    To use the 6 bits as an offset into the table, the high 3 bits are the
- .    number of the 8 bit register, while the low 3 bits are the bit within
- .    that register.
- .
- . This routine is based very heavily on the one provided by Peter Cammaert. 
-*/
-
-
-static void smc_setmulticast( int ioaddr, int count, struct dev_mc_list * 
addrs ) {
-       int                     i;
-       unsigned char           multicast_table[ 8 ];
-       struct dev_mc_list      * cur_addr;
-       /* table for flipping the order of 3 bits */  
-       unsigned char invert3[] = { 0, 4, 2, 6, 1, 5, 3, 7 };
-
-       /* start with a table of all zeros: reject all */       
-       memset( multicast_table, 0, sizeof( multicast_table ) );
-
-       cur_addr = addrs;
-       for ( i = 0; i < count ; i ++, cur_addr = cur_addr->next  ) {
-               int position;
-               
-               /* do we have a pointer here? */
-               if ( !cur_addr ) 
-                       break;
-               /* make sure this is a multicast address - shouldn't this
-                  be a given if we have it here ? */   
-               if ( !( *cur_addr->dmi_addr & 1 ) )     
-                       continue;       
-
-               /* only use the low order bits */       
-               position = crc32( cur_addr->dmi_addr, 6 ) & 0x3f;
-                               
-               /* do some messy swapping to put the bit in the right spot */
-               multicast_table[invert3[position&7]] |= 
-                                       (1<<invert3[(position>>3)&7]);
-
-       }
-       /* now, the table can be loaded into the chipset */
-       SMC_SELECT_BANK( 3 );
-       
-       for ( i = 0; i < 8 ; i++ ) {
-               outb( multicast_table[i], ioaddr + MULTICAST1 + i );
-       }
-}
-
-/*
-  Finds the CRC32 of a set of bytes.
-  Again, from Peter Cammaert's code. 
-*/
-static int crc32( char * s, int length ) { 
-       /* indices */
-       int perByte;
-       int perBit;
-       /* crc polynomial for Ethernet */
-       const unsigned long poly = 0xedb88320;
-       /* crc value - preinitialized to all 1's */
-       unsigned long crc_value = 0xffffffff; 
-
-       for ( perByte = 0; perByte < length; perByte ++ ) {
-               unsigned char   c;
-       
-               c = *(s++);
-               for ( perBit = 0; perBit < 8; perBit++ ) {
-                       crc_value = (crc_value>>1)^
-                               (((crc_value^c)&0x01)?poly:0);
-                       c >>= 1;
-               }
-       }
-       return  crc_value;
-} 
-
-#endif 
-
-
-/* 
- . Function: smc_wait_to_send_packet( struct sk_buff * skb, struct device * ) 
- . Purpose: 
- .    Attempt to allocate memory for a packet, if chip-memory is not
- .    available, then tell the card to generate an interrupt when it 
- .    is available.
- .
- . Algorithm:
- .
- . o   if the saved_skb is not currently null, then drop this packet
- .     on the floor.  This should never happen, because of TBUSY.
- . o   if the saved_skb is null, then replace it with the current packet,
- . o   See if I can sending it now. 
- . o   (NO): Enable interrupts and let the interrupt handler deal with it.
- . o   (YES):Send it now.
-*/
-static int smc_wait_to_send_packet( struct sk_buff * skb, struct device * dev )
-{ 
-       struct smc_local *lp    = (struct smc_local *)dev->priv;
-       unsigned short ioaddr   = dev->base_addr;
-       word                    length;
-       unsigned short          numPages;
-       word                    time_out;       
-       
-       if ( lp->saved_skb) {
-               /* THIS SHOULD NEVER HAPPEN. */
-               lp->stats.tx_aborted_errors++;
-               printk(CARDNAME": Bad Craziness - sent packet while busy.\n" );
-               return 1;
-       }
-       lp->saved_skb = skb;
-
-       length = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN;
-               
-       /*
-       . the MMU wants the number of pages to be the number of 256 bytes 
-       . 'pages', minus 1 ( since a packet can't ever have 0 pages :) ) 
-       */
-       numPages = length / 256;
-
-       if (numPages > 7 ) {
-               printk(CARDNAME": Far too big packet error. \n");
-               /* freeing the packet is a good thing here... but should        
        
-                . any packets of this size get down here?   */
-               dev_kfree_skb (skb, FREE_WRITE);
-               lp->saved_skb = NULL;
-               /* this IS an error, but, i don't want the skb saved */
-               return 0; 
-       }
-       /* either way, a packet is waiting now */
-       lp->packets_waiting++;
-        
-       /* now, try to allocate the memory */
-       SMC_SELECT_BANK( 2 );
-       outw( MC_ALLOC | numPages, ioaddr + MMU_CMD );
-       /*
-       . Performance Hack
-       .  
-       . wait a short amount of time.. if I can send a packet now, I send
-       . it now.  Otherwise, I enable an interrupt and wait for one to be
-       . available. 
-       .
-       . I could have handled this a slightly different way, by checking to
-       . see if any memory was available in the FREE MEMORY register.  However,
-       . either way, I need to generate an allocation, and the allocation works
-       . no matter what, so I saw no point in checking free memory.   
-       */ 
-       time_out = MEMORY_WAIT_TIME;
-       do { 
-               word    status;
-
-               status = inb( ioaddr + INTERRUPT );
-               if ( status & IM_ALLOC_INT ) { 
-                       /* acknowledge the interrupt */
-                       outb( IM_ALLOC_INT, ioaddr + INTERRUPT );
-                       break;  
-               }
-       } while ( -- time_out );
-
-       if ( !time_out ) {
-               /* oh well, wait until the chip finds memory later */ 
-               SMC_ENABLE_INT( IM_ALLOC_INT );
-               PRINTK2((CARDNAME": memory allocation deferred. \n"));
-               /* it's deferred, but I'll handle it later */
-               return 0;
-       }
-       /* or YES! I can send the packet now.. */
-       smc_hardware_send_packet(dev);
-       
-       return 0;
-}      
-
-/*
- . Function:  smc_hardware_send_packet(struct device * )
- . Purpose:    
- .     This sends the actual packet to the SMC9xxx chip.   
- . 
- . Algorithm:
- .     First, see if a saved_skb is available.    
- .             ( this should NOT be called if there is no 'saved_skb'
- .     Now, find the packet number that the chip allocated
- .     Point the data pointers at it in memory 
- .     Set the length word in the chip's memory
- .     Dump the packet to chip memory
- .     Check if a last byte is needed ( odd length packet )
- .             if so, set the control flag right 
- .     Tell the card to send it 
- .     Enable the transmit interrupt, so I know if it failed
- .     Free the kernel data if I actually sent it.
-*/
-static void smc_hardware_send_packet( struct device * dev ) 
-{
-       struct smc_local *lp = (struct smc_local *)dev->priv;
-       byte                    packet_no;
-       struct sk_buff *        skb = lp->saved_skb;
-       word                    length; 
-       unsigned short          ioaddr;
-       byte                    * buf;
-
-       ioaddr = dev->base_addr;        
-
-       if ( !skb ) {
-               PRINTK((CARDNAME": In XMIT with no packet to send \n"));
-               return;
-       }
-       length = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN;
-       buf = skb->data;
-
-       /* If I get here, I _know_ there is a packet slot waiting for me */
-       packet_no = inb( ioaddr + PNR_ARR + 1 ); 
-       if ( packet_no & 0x80 ) { 
-               /* or isn't there?  BAD CHIP! */
-               printk(KERN_DEBUG CARDNAME": Memory allocation failed. \n");
-               kfree(skb);
-               lp->saved_skb = NULL;
-               dev->tbusy = 0;
-               return;
-       }
-
-       /* we have a packet address, so tell the card to use it */
-       outb( packet_no, ioaddr + PNR_ARR );
-
-       /* point to the beginning of the packet */      
-       outw( PTR_AUTOINC , ioaddr + POINTER );
-
-       PRINTK3((CARDNAME": Trying to xmit packet of length %x\n", length ));
-#if SMC_DEBUG > 2
-       print_packet( buf, length );
-#endif
-
-       /* send the packet length ( +6 for status, length and ctl byte ) 
-          and the status word ( set to zeros ) */ 
-#ifdef USE_32_BIT
-       outl(  (length +6 ) << 16 , ioaddr + DATA_1 );
-#else
-       outw( 0, ioaddr + DATA_1 );      
-       /* send the packet length ( +6 for status words, length, and ctl*/      
        
-       outb( (length+6) & 0xFF,ioaddr + DATA_1 );
-       outb( (length+6) >> 8 , ioaddr + DATA_1 );
-#endif 
-
-       /* send the actual data 
-        . I _think_ it's faster to send the longs first, and then 
-        . mop up by sending the last word.  It depends heavily 
-        . on alignment, at least on the 486.  Maybe it would be 
-        . a good idea to check which is optimal?  But that could take
-        . almost as much time as is saved? 
-       */      
-#ifdef USE_32_BIT 
-       if ( length & 0x2  ) {  
-               outsl(ioaddr + DATA_1, buf,  length >> 2 ); 
-               outw( *((word *)(buf + (length & 0xFFFFFFFC))),ioaddr +DATA_1);
-       }
-       else
-               outsl(ioaddr + DATA_1, buf,  length >> 2 ); 
-#else
-       outsw(ioaddr + DATA_1 , buf, (length ) >> 1);
-#endif
-       /* Send the last byte, if there is one.   */
-       
-       if ( (length & 1) == 0 ) {
-               outw( 0, ioaddr + DATA_1 );
-       } else {
-               outb( buf[length -1 ], ioaddr + DATA_1 );
-               outb( 0x20, ioaddr + DATA_1);
-       }
-
-       /* enable the interrupts */
-       SMC_ENABLE_INT( (IM_TX_INT | IM_TX_EMPTY_INT) );
-
-       /* and let the chipset deal with it */
-       outw( MC_ENQUEUE , ioaddr + MMU_CMD );
-
-       PRINTK2((CARDNAME": Sent packet of length %d \n",length)); 
-
-       lp->saved_skb = NULL;
-       dev_kfree_skb (skb, FREE_WRITE);
-
-       dev->trans_start = jiffies;
-
-       /* we can send another packet */
-       dev->tbusy = 0;
-
-
-       return;
-}
-
-/*-------------------------------------------------------------------------
- |
- | smc_init( struct device * dev )  
- |   Input parameters: 
- |     dev->base_addr == 0, try to find all possible locations
- |     dev->base_addr == 1, return failure code
- |     dev->base_addr == 2, always allocate space,  and return success
- |     dev->base_addr == <anything else>   this is the address to check 
- |
- |   Output: 
- |     0 --> there is a device
- |     anything else, error 
- | 
- ---------------------------------------------------------------------------
-*/ 
-int smc_init(struct device *dev)
-{
-       int i;
-       int base_addr = dev ? dev->base_addr : 0;
-
-       /*  try a specific location */
-       if (base_addr > 0x1ff)  {                
-               int     error; 
-               error = smc_probe(base_addr);
-               if ( 0 == error ) {
-                       return smc_initcard( dev, base_addr );
-               }
-               return error; 
-       } else {
-               if ( 0 != base_addr ) {
-                       return -ENXIO;
-               }
-       }
-       
-       /* check every ethernet address */
-       for (i = 0; smc_portlist[i]; i++) {
-               int ioaddr = smc_portlist[i];
-
-               /* check if the area is available */
-               if (check_region( ioaddr , SMC_IO_EXTENT))
-                       continue;
-
-               /* check this specific address */
-               if ( smc_probe( ioaddr ) == 0)  {  
-                       return smc_initcard( dev, ioaddr  ); 
-               }
-       }
-
-       /* couldn't find anything */
-       return -ENODEV;
-}
-
-#ifndef NO_AUTOPROBE
-/*----------------------------------------------------------------------
- . smc_findirq 
- . 
- . This routine has a simple purpose -- make the SMC chip generate an 
- . interrupt, so an auto-detect routine can detect it, and find the IRQ,
- ------------------------------------------------------------------------
-*/
-int smc_findirq( int ioaddr ) 
-{
-       int     timeout = 20;
-
-
-       /* I have to do a STI() here, because this is called from
-          a routine that does an CLI during this process, making it 
-          rather difficult to get interrupts for auto detection */
-       sti();
-
-       autoirq_setup( 0 );
-
-       /*
-        * What I try to do here is trigger an ALLOC_INT. This is done
-        * by allocating a small chunk of memory, which will give an interrupt
-        * when done.
-        */
-
-         
-       SMC_SELECT_BANK(2);     
-       /* enable ALLOCation interrupts ONLY */
-       outb( IM_ALLOC_INT, ioaddr + INT_MASK );        
-
-       /*
-        . Allocate 512 bytes of memory.  Note that the chip was just 
-        . reset so all the memory is available
-       */
-       outw( MC_ALLOC | 1, ioaddr + MMU_CMD );         
-
-       /*
-        . Wait until positive that the interrupt has been generated
-       */
-       while ( timeout ) {
-               byte    int_status;
-
-               int_status = inb( ioaddr + INTERRUPT );
-
-               if ( int_status & IM_ALLOC_INT )        
-                       break;          /* got the interrupt */
-               timeout--;
-       }
-       /* there is really nothing that I can do here if timeout fails,
-          as autoirq_report will return a 0 anyway, which is what I
-          want in this case.   Plus, the clean up is needed in both
-          cases.  */
-
-       /* DELAY HERE!
-          On a fast machine, the status might change before the interrupt
-          is given to the processor.  This means that the interrupt was 
-          never detected, and autoirq_report fails to report anything.  
-          This should fix autoirq_* problems. 
-       */
-       SMC_DELAY();
-       SMC_DELAY();            
-       
-       /* and disable all interrupts again */
-       outb( 0, ioaddr + INT_MASK );
-
-       /* clear hardware interrupts again, because that's how it
-          was when I was called... */
-       cli();
-
-       /* and return what I found */
-       return autoirq_report( 0 );     
-}
-#endif
- 
-/*----------------------------------------------------------------------
- . Function: smc_probe( int ioaddr )
- . 
- . Purpose:  
- .     Tests to see if a given ioaddr points to an SMC9xxx chip.
- .     Returns a 0 on success  
- . 
- . Algorithm:
- .     (1) see if the high byte of BANK_SELECT is 0x33
- .     (2) compare the ioaddr with the base register's address
- .     (3) see if I recognize the chip ID in the appropriate register
- . 
- .---------------------------------------------------------------------
- */ 
-
-static int smc_probe( int ioaddr ) 
-{
-       unsigned int    bank;
-       word    revision_register;      
-       word  base_address_register;
-
-       /* First, see if the high byte is 0x33 */
-       bank = inw( ioaddr + BANK_SELECT );
-       if ( (bank & 0xFF00) != 0x3300 ) {
-               return -ENODEV;
-       }
-       /* The above MIGHT indicate a device, but I need to write to further
-               test this.  */
-       outw( 0x0, ioaddr + BANK_SELECT );
-       bank = inw( ioaddr + BANK_SELECT );
-       if ( (bank & 0xFF00 ) != 0x3300 ) {
-               return -ENODEV;
-       }
-       /* well, we've already written once, so hopefully another time won't
-          hurt.  This time, I need to switch the bank register to bank 1, 
-          so I can access the base address register */
-       SMC_SELECT_BANK(1);
-       base_address_register = inw( ioaddr + BASE );
-       if ( ioaddr != ( base_address_register >> 3 & 0x3E0 ) )  {
-               printk(CARDNAME ": IOADDR %x doesn't match configuration (%x)." 
-                       "Probably not a SMC chip\n",
-                       ioaddr, base_address_register >> 3 & 0x3E0 );
-               /* well, the base address register didn't match.  Must not have
-                  been a SMC chip after all. */
-               return -ENODEV;
-       }
-
-       /*  check if the revision register is something that I recognize.  
-           These might need to be added to later, as future revisions 
-           could be added.  */
-       SMC_SELECT_BANK(3);
-       revision_register  = inw( ioaddr + REVISION );
-       if ( !chip_ids[ ( revision_register  >> 4 ) & 0xF  ] ) { 
-               /* I don't recognize this chip, so... */
-               printk(CARDNAME ": IO %x: Unrecognized revision register:"
-                       " %x, Contact author. \n", ioaddr, revision_register );
-
-               return -ENODEV;
-       }
-
-       /* at this point I'll assume that the chip is an SMC9xxx.   
-          It might be prudent to check a listing of MAC addresses 
-          against the hardware address, or do some other tests. */     
-       return 0;
-}
-
-/*---------------------------------------------------------------
- . Here I do typical initialization tasks. 
- . 
- . o  Initialize the structure if needed
- . o  print out my vanity message if not done so already
- . o  print out what type of hardware is detected
- . o  print out the ethernet address
- . o  find the IRQ 
- . o  set up my private data 
- . o  configure the dev structure with my subroutines
- . o  actually GRAB the irq.
- . o  GRAB the region 
- .-----------------------------------------------------------------
-*/
-static int  smc_initcard(struct device *dev, int ioaddr)
-{
-       int i;
-
-       static unsigned version_printed = 0;
-
-       /* registers */
-       word    revision_register;      
-       word    configuration_register; 
-       word    memory_info_register;
-       word    memory_cfg_register;
-
-       const char *    version_string;
-       const char *    if_string;
-       int     memory;
-
-       int   irqval;
-
-       /* see if I need to initialize the ethernet card structure */
-       if (dev == NULL) {
-#ifdef SUPPORT_OLD_KERNEL
-#ifndef MODULE
-/* note: the old module interface does not support this call */
-               dev = init_etherdev( 0, sizeof( struct smc_local ), 0 );
-#endif 
-#else
-               dev = init_etherdev(0, 0);
-#endif 
-               if (dev == NULL)
-                       return -ENOMEM;
-       }
-
-       if (version_printed++ == 0)
-               printk("%s", version);
-
-       /* fill in some of the fields */
-       dev->base_addr = ioaddr;
-
-       /*
-        . Get the MAC address ( bank 1, regs 4 - 9 )
-       */
-       SMC_SELECT_BANK( 1 );
-       for ( i = 0; i < 6; i += 2 ) { 
-               word    address;
-
-               address = inw( ioaddr + ADDR0 + i  );
-               dev->dev_addr[ i + 1] = address >> 8;
-               dev->dev_addr[ i ] = address & 0xFF;    
-       }
-
-       /* get the memory information */
-
-       SMC_SELECT_BANK( 0 );
-       memory_info_register = inw( ioaddr + MIR );
-       memory_cfg_register  = inw( ioaddr + MCR );
-       memory = ( memory_cfg_register >> 9 )  & 0x7;  /* multiplier */
-       memory *= 256 * ( memory_info_register & 0xFF );
-
-       /* 
-        Now, I want to find out more about the chip.  This is sort of
-        redundant, but it's cleaner to have it in both, rather than having
-        one VERY long probe procedure.
-       */      
-       SMC_SELECT_BANK(3);
-       revision_register  = inw( ioaddr + REVISION );
-       version_string = chip_ids[ ( revision_register  >> 4 ) & 0xF  ];
-       if ( !version_string ) {
-               /* I shouldn't get here because this call was done before.... 
*/ 
-               return -ENODEV;
-       }
-
-       /* is it using AUI or 10BaseT ? */
-       if ( dev->if_port == 0 ) {
-               SMC_SELECT_BANK(1);
-               configuration_register = inw( ioaddr + CONFIG );
-               if ( configuration_register & CFG_AUI_SELECT )  
-                       dev->if_port = 2;
-               else
-                       dev->if_port = 1;
-       }
-       if_string = interfaces[ dev->if_port - 1 ];
-
-       /* now, reset the chip, and put it into a known state */
-       smc_reset( ioaddr );
-
-       /*
-        . If dev->irq is 0, then the device has to be banged on to see
-        . what the IRQ is. 
-        . 
-        . This banging doesn't always detect the IRQ, for unknown reasons.
-        . a workaround is to reset the chip and try again.  
-        .    
-        . Interestingly, the DOS packet driver *SETS* the IRQ on the card to
-        . be what is requested on the command line.   I don't do that, mostly
-        . because the card that I have uses a non-standard method of accessing
-        . the IRQs, and because this _should_ work in most configurations.
-        .
-        . Specifying an IRQ is done with the assumption that the user knows 
-        . what (s)he is doing.  No checking is done!!!!
-        .
-       */
-#ifndef NO_AUTOPROBE
-       if ( dev->irq < 2 ) {
-               int     trials;
-
-               trials = 3;
-               while ( trials-- ) { 
-                       dev->irq = smc_findirq( ioaddr );
-                       if ( dev->irq ) 
-                               break;
-                       /* kick the card and try again */
-                       smc_reset( ioaddr );
-               }
-       } 
-       if (dev->irq == 0 ) {
-               printk(CARDNAME": Couldn't autodetect your IRQ. Use irq=xx.\n");
-               return -ENODEV;
-       }
-#else
-       if (dev->irq == 0 ) {
-               printk(CARDNAME
-               ": Autoprobing IRQs is not supported for old kernels.\n");
-               return -ENODEV;
-       }
-#endif
-       if (dev->irq == 2) {
-               /* Fixup for users that don't know that IRQ 2 is really IRQ 9,
-                * or don't know which one to set.
-                */
-               dev->irq = 9;
-       }
-
-       /* now, print out the card info, in a short format.. */
-       
-       printk(CARDNAME ": %s(r:%d) at %#3x IRQ:%d INTF:%s MEM:%db ",
-               version_string, revision_register & 0xF, ioaddr, dev->irq, 
-               if_string, memory );
-       /*
-        . Print the Ethernet address 
-       */
-       printk("ADDR: ");
-       for (i = 0; i < 5; i++)
-               printk("%2.2x:", dev->dev_addr[i] );
-       printk("%2.2x \n", dev->dev_addr[5] );
-
-
-       /* Initialize the private structure. */
-       if (dev->priv == NULL) {
-               dev->priv = kmalloc(sizeof(struct smc_local), GFP_KERNEL);
-               if (dev->priv == NULL)
-                       return -ENOMEM;
-       }
-       /* set the private data to zero by default */
-       memset(dev->priv, 0, sizeof(struct smc_local));
-
-       /* Fill in the fields of the device structure with ethernet values. */
-       ether_setup(dev);
-
-       /* Grab the IRQ */
-       irqval = request_irq(dev->irq, &smc_interrupt, 0, CARDNAME, NULL);
-       if (irqval) {
-                 printk(CARDNAME": unable to get IRQ %d (irqval=%d).\n",
-               dev->irq, irqval);
-                 return -EAGAIN;
-       }
-       irq2dev_map[dev->irq] = dev;
-
-       /* Grab the region so that no one else tries to probe our ioports. */
-       request_region(ioaddr, SMC_IO_EXTENT, CARDNAME);
-
-       dev->open                       = smc_open;
-       dev->stop                       = smc_close;
-       dev->hard_start_xmit            = smc_send_packet;
-       dev->get_stats                  = smc_query_statistics;
-#ifdef HAVE_MULTICAST
-       dev->set_multicast_list         = &smc_set_multicast_list;
-#endif
-
-       return 0;
-}
-
-#if SMC_DEBUG > 2
-static void print_packet( byte * buf, int length ) 
-{ 
-#if 0
-       int i;
-       int remainder;
-       int lines;
-       
-       printk("Packet of length %d \n", length );
-       lines = length / 16;
-       remainder = length % 16;
-
-       for ( i = 0; i < lines ; i ++ ) { 
-               int cur;
-
-               for ( cur = 0; cur < 8; cur ++ ) { 
-                       byte a, b;
-
-                       a = *(buf ++ );
-                       b = *(buf ++ );
-                       printk("%02x%02x ", a, b );
-               }
-               printk("\n");
-       }
-       for ( i = 0; i < remainder/2 ; i++ ) {
-               byte a, b;
-
-               a = *(buf ++ );
-               b = *(buf ++ );
-               printk("%02x%02x ", a, b );
-       }
-       printk("\n");
-#endif
-}
-#endif 
-
-
-/*
- * Open and Initialize the board
- * 
- * Set up everything, reset the card, etc ..
- *
- */
-static int smc_open(struct device *dev)
-{
-       int     ioaddr = dev->base_addr;
-
-       int     i;      /* used to set hw ethernet address */ 
-
-       /* clear out all the junk that was put here before... */
-       memset(dev->priv, 0, sizeof(struct smc_local));
-
-       dev->tbusy      = 0;
-       dev->interrupt  = 0;
-       dev->start      = 1;
-#ifdef MODULE
-       MOD_INC_USE_COUNT;
-#endif
-
-       /* reset the hardware */
-
-       smc_reset( ioaddr );
-       smc_enable( ioaddr );
-
-       /* Select which interface to use */
-        
-       SMC_SELECT_BANK( 1 );
-       if ( dev->if_port == 1 ) {      
-               outw( inw( ioaddr + CONFIG ) & ~CFG_AUI_SELECT, 
-                       ioaddr + CONFIG );                                      
                
-       } 
-       else if ( dev->if_port == 2 ) { 
-               outw( inw( ioaddr + CONFIG ) | CFG_AUI_SELECT, 
-                       ioaddr + CONFIG );                                      
                
-       }
-
-       /*
-               According to Becker, I have to set the hardware address
-               at this point, because the (l)user can set it with an
-               ioctl.  Easily done... 
-       */
-       SMC_SELECT_BANK( 1 );
-       for ( i = 0; i < 6; i += 2 ) { 
-               word    address;
-               
-               address = dev->dev_addr[ i + 1 ] << 8 ;
-               address  |= dev->dev_addr[ i ];
-               outw( address, ioaddr + ADDR0 + i );
-       }
-       return 0;
-}
-
-/*--------------------------------------------------------
- . Called by the kernel to send a packet out into the void
- . of the net.  This routine is largely based on 
- . skeleton.c, from Becker.   
- .--------------------------------------------------------
-*/
-static int smc_send_packet(struct sk_buff *skb, struct device *dev)
-{
-       if (dev->tbusy) {
-               /* If we get here, some higher level has decided we are broken.
-                  There should really be a "kick me" function call instead. */
-               int tickssofar = jiffies - dev->trans_start;
-               if (tickssofar < 5)
-                       return 1;
-               printk(KERN_WARNING CARDNAME": transmit timed out, %s?\n",
-                       tx_done(dev) ? "IRQ conflict" : 
-                       "network cable problem");
-               /* "kick" the adaptor */
-               smc_reset( dev->base_addr );
-               smc_enable( dev->base_addr );
-
-               dev->tbusy = 0;
-               dev->trans_start = jiffies;
-               /* clear anything saved */
-               ((struct smc_local *)dev->priv)->saved_skb = NULL;
-       }
-
-       /* If some higher layer thinks we've missed an tx-done interrupt
-          we are passed NULL. Caution: dev_tint() handles the cli()/sti()
-          itself. */
-       if (skb == NULL) {
-               dev_tint(dev);
-               return 0;
-       }
-
-       /* Block a timer-based transmit from overlapping.  This could better be
-          done with atomic_swap(1, dev->tbusy), but set_bit() works as well. */
-       if (set_bit(0, (void*)&dev->tbusy) != 0) {
-               printk(KERN_WARNING CARDNAME": Transmitter access conflict.\n");
-               dev_kfree_skb (skb, FREE_WRITE);
-       } else {
-               /* Well, I want to send the packet.. but I don't know 
-                  if I can send it right now...  */    
-               return smc_wait_to_send_packet( skb, dev );
-       }
-       return 0;
-}
-
-/*--------------------------------------------------------------------
- .
- . This is the main routine of the driver, to handle the device when
- . it needs some attention.
- .
- . So:
- .   first, save state of the chipset
- .   branch off into routines to handle each case, and acknowledge 
- .         each to the interrupt register
- .   and finally restore state. 
- .  
- ---------------------------------------------------------------------*/
-#ifdef REALLY_NEW_KERNEL
-static void smc_interrupt(int irq, void * dev_id,  struct pt_regs * regs)
-#else 
-static void smc_interrupt(int irq, struct pt_regs * regs)
-#endif 
-{
-       struct device *dev      = (struct device *)(irq2dev_map[irq]);
-       int ioaddr              = dev->base_addr;
-       struct smc_local *lp    = (struct smc_local *)dev->priv;
-
-       byte    status;
-       word    card_stats;
-       byte    mask;
-       int     timeout;
-       /* state registers */
-       word    saved_bank;
-       word    saved_pointer;
-
-
-       
-       PRINTK3((CARDNAME": SMC interrupt started \n"));
-
-       if (dev == NULL) {
-               printk(KERN_WARNING  CARDNAME": irq %d for unknown device.\n", 
-                       irq);
-               return;
-       }
-
-/* will Linux let this happen ??  If not, this costs some speed */
-       if ( dev->interrupt ) { 
-               printk(KERN_WARNING CARDNAME": interrupt inside interrupt.\n");
-               return;
-       }
-               
-       dev->interrupt = 1;
-
-       saved_bank = inw( ioaddr + BANK_SELECT );
-
-       SMC_SELECT_BANK(2);
-       saved_pointer = inw( ioaddr + POINTER );
-
-       mask = inb( ioaddr + INT_MASK );
-       /* clear all interrupts */
-       outb( 0, ioaddr + INT_MASK );
-
-
-       /* set a timeout value, so I don't stay here forever */
-       timeout = 4;
-
-       PRINTK2((KERN_WARNING CARDNAME ": MASK IS %x \n", mask ));
-       do {    
-               /* read the status flag, and mask it */
-               status = inb( ioaddr + INTERRUPT ) & mask;
-               if (!status )
-                       break;
-
-               PRINTK3((KERN_WARNING CARDNAME
-                       ": Handling interrupt status %x \n", status )); 
-
-               if (status & IM_RCV_INT) {
-                       /* Got a packet(s). */
-                       PRINTK2((KERN_WARNING CARDNAME
-                               ": Receive Interrupt\n"));
-                       smc_rcv(dev);
-               } else if (status & IM_TX_INT ) {
-                       PRINTK2((KERN_WARNING CARDNAME
-                               ": TX ERROR handled\n"));
-                       smc_tx(dev);
-                       outb(IM_TX_INT, ioaddr + INTERRUPT ); 
-               } else if (status & IM_TX_EMPTY_INT ) {
-                       /* update stats */
-                       SMC_SELECT_BANK( 0 );
-                       card_stats = inw( ioaddr + COUNTER );
-                       /* single collisions */
-                       lp->stats.collisions += card_stats & 0xF;
-                       card_stats >>= 4;
-                       /* multiple collisions */
-                       lp->stats.collisions += card_stats & 0xF;
-
-                       /* these are for when linux supports these statistics */
-#if 0 
-                       card_stats >>= 4;
-                       /* deferred */
-                       card_stats >>= 4;
-                       /* excess deferred */
-#endif 
-                       SMC_SELECT_BANK( 2 );
-                       PRINTK2((KERN_WARNING CARDNAME 
-                               ": TX_BUFFER_EMPTY handled\n"));
-                       outb( IM_TX_EMPTY_INT, ioaddr + INTERRUPT );
-                       mask &= ~IM_TX_EMPTY_INT;
-                       lp->stats.tx_packets += lp->packets_waiting;
-                       lp->packets_waiting = 0;
-
-               } else if (status & IM_ALLOC_INT ) {
-                       PRINTK2((KERN_DEBUG CARDNAME
-                               ": Allocation interrupt \n"));
-                       /* clear this interrupt so it doesn't happen again */
-                       mask &= ~IM_ALLOC_INT;
-               
-                       smc_hardware_send_packet( dev );
-                       
-                       /* enable xmit interrupts based on this */
-                       mask |= ( IM_TX_EMPTY_INT | IM_TX_INT );
-
-                       /* and let the card send more packets to me */
-                       mark_bh( NET_BH );
-
-                       PRINTK2((CARDNAME": Handoff done successfully.\n"));    
-               } else if (status & IM_RX_OVRN_INT ) {
-                       lp->stats.rx_errors++;
-                       lp->stats.rx_fifo_errors++;                     
-                       outb( IM_RX_OVRN_INT, ioaddr + INTERRUPT );
-               } else if (status & IM_EPH_INT ) {
-                       PRINTK((CARDNAME ": UNSUPPORTED: EPH INTERRUPT \n"));
-               } else if (status & IM_ERCV_INT ) {
-                       PRINTK((CARDNAME ": UNSUPPORTED: ERCV INTERRUPT \n"));
-                       outb( IM_ERCV_INT, ioaddr + INTERRUPT );
-               }
-       } while ( timeout -- ); 
-
-       
-       /* restore state register */
-       SMC_SELECT_BANK( 2 );
-       outb( mask, ioaddr + INT_MASK );
-       
-       PRINTK3(( KERN_WARNING CARDNAME ": MASK is now %x \n", mask ));
-       outw( saved_pointer, ioaddr + POINTER );
-
-       SMC_SELECT_BANK( saved_bank );
-
-       dev->interrupt = 0;
-       PRINTK3((CARDNAME ": Interrupt done\n"));
-       return;
-}
-
-/*-------------------------------------------------------------
- .
- . smc_rcv -  receive a packet from the card
- .
- . There is ( at least ) a packet waiting to be read from
- . chip-memory.
- . 
- . o Read the status 
- . o If an error, record it  
- . o otherwise, read in the packet 
- --------------------------------------------------------------
-*/
-static void smc_rcv(struct device *dev)
-{
-       struct smc_local *lp = (struct smc_local *)dev->priv;
-       int     ioaddr = dev->base_addr;
-       int     packet_number;
-       word    status;
-       word    packet_length; 
-       
-       /* assume bank 2 */
-
-       packet_number = inw( ioaddr + FIFO_PORTS );
-
-       if ( packet_number & FP_RXEMPTY ) {
-               /* we got called , but nothing was on the FIFO */
-               PRINTK((CARDNAME ": WARNING: smc_rcv with nothing on FIFO. 
\n"));
-               /* don't need to restore anything */
-               return;
-       }
-               
-       /*  start reading from the start of the packet */
-       outw( PTR_READ | PTR_RCV | PTR_AUTOINC, ioaddr + POINTER );
-
-       /* First two words are status and packet_length */      
-       status          = inw( ioaddr + DATA_1 );
-       packet_length   = inw( ioaddr + DATA_1 );
-       
-       packet_length &= 0x07ff;  /* mask off top bits */
-
-       PRINTK2(("RCV: STATUS %4x LENGTH %4x\n", status, packet_length ));
-       /* 
-        . the packet length contains 3 extra words : 
-        . status, length, and a extra word with an odd byte .
-       */
-       packet_length -= 6; 
-       
-       if ( !(status & RS_ERRORS ) ){                  
-               /* do stuff to make a new packet */
-               struct sk_buff  * skb;
-               byte            * data;
-
-               /* read one extra byte */
-               if ( status & RS_ODDFRAME )     
-                       packet_length++;        
-
-               /* set multicast stats */ 
-               if ( status & RS_MULTICAST )
-                       lp->stats.multicast++;
-
-#ifdef SUPPORT_OLD_KERNEL
-               skb = alloc_skb( packet_length + 5, GFP_ATOMIC );
-#else  
-               skb = dev_alloc_skb( packet_length + 5); 
-#endif
-
-               if ( skb == NULL ) {    
-                       printk(KERN_NOTICE CARDNAME
-                       ": Low memory, packet dropped.\n");
-                       lp->stats.rx_dropped++;
-               }
-
-               /* 
-                ! This should work without alignment, but it could be
-                ! in the worse case 
-               */
-#ifndef SUPPORT_OLD_KERNEL
-               /* TODO: Should I use 32bit alignment here ? */
-               skb_reserve( skb, 2 );   /* 16 bit alignment */
-#endif
-
-               skb->dev = dev;
-#ifdef SUPPORT_OLD_KERNEL
-               skb->len = packet_length;
-               data = skb->data;
-#else
-               data = skb_put( skb, packet_length);
-#endif
-#ifdef USE_32_BIT
-               /* QUESTION:  Like in the TX routine, do I want                 
-                  to send the DWORDs or the bytes first, or some
-                  mixture.  A mixture might improve already slow PIO
-                  performance  */
-               PRINTK3((" Reading %d dwords (and %d bytes) \n", 
-                       packet_length >> 2, packet_length & 3 ));
-               insl(ioaddr + DATA_1 , data, packet_length >> 2 ); 
-               /* read the left over bytes */
-               insb( ioaddr + DATA_1, data + (packet_length & 0xFFFFFC), 
-                       packet_length & 0x3  );
-#else
-               PRINTK3((" Reading %d words and %d byte(s) \n", 
-                       (packet_length >> 1 ), packet_length & 1 );
-               if ( packet_length & 1 ) 
-                       *(data++) = inb( ioaddr + DATA_1 ); 
-               insw(ioaddr + DATA_1 , data, (packet_length + 1 ) >> 1);
-               if ( packet_length & 1 ) {
-                       data += packet_length & ~1;
-                       *((data++) = inb( ioaddr + DATA_1 ); 
-               }
-#endif                 
-#if    SMC_DEBUG > 2   
-                       print_packet( data, packet_length );
-#endif
-
-#ifndef SUPPORT_OLD_KERNEL
-               skb->protocol = eth_type_trans(skb, dev ); 
-#endif
-               netif_rx(skb);
-               lp->stats.rx_packets++;
-       } else {
-               /* error ... */
-               lp->stats.rx_errors++;
-                       
-               if ( status & RS_ALGNERR )  lp->stats.rx_frame_errors++;  
-               if ( status & (RS_TOOSHORT | RS_TOOLONG ) )  
-                       lp->stats.rx_length_errors++;
-               if ( status & RS_BADCRC)        lp->stats.rx_crc_errors++;
-       }
-       /*  error or good, tell the card to get rid of this packet */
-       outw( MC_RELEASE, ioaddr + MMU_CMD );
-
-
-       return;
-}
-
-
-/************************************************************************* 
- . smc_tx
- . 
- . Purpose:  Handle a transmit error message.   This will only be called
- .   when an error, because of the AUTO_RELEASE mode. 
- . 
- . Algorithm:
- .     Save pointer and packet no
- .     Get the packet no from the top of the queue
- .     check if it's valid ( if not, is this an error??? )
- .     read the status word 
- .     record the error
- .     ( resend?  Not really, since we don't want old packets around )
- .     Restore saved values 
- ************************************************************************/ 
-static void smc_tx( struct device * dev ) 
-{
-       int     ioaddr = dev->base_addr;
-       struct smc_local *lp = (struct smc_local *)dev->priv;
-       byte saved_packet;
-       byte packet_no;
-       word tx_status;
-
-
-       /* assume bank 2  */
-
-       saved_packet = inb( ioaddr + PNR_ARR );
-       packet_no = inw( ioaddr + FIFO_PORTS );
-       packet_no &= 0x7F;
-
-       /* select this as the packet to read from */
-       outb( packet_no, ioaddr + PNR_ARR ); 
-       
-       /* read the first word from this packet */      
-       outw( PTR_AUTOINC | PTR_READ, ioaddr + POINTER );
-
-       tx_status = inw( ioaddr + DATA_1 );
-       PRINTK3((CARDNAME": TX DONE STATUS: %4x \n", tx_status ));
-       
-       lp->stats.tx_errors++;
-       if ( tx_status & TS_LOSTCAR ) lp->stats.tx_carrier_errors++;
-       if ( tx_status & TS_LATCOL  ) {
-               printk(KERN_DEBUG CARDNAME 
-                       ": Late collision occurred on last xmit.\n");
-               lp->stats.tx_window_errors++;
-       }
-#if 0
-               if ( tx_status & TS_16COL ) { ... }
-#endif 
-
-       if ( tx_status & TS_SUCCESS ) {  
-               printk(CARDNAME": Successful packet caused interrupt \n");
-       } 
-       /* re-enable transmit */
-       SMC_SELECT_BANK( 0 );
-       outw( inw( ioaddr + TCR ) | TCR_ENABLE, ioaddr + TCR );
-
-       /* kill the packet */                   
-       SMC_SELECT_BANK( 2 );
-       outw( MC_FREEPKT, ioaddr + MMU_CMD );
-
-       /* one less packet waiting for me */
-       lp->packets_waiting--;
-               
-       outb( saved_packet, ioaddr + PNR_ARR );
-       return;
-}
-
-/*----------------------------------------------------
- . smc_close
- . 
- . this makes the board clean up everything that it can
- . and not talk to the outside world.   Caused by
- . an 'ifconfig ethX down'
- .
- -----------------------------------------------------*/
-static int smc_close(struct device *dev)
-{
-       dev->tbusy = 1;
-       dev->start = 0;
-
-       /* clear everything */
-       smc_shutdown( dev->base_addr );
-
-       /* Update the statistics here. */
-#ifdef MODULE
-       MOD_DEC_USE_COUNT;
-#endif
-
-       return 0;
-}
-
-/*------------------------------------------------------------
- . Get the current statistics. 
- . This may be called with the card open or closed. 
- .-------------------------------------------------------------*/
-static struct enet_statistics * smc_query_statistics(struct device *dev) {
-       struct smc_local *lp = (struct smc_local *)dev->priv;
-
-       return &lp->stats;
-}
-
-/*-----------------------------------------------------------
- . smc_set_multicast_list
- .  
- . This routine will, depending on the values passed to it,
- . either make it accept multicast packets, go into 
- . promiscuous mode ( for TCPDUMP and cousins ) or accept
- . a select set of multicast packets  
-*/
-#ifdef SUPPORT_OLD_KERNEL
-static void smc_set_multicast_list( struct device * dev, 
-                       int num_addrs, void * addrs )   
-#else
-static void smc_set_multicast_list(struct device *dev) 
-#endif 
-{
-       short ioaddr = dev->base_addr;
-
-       SMC_SELECT_BANK(0);
-#ifdef  SUPPORT_OLD_KERNEL
-       if ( num_addrs < 0 )  
-#else
-       if ( dev->flags & IFF_PROMISC ) 
-#endif 
-               outw( inw(ioaddr + RCR ) | RCR_PROMISC, ioaddr + RCR );
-
-/* BUG?  I never disable promiscuous mode if multicasting was turned on. 
-   Now, I turn off promiscuous mode, but I don't do anything to multicasting
-   when promiscuous mode is turned on. 
-*/
-
-       /* Here, I am setting this to accept all multicast packets.  
-          I don't need to zero the multicast table, because the flag is
-          checked before the table is 
-       */
-#ifdef  SUPPORT_OLD_KERNEL 
-       else if ( num_addrs > 20 )      /* arbitrary constant */
-#else
-       else if (dev->flags & IFF_ALLMULTI)  
-#endif 
-               outw( inw(ioaddr + RCR ) | RCR_ALMUL, ioaddr + RCR ); 
-
-       /* We just get all multicast packets even if we only want them
-        . from one source.  This will be changed at some future
-        . point. */
-#ifdef  SUPPORT_OLD_KERNEL
-       else if (num_addrs > 0 ) { 
-/* the old kernel support will not have hardware multicast support. It would
-   involve more kludges, and make the multicast setting code even worse.  
-   Instead, just use the ALMUL method.   This is reasonable, considering that
-   it is seldom used
-*/
-               outw( inw( ioaddr + RCR ) & ~RCR_PROMISC, ioaddr + RCR );
-               outw( inw( ioadddr + RCR ) | RCR_ALMUL, ioadddr + RCR );
-       }
-#else
-       else if (dev->mc_count )  { 
-               /* support hardware multicasting */
-               
-               /* be sure I get rid of flags I might have set */       
-               outw( inw( ioaddr + RCR ) & ~(RCR_PROMISC | RCR_ALMUL), 
-                       ioaddr + RCR );
-               /* NOTE: this has to set the bank, so make sure it is the
-                  last thing called.  The bank is set to zero at the top */
-               smc_setmulticast( ioaddr, dev->mc_count, dev->mc_list );
-       }
-#endif
-       else  {
-               outw( inw( ioaddr + RCR ) & ~(RCR_PROMISC | RCR_ALMUL), 
-                       ioaddr + RCR );
-
-               /* 
-                 since I'm disabling all multicast entirely, I need to 
-                 clear the multicast list 
-               */
-               SMC_SELECT_BANK( 3 );
-               outw( 0, ioaddr + MULTICAST1 ); 
-               outw( 0, ioaddr + MULTICAST2 ); 
-               outw( 0, ioaddr + MULTICAST3 ); 
-               outw( 0, ioaddr + MULTICAST4 ); 
-       }
-}
-
-#ifdef MODULE
-
-static char devicename[9] = { 0, };
-static struct device devSMC9194 = {
-       devicename, /* device name is inserted by linux/drivers/net/net_init.c 
*/
-       0, 0, 0, 0,
-       0, 0,  /* I/O address, IRQ */
-       0, 0, 0, NULL, smc_init };
-
-int io = 0;
-int irq = 0;
-int ifport = 0;
-
-int init_module(void)
-{
-       int result;
-
-       if (io == 0)
-               printk(KERN_WARNING 
-               CARDNAME": You shouldn't use auto-probing with insmod!\n" );
-
-       /* copy the parameters from insmod into the device structure */
-       devSMC9194.base_addr = io;
-       devSMC9194.irq       = irq;
-       devSMC9194.if_port      = ifport;
-       if ((result = register_netdev(&devSMC9194)) != 0)
-               return result;
-
-       return 0;
-}
-
-void cleanup_module(void)
-{
-       /* No need to check MOD_IN_USE, as sys_delete_module() checks. */
-       unregister_netdev(&devSMC9194);
-
-       free_irq(devSMC9194.irq, NULL );
-       irq2dev_map[devSMC9194.irq] = NULL;
-       release_region(devSMC9194.base_addr, SMC_IO_EXTENT);
-
-       if (devSMC9194.priv)
-               kfree_s(devSMC9194.priv, sizeof(struct smc_local));
-}
-
-#endif /* MODULE */
-
diff --git a/linux/src/drivers/net/smc9194.h b/linux/src/drivers/net/smc9194.h
deleted file mode 100644
index 66f8b8c..0000000
--- a/linux/src/drivers/net/smc9194.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/*------------------------------------------------------------------------
- . smc9194.h
- . Copyright (C) 1996 by Erik Stahlman 
- .
- . This software may be used and distributed according to the terms
- . of the GNU Public License, incorporated herein by reference.
- .
- . This file contains register information and access macros for 
- . the SMC91xxx chipset.   
- . 
- . Information contained in this file was obtained from the SMC91C94 
- . manual from SMC.  To get a copy, if you really want one, you can find 
- . information under www.smc.com in the components division.
- . ( this thanks to advice from Donald Becker ).
- . 
- . Authors
- .     Erik Stahlman                           ( address@hidden )
- .
- . History
- . 01/06/96             Erik Stahlman   moved definitions here from main .c 
file
- . 01/19/96             Erik Stahlman    polished this up some, and added 
better
- .                                                                             
  error handling
- .
- ---------------------------------------------------------------------------*/
-#ifndef _SMC9194_H_
-#define _SMC9194_H_
-
-/* I want some simple types */
-
-typedef unsigned char                  byte;
-typedef unsigned short                 word;
-typedef unsigned long int              dword;
-
-
-/* Because of bank switching, the SMC91xxx uses only 16 I/O ports */
-
-#define SMC_IO_EXTENT  16
-
-
-/*---------------------------------------------------------------
- .  
- . A description of the SMC registers is probably in order here,
- . although for details, the SMC datasheet is invaluable.  
- . 
- . Basically, the chip has 4 banks of registers ( 0 to 3 ), which
- . are accessed by writing a number into the BANK_SELECT register
- . ( I also use a SMC_SELECT_BANK macro for this ).
- . 
- . The banks are configured so that for most purposes, bank 2 is all
- . that is needed for simple run time tasks.  
- -----------------------------------------------------------------------*/
-
-/*
- . Bank Select Register: 
- .
- .             yyyy yyyy 0000 00xx  
- .             xx              = bank number
- .             yyyy yyyy       = 0x33, for identification purposes.
-*/
-#define        BANK_SELECT             14
-
-/* BANK 0  */
-
-#define        TCR             0       /* transmit control register */
-#define TCR_ENABLE     0x0001  /* if this is 1, we can transmit */ 
-#define TCR_FDUPLX     0x0800  /* receive packets sent out */
-#define TCR_STP_SQET   0x1000  /* stop transmitting if Signal quality error */
-#define        TCR_MON_CNS     0x0400  /* monitors the carrier status */
-#define        TCR_PAD_ENABLE  0x0080  /* pads short packets to 64 bytes */
-
-#define        TCR_CLEAR       0       /* do NOTHING */
-/* the normal settings for the TCR register : */ 
-/* QUESTION: do I want to enable padding of short packets ? */
-#define        TCR_NORMAL      TCR_ENABLE 
-
-
-#define EPH_STATUS     2
-#define ES_LINK_OK     0x4000  /* is the link integrity ok ? */
-
-#define        RCR             4
-#define RCR_SOFTRESET  0x8000  /* resets the chip */   
-#define        RCR_STRIP_CRC   0x200   /* strips CRC */
-#define RCR_ENABLE     0x100   /* IFF this is set, we can receive packets */
-#define RCR_ALMUL      0x4     /* receive all multicast packets */
-#define        RCR_PROMISC     0x2     /* enable promiscuous mode */
-
-/* the normal settings for the RCR register : */
-#define        RCR_NORMAL      (RCR_STRIP_CRC | RCR_ENABLE)
-#define RCR_CLEAR      0x0             /* set it to a base state */
-
-#define        COUNTER         6
-#define        MIR             8
-#define        MCR             10
-/* 12 is reserved */
-
-/* BANK 1 */
-#define CONFIG                 0
-#define CFG_AUI_SELECT         0x100
-#define        BASE                    2
-#define        ADDR0                   4
-#define        ADDR1                   6
-#define        ADDR2                   8
-#define        GENERAL                 10
-#define        CONTROL                 12
-#define        CTL_POWERDOWN           0x2000
-#define        CTL_LE_ENABLE           0x80
-#define        CTL_CR_ENABLE           0x40
-#define        CTL_TE_ENABLE           0x0020
-#define CTL_AUTO_RELEASE       0x0800
-#define        CTL_EPROM_ACCESS        0x0003 /* high if Eprom is being read */
-
-/* BANK 2 */
-#define MMU_CMD                0
-#define MC_BUSY                1       /* only readable bit in the register */
-#define MC_NOP         0
-#define        MC_ALLOC        0x20    /* or with number of 256 byte packets */
-#define        MC_RESET        0x40    
-#define        MC_REMOVE       0x60    /* remove the current rx packet */
-#define MC_RELEASE     0x80    /* remove and release the current rx packet */
-#define MC_FREEPKT     0xA0    /* Release packet in PNR register */
-#define MC_ENQUEUE     0xC0    /* Enqueue the packet for transmit */
-       
-#define        PNR_ARR         2
-#define FIFO_PORTS     4
-
-#define FP_RXEMPTY  0x8000
-#define FP_TXEMPTY  0x80
-
-#define        POINTER         6
-#define PTR_READ       0x2000
-#define        PTR_RCV         0x8000
-#define        PTR_AUTOINC     0x4000
-#define PTR_AUTO_INC   0x0040
-
-#define        DATA_1          8
-#define        DATA_2          10
-#define        INTERRUPT       12
-
-#define INT_MASK       13
-#define IM_RCV_INT     0x1
-#define        IM_TX_INT       0x2
-#define        IM_TX_EMPTY_INT 0x4     
-#define        IM_ALLOC_INT    0x8
-#define        IM_RX_OVRN_INT  0x10
-#define        IM_EPH_INT      0x20
-#define        IM_ERCV_INT     0x40 /* not on SMC9192 */               
-
-/* BANK 3 */
-#define        MULTICAST1      0
-#define        MULTICAST2      2
-#define        MULTICAST3      4
-#define        MULTICAST4      6
-#define        MGMT            8
-#define        REVISION        10 /* ( hi: chip id   low: rev # ) */
-
-
-/* this is NOT on SMC9192 */
-#define        ERCV            12
-
-#define CHIP_9190      3
-#define CHIP_9194      4
-#define CHIP_9195      5
-#define CHIP_91100     7
-
-static const char * chip_ids[ 15 ] =  { 
-       NULL, NULL, NULL, 
-       /* 3 */ "SMC91C90/91C92",
-       /* 4 */ "SMC91C94",
-       /* 5 */ "SMC91C95",
-       NULL,
-       /* 7 */ "SMC91C100", 
-       NULL, NULL, NULL, NULL, 
-       NULL, NULL, NULL};  
-
-/* 
- . Transmit status bits 
-*/
-#define TS_SUCCESS 0x0001
-#define TS_LOSTCAR 0x0400
-#define TS_LATCOL  0x0200
-#define TS_16COL   0x0010
-
-/*
- . Receive status bits
-*/
-#define RS_ALGNERR     0x8000
-#define RS_BADCRC      0x2000
-#define RS_ODDFRAME    0x1000
-#define RS_TOOLONG     0x0800
-#define RS_TOOSHORT    0x0400
-#define RS_MULTICAST   0x0001
-#define RS_ERRORS      (RS_ALGNERR | RS_BADCRC | RS_TOOLONG | RS_TOOSHORT) 
-
-static const char * interfaces[ 2 ] = { "TP", "AUI" };
-
-/*-------------------------------------------------------------------------
- .  I define some macros to make it easier to do somewhat common
- . or slightly complicated, repeated tasks. 
- --------------------------------------------------------------------------*/
-
-/* select a register bank, 0 to 3  */
-
-#define SMC_SELECT_BANK(x)  { outw( x, ioaddr + BANK_SELECT ); } 
-
-/* define a small delay for the reset */
-#define SMC_DELAY() { inw( ioaddr + RCR );\
-                       inw( ioaddr + RCR );\
-                       inw( ioaddr + RCR );  }
-
-/* this enables an interrupt in the interrupt mask register */
-#define SMC_ENABLE_INT(x) {\
-               unsigned char mask;\
-               SMC_SELECT_BANK(2);\
-               mask = inb( ioaddr + INT_MASK );\
-               mask |= (x);\
-               outb( mask, ioaddr + INT_MASK ); \
-}
-
-/* this disables an interrupt from the interrupt mask register */
-
-#define SMC_DISABLE_INT(x) {\
-               unsigned char mask;\
-               SMC_SELECT_BANK(2);\
-               mask = inb( ioaddr + INT_MASK );\
-               mask &= ~(x);\
-               outb( mask, ioaddr + INT_MASK ); \
-}
-
-/*----------------------------------------------------------------------
- . Define the interrupts that I want to receive from the card
- . 
- . I want: 
- .  IM_EPH_INT, for nasty errors
- .  IM_RCV_INT, for happy received packets
- .  IM_RX_OVRN_INT, because I have to kick the receiver
- --------------------------------------------------------------------------*/
-#define SMC_INTERRUPT_MASK   (IM_EPH_INT | IM_RX_OVRN_INT | IM_RCV_INT) 
-
-#endif  /* _SMC_9194_H_ */
-
diff --git a/linux/src/drivers/net/wavelan.p.h 
b/linux/src/drivers/net/wavelan.p.h
deleted file mode 100644
index 3a6124e..0000000
--- a/linux/src/drivers/net/wavelan.p.h
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- *     Wavelan ISA driver
- *
- *             Jean II - HPLB '96
- *
- * Reorganisation and extension of the driver.
- *
- * This file contain all definition and declarations necessary for the
- * wavelan isa driver. This file is a private header, so it should
- * be included only on wavelan.c !!!
- */
-
-#ifndef WAVELAN_P_H
-#define WAVELAN_P_H
-
-/************************** DOCUMENTATION **************************/
-/*
- * This driver provide a Linux interface to the Wavelan ISA hardware
- * The Wavelan is a product of Lucent ("http://wavelan.netland.nl/";).
- * This division was formerly part of NCR and then AT&T.
- * Wavelan are also distributed by DEC (RoamAbout), Digital Ocean and
- * Aironet (Arlan). If you have one of those product, you will need to
- * make some changes below...
- *
- * This driver is still a beta software. A lot of bugs have been corrected,
- * a lot of functionalities are implemented, the whole appear pretty stable,
- * but there is still some area of improvement (encryption, performance...).
- *
- * To know how to use this driver, read the NET3 HOWTO.
- * If you want to exploit the many other fonctionalities, look comments
- * in the code...
- *
- * This driver is the result of the effort of many peoples (see below).
- */
-
-/* ------------------------ SPECIFIC NOTES ------------------------ */
-/*
- * wavelan.o is darn too big
- * -------------------------
- *     That's true ! There is a very simple way to reduce the driver
- *     object by 33% (yes !). Comment out the following line :
- *             #include <linux/wireless.h>
- *
- * MAC address and hardware detection :
- * ----------------------------------
- *     The detection code of the wavelan chech that the first 3
- *     octets of the MAC address fit the company code. This type of
- *     detection work well for AT&T cards (because the AT&T code is
- *     hardcoded in wavelan.h), but of course will fail for other
- *     manufacturer.
- *
- *     If you are sure that your card is derived from the wavelan,
- *     here is the way to configure it :
- *     1) Get your MAC address
- *             a) With your card utilities (wfreqsel, instconf, ...)
- *             b) With the driver :
- *                     o compile the kernel with DEBUG_CONFIG_INFO enabled
- *                     o Boot and look the card messages
- *     2) Set your MAC code (3 octets) in MAC_ADDRESSES[][3] (wavelan.h)
- *     3) Compile & verify
- *     4) Send me the MAC code - I will include it in the next version...
- *
- * "CU Inactive" message at boot up :
- * -----------------------------------
- *     It seem that there is some weird timings problems with the
- *     Intel microcontroler. In fact, this message is triggered by a
- *     bad reading of the on board ram the first time we read the
- *     control block. If you ignore this message, all is ok (but in
- *     fact, currently, it reset the wavelan hardware).
- *
- *     To get rid of that problem, there is two solution. The first
- *     is to add a dummy read of the scb at the end of
- *     wv_82586_config. The second is to add the timers
- *     wv_synchronous_cmd and wv_ack (the udelay just after the
- *     waiting loops - seem that the controler is not totally ready
- *     when it say it is !).
- *
- *     In the current code, I use the second solution (to be
- *     consistent with the original solution of Bruce Janson).
- */
-
-/* --------------------- WIRELESS EXTENSIONS --------------------- */
-/*
- * This driver is the first one to support "wireless extensions".
- * This set of extensions provide you some way to control the wireless
- * caracteristics of the hardware in a standard way and support for
- * applications for taking advantage of it (like Mobile IP).
- *
- * You will need to enable the CONFIG_NET_RADIO define in the kernel
- * configuration to enable the wireless extensions (this is the one
- * giving access to the radio network device choice).
- *
- * It might also be a good idea as well to fetch the wireless tools to
- * configure the device and play a bit.
- */
-
-/* ---------------------------- FILES ---------------------------- */
-/*
- * wavelan.c :         The actual code for the driver - C functions
- *
- * wavelan.p.h :       Private header : local types / vars for the driver
- *
- * wavelan.h :         Description of the hardware interface & structs
- *
- * i82586.h :          Description if the Ethernet controler
- */
-
-/* --------------------------- HISTORY --------------------------- */
-/*
- * (Made with information in drivers headers. It may not be accurate,
- * and I garantee nothing except my best effort...)
- *
- * The history of the Wavelan drivers is as complicated as history of
- * the Wavelan itself (NCR -> AT&T -> Lucent).
- *
- * All started with Anders Klemets <address@hidden>,
- * writting a Wavelan ISA driver for the MACH microkernel. Girish
- * Welling <address@hidden> had also worked on it.
- * Keith Moore modify this for the Pcmcia hardware.
- * 
- * Robert Morris <address@hidden> port these two drivers to BSDI
- * and add specific Pcmcia support (there is currently no equivalent
- * of the PCMCIA package under BSD...).
- *
- * Jim Binkley <address@hidden> port both BSDI drivers to freeBSD.
- *
- * Bruce Janson <address@hidden> port the BSDI ISA driver to Linux.
- *
- * Anthony D. Joseph <address@hidden> started modify Bruce driver
- * (with help of the BSDI PCMCIA driver) for PCMCIA.
- * Yunzhou Li <address@hidden> finished is work.
- * Joe Finney <address@hidden> patched the driver to start
- * correctly 2.00 cards (2.4 GHz with frequency selection).
- * David Hinds <address@hidden> integrated the whole in his
- * Pcmcia package (+ bug corrections).
- *
- * I (Jean Tourrilhes - address@hidden) then started to make some
- * patchs to the Pcmcia driver. After, I added code in the ISA driver
- * for Wireless Extensions and full support of frequency selection
- * cards. Then, I've done the same to the Pcmcia driver + some
- * reorganisation. Finally, I came back to the ISA driver to
- * upgrade it at the same level as the Pcmcia one and reorganise
- * the code
- * Loeke Brederveld <address@hidden> from Lucent has given me
- * much needed informations on the Wavelan hardware.
- */
-
-/* The original copyrights and litteratures mention others names and
- * credits. I don't know what there part in this development was...
- */
-
-/* By the way : for the copyright & legal stuff :
- * Almost everybody wrote code under GNU or BSD license (or alike),
- * and want that their original copyright remain somewhere in the
- * code (for myself, I go with the GPL).
- * Nobody want to take responsibility for anything, except the fame...
- */
-
-/* --------------------------- CREDITS --------------------------- */
-/*
- * This software was developed as a component of the
- * Linux operating system.
- * It is based on other device drivers and information
- * either written or supplied by:
- *     Ajay Bakre (address@hidden),
- *     Donald Becker (address@hidden),
- *     Loeke Brederveld (address@hidden),
- *     Brent Elphick <address@hidden>,
- *     Anders Klemets (address@hidden),
- *     Vladimir V. Kolpakov (address@hidden),
- *     Marc Meertens (address@hidden),
- *     Pauline Middelink (address@hidden),
- *     Robert Morris (address@hidden),
- *     Jean Tourrilhes (address@hidden),
- *     Girish Welling (address@hidden),
- *     Clark Woodworth <address@hidden>
- *     Yongguang Zhang <address@hidden>...
- *
- * Thanks go also to:
- *     James Ashton (address@hidden),
- *     Alan Cox (address@hidden),
- *     Allan Creighton (address@hidden),
- *     Matthew Geier (address@hidden),
- *     Remo di Giovanni (address@hidden),
- *     Eckhard Grah (address@hidden),
- *     Vipul Gupta (address@hidden),
- *     Mark Hagan (address@hidden),
- *     Tim Nicholson (address@hidden),
- *     Ian Parkin (address@hidden),
- *     John Rosenberg (address@hidden),
- *     George Rossi (address@hidden),
- *     Arthur Scott (address@hidden),
- *     Stanislav Sinyagin <address@hidden>
- *     Peter Storey,
- * for their assistance and advice.
- *
- * Additional Credits:
- *
- * My developpement has been done under Linux 2.0.x (Debian 1.1) with
- *     an HP Vectra XP/60.
- *
- */
-
-/* ------------------------- IMPROVEMENTS ------------------------- */
-/*
- * I proudly present :
- *
- * Changes mades in first pre-release :
- * ----------------------------------
- *     - Reorganisation of the code, function name change
- *     - Creation of private header (wavelan.p.h)
- *     - Reorganised debug messages
- *     - More comments, history, ...
- *     - mmc_init : configure the PSA if not done
- *     - mmc_init : correct default value of level threshold for pcmcia
- *     - mmc_init : 2.00 detection better code for 2.00 init
- *     - better info at startup
- *     - irq setting (note : this setting is permanent...)
- *     - Watchdog : change strategy (+ solve module removal problems)
- *     - add wireless extensions (ioctl & get_wireless_stats)
- *       get/set nwid/frequency on fly, info for /proc/net/wireless
- *     - More wireless extension : SETSPY and GETSPY
- *     - Make wireless extensions optional
- *     - Private ioctl to set/get quality & level threshold, histogram
- *     - Remove /proc/net/wavelan
- *     - Supress useless stuff from lp (net_local)
- *     - kernel 2.1 support (copy_to/from_user instead of memcpy_to/fromfs)
- *     - Add message level (debug stuff in /var/adm/debug & errors not
- *       displayed at console and still in /var/adm/messages)
- *     - multi device support
- *     - Start fixing the probe (init code)
- *     - More inlines
- *     - man page
- *     - Lot of others minor details & cleanups
- *
- * Changes made in second pre-release :
- * ----------------------------------
- *     - Cleanup init code (probe & module init)
- *     - Better multi device support (module)
- *     - name assignement (module)
- *
- * Changes made in third pre-release :
- * ---------------------------------
- *     - Be more conservative on timers
- *     - Preliminary support for multicast (I still lack some details...)
- *
- * Changes made in fourth pre-release :
- * ----------------------------------
- *     - multicast (revisited and finished)
- *     - Avoid reset in set_multicast_list (a really big hack)
- *       if somebody could apply this code for other i82586 based driver...
- *     - Share on board memory 75% RU / 25% CU (instead of 50/50)
- *
- * Changes made for release in 2.1.15 :
- * ----------------------------------
- *     - Change the detection code for multi manufacturer code support
- *
- * Changes made for release in 2.1.17 :
- * ----------------------------------
- *     - Update to wireless extensions changes
- *     - Silly bug in card initial configuration (psa_conf_status)
- *
- * Changes made for release in 2.1.27 & 2.0.30 :
- * -------------------------------------------
- *     - Small bug in debug code (probably not the last one...)
- *     - Remove extern kerword for wavelan_probe()
- *     - Level threshold is now a standard wireless extension (version 4 !)
- *
- * Changes made for release in 2.1.36 :
- * ----------------------------------
- *     - Encryption setting from Brent Elphick (thanks a lot !)
- *     - 'ioaddr' to 'u_long' for the Alpha (thanks to Stanislav Sinyagin)
- *
- * Wishes & dreams :
- * ---------------
- *     - Roaming
- */
-
-/***************************** INCLUDES *****************************/
-
-#include       <linux/module.h>
-
-#include       <linux/kernel.h>
-#include       <linux/sched.h>
-#include       <linux/types.h>
-#include       <linux/fcntl.h>
-#include       <linux/interrupt.h>
-#include       <linux/stat.h>
-#include       <linux/ptrace.h>
-#include       <linux/ioport.h>
-#include       <linux/in.h>
-#include       <linux/string.h>
-#include       <linux/delay.h>
-#include       <asm/system.h>
-#include       <asm/bitops.h>
-#include       <asm/io.h>
-#include       <asm/dma.h>
-#include       <linux/errno.h>
-#include       <linux/netdevice.h>
-#include       <linux/etherdevice.h>
-#include       <linux/skbuff.h>
-#include       <linux/malloc.h>
-#include       <linux/timer.h>
-
-#include <linux/wireless.h>            /* Wireless extensions */
-
-/* Wavelan declarations */
-#include       "i82586.h"
-#include       "wavelan.h"
-
-/****************************** DEBUG ******************************/
-
-#undef DEBUG_MODULE_TRACE      /* Module insertion/removal */
-#undef DEBUG_CALLBACK_TRACE    /* Calls made by Linux */
-#undef DEBUG_INTERRUPT_TRACE   /* Calls to handler */
-#undef DEBUG_INTERRUPT_INFO    /* type of interrupt & so on */
-#define DEBUG_INTERRUPT_ERROR  /* problems */
-#undef DEBUG_CONFIG_TRACE      /* Trace the config functions */
-#undef DEBUG_CONFIG_INFO       /* What's going on... */
-#define DEBUG_CONFIG_ERRORS    /* Errors on configuration */
-#undef DEBUG_TX_TRACE          /* Transmission calls */
-#undef DEBUG_TX_INFO           /* Header of the transmited packet */
-#define DEBUG_TX_ERROR         /* unexpected conditions */
-#undef DEBUG_RX_TRACE          /* Transmission calls */
-#undef DEBUG_RX_INFO           /* Header of the transmited packet */
-#define DEBUG_RX_ERROR         /* unexpected conditions */
-#undef DEBUG_PACKET_DUMP       16      /* Dump packet on the screen */
-#undef DEBUG_IOCTL_TRACE       /* Misc call by Linux */
-#undef DEBUG_IOCTL_INFO                /* Various debug info */
-#define DEBUG_IOCTL_ERROR      /* What's going wrong */
-#define DEBUG_BASIC_SHOW       /* Show basic startup info */
-#undef DEBUG_VERSION_SHOW      /* Print version info */
-#undef DEBUG_PSA_SHOW          /* Dump psa to screen */
-#undef DEBUG_MMC_SHOW          /* Dump mmc to screen */
-#undef DEBUG_SHOW_UNUSED       /* Show also unused fields */
-#undef DEBUG_I82586_SHOW       /* Show i82586 status */
-#undef DEBUG_DEVICE_SHOW       /* Show device parameters */
-
-/* Options : */
-#define USE_PSA_CONFIG         /* Use info from the PSA */
-#define IGNORE_NORMAL_XMIT_ERRS        /* Don't bother with normal conditions 
*/
-#undef STRUCT_CHECK            /* Verify padding of structures */
-#undef PSA_CRC                 /* Check CRC in PSA */
-#undef OLDIES                  /* Old code (to redo) */
-#undef RECORD_SNR              /* To redo */
-#undef EEPROM_IS_PROTECTED     /* Doesn't seem to be necessary */
-#define MULTICAST_AVOID                /* Avoid extra multicast (I'm 
sceptical) */
-
-#ifdef WIRELESS_EXT    /* If wireless extension exist in the kernel */
-/* Warning : these stuff will slow down the driver... */
-#define WIRELESS_SPY           /* Enable spying addresses */
-#undef HISTOGRAM               /* Enable histogram of sig level... */
-#endif
-
-/************************ CONSTANTS & MACROS ************************/
-
-#ifdef DEBUG_VERSION_SHOW
-static const char      *version        = "wavelan.c : v16 (wireless 
extensions) 17/4/97\n";
-#endif
-
-/* Watchdog temporisation */
-#define        WATCHDOG_JIFFIES        32      /* TODO: express in HZ. */
-
-/* Macro to get the number of elements in an array */
-#define        NELS(a)                         (sizeof(a) / sizeof(a[0]))
-
-/* ------------------------ PRIVATE IOCTL ------------------------ */
-
-#define SIOCSIPQTHR    SIOCDEVPRIVATE          /* Set quality threshold */
-#define SIOCGIPQTHR    SIOCDEVPRIVATE + 1      /* Get quality threshold */
-#define SIOCSIPLTHR    SIOCDEVPRIVATE + 2      /* Set level threshold */
-#define SIOCGIPLTHR    SIOCDEVPRIVATE + 3      /* Get level threshold */
-
-#define SIOCSIPHISTO   SIOCDEVPRIVATE + 6      /* Set histogram ranges */
-#define SIOCGIPHISTO   SIOCDEVPRIVATE + 7      /* Get histogram values */
-
-/* ----------------------- VERSION SUPPORT ----------------------- */
-
-/* This ugly patch is needed to cope with old version of the kernel */
-#ifndef copy_from_user
-#define copy_from_user memcpy_fromfs
-#define copy_to_user   memcpy_tofs
-#endif
-
-/****************************** TYPES ******************************/
-
-/* Shortcuts */
-typedef struct device          device;
-typedef struct enet_statistics en_stats;
-typedef struct iw_statistics   iw_stats;
-typedef struct iw_quality      iw_qual;
-typedef struct iw_freq         iw_freq;
-typedef struct net_local       net_local;
-typedef struct timer_list      timer_list;
-
-/* Basic types */
-typedef u_char         mac_addr[WAVELAN_ADDR_SIZE];    /* Hardware address */
-
-/*
- * Static specific data for the interface.
- *
- * For each network interface, Linux keep data in two structure. "device"
- * keep the generic data (same format for everybody) and "net_local" keep
- * the additional specific data.
- * Note that some of this specific data is in fact generic (en_stats, for
- * example).
- */
-struct net_local
-{
-  net_local *  next;           /* Linked list of the devices */
-  device *     dev;            /* Reverse link... */
-  en_stats     stats;          /* Ethernet interface statistics */
-  int          nresets;        /* Number of hw resets */
-  u_char       reconfig_82586; /* Need to reconfigure the controler */
-  u_char       promiscuous;    /* Promiscuous mode */
-  int          mc_count;       /* Number of multicast addresses */
-  timer_list   watchdog;       /* To avoid blocking state */
-  u_short      hacr;           /* Current host interface state */
-
-  int          tx_n_in_use;
-  u_short      rx_head;
-  u_short      rx_last;
-  u_short      tx_first_free;
-  u_short      tx_first_in_use;
-
-#ifdef WIRELESS_EXT
-  iw_stats     wstats;         /* Wireless specific stats */
-#endif
-
-#ifdef WIRELESS_SPY
-  int          spy_number;             /* Number of addresses to spy */
-  mac_addr     spy_address[IW_MAX_SPY];        /* The addresses to spy */
-  iw_qual      spy_stat[IW_MAX_SPY];           /* Statistics gathered */
-#endif /* WIRELESS_SPY */
-#ifdef HISTOGRAM
-  int          his_number;             /* Number of intervals */
-  u_char       his_range[16];          /* Boundaries of interval ]n-1; n] */
-  u_long       his_sum[16];            /* Sum in interval */
-#endif /* HISTOGRAM */
-};
-
-/**************************** PROTOTYPES ****************************/
-
-/* ----------------------- MISC SUBROUTINES ------------------------ */
-static inline unsigned long    /* flags */
-       wv_splhi(void);         /* Disable interrupts */
-static inline void
-       wv_splx(unsigned long); /* ReEnable interrupts : flags */
-static u_char
-       wv_irq_to_psa(int);
-static int
-       wv_psa_to_irq(u_char);
-/* ------------------- HOST ADAPTER SUBROUTINES ------------------- */
-static inline u_short          /* data */
-       hasr_read(u_long);      /* Read the host interface : base address */
-static inline void
-       hacr_write(u_long,      /* Write to host interface : base address */
-                  u_short),    /* data */
-       hacr_write_slow(u_long,
-                  u_short),
-       set_chan_attn(u_long,   /* ioaddr */
-                     u_short), /* hacr */
-       wv_hacr_reset(u_long),  /* ioaddr */
-       wv_16_off(u_long,       /* ioaddr */
-                 u_short),     /* hacr */
-       wv_16_on(u_long,        /* ioaddr */
-                u_short),      /* hacr */
-       wv_ints_off(device *),
-       wv_ints_on(device *);
-/* ----------------- MODEM MANAGEMENT SUBROUTINES ----------------- */
-static void
-       psa_read(u_long,        /* Read the Parameter Storage Area */
-                u_short,       /* hacr */
-                int,           /* offset in PSA */
-                u_char *,      /* buffer to fill */
-                int),          /* size to read */
-       psa_write(u_long,       /* Write to the PSA */
-                 u_short,      /* hacr */
-                 int,          /* Offset in psa */
-                 u_char *,     /* Buffer in memory */
-                 int);         /* Length of buffer */
-static inline void
-       mmc_out(u_long,         /* Write 1 byte to the Modem Manag Control */
-               u_short,
-               u_char),
-       mmc_write(u_long,       /* Write n bytes to the MMC */
-                 u_char,
-                 u_char *,
-                 int);
-static inline u_char           /* Read 1 byte from the MMC */
-       mmc_in(u_long,
-              u_short);
-static inline void
-       mmc_read(u_long,        /* Read n bytes from the MMC */
-                u_char,
-                u_char *,
-                int),
-       fee_wait(u_long,        /* Wait for frequency EEprom : base address */
-                int,           /* Base delay to wait for */
-                int);          /* Number of time to wait */
-static void
-       fee_read(u_long,        /* Read the frequency EEprom : base address */
-                u_short,       /* destination offset */
-                u_short *,     /* data buffer */
-                int);          /* number of registers */
-/* ---------------------- I82586 SUBROUTINES ----------------------- */
-static /*inline*/ void
-       obram_read(u_long,      /* ioaddr */
-                  u_short,     /* o */
-                  u_char *,    /* b */
-                  int);        /* n */
-static inline void
-       obram_write(u_long,     /* ioaddr */
-                   u_short,    /* o */
-                   u_char *,   /* b */
-                   int);       /* n */
-static void
-       wv_ack(device *);
-static inline int
-       wv_synchronous_cmd(device *,
-                          const char *),
-       wv_config_complete(device *,
-                          u_long,
-                          net_local *);
-static int
-       wv_complete(device *,
-                   u_long,
-                   net_local *);
-static inline void
-       wv_82586_reconfig(device *);
-/* ------------------- DEBUG & INFO SUBROUTINES ------------------- */
-#ifdef DEBUG_I82586_SHOW
-static void
-       wv_scb_show(unsigned short);
-#endif
-static inline void
-       wv_init_info(device *); /* display startup info */
-/* ------------------- IOCTL, STATS & RECONFIG ------------------- */
-static en_stats        *
-       wavelan_get_stats(device *);    /* Give stats /proc/net/dev */
-static void
-       wavelan_set_multicast_list(device *);
-/* ----------------------- PACKET RECEPTION ----------------------- */
-static inline void
-       wv_packet_read(device *,        /* Read a packet from a frame */
-                      u_short,
-                      int),
-       wv_receive(device *);   /* Read all packets waiting */
-/* --------------------- PACKET TRANSMISSION --------------------- */
-static inline void
-       wv_packet_write(device *,       /* Write a packet to the Tx buffer */
-                       void *,
-                       short);
-static int
-       wavelan_packet_xmit(struct sk_buff *,   /* Send a packet */
-                           device *);
-/* -------------------- HARDWARE CONFIGURATION -------------------- */
-static inline int
-       wv_mmc_init(device *),          /* Initialize the modem */
-       wv_ru_start(device *),          /* Start the i82586 receiver unit */
-       wv_cu_start(device *),          /* Start the i82586 command unit */
-       wv_82586_start(device *);       /* Start the i82586 */
-static void
-       wv_82586_config(device *);      /* Configure the i82586 */
-static inline void
-       wv_82586_stop(device *);
-static int
-       wv_hw_reset(device *),          /* Reset the wavelan hardware */
-       wv_check_ioaddr(u_long,         /* ioaddr */
-                       u_char *);      /* mac address (read) */
-/* ---------------------- INTERRUPT HANDLING ---------------------- */
-static void
-       wavelan_interrupt(int,          /* Interrupt handler */
-                         void *,
-                         struct pt_regs *);
-static void
-       wavelan_watchdog(u_long);       /* Transmission watchdog */
-/* ------------------- CONFIGURATION CALLBACKS ------------------- */
-static int
-       wavelan_open(device *),         /* Open the device */
-       wavelan_close(device *),        /* Close the device */
-       wavelan_config(device *);       /* Configure one device */
-extern int
-       wavelan_probe(device *);        /* See Space.c */
-
-/**************************** VARIABLES ****************************/
-
-/*
- * This is the root of the linked list of wavelan drivers
- * It is use to verify that we don't reuse the same base address
- * for two differents drivers and to make the cleanup when
- * removing the module.
- */
-static net_local *     wavelan_list    = (net_local *) NULL;
-
-/*
- * This table is used to translate the psa value to irq number
- * and vice versa...
- */
-static u_char  irqvals[]       =
-{
-          0,    0,    0, 0x01,
-       0x02, 0x04,    0, 0x08,
-          0,    0, 0x10, 0x20,
-       0x40,    0,    0, 0x80,
-};
-
-/*
- * Table of the available i/o address (base address) for wavelan
- */
-static unsigned short  iobase[]        =
-{
-#if    0
-  /* Leave out 0x3C0 for now -- seems to clash with some video
-   * controllers.
-   * Leave out the others too -- we will always use 0x390 and leave
-   * 0x300 for the Ethernet device.
-   * Jean II : 0x3E0 is really fine as well...
-   */
-  0x300, 0x390, 0x3E0, 0x3C0
-#endif /* 0 */
-  0x390, 0x3E0
-};
-
-#ifdef MODULE
-/* Name of the devices (memory allocation) */
-static char    devname[4][IFNAMSIZ] = { "", "", "", "" };
-
-/* Parameters set by insmod */
-static int     io[4]   = { 0, 0, 0, 0 };
-static int     irq[4]  = { 0, 0, 0, 0 };
-static char *  name[4] = { devname[0], devname[1], devname[2], devname[3] };
-#endif /* MODULE */
-
-#endif /* WAVELAN_P_H */
diff --git a/linux/src/drivers/scsi/FlashPoint.c 
b/linux/src/drivers/scsi/FlashPoint.c
deleted file mode 100644
index aae35c0..0000000
--- a/linux/src/drivers/scsi/FlashPoint.c
+++ /dev/null
@@ -1,12156 +0,0 @@
-/*
-
-  FlashPoint.c -- FlashPoint SCCB Manager for Linux
-
-  This file contains the FlashPoint SCCB Manager from BusLogic's FlashPoint
-  Driver Developer's Kit, with minor modifications by Leonard N. Zubkoff for
-  Linux compatibility.  It was provided by BusLogic in the form of 16 separate
-  source files, which would have unnecessarily cluttered the scsi directory, so
-  the individual files have been combined into this single file.
-
-  Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
-
-  This file is available under both the GNU General Public License
-  and a BSD-style copyright; see LICENSE.FlashPoint for details.
-
-*/
-
-
-#include <linux/config.h>
-
-
-#ifndef CONFIG_SCSI_OMIT_FLASHPOINT
-
-
-#define UNIX
-#define FW_TYPE                _SCCB_MGR_
-#define MAX_CARDS      8
-#undef BUSTYPE_PCI
-
-
-#define OS_InPortByte(port)            inb(port)
-#define OS_InPortWord(port)            inw(port)
-#define OS_InPortLong(port)            inl(port)
-#define OS_OutPortByte(port, value)    outb(value, port)
-#define OS_OutPortWord(port, value)    outw(value, port)
-#define OS_OutPortLong(port, value)    outl(value, port)
-#define OS_Lock(x)
-#define OS_UnLock(x)
-
-
-/*
-  Define name replacements for compatibility with the Linux BusLogic Driver.
-*/
-
-#define SccbMgr_sense_adapter          FlashPoint_ProbeHostAdapter
-#define SccbMgr_config_adapter         FlashPoint_HardwareResetHostAdapter
-#define SccbMgr_unload_card            FlashPoint_ReleaseHostAdapter
-#define SccbMgr_start_sccb             FlashPoint_StartCCB
-#define SccbMgr_abort_sccb             FlashPoint_AbortCCB
-#define SccbMgr_my_int                 FlashPoint_InterruptPending
-#define SccbMgr_isr                    FlashPoint_HandleInterrupt
-
-
-/*
-  Define name replacements to avoid kernel namespace pollution.
-*/
-
-#define BL_Card                                FPT_BL_Card
-#define BusMasterInit                  FPT_BusMasterInit
-#define CalcCrc16                      FPT_CalcCrc16
-#define CalcLrc                                FPT_CalcLrc
-#define ChkIfChipInitialized           FPT_ChkIfChipInitialized
-#define DiagBusMaster                  FPT_DiagBusMaster
-#define DiagEEPROM                     FPT_DiagEEPROM
-#define DiagXbow                       FPT_DiagXbow
-#define GetTarLun                      FPT_GetTarLun
-#define RNVRamData                     FPT_RNVRamData
-#define RdStack                                FPT_RdStack
-#define SccbMgrTableInitAll            FPT_SccbMgrTableInitAll
-#define SccbMgrTableInitCard           FPT_SccbMgrTableInitCard
-#define SccbMgrTableInitTarget         FPT_SccbMgrTableInitTarget
-#define SccbMgr_bad_isr                        FPT_SccbMgr_bad_isr
-#define SccbMgr_scsi_reset             FPT_SccbMgr_scsi_reset
-#define SccbMgr_timer_expired          FPT_SccbMgr_timer_expired
-#define SendMsg                                FPT_SendMsg
-#define Wait                           FPT_Wait
-#define Wait1Second                    FPT_Wait1Second
-#define WrStack                                FPT_WrStack
-#define XbowInit                       FPT_XbowInit
-#define autoCmdCmplt                   FPT_autoCmdCmplt
-#define autoLoadDefaultMap             FPT_autoLoadDefaultMap
-#define busMstrDataXferStart           FPT_busMstrDataXferStart
-#define busMstrSGDataXferStart         FPT_busMstrSGDataXferStart
-#define busMstrTimeOut                 FPT_busMstrTimeOut
-#define dataXferProcessor              FPT_dataXferProcessor
-#define default_intena                 FPT_default_intena
-#define hostDataXferAbort              FPT_hostDataXferAbort
-#define hostDataXferRestart            FPT_hostDataXferRestart
-#define inisci                         FPT_inisci
-#define mbCards                                FPT_mbCards
-#define nvRamInfo                      FPT_nvRamInfo
-#define phaseBusFree                   FPT_phaseBusFree
-#define phaseChkFifo                   FPT_phaseChkFifo
-#define phaseCommand                   FPT_phaseCommand
-#define phaseDataIn                    FPT_phaseDataIn
-#define phaseDataOut                   FPT_phaseDataOut
-#define phaseDecode                    FPT_phaseDecode
-#define phaseIllegal                   FPT_phaseIllegal
-#define phaseMsgIn                     FPT_phaseMsgIn
-#define phaseMsgOut                    FPT_phaseMsgOut
-#define phaseStatus                    FPT_phaseStatus
-#define queueAddSccb                   FPT_queueAddSccb
-#define queueCmdComplete               FPT_queueCmdComplete
-#define queueDisconnect                        FPT_queueDisconnect
-#define queueFindSccb                  FPT_queueFindSccb
-#define queueFlushSccb                 FPT_queueFlushSccb
-#define queueFlushTargSccb             FPT_queueFlushTargSccb
-#define queueSearchSelect              FPT_queueSearchSelect
-#define queueSelectFail                        FPT_queueSelectFail
-#define s_PhaseTbl                     FPT_s_PhaseTbl
-#define scamHAString                   FPT_scamHAString
-#define scamInfo                       FPT_scamInfo
-#define scarb                          FPT_scarb
-#define scasid                         FPT_scasid
-#define scbusf                         FPT_scbusf
-#define sccbMgrTbl                     FPT_sccbMgrTbl
-#define schkdd                         FPT_schkdd
-#define scini                          FPT_scini
-#define sciso                          FPT_sciso
-#define scmachid                       FPT_scmachid
-#define scsavdi                                FPT_scsavdi
-#define scsel                          FPT_scsel
-#define scsell                         FPT_scsell
-#define scsendi                                FPT_scsendi
-#define scvalq                         FPT_scvalq
-#define scwirod                                FPT_scwirod
-#define scwiros                                FPT_scwiros
-#define scwtsel                                FPT_scwtsel
-#define scxferc                                FPT_scxferc
-#define sdecm                          FPT_sdecm
-#define sfm                            FPT_sfm
-#define shandem                                FPT_shandem
-#define sinits                         FPT_sinits
-#define sisyncn                                FPT_sisyncn
-#define sisyncr                                FPT_sisyncr
-#define siwidn                         FPT_siwidn
-#define siwidr                         FPT_siwidr
-#define sres                           FPT_sres
-#define sresb                          FPT_sresb
-#define ssel                           FPT_ssel
-#define ssenss                         FPT_ssenss
-#define sssyncv                                FPT_sssyncv
-#define stsyncn                                FPT_stsyncn
-#define stwidn                         FPT_stwidn
-#define sxfrp                          FPT_sxfrp
-#define utilEERead                     FPT_utilEERead
-#define utilEEReadOrg                  FPT_utilEEReadOrg
-#define utilEESendCmdAddr              FPT_utilEESendCmdAddr
-#define utilEEWrite                    FPT_utilEEWrite
-#define utilEEWriteOnOff               FPT_utilEEWriteOnOff
-#define utilUpdateResidual             FPT_utilUpdateResidual
-
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   globals.h  $
- *
- *   Description:  Common shared global defines.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-#ifndef __GLOBALS_H__
-#define __GLOBALS_H__
-
-#define _UCB_MGR_  1
-#define _SCCB_MGR_ 2
-
-/*#include <osflags.h>*/
-
-#define MAX_CDBLEN  12
-
-#define SCAM_LEV_2     1
-
-#define CRCMASK        0xA001
-
-/*  In your osflags.h file, please ENSURE that only ONE OS FLAG 
-    is on at a time !!! Also, please make sure you turn set the 
-        variable FW_TYPE to either _UCB_MGR_ or _SCCB_MGR_  !!! */
-
-#if defined(DOS) || defined(WIN95_16) || defined(OS2) || defined(OTHER_16)
-   #define       COMPILER_16_BIT 1
-#elif defined(NETWARE) || defined(NT) || defined(WIN95_32) || defined(UNIX) || 
defined(OTHER_32) || defined(SOLARIS_REAL_MODE)
-   #define       COMPILER_32_BIT 1
-#endif
-
-
-#define     BL_VENDOR_ID      0x104B
-#define     FP_DEVICE_ID      0x8130
-#define     MM_DEVICE_ID      0x1040
-
-
-#ifndef FALSE
-#define FALSE           0
-#endif
-#ifndef TRUE
-#define TRUE            (!(FALSE))
-#endif
-
-#ifndef NULL
-#define NULL            0
-#endif
-
-#define FAILURE         0xFFFFFFFFL
-
-
-typedef unsigned char   UCHAR;
-typedef unsigned short  USHORT;
-typedef unsigned int    UINT;
-typedef unsigned long   ULONG;
-typedef unsigned char * PUCHAR;
-typedef unsigned short* PUSHORT;
-typedef unsigned long * PULONG;
-typedef void *          PVOID;
-
-
-#if defined(COMPILER_16_BIT)
-typedef unsigned char far       * uchar_ptr;
-typedef unsigned short far      * ushort_ptr;
-typedef unsigned long far       * ulong_ptr;
-#endif  /* 16_BIT_COMPILER */
-
-#if defined(COMPILER_32_BIT)
-typedef unsigned char           * uchar_ptr;
-typedef unsigned short          * ushort_ptr;
-typedef unsigned long           * ulong_ptr;
-#endif  /* 32_BIT_COMPILER */
-
-
-/*                             NEW TYPE DEFINITIONS (shared with Mylex North)
-
-**  Use following type defines to avoid confusion in 16 and 32-bit
-**  environments.  Avoid using 'int' as it denotes 16 bits in 16-bit
-**  environment and 32 in 32-bit environments.
-
-*/
-
-#define s08bits        char
-#define s16bits        short
-#define s32bits        long
-
-#define u08bits        unsigned s08bits
-#define u16bits        unsigned s16bits
-#define u32bits        unsigned s32bits
-
-#if defined(COMPILER_16_BIT)
-
-typedef u08bits far    * pu08bits;
-typedef u16bits far    * pu16bits;
-typedef u32bits far    * pu32bits;
-
-#endif /* COMPILER_16_BIT */
-
-#if defined(COMPILER_32_BIT)
-
-typedef u08bits        * pu08bits;
-typedef u16bits        * pu16bits;
-typedef u32bits        * pu32bits;
-
-#endif /* COMPILER_32_BIT */
-
-
-#define BIT(x)          ((UCHAR)(1<<(x)))    /* single-bit mask in bit 
position x */
-#define BITW(x)          ((USHORT)(1<<(x)))  /* single-bit mask in bit 
position x */
-
-
-
-#if defined(DOS)
-/*#include <dos.h>*/
-       #undef inportb          /* undefine for Borland Lib */
-       #undef inport           /* they may have define I/O function in LIB */
-       #undef outportb
-       #undef outport
-
-       #define OS_InPortByte(ioport)           inportb(ioport)
-       #define OS_InPortWord(ioport)           inport(ioport)
-       #define OS_InPortLong(ioport)                   inportq(ioport, val)
-       #define OS_OutPortByte(ioport, val) outportb(ioport, val)
-       #define OS_OutPortWord(ioport, val)     outport(ioport, val)
-       #define OS_OutPortLong(ioport)          outportq(ioport, val)
-#endif /* DOS */
-
-#if defined(NETWARE) || defined(OTHER_32) ||  defined(OTHER_16)
-       extern u08bits  OS_InPortByte(u32bits ioport);
-       extern u16bits  OS_InPortWord(u32bits ioport);
-       extern u32bits  OS_InPortLong(u32bits ioport);
-
-       extern OS_InPortByteBuffer(u32bits ioport, pu08bits buffer, u32bits 
count);
-       extern OS_InPortWordBuffer(u32bits ioport, pu16bits buffer, u32bits 
count);
-       extern OS_OutPortByte(u32bits ioport, u08bits val);
-       extern OS_OutPortWord(u32bits ioport, u16bits val);
-       extern OS_OutPortLong(u32bits ioport, u32bits val);
-       extern OS_OutPortByteBuffer(u32bits ioport, pu08bits buffer, u32bits 
count);
-       extern OS_OutPortWordBuffer(u32bits ioport, pu16bits buffer, u32bits 
count);
-#endif /* NETWARE || OTHER_32 || OTHER_16 */
-
-#if defined (NT) || defined(WIN95_32) || defined(WIN95_16)
-       #if defined(NT)
-
-               extern __declspec(dllimport) u08bits 
ScsiPortReadPortUchar(pu08bits ioport);
-               extern __declspec(dllimport) u16bits 
ScsiPortReadPortUshort(pu16bits ioport);
-               extern __declspec(dllimport) u32bits 
ScsiPortReadPortUlong(pu32bits ioport);
-               extern __declspec(dllimport) void 
ScsiPortWritePortUchar(pu08bits ioport, u08bits val);
-               extern __declspec(dllimport) void 
ScsiPortWritePortUshort(pu16bits port, u16bits val);
-               extern __declspec(dllimport) void 
ScsiPortWritePortUlong(pu32bits port, u32bits val);
-
-       #else
-
-               extern u08bits ScsiPortReadPortUchar(pu08bits ioport);
-               extern u16bits ScsiPortReadPortUshort(pu16bits ioport);
-               extern u32bits ScsiPortReadPortUlong(pu32bits ioport);
-               extern void ScsiPortWritePortUchar(pu08bits ioport, u08bits 
val);
-               extern void ScsiPortWritePortUshort(pu16bits port, u16bits val);
-               extern void ScsiPortWritePortUlong(pu32bits port, u32bits val);
-       #endif
-
-
-       #define OS_InPortByte(ioport) ScsiPortReadPortUchar((pu08bits) ioport)
-       #define OS_InPortWord(ioport) ScsiPortReadPortUshort((pu16bits) ioport)
-       #define OS_InPortLong(ioport) ScsiPortReadPortUlong((pu32bits) ioport)
-
-       #define OS_OutPortByte(ioport, val) ScsiPortWritePortUchar((pu08bits) 
ioport, (u08bits) val)
-       #define OS_OutPortWord(ioport, val) ScsiPortWritePortUshort((pu16bits) 
ioport, (u16bits) val)
-       #define OS_OutPortLong(ioport, val) ScsiPortWritePortUlong((pu32bits) 
ioport, (u32bits) val)
-       #define OS_OutPortByteBuffer(ioport, buffer, count) \
-               ScsiPortWritePortBufferUchar((pu08bits)&port, (pu08bits) 
buffer, (u32bits) count)
-       #define OS_OutPortWordBuffer(ioport, buffer, count) \
-               ScsiPortWritePortBufferUshort((pu16bits)&port, (pu16bits) 
buffer, (u32bits) count)
-
-       #define OS_Lock(x)
-       #define OS_UnLock(x)
-#endif /* NT || WIN95_32 || WIN95_16 */
-
-#if defined (UNIX) && !defined(OS_InPortByte)
-       #define OS_InPortByte(ioport)    inb((u16bits)ioport)
-       #define OS_InPortWord(ioport)    inw((u16bits)ioport)
-       #define OS_InPortLong(ioport)    inl((u16bits)ioport)
-       #define OS_OutPortByte(ioport,val)  outb((u16bits)ioport, (u08bits)val)
-       #define OS_OutPortWord(ioport,val)  outw((u16bits)ioport, (u16bits)val)
-       #define OS_OutPortLong(ioport,val)  outl((u16bits)ioport, (u32bits)val)
-
-       #define OS_Lock(x)
-       #define OS_UnLock(x)
-#endif /* UNIX */
-
-
-#if defined(OS2)
-       extern u08bits  inb(u32bits ioport);
-       extern u16bits  inw(u32bits ioport);
-       extern void     outb(u32bits ioport, u08bits val);
-       extern void     outw(u32bits ioport, u16bits val);
-
-       #define OS_InPortByte(ioport)                   inb(ioport)
-       #define OS_InPortWord(ioport)                   inw(ioport)
-       #define OS_OutPortByte(ioport, val)     outb(ioport, val)
-       #define OS_OutPortWord(ioport, val)     outw(ioport, val)
-       extern u32bits  OS_InPortLong(u32bits ioport);
-       extern void     OS_OutPortLong(u32bits ioport, u32bits val);
-
-       #define OS_Lock(x)
-       #define OS_UnLock(x)
-#endif /* OS2 */
-
-#if defined(SOLARIS_REAL_MODE)
-
-extern unsigned char    inb(unsigned long ioport);
-extern unsigned short   inw(unsigned long ioport);
-
-#define OS_InPortByte(ioport)    inb(ioport)
-#define OS_InPortWord(ioport)    inw(ioport)
-
-extern void OS_OutPortByte(unsigned long ioport, unsigned char val);
-extern void OS_OutPortWord(unsigned long ioport, unsigned short val);
-extern unsigned long  OS_InPortLong(unsigned long ioport);
-extern void     OS_OutPortLong(unsigned long ioport, unsigned long val);
-
-#define OS_Lock(x)
-#define OS_UnLock(x)
-
-#endif  /* SOLARIS_REAL_MODE */
-
-#endif  /* __GLOBALS_H__ */
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   sccbmgr.h  $
- *
- *   Description:  Common shared SCCB Interface defines and SCCB 
- *                                              Manager specifics defines.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-#ifndef __SCCB_H__
-#define __SCCB_H__
-
-/*#include <osflags.h>*/
-/*#include <globals.h>*/
-
-#if defined(BUGBUG)
-#define debug_size 32
-#endif
-
-#if defined(DOS)
-
-   typedef struct _SCCB near *PSCCB;
-       #if (FW_TYPE == _SCCB_MGR_)
-       typedef void (*CALL_BK_FN)(PSCCB);
-       #endif
-
-#elif defined(OS2)
-
-   typedef struct _SCCB far *PSCCB;
-       #if (FW_TYPE == _SCCB_MGR_)
-       typedef void (far *CALL_BK_FN)(PSCCB);
-       #endif
-
-#else
-
-   typedef struct _SCCB *PSCCB;
-       #if (FW_TYPE == _SCCB_MGR_)
-       typedef void (*CALL_BK_FN)(PSCCB);
-       #endif
-
-#endif
-
-
-typedef struct SCCBMgr_info {
-   ULONG    si_baseaddr;
-   UCHAR    si_present;
-   UCHAR    si_intvect;
-   UCHAR    si_id;
-   UCHAR    si_lun;
-   USHORT   si_fw_revision;
-   USHORT   si_per_targ_init_sync;
-   USHORT   si_per_targ_fast_nego;
-   USHORT   si_per_targ_ultra_nego;
-   USHORT   si_per_targ_no_disc;
-   USHORT   si_per_targ_wide_nego;
-   USHORT   si_flags;
-   UCHAR    si_card_family;
-   UCHAR    si_bustype;
-   UCHAR    si_card_model[3];
-   UCHAR    si_relative_cardnum;
-   UCHAR    si_reserved[4];
-   ULONG    si_OS_reserved;
-   UCHAR    si_XlatInfo[4];
-   ULONG    si_reserved2[5];
-   ULONG    si_secondary_range;
-} SCCBMGR_INFO;
-
-#if defined(DOS)
-   typedef SCCBMGR_INFO *      PSCCBMGR_INFO;
-#else
-   #if defined (COMPILER_16_BIT)
-   typedef SCCBMGR_INFO far *  PSCCBMGR_INFO;
-   #else
-   typedef SCCBMGR_INFO *      PSCCBMGR_INFO;
-   #endif
-#endif // defined(DOS)
-
-
-
-
-#if (FW_TYPE==_SCCB_MGR_)
-       #define SCSI_PARITY_ENA           0x0001
-       #define LOW_BYTE_TERM             0x0010
-       #define HIGH_BYTE_TERM            0x0020
-       #define BUSTYPE_PCI       0x3
-#endif
-
-#define SUPPORT_16TAR_32LUN      0x0002
-#define SOFT_RESET               0x0004
-#define EXTENDED_TRANSLATION     0x0008
-#define POST_ALL_UNDERRRUNS      0x0040
-#define FLAG_SCAM_ENABLED        0x0080
-#define FLAG_SCAM_LEVEL2         0x0100
-
-
-
-
-#define HARPOON_FAMILY        0x02
-
-
-#define ISA_BUS_CARD          0x01
-#define EISA_BUS_CARD         0x02
-#define PCI_BUS_CARD          0x03
-#define VESA_BUS_CARD         0x04
-
-/* SCCB struc used for both SCCB and UCB manager compiles! 
- * The UCB Manager treats the SCCB as it's 'native hardware structure' 
- */
-
-
-#pragma pack(1)
-typedef struct _SCCB {
-   UCHAR OperationCode;
-   UCHAR ControlByte;
-   UCHAR CdbLength;
-   UCHAR RequestSenseLength;
-   ULONG DataLength;
-   ULONG DataPointer;
-   UCHAR CcbRes[2];
-   UCHAR HostStatus;
-   UCHAR TargetStatus;
-   UCHAR TargID;
-   UCHAR Lun;
-   UCHAR Cdb[12];
-   UCHAR CcbRes1;
-   UCHAR Reserved1;
-   ULONG Reserved2;
-   ULONG SensePointer;
-
-
-   CALL_BK_FN SccbCallback;                  /* VOID (*SccbCallback)(); */
-   ULONG  SccbIOPort;                        /* Identifies board base port */
-   UCHAR  SccbStatus;
-   UCHAR  SCCBRes2;
-   USHORT SccbOSFlags;
-
-
-   ULONG   Sccb_XferCnt;            /* actual transfer count */
-   ULONG   Sccb_ATC;
-   ULONG   SccbVirtDataPtr;         /* virtual addr for OS/2 */
-   ULONG   Sccb_res1;
-   USHORT  Sccb_MGRFlags;
-   USHORT  Sccb_sgseg;
-   UCHAR   Sccb_scsimsg;            /* identify msg for selection */
-   UCHAR   Sccb_tag;
-   UCHAR   Sccb_scsistat;
-   UCHAR   Sccb_idmsg;              /* image of last msg in */
-   PSCCB   Sccb_forwardlink;
-   PSCCB   Sccb_backlink;
-   ULONG   Sccb_savedATC;
-   UCHAR   Save_Cdb[6];
-   UCHAR   Save_CdbLen;
-   UCHAR   Sccb_XferState;
-   ULONG   Sccb_SGoffset;
-#if (FW_TYPE == _UCB_MGR_)
-   PUCB    Sccb_ucb_ptr;
-#endif
-   } SCCB;
-
-#define SCCB_SIZE sizeof(SCCB)
-
-#pragma pack()
-
-
-
-#define SCSI_INITIATOR_COMMAND    0x00
-#define TARGET_MODE_COMMAND       0x01
-#define SCATTER_GATHER_COMMAND    0x02
-#define RESIDUAL_COMMAND          0x03
-#define RESIDUAL_SG_COMMAND       0x04
-#define RESET_COMMAND             0x81
-
-
-#define F_USE_CMD_Q              0x20     /*Inidcates TAGGED command. */
-#define TAG_TYPE_MASK            0xC0     /*Type of tag msg to send. */
-#define TAG_Q_MASK               0xE0
-#define SCCB_DATA_XFER_OUT       0x10     /* Write */
-#define SCCB_DATA_XFER_IN        0x08     /* Read */
-
-
-#define FOURTEEN_BYTES           0x00     /* Request Sense Buffer size */
-#define NO_AUTO_REQUEST_SENSE    0x01     /* No Request Sense Buffer */
-
-
-#define BUS_FREE_ST     0       
-#define SELECT_ST       1
-#define SELECT_BDR_ST   2     /* Select w\ Bus Device Reset */
-#define SELECT_SN_ST    3     /* Select w\ Sync Nego */
-#define SELECT_WN_ST    4     /* Select w\ Wide Data Nego */
-#define SELECT_Q_ST     5     /* Select w\ Tagged Q'ing */
-#define COMMAND_ST      6
-#define DATA_OUT_ST     7
-#define DATA_IN_ST      8
-#define DISCONNECT_ST   9
-#define STATUS_ST       10
-#define ABORT_ST        11
-#define MESSAGE_ST      12
-
-
-#define F_HOST_XFER_DIR                0x01
-#define F_ALL_XFERRED                  0x02
-#define F_SG_XFER                      0x04
-#define F_AUTO_SENSE                   0x08
-#define F_ODD_BALL_CNT                 0x10
-#define F_NO_DATA_YET                  0x80
-
-
-#define F_STATUSLOADED                 0x01
-#define F_MSGLOADED                    0x02
-#define F_DEV_SELECTED                 0x04
-
-
-#define SCCB_COMPLETE               0x00  /* SCCB completed without error */
-#define SCCB_DATA_UNDER_RUN         0x0C
-#define SCCB_SELECTION_TIMEOUT      0x11  /* Set SCSI selection timed out */
-#define SCCB_DATA_OVER_RUN          0x12
-#define SCCB_UNEXPECTED_BUS_FREE    0x13  /* Target dropped SCSI BSY */
-#define SCCB_PHASE_SEQUENCE_FAIL    0x14  /* Target bus phase sequence failure 
*/
-
-#define SCCB_INVALID_OP_CODE        0x16  /* SCCB invalid operation code */
-#define SCCB_INVALID_SCCB           0x1A  /* Invalid SCCB - bad parameter */
-#define SCCB_GROSS_FW_ERR           0x27  /* Major problem! */
-#define SCCB_BM_ERR                 0x30  /* BusMaster error. */
-#define SCCB_PARITY_ERR             0x34  /* SCSI parity error */
-
-
-
-#if (FW_TYPE==_UCB_MGR_)  
-   #define  HBA_AUTO_SENSE_FAIL        0x1B  
-   #define  HBA_TQ_REJECTED            0x1C  
-   #define  HBA_UNSUPORTED_MSG         0x1D  
-   #define  HBA_HW_ERROR               0x20  
-   #define  HBA_ATN_NOT_RESPONDED      0x21  
-   #define  HBA_SCSI_RESET_BY_ADAPTER  0x22
-   #define  HBA_SCSI_RESET_BY_TARGET   0x23
-   #define  HBA_WRONG_CONNECTION       0x24
-   #define  HBA_BUS_DEVICE_RESET       0x25
-   #define  HBA_ABORT_QUEUE            0x26
-
-#else // these are not defined in BUDI/UCB
-
-   #define SCCB_INVALID_DIRECTION      0x18  /* Invalid target direction */
-   #define SCCB_DUPLICATE_SCCB         0x19  /* Duplicate SCCB */
-   #define SCCB_SCSI_RST               0x35  /* SCSI RESET detected. */
-
-#endif // (FW_TYPE==_UCB_MGR_)  
-
-
-#define SCCB_IN_PROCESS            0x00
-#define SCCB_SUCCESS               0x01
-#define SCCB_ABORT                 0x02
-#define SCCB_NOT_FOUND             0x03
-#define SCCB_ERROR                 0x04
-#define SCCB_INVALID               0x05
-
-#define SCCB_SIZE sizeof(SCCB)
-
-
-
-
-#if (FW_TYPE == _UCB_MGR_)
-       void SccbMgr_start_sccb(CARD_HANDLE pCurrCard, PUCB p_ucb);
-       s32bits SccbMgr_abort_sccb(CARD_HANDLE pCurrCard, PUCB p_ucb);
-       u08bits SccbMgr_my_int(CARD_HANDLE pCurrCard);
-       s32bits SccbMgr_isr(CARD_HANDLE pCurrCard);
-       void SccbMgr_scsi_reset(CARD_HANDLE pCurrCard);
-       void SccbMgr_timer_expired(CARD_HANDLE pCurrCard);
-       void SccbMgr_unload_card(CARD_HANDLE pCurrCard);
-       void SccbMgr_restore_foreign_state(CARD_HANDLE pCurrCard);
-       void SccbMgr_restore_native_state(CARD_HANDLE pCurrCard);
-       void SccbMgr_save_foreign_state(PADAPTER_INFO pAdapterInfo);
-
-#endif
-
-
-#if (FW_TYPE == _SCCB_MGR_)
-
- #if defined (DOS)
-       int    SccbMgr_sense_adapter(PSCCBMGR_INFO pCardInfo);
-       USHORT SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo);
-       void  SccbMgr_start_sccb(USHORT pCurrCard, PSCCB p_SCCB);
-       int   SccbMgr_abort_sccb(USHORT pCurrCard, PSCCB p_SCCB);
-       UCHAR SccbMgr_my_int(USHORT pCurrCard);
-       int   SccbMgr_isr(USHORT pCurrCard);
-       void  SccbMgr_scsi_reset(USHORT pCurrCard);
-       void  SccbMgr_timer_expired(USHORT pCurrCard);
-       USHORT SccbMgr_status(USHORT pCurrCard);
-       void SccbMgr_unload_card(USHORT pCurrCard);
-
- #else    //non-DOS
-
-       int   SccbMgr_sense_adapter(PSCCBMGR_INFO pCardInfo);
-       ULONG SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo);
-       void  SccbMgr_start_sccb(ULONG pCurrCard, PSCCB p_SCCB);
-       int   SccbMgr_abort_sccb(ULONG pCurrCard, PSCCB p_SCCB);
-       UCHAR SccbMgr_my_int(ULONG pCurrCard);
-       int   SccbMgr_isr(ULONG pCurrCard);
-       void  SccbMgr_scsi_reset(ULONG pCurrCard);
-       void  SccbMgr_enable_int(ULONG pCurrCard);
-       void  SccbMgr_disable_int(ULONG pCurrCard);
-       void  SccbMgr_timer_expired(ULONG pCurrCard);
-       void SccbMgr_unload_card(ULONG pCurrCard);
-
-  #endif
-#endif  // (FW_TYPE == _SCCB_MGR_)
-
-#endif  /* __SCCB_H__ */
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   blx30.h  $
- *
- *   Description: This module contains SCCB/UCB Manager implementation
- *                specific stuff.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-
-#ifndef __blx30_H__
-#define __blx30_H__
-
-/*#include <globals.h>*/
-
-#define  ORION_FW_REV      3110
-
-
-
-
-#define HARP_REVD    1
-
-
-#if defined(DOS)
-#define QUEUE_DEPTH     8+1            /*1 for Normal disconnect 0 for Q'ing. 
*/
-#else
-#define QUEUE_DEPTH     254+1            /*1 for Normal disconnect 32 for 
Q'ing. */
-#endif   // defined(DOS)
-
-#define        MAX_MB_CARDS    4                                       /* Max. 
no of cards suppoerted on Mother Board */
-
-#define WIDE_SCSI       1
-
-#if defined(WIDE_SCSI)
-   #if defined(DOS)
-      #define MAX_SCSI_TAR    16
-      #define MAX_LUN         8
-               #define LUN_MASK                        0x07
-   #else
-      #define MAX_SCSI_TAR    16
-      #define MAX_LUN         32
-               #define LUN_MASK                        0x1f
-       
-   #endif
-#else
-   #define MAX_SCSI_TAR    8
-   #define MAX_LUN         8
-       #define LUN_MASK                        0x07
-#endif 
-
-#if defined(HARP_REVA)
-#define SG_BUF_CNT      15             /*Number of prefetched elements. */
-#else
-#define SG_BUF_CNT      16             /*Number of prefetched elements. */
-#endif
-
-#define SG_ELEMENT_SIZE 8              /*Eight byte per element. */
-#define SG_LOCAL_MASK   0x00000000L
-#define SG_ELEMENT_MASK 0xFFFFFFFFL
-
-
-#if (FW_TYPE == _UCB_MGR_)
-       #define OPC_DECODE_NORMAL       0x0f7f
-#endif   // _UCB_MGR_
-
-
-
-#if defined(DOS)
-
-/*#include <dos.h>*/
-       #define RD_HARPOON(ioport)          (OS_InPortByte(ioport))
-       #define RDW_HARPOON(ioport)         (OS_InPortWord(ioport))
-       #define WR_HARPOON(ioport,val)      (OS_OutPortByte(ioport,val))
-       #define WRW_HARPOON(ioport,val)     (OS_OutPortWord(ioport,val))
-
-       #define RD_HARP32(port,offset,data)  asm{db 66h;         \
-                                       push ax;             \
-                                       mov dx,port;         \
-                                       add dx, offset;      \
-                                       db 66h;              \
-                                       in ax,dx;            \
-                                       db 66h;              \
-                                       mov word ptr data,ax;\
-                                       db 66h;              \
-                                       pop ax}
-
-       #define WR_HARP32(port,offset,data) asm{db 66h;          \
-                                       push ax;             \
-                                       mov dx,port;         \
-                                       add dx, offset;      \
-                                       db 66h;              \
-                                       mov ax,word ptr data;\
-                                       db 66h;              \
-                                       out dx,ax;           \
-                                       db 66h;              \
-                                       pop ax}
-#endif /* DOS */
-
-#if defined(NETWARE) || defined(OTHER_32) ||  defined(OTHER_16)
-       #define RD_HARPOON(ioport)     OS_InPortByte((unsigned long)ioport)
-       #define RDW_HARPOON(ioport)    OS_InPortWord((unsigned long)ioport)
-       #define RD_HARP32(ioport,offset,data) (data = OS_InPortLong(ioport + 
offset))
-       #define WR_HARPOON(ioport,val) OS_OutPortByte((ULONG)ioport,(UCHAR) val)
-       #define WRW_HARPOON(ioport,val)  
OS_OutPortWord((ULONG)ioport,(USHORT)val)
-       #define WR_HARP32(ioport,offset,data)  OS_OutPortLong((ioport + 
offset), data)
-#endif /* NETWARE || OTHER_32 || OTHER_16 */
-
-#if defined(NT) || defined(WIN95_32) || defined(WIN95_16)
-       #define RD_HARPOON(ioport)          OS_InPortByte((ULONG)ioport)
-       #define RDW_HARPOON(ioport)         OS_InPortWord((ULONG)ioport)
-       #define RD_HARP32(ioport,offset,data) (data = 
OS_InPortLong((ULONG)(ioport + offset)))
-       #define WR_HARPOON(ioport,val)      
OS_OutPortByte((ULONG)ioport,(UCHAR) val)
-       #define WRW_HARPOON(ioport,val)     
OS_OutPortWord((ULONG)ioport,(USHORT)val)
-       #define WR_HARP32(ioport,offset,data)  OS_OutPortLong((ULONG)(ioport + 
offset), data)
-#endif /* NT || WIN95_32 || WIN95_16 */
-
-#if defined (UNIX)
-       #define RD_HARPOON(ioport)          OS_InPortByte((u32bits)ioport)
-       #define RDW_HARPOON(ioport)         OS_InPortWord((u32bits)ioport)
-       #define RD_HARP32(ioport,offset,data) (data = 
OS_InPortLong((u32bits)(ioport + offset)))
-       #define WR_HARPOON(ioport,val)      
OS_OutPortByte((u32bits)ioport,(u08bits) val)
-       #define WRW_HARPOON(ioport,val)       
OS_OutPortWord((u32bits)ioport,(u16bits)val)
-       #define WR_HARP32(ioport,offset,data)  OS_OutPortLong((u32bits)(ioport 
+ offset), data)
-#endif /* UNIX */
-
-#if defined(OS2)
-       #define RD_HARPOON(ioport)          OS_InPortByte((unsigned long)ioport)
-       #define RDW_HARPOON(ioport)         OS_InPortWord((unsigned long)ioport)
-       #define RD_HARP32(ioport,offset,data) (data = 
OS_InPortLong((ULONG)(ioport + offset)))
-       #define WR_HARPOON(ioport,val)      
OS_OutPortByte((ULONG)ioport,(UCHAR) val)
-       #define WRW_HARPOON(ioport,val)       
OS_OutPortWord((ULONG)ioport,(USHORT)val)
-       #define WR_HARP32(ioport,offset,data)  OS_OutPortLong(((ULONG)(ioport + 
offset)), data)
-#endif /* OS2 */
-
-#if defined(SOLARIS_REAL_MODE)
-
-       #define RD_HARPOON(ioport)          OS_InPortByte((unsigned long)ioport)
-       #define RDW_HARPOON(ioport)         OS_InPortWord((unsigned long)ioport)
-       #define RD_HARP32(ioport,offset,data) (data = 
OS_InPortLong((ULONG)(ioport + offset)))
-       #define WR_HARPOON(ioport,val)      
OS_OutPortByte((ULONG)ioport,(UCHAR) val)
-       #define WRW_HARPOON(ioport,val)       
OS_OutPortWord((ULONG)ioport,(USHORT)val)
-       #define WR_HARP32(ioport,offset,data)  OS_OutPortLong((ULONG)(ioport + 
offset), (ULONG)data)
-
-#endif  /* SOLARIS_REAL_MODE */
-
-#endif  /* __BLX30_H__ */
-
-
-/*----------------------------------------------------------------------
- * 
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   target.h  $
- *
- *   Description:  Definitions for Target related structures
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-#ifndef __TARGET__
-#define __TARGET__
-
-/*#include <globals.h>*/
-/*#include <blx30.h>*/
-
-
-#define  TAR_SYNC_MASK     (BIT(7)+BIT(6))
-#define  SYNC_UNKNOWN      0x00
-#define  SYNC_TRYING               BIT(6)
-#define  SYNC_SUPPORTED    (BIT(7)+BIT(6))
-
-#define  TAR_WIDE_MASK     (BIT(5)+BIT(4))
-#define  WIDE_DISABLED     0x00
-#define  WIDE_ENABLED              BIT(4)
-#define  WIDE_NEGOCIATED   BIT(5)
-
-#define  TAR_TAG_Q_MASK    (BIT(3)+BIT(2))
-#define  TAG_Q_UNKNOWN     0x00
-#define  TAG_Q_TRYING              BIT(2)
-#define  TAG_Q_REJECT      BIT(3)
-#define  TAG_Q_SUPPORTED   (BIT(3)+BIT(2))
-
-#define  TAR_ALLOW_DISC    BIT(0)
-
-
-#define  EE_SYNC_MASK      (BIT(0)+BIT(1))
-#define  EE_SYNC_ASYNC     0x00
-#define  EE_SYNC_5MB       BIT(0)
-#define  EE_SYNC_10MB      BIT(1)
-#define  EE_SYNC_20MB      (BIT(0)+BIT(1))
-
-#define  EE_ALLOW_DISC     BIT(6)
-#define  EE_WIDE_SCSI      BIT(7)
-
-
-#if defined(DOS)
-   typedef struct SCCBMgr_tar_info near *PSCCBMgr_tar_info;
-
-#elif defined(OS2)
-   typedef struct SCCBMgr_tar_info far *PSCCBMgr_tar_info;
-
-#else
-   typedef struct SCCBMgr_tar_info *PSCCBMgr_tar_info;
-
-#endif
-
-
-typedef struct SCCBMgr_tar_info {
-
-   PSCCB    TarSelQ_Head;
-   PSCCB    TarSelQ_Tail;
-   UCHAR    TarLUN_CA;        /*Contingent Allgiance */
-   UCHAR    TarTagQ_Cnt;
-   UCHAR    TarSelQ_Cnt;
-   UCHAR    TarStatus;
-   UCHAR    TarEEValue;
-   UCHAR       TarSyncCtrl;
-   UCHAR       TarReserved[2];                 /* for alignment */ 
-   UCHAR       LunDiscQ_Idx[MAX_LUN];
-   UCHAR    TarLUNBusy[MAX_LUN];
-} SCCBMGR_TAR_INFO;
-
-typedef struct NVRAMInfo {
-       UCHAR           niModel;                                                
                /* Model No. of card */
-       UCHAR           niCardNo;                                               
        /* Card no. */
-#if defined(DOS)
-       USHORT  niBaseAddr;                                                     
/* Port Address of card */
-#else
-       ULONG           niBaseAddr;                                             
        /* Port Address of card */
-#endif
-       UCHAR           niSysConf;                                              
        /* Adapter Configuration byte - Byte 16 of eeprom map */
-       UCHAR           niScsiConf;                                             
        /* SCSI Configuration byte - Byte 17 of eeprom map */
-       UCHAR           niScamConf;                                             
        /* SCAM Configuration byte - Byte 20 of eeprom map */
-       UCHAR           niAdapId;                                               
        /* Host Adapter ID - Byte 24 of eerpom map */
-       UCHAR           niSyncTbl[MAX_SCSI_TAR / 2];    /* Sync/Wide byte of 
targets */
-       UCHAR           niScamTbl[MAX_SCSI_TAR][4];     /* Compressed Scam name 
string of Targets */
-}NVRAMINFO;
-
-#if defined(DOS)
-typedef NVRAMINFO near *PNVRamInfo;
-#elif defined (OS2)
-typedef NVRAMINFO far *PNVRamInfo;
-#else
-typedef NVRAMINFO *PNVRamInfo;
-#endif
-
-#define        MODEL_LT                1
-#define        MODEL_DL                2
-#define        MODEL_LW                3
-#define        MODEL_DW                4
-
-
-typedef struct SCCBcard {
-   PSCCB currentSCCB;
-#if (FW_TYPE==_SCCB_MGR_)
-   PSCCBMGR_INFO cardInfo;
-#else
-   PADAPTER_INFO cardInfo;
-#endif
-
-#if defined(DOS)
-   USHORT ioPort;
-#else
-   ULONG ioPort;
-#endif
-
-   USHORT cmdCounter;
-   UCHAR  discQCount;
-   UCHAR  tagQ_Lst; 
-   UCHAR cardIndex;
-   UCHAR scanIndex;
-   UCHAR globalFlags;
-   UCHAR ourId;
-   PNVRamInfo pNvRamInfo;
-   PSCCB discQ_Tbl[QUEUE_DEPTH]; 
-      
-}SCCBCARD;
-
-#if defined(DOS)
-typedef struct SCCBcard near *PSCCBcard;
-#elif defined (OS2)
-typedef struct SCCBcard far *PSCCBcard;
-#else
-typedef struct SCCBcard *PSCCBcard;
-#endif
-
-
-#define F_TAG_STARTED          0x01
-#define F_CONLUN_IO                    0x02
-#define F_DO_RENEGO                    0x04
-#define F_NO_FILTER                    0x08
-#define F_GREEN_PC                     0x10
-#define F_HOST_XFER_ACT                0x20
-#define F_NEW_SCCB_CMD         0x40
-#define F_UPDATE_EEPROM                0x80
-
-
-#define  ID_STRING_LENGTH  32
-#define  TYPE_CODE0        0x63           /*Level2 Mstr (bits 7-6),  */
-
-#define  TYPE_CODE1        00             /*No ID yet */
-
-#define  SLV_TYPE_CODE0    0xA3           /*Priority Bit set (bits 7-6),  */
-
-#define  ASSIGN_ID   0x00
-#define  SET_P_FLAG  0x01
-#define  CFG_CMPLT   0x03
-#define  DOM_MSTR    0x0F
-#define  SYNC_PTRN   0x1F
-
-#define  ID_0_7      0x18
-#define  ID_8_F      0x11
-#define  ID_10_17    0x12
-#define  ID_18_1F    0x0B
-#define  MISC_CODE   0x14
-#define  CLR_P_FLAG  0x18
-#define  LOCATE_ON   0x12
-#define  LOCATE_OFF  0x0B
-
-#define  LVL_1_MST   0x00
-#define  LVL_2_MST   0x40
-#define  DOM_LVL_2   0xC0
-
-
-#define  INIT_SELTD  0x01
-#define  LEVEL2_TAR  0x02
-
-
-enum scam_id_st { ID0,ID1,ID2,ID3,ID4,ID5,ID6,ID7,ID8,ID9,ID10,ID11,ID12,
-                  ID13,ID14,ID15,ID_UNUSED,ID_UNASSIGNED,ID_ASSIGNED,LEGACY,
-                  CLR_PRIORITY,NO_ID_AVAIL };
-
-typedef struct SCCBscam_info {
-
-   UCHAR    id_string[ID_STRING_LENGTH];
-   enum scam_id_st state;
-    
-} SCCBSCAM_INFO, *PSCCBSCAM_INFO;
-
-#endif
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   scsi2.h  $
- *
- *   Description:  Register definitions for HARPOON ASIC.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-#ifndef __SCSI_H__
-#define __SCSI_H__
-
-
-
-#define  SCSI_TEST_UNIT_READY    0x00
-#define  SCSI_REZERO_UNIT        0x01
-#define  SCSI_REQUEST_SENSE      0x03
-#define  SCSI_FORMAT_UNIT        0x04
-#define  SCSI_REASSIGN           0x07
-#define  SCSI_READ               0x08
-#define  SCSI_WRITE              0x0A
-#define  SCSI_SEEK               0x0B
-#define  SCSI_INQUIRY            0x12
-#define  SCSI_MODE_SELECT        0x15
-#define  SCSI_RESERVE_UNIT       0x16
-#define  SCSI_RELEASE_UNIT       0x17
-#define  SCSI_MODE_SENSE         0x1A
-#define  SCSI_START_STOP_UNIT    0x1B
-#define  SCSI_SEND_DIAGNOSTIC    0x1D
-#define  SCSI_READ_CAPACITY      0x25
-#define  SCSI_READ_EXTENDED      0x28
-#define  SCSI_WRITE_EXTENDED     0x2A
-#define  SCSI_SEEK_EXTENDED      0x2B
-#define  SCSI_WRITE_AND_VERIFY   0x2E
-#define  SCSI_VERIFY             0x2F
-#define  SCSI_READ_DEFECT_DATA   0x37
-#define  SCSI_WRITE_BUFFER       0x3B
-#define  SCSI_READ_BUFFER        0x3C
-#define  SCSI_RECV_DIAGNOSTIC    0x1C
-#define  SCSI_READ_LONG          0x3E
-#define  SCSI_WRITE_LONG         0x3F
-#define  SCSI_LAST_SCSI_CMND     SCSI_WRITE_LONG
-#define  SCSI_INVALID_CMND       0xFF
-
-
-
-#define  SSGOOD                  0x00
-#define  SSCHECK                 0x02
-#define  SSCOND_MET              0x04
-#define  SSBUSY                  0x08
-#define  SSRESERVATION_CONFLICT  0x18
-#define  SSCMD_TERM              0x22
-#define  SSQ_FULL                0x28
-
-
-#define  SKNO_SEN                0x00
-#define  SKRECOV_ERR             0x01
-#define  SKNOT_RDY               0x02
-#define  SKMED_ERR               0x03
-#define  SKHW_ERR                0x04
-#define  SKILL_REQ               0x05
-#define  SKUNIT_ATTN             0x06
-#define  SKDATA_PROTECT          0x07
-#define  SKBLNK_CHK              0x08
-#define  SKCPY_ABORT             0x0A
-#define  SKABORT_CMD             0x0B
-#define  SKEQUAL                 0x0C
-#define  SKVOL_OVF               0x0D
-#define  SKMIS_CMP               0x0E
-
-
-#define  SMCMD_COMP              0x00
-#define  SMEXT                   0x01
-#define  SMSAVE_DATA_PTR         0x02
-#define  SMREST_DATA_PTR         0x03
-#define  SMDISC                  0x04
-#define  SMINIT_DETEC_ERR        0x05
-#define  SMABORT                 0x06
-#define  SMREJECT                0x07
-#define  SMNO_OP                 0x08
-#define  SMPARITY                0x09
-#define  SMDEV_RESET             0x0C
-#define        SMABORT_TAG                                     0x0D
-#define        SMINIT_RECOVERY                 0x0F
-#define        SMREL_RECOVERY                          0x10
-
-#define  SMIDENT                 0x80
-#define  DISC_PRIV               0x40
-
-
-#define  SMSYNC                  0x01
-#define  SM10MBS                 0x19     /* 100ns           */
-#define  SM5MBS                  0x32     /* 200ns           */
-#define  SMOFFSET                0x0F     /* Maxoffset value */
-#define  SMWDTR                  0x03
-#define  SM8BIT                  0x00
-#define  SM16BIT                 0x01
-#define  SM32BIT                 0x02
-#define  SMIGNORWR               0x23     /* Ignore Wide Residue */
-
-
-#define  ARBITRATION_DELAY       0x01     /* 2.4us using a 40Mhz clock */
-#define  BUS_SETTLE_DELAY        0x01     /* 400ns */
-#define  BUS_CLEAR_DELAY         0x01     /* 800ns */
-
-
-
-#define  SPHASE_TO               0x0A  /* 10 second timeout waiting for */
-#define  SCMD_TO                 0x0F  /* Overall command timeout */
-
-
-
-#define  SIX_BYTE_CMD            0x06
-#define  TEN_BYTE_CMD            0x0A
-#define  TWELVE_BYTE_CMD         0x0C
-
-#define  ASYNC                   0x00
-#define  PERI25NS                0x06  /* 25/4ns to next clock for xbow. */
-#define  SYNC10MBS               0x19
-#define  SYNC5MBS                0x32
-#define  MAX_OFFSET              0x0F  /* Maxbyteoffset for Sync Xfers */
-
-#endif
-/*----------------------------------------------------------------------
- *  
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   eeprom.h  $
- *
- *   Description:  Definitions for EEPROM related structures
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-#ifndef __EEPROM__
-#define __EEPROM__
-
-/*#include <globals.h>*/
-
-#define  EEPROM_WD_CNT     256
-
-#define  EEPROM_CHECK_SUM  0
-#define  FW_SIGNATURE      2
-#define  MODEL_NUMB_0      4
-#define  MODEL_NUMB_1      5
-#define  MODEL_NUMB_2      6
-#define  MODEL_NUMB_3      7
-#define  MODEL_NUMB_4      8
-#define  MODEL_NUMB_5      9
-#define  IO_BASE_ADDR      10
-#define  IRQ_NUMBER        12
-#define  PCI_INT_PIN       13
-#define  BUS_DELAY         14       /*On time in byte 14 off delay in 15 */
-#define  SYSTEM_CONFIG     16
-#define  SCSI_CONFIG       17
-#define  BIOS_CONFIG       18
-#define  SPIN_UP_DELAY     19
-#define  SCAM_CONFIG       20
-#define  ADAPTER_SCSI_ID   24
-
-
-#define  IGNORE_B_SCAN     32
-#define  SEND_START_ENA    34
-#define  DEVICE_ENABLE     36
-
-#define  SYNC_RATE_TBL     38
-#define  SYNC_RATE_TBL01   38
-#define  SYNC_RATE_TBL23   40
-#define  SYNC_RATE_TBL45   42
-#define  SYNC_RATE_TBL67   44
-#define  SYNC_RATE_TBL89   46
-#define  SYNC_RATE_TBLab   48
-#define  SYNC_RATE_TBLcd   50
-#define  SYNC_RATE_TBLef   52
-
-
-
-#define  EE_SCAMBASE      256 
-
-
-
-   #define  DOM_MASTER     (BIT(0) + BIT(1))
-   #define  SCAM_ENABLED   BIT(2)
-   #define  SCAM_LEVEL2    BIT(3)
-
-
-       #define RENEGO_ENA              BITW(10)
-       #define CONNIO_ENA              BITW(11)
-   #define  GREEN_PC_ENA   BITW(12)
-
-
-   #define  AUTO_RATE_00   00
-   #define  AUTO_RATE_05   01
-   #define  AUTO_RATE_10   02
-   #define  AUTO_RATE_20   03
-
-   #define  WIDE_NEGO_BIT     BIT(7)
-   #define  DISC_ENABLE_BIT   BIT(6)
-
-
-#endif
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   harpoon.h  $
- *
- *   Description:  Register definitions for HARPOON ASIC.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-
-/*#include <globals.h>*/
-
-#ifndef __HARPOON__
-#define __HARPOON__
-
-
-   #define  hp_vendor_id_0       0x00          /* LSB */
-      #define  ORION_VEND_0   0x4B
- 
-   #define  hp_vendor_id_1       0x01          /* MSB */
-      #define  ORION_VEND_1   0x10
-
-   #define  hp_device_id_0       0x02          /* LSB */
-      #define  ORION_DEV_0    0x30 
-
-   #define  hp_device_id_1       0x03          /* MSB */
-      #define  ORION_DEV_1    0x81 
-
-       /* Sub Vendor ID and Sub Device ID only available in
-               Harpoon Version 2 and higher */
-
-   #define  hp_sub_vendor_id_0   0x04          /* LSB */
-   #define  hp_sub_vendor_id_1   0x05          /* MSB */
-   #define  hp_sub_device_id_0   0x06          /* LSB */
-   #define  hp_sub_device_id_1   0x07          /* MSB */
-
-
-   #define  hp_dual_addr_lo      0x08
-   #define  hp_dual_addr_lmi     0x09
-   #define  hp_dual_addr_hmi     0x0A
-   #define  hp_dual_addr_hi      0x0B
-
-   #define  hp_semaphore         0x0C
-      #define SCCB_MGR_ACTIVE    BIT(0)
-      #define TICKLE_ME          BIT(1)
-      #define SCCB_MGR_PRESENT   BIT(3)
-      #define BIOS_IN_USE        BIT(4)
-
-   #define  hp_user_defined_D    0x0D
-
-   #define  hp_reserved_E        0x0E
-
-   #define  hp_sys_ctrl          0x0F
-
-      #define  STOP_CLK          BIT(0)      /*Turn off BusMaster Clock */
-      #define  DRVR_RST          BIT(1)      /*Firmware Reset to 80C15 chip */
-      #define  HALT_MACH         BIT(3)      /*Halt State Machine      */
-      #define  HARD_ABORT        BIT(4)      /*Hard Abort              */
-      #define  DIAG_MODE         BIT(5)      /*Diagnostic Mode         */
-
-      #define  BM_ABORT_TMOUT    0x50        /*Halt State machine time out */
-
-   #define  hp_sys_cfg           0x10
-
-      #define  DONT_RST_FIFO     BIT(7)      /*Don't reset FIFO      */
-
-
-   #define  hp_host_ctrl0        0x11
-
-      #define  DUAL_ADDR_MODE    BIT(0)   /*Enable 64-bit addresses */
-      #define  IO_MEM_SPACE      BIT(1)   /*I/O Memory Space    */
-      #define  RESOURCE_LOCK     BIT(2)   /*Enable Resource Lock */
-      #define  IGNOR_ACCESS_ERR  BIT(3)   /*Ignore Access Error */
-      #define  HOST_INT_EDGE     BIT(4)   /*Host interrupt level/edge mode sel 
*/
-      #define  SIX_CLOCKS        BIT(5)   /*6 Clocks between Strobe   */
-      #define  DMA_EVEN_PARITY   BIT(6)   /*Enable DMA Enen Parity */
-
-/*
-      #define  BURST_MODE        BIT(0)
-*/
-
-   #define  hp_reserved_12       0x12
-
-   #define  hp_host_blk_cnt      0x13
-
-      #define  XFER_BLK1         0x00     /*     0 0 0  1 byte per block*/
-      #define  XFER_BLK2         0x01     /*     0 0 1  2 byte per block*/
-      #define  XFER_BLK4         0x02     /*     0 1 0  4 byte per block*/
-      #define  XFER_BLK8         0x03     /*     0 1 1  8 byte per block*/
-      #define  XFER_BLK16        0x04     /*     1 0 0 16 byte per block*/
-      #define  XFER_BLK32        0x05     /*     1 0 1 32 byte per block*/
-      #define  XFER_BLK64        0x06     /*     1 1 0 64 byte per block*/
-   
-      #define  BM_THRESHOLD      0x40     /* PCI mode can only xfer 16 bytes*/
-
-
-   #define  hp_reserved_14       0x14
-   #define  hp_reserved_15       0x15
-   #define  hp_reserved_16       0x16
-
-   #define  hp_int_mask          0x17
-
-      #define  INT_CMD_COMPL     BIT(0)   /* DMA command complete   */
-      #define  INT_EXT_STATUS    BIT(1)   /* Extended Status Set    */
-      #define  INT_SCSI          BIT(2)   /* Scsi block interrupt   */
-      #define  INT_FIFO_RDY      BIT(4)   /* FIFO data ready        */
-
-
-   #define  hp_xfer_cnt_lo       0x18
-   #define  hp_xfer_cnt_mi       0x19
-   #define  hp_xfer_cnt_hi       0x1A
-   #define  hp_xfer_cmd          0x1B
-
-      #define  XFER_HOST_DMA     0x00     /*     0 0 0 Transfer Host -> DMA */
-      #define  XFER_DMA_HOST     0x01     /*     0 0 1 Transfer DMA  -> Host */
-      #define  XFER_HOST_MPU     0x02     /*     0 1 0 Transfer Host -> MPU  */
-      #define  XFER_MPU_HOST     0x03     /*     0 1 1 Transfer MPU  -> Host */
-      #define  XFER_DMA_MPU      0x04     /*     1 0 0 Transfer DMA  -> MPU  */
-      #define  XFER_MPU_DMA      0x05     /*     1 0 1 Transfer MPU  -> DMA  */
-      #define  SET_SEMAPHORE     0x06     /*     1 1 0 Set Semaphore         */
-      #define  XFER_NOP          0x07     /*     1 1 1 Transfer NOP          */
-      #define  XFER_MB_MPU       0x06     /*     1 1 0 Transfer MB -> MPU */
-      #define  XFER_MB_DMA       0x07     /*     1 1 1 Transfer MB -> DMA */
-
-
-      #define  XFER_HOST_AUTO    0x00     /*     0 0 Auto Transfer Size   */
-      #define  XFER_HOST_8BIT    0x08     /*     0 1 8 BIT Transfer Size  */
-      #define  XFER_HOST_16BIT   0x10     /*     1 0 16 BIT Transfer Size */
-      #define  XFER_HOST_32BIT   0x18     /*     1 1 32 BIT Transfer Size */
-
-      #define  XFER_DMA_8BIT     0x20     /*     0 1 8 BIT  Transfer Size */
-      #define  XFER_DMA_16BIT    0x40     /*     1 0 16 BIT Transfer Size */
-
-      #define  DISABLE_INT       BIT(7)   /*Do not interrupt at end of cmd. */
-
-      #define  HOST_WRT_CMD      ((DISABLE_INT + XFER_HOST_DMA + 
XFER_HOST_AUTO + XFER_DMA_8BIT))
-      #define  HOST_RD_CMD       ((DISABLE_INT + XFER_DMA_HOST + 
XFER_HOST_AUTO + XFER_DMA_8BIT))
-      #define  WIDE_HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + 
XFER_HOST_AUTO + XFER_DMA_16BIT))
-      #define  WIDE_HOST_RD_CMD  ((DISABLE_INT + XFER_DMA_HOST + 
XFER_HOST_AUTO + XFER_DMA_16BIT))
-
-   #define  hp_host_addr_lo      0x1C
-   #define  hp_host_addr_lmi     0x1D
-   #define  hp_host_addr_hmi     0x1E
-   #define  hp_host_addr_hi      0x1F
-
-   #define  hp_pio_data          0x20
-   #define  hp_reserved_21       0x21
-   #define  hp_ee_ctrl           0x22
-
-      #define  EXT_ARB_ACK       BIT(7)
-      #define  SCSI_TERM_ENA_H   BIT(6)   /* SCSI high byte terminator */
-      #define  SEE_MS            BIT(5)
-      #define  SEE_CS            BIT(3)
-      #define  SEE_CLK           BIT(2)
-      #define  SEE_DO            BIT(1)
-      #define  SEE_DI            BIT(0)
-
-      #define  EE_READ           0x06
-      #define  EE_WRITE          0x05
-      #define  EWEN              0x04
-      #define  EWEN_ADDR         0x03C0
-      #define  EWDS              0x04
-      #define  EWDS_ADDR         0x0000
-
-   #define  hp_brdctl            0x23
-
-      #define  DAT_7             BIT(7)
-      #define  DAT_6             BIT(6)
-      #define  DAT_5             BIT(5)
-      #define  BRD_STB           BIT(4)
-      #define  BRD_CS            BIT(3)
-      #define  BRD_WR            BIT(2)
-
-   #define  hp_reserved_24       0x24
-   #define  hp_reserved_25       0x25
-
-
-
-
-   #define  hp_bm_ctrl           0x26
-
-      #define  SCSI_TERM_ENA_L   BIT(0)   /*Enable/Disable external 
terminators */
-      #define  FLUSH_XFER_CNTR   BIT(1)   /*Flush transfer counter */
-      #define  BM_XFER_MIN_8     BIT(2)   /*Enable bus master transfer of 9 */
-      #define  BIOS_ENA          BIT(3)   /*Enable BIOS/FLASH Enable */
-      #define  FORCE1_XFER       BIT(5)   /*Always xfer one byte in byte mode 
*/
-      #define  FAST_SINGLE       BIT(6)   /*?? */
-
-      #define  BMCTRL_DEFAULT    (FORCE1_XFER|FAST_SINGLE|SCSI_TERM_ENA_L)
-
-   #define  hp_reserved_27       0x27
-
-   #define  hp_sg_addr           0x28
-   #define  hp_page_ctrl         0x29
-
-      #define  SCATTER_EN        BIT(0)   
-      #define  SGRAM_ARAM        BIT(1)   
-      #define  BIOS_SHADOW       BIT(2)   
-      #define  G_INT_DISABLE     BIT(3)   /* Enable/Disable all Interrupts */
-      #define  NARROW_SCSI_CARD  BIT(4)   /* NARROW/WIDE SCSI config pin */
-
-   #define  hp_reserved_2A       0x2A
-   #define  hp_pci_cmd_cfg       0x2B
-
-      #define  IO_SPACE_ENA      BIT(0)   /*enable I/O space */
-      #define  MEM_SPACE_ENA     BIT(1)   /*enable memory space */
-      #define  BUS_MSTR_ENA      BIT(2)   /*enable bus master operation */
-      #define  MEM_WI_ENA        BIT(4)   /*enable Write and Invalidate */
-      #define  PAR_ERR_RESP      BIT(6)   /*enable parity error responce. */
-
-   #define  hp_reserved_2C       0x2C
-
-   #define  hp_pci_stat_cfg      0x2D
-
-      #define  DATA_PARITY_ERR   BIT(0)   
-      #define  REC_TARGET_ABORT  BIT(4)   /*received Target abort */
-      #define  REC_MASTER_ABORT  BIT(5)   /*received Master abort */
-      #define  SIG_SYSTEM_ERR    BIT(6)   
-      #define  DETECTED_PAR_ERR  BIT(7)   
-
-   #define  hp_reserved_2E       0x2E
-
-   #define  hp_sys_status        0x2F
-
-      #define  SLV_DATA_RDY      BIT(0)   /*Slave data ready */
-      #define  XFER_CNT_ZERO     BIT(1)   /*Transfer counter = 0 */
-      #define  BM_FIFO_EMPTY     BIT(2)   /*FIFO empty */
-      #define  BM_FIFO_FULL      BIT(3)   /*FIFO full */
-      #define  HOST_OP_DONE      BIT(4)   /*host operation done */
-      #define  DMA_OP_DONE       BIT(5)   /*DMA operation done */
-      #define  SLV_OP_DONE       BIT(6)   /*Slave operation done */
-      #define  PWR_ON_FLAG       BIT(7)   /*Power on flag */
-
-   #define  hp_reserved_30       0x30
-
-   #define  hp_host_status0      0x31
-
-      #define  HOST_TERM         BIT(5)   /*Host Terminal Count */
-      #define  HOST_TRSHLD       BIT(6)   /*Host Threshold      */
-      #define  CONNECTED_2_HOST  BIT(7)   /*Connected to Host   */
-
-   #define  hp_reserved_32       0x32
-
-   #define  hp_rev_num           0x33
-
-      #define  REV_A_CONST       0x0E
-      #define  REV_B_CONST       0x0E
-
-   #define  hp_stack_data        0x34
-   #define  hp_stack_addr        0x35
-
-   #define  hp_ext_status        0x36
-
-      #define  BM_FORCE_OFF      BIT(0)   /*Bus Master is forced to get off */
-      #define  PCI_TGT_ABORT     BIT(0)   /*PCI bus master transaction aborted 
*/
-      #define  PCI_DEV_TMOUT     BIT(1)   /*PCI Device Time out */
-      #define  FIFO_TC_NOT_ZERO  BIT(2)   /*FIFO or transfer counter not zero 
*/
-      #define  CHIP_RST_OCCUR    BIT(3)   /*Chip reset occurs */
-      #define  CMD_ABORTED       BIT(4)   /*Command aborted */
-      #define  BM_PARITY_ERR     BIT(5)   /*parity error on data received   */
-      #define  PIO_OVERRUN       BIT(6)   /*Slave data overrun */
-      #define  BM_CMD_BUSY       BIT(7)   /*Bus master transfer command busy */
-      #define  BAD_EXT_STATUS    (BM_FORCE_OFF | PCI_DEV_TMOUT | CMD_ABORTED | 
\
-                                  BM_PARITY_ERR | PIO_OVERRUN)
-
-   #define  hp_int_status        0x37
-      
-      #define  BM_CMD_CMPL       BIT(0)   /*Bus Master command complete */
-      #define  EXT_STATUS_ON     BIT(1)   /*Extended status is valid */
-      #define  SCSI_INTERRUPT    BIT(2)   /*Global indication of a SCSI int. */
-      #define  BM_FIFO_RDY       BIT(4)   
-      #define  INT_ASSERTED      BIT(5)   /* */
-      #define  SRAM_BUSY         BIT(6)   /*Scatter/Gather RAM busy */
-      #define  CMD_REG_BUSY      BIT(7)                                       
-
-
-   #define  hp_fifo_cnt          0x38
-   #define  hp_curr_host_cnt     0x39
-   #define  hp_reserved_3A       0x3A
-   #define  hp_fifo_in_addr      0x3B
-
-   #define  hp_fifo_out_addr     0x3C
-   #define  hp_reserved_3D       0x3D
-   #define  hp_reserved_3E       0x3E
-   #define  hp_reserved_3F       0x3F
-
-
-
-   extern USHORT default_intena;
-
-   #define  hp_intena           0x40
-
-      #define  RESET            BITW(7)
-      #define  PROG_HLT                 BITW(6)  
-      #define  PARITY           BITW(5)
-      #define  FIFO             BITW(4)
-      #define  SEL              BITW(3)
-      #define  SCAM_SEL                 BITW(2) 
-      #define  RSEL             BITW(1)
-      #define  TIMEOUT          BITW(0)
-      #define  BUS_FREE                 BITW(15)
-      #define  XFER_CNT_0       BITW(14)
-      #define  PHASE            BITW(13)
-      #define  IUNKWN           BITW(12)
-      #define  ICMD_COMP        BITW(11)
-      #define  ITICKLE          BITW(10)
-      #define  IDO_STRT                 BITW(9)
-      #define  ITAR_DISC        BITW(8)
-      #define  AUTO_INT                 
(BITW(12)+BITW(11)+BITW(10)+BITW(9)+BITW(8))
-      #define  CLR_ALL_INT      0xFFFF
-      #define  CLR_ALL_INT_1    0xFF00
-
-   #define  hp_intstat          0x42
-
-   #define  hp_scsisig           0x44
-
-      #define  SCSI_SEL          BIT(7)
-      #define  SCSI_BSY          BIT(6)
-      #define  SCSI_REQ          BIT(5)
-      #define  SCSI_ACK          BIT(4)
-      #define  SCSI_ATN          BIT(3)
-      #define  SCSI_CD           BIT(2)
-      #define  SCSI_MSG          BIT(1)
-      #define  SCSI_IOBIT        BIT(0)
-
-      #define  S_SCSI_PHZ        (BIT(2)+BIT(1)+BIT(0))
-      #define  S_CMD_PH          (BIT(2)              )
-      #define  S_MSGO_PH         (BIT(2)+BIT(1)       )
-      #define  S_STAT_PH         (BIT(2)       +BIT(0))
-      #define  S_MSGI_PH         (BIT(2)+BIT(1)+BIT(0))
-      #define  S_DATAI_PH        (              BIT(0))
-      #define  S_DATAO_PH        0x00
-      #define  S_ILL_PH          (       BIT(1)       )
-
-   #define  hp_scsictrl_0        0x45
-
-      #define  NO_ARB            BIT(7)
-      #define  SEL_TAR           BIT(6)
-      #define  ENA_ATN           BIT(4)
-      #define  ENA_RESEL         BIT(2)
-      #define  SCSI_RST          BIT(1)
-      #define  ENA_SCAM_SEL      BIT(0)
-
-
-
-   #define  hp_portctrl_0        0x46
-
-      #define  SCSI_PORT         BIT(7)
-      #define  SCSI_INBIT        BIT(6)
-      #define  DMA_PORT          BIT(5)
-      #define  DMA_RD            BIT(4)
-      #define  HOST_PORT         BIT(3)
-      #define  HOST_WRT          BIT(2)
-      #define  SCSI_BUS_EN       BIT(1)
-      #define  START_TO          BIT(0)
-
-   #define  hp_scsireset         0x47
-
-      #define  SCSI_TAR          BIT(7)
-      #define  SCSI_INI          BIT(6)
-      #define  SCAM_EN           BIT(5)
-      #define  ACK_HOLD          BIT(4)
-      #define  DMA_RESET         BIT(3)
-      #define  HPSCSI_RESET      BIT(2)
-      #define  PROG_RESET        BIT(1)
-      #define  FIFO_CLR          BIT(0)
-
-   #define  hp_xfercnt_0         0x48
-   #define  hp_xfercnt_1         0x49
-   #define  hp_xfercnt_2         0x4A
-   #define  hp_xfercnt_3         0x4B
-
-   #define  hp_fifodata_0        0x4C
-   #define  hp_fifodata_1        0x4D
-   #define  hp_addstat           0x4E
-
-      #define  SCAM_TIMER        BIT(7)
-      #define  AUTO_RUNNING      BIT(6)
-      #define  FAST_SYNC         BIT(5)
-      #define  SCSI_MODE8        BIT(3)
-      #define  SCSI_PAR_ERR      BIT(0)
-
-   #define  hp_prgmcnt_0         0x4F
-
-      #define  AUTO_PC_MASK      0x3F
-
-   #define  hp_selfid_0          0x50
-   #define  hp_selfid_1          0x51
-   #define  hp_arb_id            0x52
-
-      #define  ARB_ID            (BIT(3) + BIT(2) + BIT(1) + BIT(0))
-
-   #define  hp_select_id         0x53
-
-      #define  RESEL_ID          (BIT(7) + BIT(6) + BIT(5) + BIT(4))
-      #define  SELECT_ID         (BIT(3) + BIT(2) + BIT(1) + BIT(0))
-
-   #define  hp_synctarg_base     0x54
-   #define  hp_synctarg_12       0x54
-   #define  hp_synctarg_13       0x55
-   #define  hp_synctarg_14       0x56
-   #define  hp_synctarg_15       0x57
-
-   #define  hp_synctarg_8        0x58
-   #define  hp_synctarg_9        0x59
-   #define  hp_synctarg_10       0x5A
-   #define  hp_synctarg_11       0x5B
-
-   #define  hp_synctarg_4        0x5C
-   #define  hp_synctarg_5        0x5D
-   #define  hp_synctarg_6        0x5E
-   #define  hp_synctarg_7        0x5F
-
-   #define  hp_synctarg_0        0x60
-   #define  hp_synctarg_1        0x61
-   #define  hp_synctarg_2        0x62
-   #define  hp_synctarg_3        0x63
-
-      #define  RATE_20MB         0x00
-      #define  RATE_10MB         (              BIT(5))
-      #define  RATE_6_6MB        (       BIT(6)       )   
-      #define  RATE_5MB          (       BIT(6)+BIT(5))
-      #define  RATE_4MB          (BIT(7)              )
-      #define  RATE_3_33MB       (BIT(7)       +BIT(5))
-      #define  RATE_2_85MB       (BIT(7)+BIT(6)       )
-      #define  RATE_2_5MB        (BIT(7)+BIT(5)+BIT(6))
-      #define  NEXT_CLK          BIT(5)
-      #define  SLOWEST_SYNC      (BIT(7)+BIT(6)+BIT(5))
-      #define  NARROW_SCSI       BIT(4)
-      #define  SYNC_OFFSET       (BIT(3) + BIT(2) + BIT(1) + BIT(0))
-      #define  DEFAULT_ASYNC     0x00
-      #define  DEFAULT_OFFSET    0x0F
-
-   #define  hp_autostart_0       0x64
-   #define  hp_autostart_1       0x65
-   #define  hp_autostart_2       0x66
-   #define  hp_autostart_3       0x67
-
-
-
-      #define  DISABLE  0x00
-      #define  AUTO_IMMED    BIT(5)
-      #define  SELECT   BIT(6)
-      #define  RESELECT (BIT(6)+BIT(5))
-      #define  BUSFREE  BIT(7)
-      #define  XFER_0   (BIT(7)+BIT(5))
-      #define  END_DATA (BIT(7)+BIT(6))
-      #define  MSG_PHZ  (BIT(7)+BIT(6)+BIT(5))
-
-   #define  hp_gp_reg_0          0x68
-   #define  hp_gp_reg_1          0x69
-   #define  hp_gp_reg_2          0x6A
-   #define  hp_gp_reg_3          0x6B
-
-   #define  hp_seltimeout        0x6C
-
-
-      #define  TO_2ms            0x54      /* 2.0503ms */
-      #define  TO_4ms            0x67      /* 3.9959ms */
-
-      #define  TO_5ms            0x03      /* 4.9152ms */
-      #define  TO_10ms           0x07      /* 11.xxxms */
-      #define  TO_250ms          0x99      /* 250.68ms */
-      #define  TO_290ms          0xB1      /* 289.99ms */
-      #define  TO_350ms          0xD6      /* 350.62ms */
-      #define  TO_417ms          0xFF      /* 417.79ms */
-
-   #define  hp_clkctrl_0         0x6D
-
-      #define  PWR_DWN           BIT(6)
-      #define  ACTdeassert       BIT(4)
-      #define  ATNonErr          BIT(3)
-      #define  CLK_30MHZ         BIT(1)
-      #define  CLK_40MHZ         (BIT(1) + BIT(0))
-      #define  CLK_50MHZ         BIT(2)
-
-      #define  CLKCTRL_DEFAULT   (ACTdeassert | CLK_40MHZ)
-
-   #define  hp_fiforead          0x6E
-   #define  hp_fifowrite         0x6F
-
-   #define  hp_offsetctr         0x70
-   #define  hp_xferstat          0x71
-
-      #define  FIFO_FULL         BIT(7)
-      #define  FIFO_EMPTY        BIT(6)
-      #define  FIFO_MASK         0x3F   /* Mask for the FIFO count value. */
-      #define  FIFO_LEN          0x20
-
-   #define  hp_portctrl_1        0x72
-
-      #define  EVEN_HOST_P       BIT(5)
-      #define  INVT_SCSI         BIT(4)
-      #define  CHK_SCSI_P        BIT(3)
-      #define  HOST_MODE8        BIT(0)
-      #define  HOST_MODE16       0x00
-
-   #define  hp_xfer_pad          0x73
-
-      #define  ID_UNLOCK         BIT(3)
-      #define  XFER_PAD          BIT(2)
-
-   #define  hp_scsidata_0        0x74
-   #define  hp_scsidata_1        0x75
-   #define  hp_timer_0           0x76
-   #define  hp_timer_1           0x77
-
-   #define  hp_reserved_78       0x78
-   #define  hp_reserved_79       0x79
-   #define  hp_reserved_7A       0x7A
-   #define  hp_reserved_7B       0x7B
-
-   #define  hp_reserved_7C       0x7C
-   #define  hp_reserved_7D       0x7D
-   #define  hp_reserved_7E       0x7E
-   #define  hp_reserved_7F       0x7F
-
-   #define  hp_aramBase          0x80
-   #define  BIOS_DATA_OFFSET     0x60
-   #define  BIOS_RELATIVE_CARD   0x64
-
-
-
-
-      #define  AUTO_LEN 0x80
-      #define  AR0      0x00
-      #define  AR1      BITW(8)
-      #define  AR2      BITW(9)
-      #define  AR3      (BITW(9) + BITW(8))
-      #define  SDATA    BITW(10)
-
-      #define  NOP_OP   0x00        /* Nop command */
-
-      #define  CRD_OP   BITW(11)     /* Cmp Reg. w/ Data */
-
-      #define  CRR_OP   BITW(12)     /* Cmp Reg. w. Reg. */
-
-      #define  CBE_OP   (BITW(14)+BITW(12)+BITW(11)) /* Cmp SCSI cmd class & 
Branch EQ */
-      
-      #define  CBN_OP   (BITW(14)+BITW(13))  /* Cmp SCSI cmd class & Branch 
NOT EQ */
-      
-      #define  CPE_OP   (BITW(14)+BITW(11))  /* Cmp SCSI phs & Branch EQ */
-
-      #define  CPN_OP   (BITW(14)+BITW(12))  /* Cmp SCSI phs & Branch NOT EQ */
-
-
-      #define  ADATA_OUT   0x00     
-      #define  ADATA_IN    BITW(8)
-      #define  ACOMMAND    BITW(10)
-      #define  ASTATUS     (BITW(10)+BITW(8))
-      #define  AMSG_OUT    (BITW(10)+BITW(9))
-      #define  AMSG_IN     (BITW(10)+BITW(9)+BITW(8))
-      #define  AILLEGAL    (BITW(9)+BITW(8))
-
-
-      #define  BRH_OP   BITW(13)   /* Branch */
-
-      
-      #define  ALWAYS   0x00
-      #define  EQUAL    BITW(8)
-      #define  NOT_EQ   BITW(9)
-
-      #define  TCB_OP   (BITW(13)+BITW(11))    /* Test condition & branch */
-
-      
-      #define  ATN_SET     BITW(8)
-      #define  ATN_RESET   BITW(9)
-      #define  XFER_CNT    (BITW(9)+BITW(8))
-      #define  FIFO_0      BITW(10)
-      #define  FIFO_NOT0   (BITW(10)+BITW(8))
-      #define  T_USE_SYNC0 (BITW(10)+BITW(9))
-
-
-      #define  MPM_OP   BITW(15)        /* Match phase and move data */
-
-      #define  MDR_OP   (BITW(12)+BITW(11)) /* Move data to Reg. */
-
-      #define  MRR_OP   BITW(14)        /* Move DReg. to Reg. */
-
-
-      #define  S_IDREG  (BIT(2)+BIT(1)+BIT(0))
-
-
-      #define  D_AR0    0x00
-      #define  D_AR1    BIT(0)
-      #define  D_AR2    BIT(1)
-      #define  D_AR3    (BIT(1) + BIT(0))
-      #define  D_SDATA  BIT(2)
-      #define  D_BUCKET (BIT(2) + BIT(1) + BIT(0))
-
-
-      #define  ADR_OP   (BITW(13)+BITW(12)) /* Logical AND Reg. w. Data */
-
-      #define  ADS_OP   (BITW(14)+BITW(13)+BITW(12)) 
-
-      #define  ODR_OP   (BITW(13)+BITW(12)+BITW(11))  
-
-      #define  ODS_OP   (BITW(14)+BITW(13)+BITW(12)+BITW(11))  
-
-      #define  STR_OP   (BITW(15)+BITW(14)) /* Store to A_Reg. */
-
-      #define  AINT_ENA1   0x00
-      #define  AINT_STAT1  BITW(8)
-      #define  ASCSI_SIG   BITW(9)
-      #define  ASCSI_CNTL  (BITW(9)+BITW(8))
-      #define  APORT_CNTL  BITW(10)
-      #define  ARST_CNTL   (BITW(10)+BITW(8))
-      #define  AXFERCNT0   (BITW(10)+BITW(9))
-      #define  AXFERCNT1   (BITW(10)+BITW(9)+BITW(8))
-      #define  AXFERCNT2   BITW(11)
-      #define  AFIFO_DATA  (BITW(11)+BITW(8))
-      #define  ASCSISELID  (BITW(11)+BITW(9))
-      #define  ASCSISYNC0  (BITW(11)+BITW(9)+BITW(8))
-
-
-      #define  RAT_OP      (BITW(14)+BITW(13)+BITW(11))
-
-      #define  SSI_OP      (BITW(15)+BITW(11))
-
-
-      #define  SSI_ITAR_DISC   (ITAR_DISC >> 8)
-      #define  SSI_IDO_STRT    (IDO_STRT >> 8)
-      #define  SSI_IDI_STRT    (IDO_STRT >> 8)
-
-      #define  SSI_ICMD_COMP   (ICMD_COMP >> 8)
-      #define  SSI_ITICKLE     (ITICKLE >> 8)
-
-      #define  SSI_IUNKWN      (IUNKWN >> 8)
-      #define  SSI_INO_CC      (IUNKWN >> 8)
-      #define  SSI_IRFAIL      (IUNKWN >> 8)
-
-
-      #define  NP    0x10     /*Next Phase */
-      #define  NTCMD 0x02     /*Non- Tagged Command start */
-      #define  CMDPZ 0x04     /*Command phase */
-      #define  DINT  0x12     /*Data Out/In interrupt */
-      #define  DI    0x13     /*Data Out */
-      #define  MI    0x14     /*Message In */
-      #define  DC    0x19     /*Disconnect Message */
-      #define  ST    0x1D     /*Status Phase */
-      #define  UNKNWN 0x24    /*Unknown bus action */
-      #define  CC    0x25     /*Command Completion failure */
-      #define  TICK  0x26     /*New target reselected us. */
-      #define  RFAIL 0x27     /*Reselection failed */
-      #define  SELCHK 0x28     /*Select & Check SCSI ID latch reg */
-
-
-      #define  ID_MSG_STRT    hp_aramBase + 0x00
-      #define  NON_TAG_ID_MSG hp_aramBase + 0x06
-      #define  CMD_STRT       hp_aramBase + 0x08
-      #define  SYNC_MSGS      hp_aramBase + 0x08
-
-
-
-
-
-      #define  TAG_STRT          0x00
-      #define  SELECTION_START   0x00
-      #define  DISCONNECT_START  0x10/2
-      #define  END_DATA_START    0x14/2
-      #define  NONTAG_STRT       0x02/2
-      #define  CMD_ONLY_STRT     CMDPZ/2
-      #define  TICKLE_STRT     TICK/2
-      #define  SELCHK_STRT     SELCHK/2
-
-
-
-
-#define mEEPROM_CLK_DELAY(port) (RD_HARPOON(port+hp_intstat_1))
-
-#define mWAIT_10MS(port) (RD_HARPOON(port+hp_intstat_1))
-
-
-#define CLR_XFER_CNT(port) (WR_HARPOON(port+hp_xfercnt_0, 0x00))
-
-#define SET_XFER_CNT(port, data) (WR_HARP32(port,hp_xfercnt_0,data))
-
-#define GET_XFER_CNT(port, xfercnt) {RD_HARP32(port,hp_xfercnt_0,xfercnt); 
xfercnt &= 0xFFFFFF;}
-/* #define GET_XFER_CNT(port, xfercnt) (xfercnt = 
RD_HARPOON(port+hp_xfercnt_2), \
-                                 xfercnt <<= 16,\
-                                 xfercnt |= 
RDW_HARPOON((USHORT)(port+hp_xfercnt_0)))
- */
-#if defined(DOS)
-#define HP_SETUP_ADDR_CNT(port,addr,count) 
(WRW_HARPOON((USHORT)(port+hp_host_addr_lo), (USHORT)(addr & 0x0000FFFFL)),\
-         addr >>= 16,\
-         WRW_HARPOON((USHORT)(port+hp_host_addr_hmi), (USHORT)(addr & 
0x0000FFFFL)),\
-         WR_HARP32(port,hp_xfercnt_0,count),\
-         WRW_HARPOON((USHORT)(port+hp_xfer_cnt_lo), (USHORT)(count & 
0x0000FFFFL)),\
-         count >>= 16,\
-         WR_HARPOON(port+hp_xfer_cnt_hi, (count & 0xFF)))
-#else
-#define HP_SETUP_ADDR_CNT(port,addr,count) 
(WRW_HARPOON((port+hp_host_addr_lo), (USHORT)(addr & 0x0000FFFFL)),\
-         addr >>= 16,\
-         WRW_HARPOON((port+hp_host_addr_hmi), (USHORT)(addr & 0x0000FFFFL)),\
-         WR_HARP32(port,hp_xfercnt_0,count),\
-         WRW_HARPOON((port+hp_xfer_cnt_lo), (USHORT)(count & 0x0000FFFFL)),\
-         count >>= 16,\
-         WR_HARPOON(port+hp_xfer_cnt_hi, (count & 0xFF)))
-#endif
-
-#define ACCEPT_MSG(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
-                          WR_HARPOON(port+hp_scsisig, S_ILL_PH);}
-
-
-#define ACCEPT_MSG_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
-                          WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));}
-
-#define ACCEPT_STAT(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
-                          WR_HARPOON(port+hp_scsisig, S_ILL_PH);}
-
-#define ACCEPT_STAT_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
-                          WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));}
-
-#define DISABLE_AUTO(port) (WR_HARPOON(port+hp_scsireset, PROG_RESET),\
-                        WR_HARPOON(port+hp_scsireset, 0x00))
-
-#define ARAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
-                             (RD_HARPOON(p_port+hp_page_ctrl) | SGRAM_ARAM)))
-
-#define SGRAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
-                             (RD_HARPOON(p_port+hp_page_ctrl) & ~SGRAM_ARAM)))
-
-#define MDISABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
-                             (RD_HARPOON(p_port+hp_page_ctrl) | 
G_INT_DISABLE)))
-
-#define MENABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
-                             (RD_HARPOON(p_port+hp_page_ctrl) & 
~G_INT_DISABLE)))
-
-
-
-#endif
-
-
-#if (FW_TYPE==_UCB_MGR_)
-void ReadNVRam(PSCCBcard pCurrCard,PUCB p_ucb);
-void WriteNVRam(PSCCBcard pCurrCard,PUCB p_ucb);
-void UpdateCheckSum(u32bits baseport);
-#endif // (FW_TYPE==_UCB_MGR_)
-
-#if defined(DOS)
-UCHAR sfm(USHORT port, PSCCB pcurrSCCB);
-void  scsiStartAuto(USHORT port);
-UCHAR sisyncn(USHORT port, UCHAR p_card, UCHAR syncFlag);
-void  ssel(USHORT port, UCHAR p_card);
-void  sres(USHORT port, UCHAR p_card, PSCCBcard pCurrCard);
-void  sdecm(UCHAR message, USHORT port, UCHAR p_card);
-void  shandem(USHORT port, UCHAR p_card,PSCCB pCurrSCCB);
-void  stsyncn(USHORT port, UCHAR p_card);
-void  sisyncr(USHORT port,UCHAR sync_pulse, UCHAR offset);
-void  sssyncv(USHORT p_port, UCHAR p_id, UCHAR p_sync_value, PSCCBMgr_tar_info 
currTar_Info);
-void  sresb(USHORT port, UCHAR p_card);
-void  sxfrp(USHORT p_port, UCHAR p_card);
-void  schkdd(USHORT port, UCHAR p_card);
-UCHAR RdStack(USHORT port, UCHAR index);
-void  WrStack(USHORT portBase, UCHAR index, UCHAR data);
-UCHAR ChkIfChipInitialized(USHORT ioPort);
-
-#if defined(V302)
-UCHAR GetTarLun(USHORT port, UCHAR p_card, UCHAR our_target, PSCCBcard 
pCurrCard, PUCHAR tag, PUCHAR lun);
-#endif
-
-void SendMsg(USHORT port, UCHAR message);
-void  queueFlushTargSccb(UCHAR p_card, UCHAR thisTarg, UCHAR error_code);
-UCHAR scsellDOS(USHORT p_port, UCHAR targ_id);
-#else
-UCHAR sfm(ULONG port, PSCCB pcurrSCCB);
-void  scsiStartAuto(ULONG port);
-UCHAR sisyncn(ULONG port, UCHAR p_card, UCHAR syncFlag);
-void  ssel(ULONG port, UCHAR p_card);
-void  sres(ULONG port, UCHAR p_card, PSCCBcard pCurrCard);
-void  sdecm(UCHAR message, ULONG port, UCHAR p_card);
-void  shandem(ULONG port, UCHAR p_card,PSCCB pCurrSCCB);
-void  stsyncn(ULONG port, UCHAR p_card);
-void  sisyncr(ULONG port,UCHAR sync_pulse, UCHAR offset);
-void  sssyncv(ULONG p_port, UCHAR p_id, UCHAR p_sync_value, PSCCBMgr_tar_info 
currTar_Info);
-void  sresb(ULONG port, UCHAR p_card);
-void  sxfrp(ULONG p_port, UCHAR p_card);
-void  schkdd(ULONG port, UCHAR p_card);
-UCHAR RdStack(ULONG port, UCHAR index);
-void  WrStack(ULONG portBase, UCHAR index, UCHAR data);
-UCHAR ChkIfChipInitialized(ULONG ioPort);
-
-#if defined(V302)
-UCHAR GetTarLun(ULONG port, UCHAR p_card, UCHAR our_target, PSCCBcard 
pCurrCard, PUCHAR tar, PUCHAR lun);
-#endif
-
-void SendMsg(ULONG port, UCHAR message);
-void  queueFlushTargSccb(UCHAR p_card, UCHAR thisTarg, UCHAR error_code);
-#endif
-
-void  ssenss(PSCCBcard pCurrCard);
-void  sinits(PSCCB p_sccb, UCHAR p_card);
-void  RNVRamData(PNVRamInfo pNvRamInfo);
-
-#if defined(WIDE_SCSI)
-   #if defined(DOS)
-   UCHAR siwidn(USHORT port, UCHAR p_card);
-   void  stwidn(USHORT port, UCHAR p_card);
-   void  siwidr(USHORT port, UCHAR width);
-   #else
-   UCHAR siwidn(ULONG port, UCHAR p_card);
-   void  stwidn(ULONG port, UCHAR p_card);
-   void  siwidr(ULONG port, UCHAR width);
-   #endif
-#endif
-
-
-void  queueSelectFail(PSCCBcard pCurrCard, UCHAR p_card);
-void  queueDisconnect(PSCCB p_SCCB, UCHAR p_card);
-void  queueCmdComplete(PSCCBcard pCurrCard, PSCCB p_SCCB, UCHAR p_card);
-void  queueSearchSelect(PSCCBcard pCurrCard, UCHAR p_card);
-void  queueFlushSccb(UCHAR p_card, UCHAR error_code);
-void  queueAddSccb(PSCCB p_SCCB, UCHAR card);
-UCHAR queueFindSccb(PSCCB p_SCCB, UCHAR p_card);
-void  utilUpdateResidual(PSCCB p_SCCB);
-USHORT CalcCrc16(UCHAR buffer[]);
-UCHAR  CalcLrc(UCHAR buffer[]);
-
-
-#if defined(DOS)
-void  Wait1Second(USHORT p_port);
-void  Wait(USHORT p_port, UCHAR p_delay);
-void  utilEEWriteOnOff(USHORT p_port,UCHAR p_mode);
-void  utilEEWrite(USHORT p_port, USHORT ee_data, USHORT ee_addr);
-USHORT utilEERead(USHORT p_port, USHORT ee_addr);
-USHORT utilEEReadOrg(USHORT p_port, USHORT ee_addr);
-void  utilEESendCmdAddr(USHORT p_port, UCHAR ee_cmd, USHORT ee_addr);
-#else
-void  Wait1Second(ULONG p_port);
-void  Wait(ULONG p_port, UCHAR p_delay);
-void  utilEEWriteOnOff(ULONG p_port,UCHAR p_mode);
-void  utilEEWrite(ULONG p_port, USHORT ee_data, USHORT ee_addr);
-USHORT utilEERead(ULONG p_port, USHORT ee_addr);
-USHORT utilEEReadOrg(ULONG p_port, USHORT ee_addr);
-void  utilEESendCmdAddr(ULONG p_port, UCHAR ee_cmd, USHORT ee_addr);
-#endif
-
-
-
-#if defined(OS2)
-   void  far phaseDataOut(ULONG port, UCHAR p_card);
-   void  far phaseDataIn(ULONG port, UCHAR p_card);
-   void  far phaseCommand(ULONG port, UCHAR p_card);
-   void  far phaseStatus(ULONG port, UCHAR p_card);
-   void  far phaseMsgOut(ULONG port, UCHAR p_card);
-   void  far phaseMsgIn(ULONG port, UCHAR p_card);
-   void  far phaseIllegal(ULONG port, UCHAR p_card);
-#else
-   #if defined(DOS)
-      void  phaseDataOut(USHORT port, UCHAR p_card);
-      void  phaseDataIn(USHORT port, UCHAR p_card);
-      void  phaseCommand(USHORT port, UCHAR p_card);
-      void  phaseStatus(USHORT port, UCHAR p_card);
-      void  phaseMsgOut(USHORT port, UCHAR p_card);
-      void  phaseMsgIn(USHORT port, UCHAR p_card);
-      void  phaseIllegal(USHORT port, UCHAR p_card);
-   #else
-      void  phaseDataOut(ULONG port, UCHAR p_card);
-      void  phaseDataIn(ULONG port, UCHAR p_card);
-      void  phaseCommand(ULONG port, UCHAR p_card);
-      void  phaseStatus(ULONG port, UCHAR p_card);
-      void  phaseMsgOut(ULONG port, UCHAR p_card);
-      void  phaseMsgIn(ULONG port, UCHAR p_card);
-      void  phaseIllegal(ULONG port, UCHAR p_card);
-   #endif
-#endif
-
-#if defined(DOS)
-void  phaseDecode(USHORT port, UCHAR p_card);
-void  phaseChkFifo(USHORT port, UCHAR p_card);
-void  phaseBusFree(USHORT p_port, UCHAR p_card);
-#else
-void  phaseDecode(ULONG port, UCHAR p_card);
-void  phaseChkFifo(ULONG port, UCHAR p_card);
-void  phaseBusFree(ULONG p_port, UCHAR p_card);
-#endif
-
-
-
-
-#if defined(DOS)
-void  XbowInit(USHORT port, UCHAR scamFlg);
-void  BusMasterInit(USHORT p_port);
-int   DiagXbow(USHORT port);
-int   DiagBusMaster(USHORT port);
-void  DiagEEPROM(USHORT p_port);
-#else
-void  XbowInit(ULONG port, UCHAR scamFlg);
-void  BusMasterInit(ULONG p_port);
-int   DiagXbow(ULONG port);
-int   DiagBusMaster(ULONG port);
-void  DiagEEPROM(ULONG p_port);
-#endif
-
-
-
-
-#if defined(DOS)
-void  busMstrAbort(USHORT port);
-UCHAR busMstrTimeOut(USHORT port);
-void  dataXferProcessor(USHORT port, PSCCBcard pCurrCard);
-void  busMstrSGDataXferStart(USHORT port, PSCCB pCurrSCCB);
-void  busMstrDataXferStart(USHORT port, PSCCB pCurrSCCB);
-void  hostDataXferAbort(USHORT port, UCHAR p_card, PSCCB pCurrSCCB);
-#else
-void  busMstrAbort(ULONG port);
-UCHAR busMstrTimeOut(ULONG port);
-void  dataXferProcessor(ULONG port, PSCCBcard pCurrCard);
-void  busMstrSGDataXferStart(ULONG port, PSCCB pCurrSCCB);
-void  busMstrDataXferStart(ULONG port, PSCCB pCurrSCCB);
-void  hostDataXferAbort(ULONG port, UCHAR p_card, PSCCB pCurrSCCB);
-#endif
-void  hostDataXferRestart(PSCCB currSCCB);
-
-
-#if defined (DOS)
-UCHAR SccbMgr_bad_isr(USHORT p_port, UCHAR p_card, PSCCBcard pCurrCard, USHORT 
p_int);
-#else
-UCHAR SccbMgr_bad_isr(ULONG p_port, UCHAR p_card, PSCCBcard pCurrCard, USHORT 
p_int);
-
-#endif
-
-void  SccbMgrTableInitAll(void);
-void  SccbMgrTableInitCard(PSCCBcard pCurrCard, UCHAR p_card);
-void  SccbMgrTableInitTarget(UCHAR p_card, UCHAR target);
-
-
-
-void  scini(UCHAR p_card, UCHAR p_our_id, UCHAR p_power_up);
-
-#if defined(DOS)
-int   scarb(USHORT p_port, UCHAR p_sel_type);
-void  scbusf(USHORT p_port);
-void  scsel(USHORT p_port);
-void  scasid(UCHAR p_card, USHORT p_port);
-UCHAR scxferc(USHORT p_port, UCHAR p_data);
-UCHAR scsendi(USHORT p_port, UCHAR p_id_string[]);
-UCHAR sciso(USHORT p_port, UCHAR p_id_string[]);
-void  scwirod(USHORT p_port, UCHAR p_data_bit);
-void  scwiros(USHORT p_port, UCHAR p_data_bit);
-UCHAR scvalq(UCHAR p_quintet);
-UCHAR scsell(USHORT p_port, UCHAR targ_id);
-void  scwtsel(USHORT p_port);
-void  inisci(UCHAR p_card, USHORT p_port, UCHAR p_our_id);
-void  scsavdi(UCHAR p_card, USHORT p_port);
-#else
-int   scarb(ULONG p_port, UCHAR p_sel_type);
-void  scbusf(ULONG p_port);
-void  scsel(ULONG p_port);
-void  scasid(UCHAR p_card, ULONG p_port);
-UCHAR scxferc(ULONG p_port, UCHAR p_data);
-UCHAR scsendi(ULONG p_port, UCHAR p_id_string[]);
-UCHAR sciso(ULONG p_port, UCHAR p_id_string[]);
-void  scwirod(ULONG p_port, UCHAR p_data_bit);
-void  scwiros(ULONG p_port, UCHAR p_data_bit);
-UCHAR scvalq(UCHAR p_quintet);
-UCHAR scsell(ULONG p_port, UCHAR targ_id);
-void  scwtsel(ULONG p_port);
-void  inisci(UCHAR p_card, ULONG p_port, UCHAR p_our_id);
-void  scsavdi(UCHAR p_card, ULONG p_port);
-#endif
-UCHAR scmachid(UCHAR p_card, UCHAR p_id_string[]);
-
-
-#if defined(DOS)
-void  autoCmdCmplt(USHORT p_port, UCHAR p_card);
-void  autoLoadDefaultMap(USHORT p_port);
-#else
-void  autoCmdCmplt(ULONG p_port, UCHAR p_card);
-void  autoLoadDefaultMap(ULONG p_port);
-#endif
-
-
-
-#if (FW_TYPE==_SCCB_MGR_)
-       void  OS_start_timer(unsigned long ioport, unsigned long timeout);
-       void  OS_stop_timer(unsigned long ioport, unsigned long timeout);
-       void  OS_disable_int(unsigned char intvec);
-       void  OS_enable_int(unsigned char intvec);
-       void  OS_delay(unsigned long count);
-       int   OS_VirtToPhys(u32bits CardHandle, u32bits *physaddr, u32bits 
*virtaddr);
-       #if !(defined(UNIX) || defined(OS2) || defined(SOLARIS_REAL_MODE)) 
-       void  OS_Lock(PSCCBMGR_INFO pCardInfo);
-       void  OS_UnLock(PSCCBMGR_INFO pCardInfo);
-#endif // if FW_TYPE == ...
-
-#endif
-
-extern SCCBCARD BL_Card[MAX_CARDS];
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-
-
-#if defined(OS2)
-   extern void (far *s_PhaseTbl[8]) (ULONG, UCHAR);
-#else
-   #if defined(DOS)
-      extern void (*s_PhaseTbl[8]) (USHORT, UCHAR);
-   #else
-      extern void (*s_PhaseTbl[8]) (ULONG, UCHAR);
-   #endif
-#endif
-
-extern SCCBSCAM_INFO scamInfo[MAX_SCSI_TAR];
-extern NVRAMINFO nvRamInfo[MAX_MB_CARDS];
-#if defined(DOS) || defined(OS2)
-extern UCHAR temp_id_string[ID_STRING_LENGTH];
-#endif
-extern UCHAR scamHAString[];
-
-
-extern UCHAR mbCards;
-#if defined(BUGBUG)
-extern UCHAR debug_int[MAX_CARDS][debug_size];
-extern UCHAR debug_index[MAX_CARDS];
-void Debug_Load(UCHAR p_card, UCHAR p_bug_data);
-#endif
-
-#if (FW_TYPE==_SCCB_MGR_)
-#if defined(DOS)
-   extern UCHAR first_time;
-#endif
-#endif /* (FW_TYPE==_SCCB_MGR_) */
-
-#if (FW_TYPE==_UCB_MGR_)
-#if defined(DOS)
-   extern u08bits first_time;
-#endif
-#endif /* (FW_TYPE==_UCB_MGR_) */
-
-#if defined(BUGBUG)
-void Debug_Load(UCHAR p_card, UCHAR p_bug_data);
-#endif
-
-extern unsigned int SccbGlobalFlags;
-
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   sccb.c  $
- *
- *   Description:  Functions relating to handling of the SCCB interface
- *                 between the device driver and the HARPOON.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-       /*#include <budioctl.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <eeprom.h>*/
-/*#include <scsi2.h>*/
-/*#include <harpoon.h>*/
-
-
-
-#if (FW_TYPE==_SCCB_MGR_)
-#define mOS_Lock(card)    OS_Lock((PSCCBMGR_INFO)(((PSCCBcard)card)->cardInfo))
-#define mOS_UnLock(card)  
OS_UnLock((PSCCBMGR_INFO)(((PSCCBcard)card)->cardInfo))
-#else /* FW_TYPE==_UCB_MGR_ */
-#define mOS_Lock(card)    OS_Lock((u32bits)(((PSCCBcard)card)->ioPort))
-#define mOS_UnLock(card)  OS_UnLock((u32bits)(((PSCCBcard)card)->ioPort))
-#endif
-
-
-/*
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-extern SCCBCARD BL_Card[MAX_CARDS];
-
-extern NVRAMINFO nvRamInfo[MAX_MB_CARDS];
-extern UCHAR mbCards;
-
-#if defined (OS2)
-   extern void (far *s_PhaseTbl[8]) (ULONG, UCHAR);
-#else
-   #if defined(DOS)
-      extern void (*s_PhaseTbl[8]) (USHORT, UCHAR);
-   #else
-      extern void (*s_PhaseTbl[8]) (ULONG, UCHAR);
-   #endif
-#endif
-
-
-#if defined(BUGBUG)
-extern UCHAR debug_int[MAX_CARDS][debug_size];
-extern UCHAR debug_index[MAX_CARDS];
-void Debug_Load(UCHAR p_card, UCHAR p_bug_data);
-#endif
-*/
-
-#if (FW_TYPE==_SCCB_MGR_)
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_sense_adapter
- *
- * Description: Setup and/or Search for cards and return info to caller.
- *
- *---------------------------------------------------------------------*/
-
-int SccbMgr_sense_adapter(PSCCBMGR_INFO pCardInfo)
-{
-#if defined(DOS)
-#else
-   static UCHAR first_time = 1;
-#endif
-
-   UCHAR i,j,id,ScamFlg;
-   USHORT temp,temp2,temp3,temp4,temp5,temp6;
-#if defined(DOS)
-   USHORT ioport;
-#else
-   ULONG ioport;
-#endif
-       PNVRamInfo pCurrNvRam;
-
-#if defined(DOS)
-   ioport = (USHORT)pCardInfo->si_baseaddr;
-#else
-   ioport = pCardInfo->si_baseaddr;
-#endif
-
-
-   if (RD_HARPOON(ioport+hp_vendor_id_0) != ORION_VEND_0)
-      return((int)FAILURE);
-
-   if ((RD_HARPOON(ioport+hp_vendor_id_1) != ORION_VEND_1))
-      return((int)FAILURE);
-
-   if ((RD_HARPOON(ioport+hp_device_id_0) != ORION_DEV_0))
-      return((int)FAILURE);
-
-   if ((RD_HARPOON(ioport+hp_device_id_1) != ORION_DEV_1))
-      return((int)FAILURE);
-
-
-   if (RD_HARPOON(ioport+hp_rev_num) != 0x0f){
-
-/* For new Harpoon then check for sub_device ID LSB
-   the bits(0-3) must be all ZERO for compatible with
-   current version of SCCBMgr, else skip this Harpoon
-       device. */
-
-          if (RD_HARPOON(ioport+hp_sub_device_id_0) & 0x0f)
-             return((int)FAILURE);
-       }
-
-   if (first_time)
-      {
-      SccbMgrTableInitAll();
-      first_time = 0;
-               mbCards = 0;
-      }
-
-       if(RdStack(ioport, 0) != 0x00) {
-               if(ChkIfChipInitialized(ioport) == FALSE)
-               {
-                       pCurrNvRam = NULL;
-                  WR_HARPOON(ioport+hp_semaphore, 0x00);
-                       XbowInit(ioport, 0);             /*Must Init the SCSI 
before attempting */
-                       DiagEEPROM(ioport);
-               }
-               else
-               {
-                       if(mbCards < MAX_MB_CARDS) {
-                               pCurrNvRam = &nvRamInfo[mbCards];
-                               mbCards++;
-                               pCurrNvRam->niBaseAddr = ioport;
-                               RNVRamData(pCurrNvRam);
-                       }else
-                               return((int) FAILURE);
-               }
-       }else
-               pCurrNvRam = NULL;
-#if defined (NO_BIOS_OPTION)
-       pCurrNvRam = NULL;
-   XbowInit(ioport, 0);                /*Must Init the SCSI before attempting 
*/
-   DiagEEPROM(ioport);
-#endif  /* No BIOS Option */
-
-   WR_HARPOON(ioport+hp_clkctrl_0, CLKCTRL_DEFAULT);
-   WR_HARPOON(ioport+hp_sys_ctrl, 0x00);
-
-       if(pCurrNvRam)
-               pCardInfo->si_id = pCurrNvRam->niAdapId;
-       else
-          pCardInfo->si_id = (UCHAR)(utilEERead(ioport, (ADAPTER_SCSI_ID/2)) &
-          (UCHAR)0x0FF);
-
-   pCardInfo->si_lun = 0x00;
-   pCardInfo->si_fw_revision = ORION_FW_REV;
-   temp2 = 0x0000;
-   temp3 = 0x0000;
-   temp4 = 0x0000;
-   temp5 = 0x0000;
-   temp6 = 0x0000;
-
-   for (id = 0; id < (16/2); id++) {
-
-               if(pCurrNvRam){
-                       temp = (USHORT) pCurrNvRam->niSyncTbl[id];
-                       temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) +
-                                        (((temp << 4) & 0x0300) + ((temp << 8) 
& 0xc000));
-               }else
-             temp = utilEERead(ioport, (USHORT)((SYNC_RATE_TBL/2)+id));
-
-      for (i = 0; i < 2; temp >>=8,i++) {
-
-         temp2 >>= 1;
-         temp3 >>= 1;
-         temp4 >>= 1;
-         temp5 >>= 1;
-         temp6 >>= 1;
-        switch (temp & 0x3)
-          {
-          case AUTO_RATE_20:   /* Synchronous, 20 mega-transfers/second */
-            temp6 |= 0x8000;   /* Fall through */
-          case AUTO_RATE_10:   /* Synchronous, 10 mega-transfers/second */
-            temp5 |= 0x8000;   /* Fall through */
-          case AUTO_RATE_05:   /* Synchronous, 5 mega-transfers/second */
-            temp2 |= 0x8000;   /* Fall through */
-          case AUTO_RATE_00:   /* Asynchronous */
-            break;
-          }
-
-         if (temp & DISC_ENABLE_BIT)
-          temp3 |= 0x8000;
-
-         if (temp & WIDE_NEGO_BIT)
-          temp4 |= 0x8000;
-
-         }
-      }
-
-   pCardInfo->si_per_targ_init_sync = temp2;
-   pCardInfo->si_per_targ_no_disc = temp3;
-   pCardInfo->si_per_targ_wide_nego = temp4;
-   pCardInfo->si_per_targ_fast_nego = temp5;
-   pCardInfo->si_per_targ_ultra_nego = temp6;
-
-       if(pCurrNvRam)
-               i = pCurrNvRam->niSysConf;
-       else
-          i = (UCHAR)(utilEERead(ioport, (SYSTEM_CONFIG/2)));
-
-       if(pCurrNvRam)
-               ScamFlg = pCurrNvRam->niScamConf;
-       else
-          ScamFlg = (UCHAR) utilEERead(ioport, SCAM_CONFIG/2);
-
-   pCardInfo->si_flags = 0x0000;
-
-   if (i & 0x01)
-      pCardInfo->si_flags |= SCSI_PARITY_ENA;
-
-   if (!(i & 0x02))
-      pCardInfo->si_flags |= SOFT_RESET;
-
-   if (i & 0x10)
-      pCardInfo->si_flags |= EXTENDED_TRANSLATION;
-
-   if (ScamFlg & SCAM_ENABLED)
-     pCardInfo->si_flags |= FLAG_SCAM_ENABLED;
-
-   if (ScamFlg & SCAM_LEVEL2)
-     pCardInfo->si_flags |= FLAG_SCAM_LEVEL2;
-
-   j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L);
-   if (i & 0x04) {
-      j |= SCSI_TERM_ENA_L;
-      }
-   WR_HARPOON(ioport+hp_bm_ctrl, j );
-
-   j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H);
-   if (i & 0x08) {
-      j |= SCSI_TERM_ENA_H;
-      }
-   WR_HARPOON(ioport+hp_ee_ctrl, j );
-
-   if (!(RD_HARPOON(ioport+hp_page_ctrl) & NARROW_SCSI_CARD))
-
-      pCardInfo->si_flags |= SUPPORT_16TAR_32LUN;
-
-   pCardInfo->si_card_family = HARPOON_FAMILY;
-   pCardInfo->si_bustype = BUSTYPE_PCI;
-
-       if(pCurrNvRam){
-       pCardInfo->si_card_model[0] = '9';
-               switch(pCurrNvRam->niModel & 0x0f){
-                       case MODEL_LT:
-                       pCardInfo->si_card_model[1] = '3';
-                       pCardInfo->si_card_model[2] = '0';
-                               break;
-                       case MODEL_LW:
-                       pCardInfo->si_card_model[1] = '5';
-                       pCardInfo->si_card_model[2] = '0';
-                               break;
-                       case MODEL_DL:
-                       pCardInfo->si_card_model[1] = '3';
-                       pCardInfo->si_card_model[2] = '2';
-                               break;
-                       case MODEL_DW:
-                       pCardInfo->si_card_model[1] = '5';
-                       pCardInfo->si_card_model[2] = '2';
-                               break;
-               }
-       }else{
-          temp = utilEERead(ioport, (MODEL_NUMB_0/2));
-       pCardInfo->si_card_model[0] = (UCHAR)(temp >> 8);
-          temp = utilEERead(ioport, (MODEL_NUMB_2/2));
-
-       pCardInfo->si_card_model[1] = (UCHAR)(temp & 0x00FF);
-          pCardInfo->si_card_model[2] = (UCHAR)(temp >> 8);
-       }
-
-   if (pCardInfo->si_card_model[1] == '3')
-     {
-       if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7))
-        pCardInfo->si_flags |= LOW_BYTE_TERM;
-     }
-   else if (pCardInfo->si_card_model[2] == '0')
-     {
-       temp = RD_HARPOON(ioport+hp_xfer_pad);
-       WR_HARPOON(ioport+hp_xfer_pad, (temp & ~BIT(4)));
-       if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7))
-        pCardInfo->si_flags |= LOW_BYTE_TERM;
-       WR_HARPOON(ioport+hp_xfer_pad, (temp | BIT(4)));
-       if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7))
-        pCardInfo->si_flags |= HIGH_BYTE_TERM;
-       WR_HARPOON(ioport+hp_xfer_pad, temp);
-     }
-   else
-     {
-       temp = RD_HARPOON(ioport+hp_ee_ctrl);
-       temp2 = RD_HARPOON(ioport+hp_xfer_pad);
-       WR_HARPOON(ioport+hp_ee_ctrl, (temp | SEE_CS));
-       WR_HARPOON(ioport+hp_xfer_pad, (temp2 | BIT(4)));
-       temp3 = 0;
-       for (i = 0; i < 8; i++)
-        {
-          temp3 <<= 1;
-          if (!(RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7)))
-            temp3 |= 1;
-          WR_HARPOON(ioport+hp_xfer_pad, (temp2 & ~BIT(4)));
-          WR_HARPOON(ioport+hp_xfer_pad, (temp2 | BIT(4)));
-        }
-       WR_HARPOON(ioport+hp_ee_ctrl, temp);
-       WR_HARPOON(ioport+hp_xfer_pad, temp2);
-       if (!(temp3 & BIT(7)))
-        pCardInfo->si_flags |= LOW_BYTE_TERM;
-       if (!(temp3 & BIT(6)))
-        pCardInfo->si_flags |= HIGH_BYTE_TERM;
-     }
-
-
-   ARAM_ACCESS(ioport);
-
-   for ( i = 0; i < 4; i++ ) {
-
-      pCardInfo->si_XlatInfo[i] =
-         RD_HARPOON(ioport+hp_aramBase+BIOS_DATA_OFFSET+i);
-      }
-
-       /* return with -1 if no sort, else return with
-          logical card number sorted by BIOS (zero-based) */
-
-       pCardInfo->si_relative_cardnum =
-       (UCHAR)(RD_HARPOON(ioport+hp_aramBase+BIOS_RELATIVE_CARD)-1);
-
-   SGRAM_ACCESS(ioport);
-
-   s_PhaseTbl[0] = phaseDataOut;
-   s_PhaseTbl[1] = phaseDataIn;
-   s_PhaseTbl[2] = phaseIllegal;
-   s_PhaseTbl[3] = phaseIllegal;
-   s_PhaseTbl[4] = phaseCommand;
-   s_PhaseTbl[5] = phaseStatus;
-   s_PhaseTbl[6] = phaseMsgOut;
-   s_PhaseTbl[7] = phaseMsgIn;
-
-   pCardInfo->si_present = 0x01;
-
-#if defined(BUGBUG)
-
-
-   for (i = 0; i < MAX_CARDS; i++) {
-
-      for (id=0; id<debug_size; id++)
-         debug_int[i][id] =  (UCHAR)0x00;
-      debug_index[i] = 0;
-      }
-
-#endif
-
-   return(0);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_config_adapter
- *
- * Description: Setup adapter for normal operation (hard reset).
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-USHORT SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo)
-#else
-ULONG SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo)
-#endif
-{
-   PSCCBcard CurrCard = NULL;
-       PNVRamInfo pCurrNvRam;
-   UCHAR i,j,thisCard, ScamFlg;
-   USHORT temp,sync_bit_map,id;
-#if defined(DOS)
-   USHORT ioport;
-#else
-   ULONG ioport;
-#endif
-
-#if defined(DOS)
-   ioport = (USHORT)pCardInfo->si_baseaddr;
-#else
-   ioport = pCardInfo->si_baseaddr;
-#endif
-
-   for(thisCard =0; thisCard <= MAX_CARDS; thisCard++) {
-
-      if (thisCard == MAX_CARDS) {
-
-        return(FAILURE);
-         }
-
-      if (BL_Card[thisCard].ioPort == ioport) {
-
-         CurrCard = &BL_Card[thisCard];
-         SccbMgrTableInitCard(CurrCard,thisCard);
-         break;
-         }
-
-      else if (BL_Card[thisCard].ioPort == 0x00) {
-
-         BL_Card[thisCard].ioPort = ioport;
-         CurrCard = &BL_Card[thisCard];
-
-                       if(mbCards)
-                               for(i = 0; i < mbCards; i++){
-                                       if(CurrCard->ioPort == 
nvRamInfo[i].niBaseAddr)
-                                               CurrCard->pNvRamInfo = 
&nvRamInfo[i];
-                               }
-         SccbMgrTableInitCard(CurrCard,thisCard);
-         CurrCard->cardIndex = thisCard;
-         CurrCard->cardInfo = pCardInfo;
-
-        break;
-         }
-      }
-
-       pCurrNvRam = CurrCard->pNvRamInfo;
-
-       if(pCurrNvRam){
-               ScamFlg = pCurrNvRam->niScamConf;
-       }
-       else{
-          ScamFlg = (UCHAR) utilEERead(ioport, SCAM_CONFIG/2);
-       }
-
-
-   BusMasterInit(ioport);
-   XbowInit(ioport, ScamFlg);
-
-#if defined (NO_BIOS_OPTION)
-
-
-   if (DiagXbow(ioport)) return(FAILURE);
-   if (DiagBusMaster(ioport)) return(FAILURE);
-
-#endif  /* No BIOS Option */
-
-   autoLoadDefaultMap(ioport);
-
-
-   for (i = 0,id = 0x01; i != pCardInfo->si_id; i++,id <<= 1){}
-
-   WR_HARPOON(ioport+hp_selfid_0, id);
-   WR_HARPOON(ioport+hp_selfid_1, 0x00);
-   WR_HARPOON(ioport+hp_arb_id, pCardInfo->si_id);
-   CurrCard->ourId = pCardInfo->si_id;
-
-   i = (UCHAR) pCardInfo->si_flags;
-   if (i & SCSI_PARITY_ENA)
-       WR_HARPOON(ioport+hp_portctrl_1,(HOST_MODE8 | CHK_SCSI_P));
-
-   j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L);
-   if (i & LOW_BYTE_TERM)
-      j |= SCSI_TERM_ENA_L;
-   WR_HARPOON(ioport+hp_bm_ctrl, j);
-
-   j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H);
-   if (i & HIGH_BYTE_TERM)
-      j |= SCSI_TERM_ENA_H;
-   WR_HARPOON(ioport+hp_ee_ctrl, j );
-
-
-   if (!(pCardInfo->si_flags & SOFT_RESET)) {
-
-      sresb(ioport,thisCard);
-
-         scini(thisCard, pCardInfo->si_id, 0);
-      }
-
-
-
-   if (pCardInfo->si_flags & POST_ALL_UNDERRRUNS)
-      CurrCard->globalFlags |= F_NO_FILTER;
-
-       if(pCurrNvRam){
-               if(pCurrNvRam->niSysConf & 0x10)
-                       CurrCard->globalFlags |= F_GREEN_PC;
-       }
-       else{
-          if (utilEERead(ioport, (SYSTEM_CONFIG/2)) & GREEN_PC_ENA)
-          CurrCard->globalFlags |= F_GREEN_PC;
-       }
-
-       /* Set global flag to indicate Re-Negotiation to be done on all
-               ckeck condition */
-       if(pCurrNvRam){
-               if(pCurrNvRam->niScsiConf & 0x04)
-                       CurrCard->globalFlags |= F_DO_RENEGO;
-       }
-       else{
-          if (utilEERead(ioport, (SCSI_CONFIG/2)) & RENEGO_ENA)
-          CurrCard->globalFlags |= F_DO_RENEGO;
-       }
-
-       if(pCurrNvRam){
-               if(pCurrNvRam->niScsiConf & 0x08)
-                       CurrCard->globalFlags |= F_CONLUN_IO;
-       }
-       else{
-          if (utilEERead(ioport, (SCSI_CONFIG/2)) & CONNIO_ENA)
-          CurrCard->globalFlags |= F_CONLUN_IO;
-       }
-
-
-   temp = pCardInfo->si_per_targ_no_disc;
-
-   for (i = 0,id = 1; i < MAX_SCSI_TAR; i++, id <<= 1) {
-
-      if (temp & id)
-        sccbMgrTbl[thisCard][i].TarStatus |= TAR_ALLOW_DISC;
-      }
-
-   sync_bit_map = 0x0001;
-
-   for (id = 0; id < (MAX_SCSI_TAR/2); id++) {
-
-               if(pCurrNvRam){
-                       temp = (USHORT) pCurrNvRam->niSyncTbl[id];
-                       temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) +
-                                        (((temp << 4) & 0x0300) + ((temp << 8) 
& 0xc000));
-               }else
-             temp = utilEERead(ioport, (USHORT)((SYNC_RATE_TBL/2)+id));
-
-      for (i = 0; i < 2; temp >>=8,i++) {
-
-         if (pCardInfo->si_per_targ_init_sync & sync_bit_map) {
-
-            sccbMgrTbl[thisCard][id*2+i].TarEEValue = (UCHAR)temp;
-            }
-
-         else {
-           sccbMgrTbl[thisCard][id*2+i].TarStatus |= SYNC_SUPPORTED;
-            sccbMgrTbl[thisCard][id*2+i].TarEEValue =
-               (UCHAR)(temp & ~EE_SYNC_MASK);
-            }
-
-#if defined(WIDE_SCSI)
-/*         if ((pCardInfo->si_per_targ_wide_nego & sync_bit_map) ||
-            (id*2+i >= 8)){
-*/
-         if (pCardInfo->si_per_targ_wide_nego & sync_bit_map){
-
-            sccbMgrTbl[thisCard][id*2+i].TarEEValue |= EE_WIDE_SCSI;
-
-            }
-
-         else { /* NARROW SCSI */
-            sccbMgrTbl[thisCard][id*2+i].TarStatus |= WIDE_NEGOCIATED;
-            }
-
-#else
-         sccbMgrTbl[thisCard][id*2+i].TarStatus |= WIDE_NEGOCIATED;
-#endif
-
-
-        sync_bit_map <<= 1;
-
-
-
-         }
-      }
-
-   WR_HARPOON((ioport+hp_semaphore),
-      (UCHAR)(RD_HARPOON((ioport+hp_semaphore)) | SCCB_MGR_PRESENT));
-
-#if defined(DOS)
-   return((USHORT)CurrCard);
-#else
-   return((ULONG)CurrCard);
-#endif
-}
-
-#else                          /* end (FW_TYPE==_SCCB_MGR_)  */
-
-
-
-STATIC s16bits FP_PresenceCheck(PMGR_INFO pMgrInfo)
-{
-       PMGR_ENTRYPNTS  pMgr_EntryPnts = &pMgrInfo->mi_Functions;
-
-      pMgr_EntryPnts->UCBMgr_probe_adapter = probe_adapter;
-      pMgr_EntryPnts->UCBMgr_init_adapter = init_adapter;
-      pMgr_EntryPnts->UCBMgr_start_UCB = SccbMgr_start_sccb;
-      pMgr_EntryPnts->UCBMgr_build_UCB = build_UCB;
-      pMgr_EntryPnts->UCBMgr_abort_UCB = SccbMgr_abort_sccb;
-      pMgr_EntryPnts->UCBMgr_my_int = SccbMgr_my_int;
-      pMgr_EntryPnts->UCBMgr_isr = SccbMgr_isr;
-      pMgr_EntryPnts->UCBMgr_scsi_reset = SccbMgr_scsi_reset;
-      pMgr_EntryPnts->UCBMgr_timer_expired = SccbMgr_timer_expired;
-#ifndef NO_IOCTLS
-         pMgr_EntryPnts->UCBMgr_unload_card = SccbMgr_unload_card;
-         pMgr_EntryPnts->UCBMgr_save_foreign_state =
-                                                                               
SccbMgr_save_foreign_state;
-         pMgr_EntryPnts->UCBMgr_restore_foreign_state =
-                                                                               
SccbMgr_restore_foreign_state;
-         pMgr_EntryPnts->UCBMgr_restore_native_state =
-                                                                               
SccbMgr_restore_native_state;
-#endif /*NO_IOCTLS*/
-
-      pMgrInfo->mi_SGListFormat=0x01;
-      pMgrInfo->mi_DataPtrFormat=0x01;
-      pMgrInfo->mi_MaxSGElements= (u16bits) 0xffffffff;
-      pMgrInfo->mi_MgrPrivateLen=sizeof(SCCB);
-      pMgrInfo->mi_PCIVendorID=BL_VENDOR_ID;
-      pMgrInfo->mi_PCIDeviceID=FP_DEVICE_ID;
-      pMgrInfo->mi_MgrAttributes= ATTR_IO_MAPPED +
-                                                                               
         ATTR_PHYSICAL_ADDRESS +
-                                                                               
         ATTR_VIRTUAL_ADDRESS +
-                                                                               
         ATTR_OVERLAPPED_IO_IOCTLS_OK;
-      pMgrInfo->mi_IoRangeLen = 256;
-      return(0);
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: probe_adapter
- *
- * Description: Setup and/or Search for cards and return info to caller.
- *
- *---------------------------------------------------------------------*/
-STATIC s32bits probe_adapter(PADAPTER_INFO pAdapterInfo)
-{
-   u16bits temp,temp2,temp3,temp4;
-   u08bits i,j,id;
-
-#if defined(DOS)
-#else
-   static u08bits first_time = 1;
-#endif
-   BASE_PORT ioport;
-       PNVRamInfo pCurrNvRam;
-
-   ioport = (BASE_PORT)pAdapterInfo->ai_baseaddr;
-
-
-
-   if (RD_HARPOON(ioport+hp_vendor_id_0) != ORION_VEND_0)
-      return(1);
-
-   if ((RD_HARPOON(ioport+hp_vendor_id_1) != ORION_VEND_1))
-      return(2);
-
-   if ((RD_HARPOON(ioport+hp_device_id_0) != ORION_DEV_0))
-      return(3);
-
-   if ((RD_HARPOON(ioport+hp_device_id_1) != ORION_DEV_1))
-      return(4);
-
-
-   if (RD_HARPOON(ioport+hp_rev_num) != 0x0f){
-
-
-/* For new Harpoon then check for sub_device ID LSB
-   the bits(0-3) must be all ZERO for compatible with
-   current version of SCCBMgr, else skip this Harpoon
-       device. */
-
-          if (RD_HARPOON(ioport+hp_sub_device_id_0) & 0x0f)
-             return(5);
-       }
-
-   if (first_time) {
-
-      SccbMgrTableInitAll();
-      first_time = 0;
-               mbCards = 0;
-      }
-
-       if(RdStack(ioport, 0) != 0x00) {
-               if(ChkIfChipInitialized(ioport) == FALSE)
-               {
-                       pCurrNvRam = NULL;
-                  WR_HARPOON(ioport+hp_semaphore, 0x00);
-                       XbowInit(ioport, 0);                /*Must Init the 
SCSI before attempting */
-                       DiagEEPROM(ioport);
-               }
-               else
-               {
-                       if(mbCards < MAX_MB_CARDS) {
-                               pCurrNvRam = &nvRamInfo[mbCards];
-                               mbCards++;
-                               pCurrNvRam->niBaseAddr = ioport;
-                               RNVRamData(pCurrNvRam);
-                       }else
-                               return((int) FAILURE);
-               }
-       }else
-               pCurrNvRam = NULL;
-
-#if defined (NO_BIOS_OPTION)
-       pCurrNvRam = NULL;
-   XbowInit(ioport, 0);                /*Must Init the SCSI before attempting 
*/
-   DiagEEPROM(ioport);
-#endif  /* No BIOS Option */
-
-   WR_HARPOON(ioport+hp_clkctrl_0, CLKCTRL_DEFAULT);
-   WR_HARPOON(ioport+hp_sys_ctrl, 0x00);
-
-       if(pCurrNvRam)
-               pAdapterInfo->ai_id = pCurrNvRam->niAdapId;
-       else
-       pAdapterInfo->ai_id = (u08bits)(utilEERead(ioport, (ADAPTER_SCSI_ID/2)) 
&
-       (u08bits)0x0FF);
-
-   pAdapterInfo->ai_lun = 0x00;
-   pAdapterInfo->ai_fw_revision[0] = '3';
-   pAdapterInfo->ai_fw_revision[1] = '1';
-   pAdapterInfo->ai_fw_revision[2] = '1';
-   pAdapterInfo->ai_fw_revision[3] = ' ';
-   pAdapterInfo->ai_NumChannels = 1;
-
-   temp2 = 0x0000;
-   temp3 = 0x0000;
-   temp4 = 0x0000;
-
-   for (id = 0; id < (16/2); id++) {
-
-               if(pCurrNvRam){
-                       temp = (USHORT) pCurrNvRam->niSyncTbl[id];
-                       temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) +
-                                        (((temp << 4) & 0x0300) + ((temp << 8) 
& 0xc000));
-               }else
-             temp = utilEERead(ioport, (u16bits)((SYNC_RATE_TBL/2)+id));
-
-      for (i = 0; i < 2; temp >>=8,i++) {
-
-         if ((temp & 0x03) != AUTO_RATE_00) {
-
-            temp2 >>= 0x01;
-            temp2 |= 0x8000;
-            }
-
-         else {
-            temp2 >>= 0x01;
-            }
-
-         if (temp & DISC_ENABLE_BIT) {
-
-            temp3 >>= 0x01;
-            temp3 |= 0x8000;
-            }
-
-         else {
-            temp3 >>= 0x01;
-            }
-
-         if (temp & WIDE_NEGO_BIT) {
-
-            temp4 >>= 0x01;
-            temp4 |= 0x8000;
-            }
-
-         else {
-            temp4 >>= 0x01;
-            }
-
-         }
-      }
-
-   pAdapterInfo->ai_per_targ_init_sync = temp2;
-   pAdapterInfo->ai_per_targ_no_disc = temp3;
-   pAdapterInfo->ai_per_targ_wide_nego = temp4;
-       if(pCurrNvRam)
-               i = pCurrNvRam->niSysConf;
-       else
-       i = (u08bits)(utilEERead(ioport, (SYSTEM_CONFIG/2)));
-
-   /*
-   ** interrupts always level-triggered for FlashPoint
-   */
-   pAdapterInfo->ai_stateinfo |= LEVEL_TRIG;
-
-   if (i & 0x01)
-      pAdapterInfo->ai_stateinfo |= SCSI_PARITY_ENA;
-
-       if (i & 0x02)   /* SCSI Bus reset in AutoSCSI Set ? */
-       {
-               if(pCurrNvRam)
-               {
-                       j = pCurrNvRam->niScamConf;
-               }
-               else
-               {
-               j = (u08bits) utilEERead(ioport, SCAM_CONFIG/2);
-               }
-               if(j & SCAM_ENABLED)
-               {
-                       if(j & SCAM_LEVEL2)
-                       {
-                               pAdapterInfo->ai_stateinfo |= SCAM2_ENA;
-                       }
-                       else
-                       {
-                               pAdapterInfo->ai_stateinfo |= SCAM1_ENA;
-                       }
-               }
-       }
-   j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L);
-   if (i & 0x04) {
-      j |= SCSI_TERM_ENA_L;
-      pAdapterInfo->ai_stateinfo |= LOW_BYTE_TERM_ENA;
-      }
-   WR_HARPOON(ioport+hp_bm_ctrl, j );
-
-   j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H);
-   if (i & 0x08) {
-      j |= SCSI_TERM_ENA_H;
-      pAdapterInfo->ai_stateinfo |= HIGH_BYTE_TERM_ENA;
-      }
-   WR_HARPOON(ioport+hp_ee_ctrl, j );
-
-       if(RD_HARPOON(ioport + hp_page_ctrl) & BIOS_SHADOW)
-       {
-               pAdapterInfo->ai_FlashRomSize = 64 * 1024;      /* 64k ROM */
-       }
-       else
-       {
-               pAdapterInfo->ai_FlashRomSize = 32 * 1024;      /* 32k ROM */
-       }
-
-   pAdapterInfo->ai_stateinfo |= (FAST20_ENA | TAG_QUEUE_ENA);
-   if (!(RD_HARPOON(ioport+hp_page_ctrl) & NARROW_SCSI_CARD))
-       {
-      pAdapterInfo->ai_attributes |= (WIDE_CAPABLE | FAST20_CAPABLE
-                                                                               
                        | SCAM2_CAPABLE
-                                                                               
                        | TAG_QUEUE_CAPABLE
-                                                                               
                        | SUPRESS_UNDERRRUNS_CAPABLE
-                                                                               
                        | SCSI_PARITY_CAPABLE);
-               pAdapterInfo->ai_MaxTarg = 16;
-               pAdapterInfo->ai_MaxLun  = 32;
-       }
-       else
-       {
-      pAdapterInfo->ai_attributes |= (FAST20_CAPABLE | SCAM2_CAPABLE
-                                                                               
                        | TAG_QUEUE_CAPABLE
-                                                                               
                        | SUPRESS_UNDERRRUNS_CAPABLE
-                                                                               
                        | SCSI_PARITY_CAPABLE);
-               pAdapterInfo->ai_MaxTarg = 8;
-               pAdapterInfo->ai_MaxLun  = 8;
-       }
-
-   pAdapterInfo->ai_product_family = HARPOON_FAMILY;
-   pAdapterInfo->ai_HBAbustype = BUSTYPE_PCI;
-
-   for (i=0;i<CARD_MODEL_NAMELEN;i++)
-   {
-      pAdapterInfo->ai_card_model[i]=' '; /* initialize the ai_card_model */
-   }
-
-       if(pCurrNvRam){
-       pAdapterInfo->ai_card_model[0] = '9';
-               switch(pCurrNvRam->niModel & 0x0f){
-                       case MODEL_LT:
-                       pAdapterInfo->ai_card_model[1] = '3';
-                       pAdapterInfo->ai_card_model[2] = '0';
-                               break;
-                       case MODEL_LW:
-                       pAdapterInfo->ai_card_model[1] = '5';
-                       pAdapterInfo->ai_card_model[2] = '0';
-                               break;
-                       case MODEL_DL:
-                       pAdapterInfo->ai_card_model[1] = '3';
-                       pAdapterInfo->ai_card_model[2] = '2';
-                               break;
-                       case MODEL_DW:
-                       pAdapterInfo->ai_card_model[1] = '5';
-                       pAdapterInfo->ai_card_model[2] = '2';
-                               break;
-               }
-       }else{
-          temp = utilEERead(ioport, (MODEL_NUMB_0/2));
-               pAdapterInfo->ai_card_model[0] = (u08bits)(temp >> 8);
-          temp = utilEERead(ioport, (MODEL_NUMB_2/2));
-
-               pAdapterInfo->ai_card_model[1] = (u08bits)(temp & 0x00FF);
-          pAdapterInfo->ai_card_model[2] = (u08bits)(temp >> 8);
-       }
-
-
-
-   pAdapterInfo->ai_FiberProductType = 0;
-
-   pAdapterInfo->ai_secondary_range = 0;
-
-   for (i=0;i<WORLD_WIDE_NAMELEN;i++)
-   {
-      pAdapterInfo->ai_worldwidename[i]='\0';
-   }
-
-   for (i=0;i<VENDOR_NAMELEN;i++)
-   {
-      pAdapterInfo->ai_vendorstring[i]='\0';
-   }
-       pAdapterInfo->ai_vendorstring[0]='B';
-       pAdapterInfo->ai_vendorstring[1]='U';
-       pAdapterInfo->ai_vendorstring[2]='S';
-       pAdapterInfo->ai_vendorstring[3]='L';
-       pAdapterInfo->ai_vendorstring[4]='O';
-       pAdapterInfo->ai_vendorstring[5]='G';
-       pAdapterInfo->ai_vendorstring[6]='I';
-       pAdapterInfo->ai_vendorstring[7]='C';
-
-       for (i=0;i<FAMILY_NAMELEN;i++)
-       {
-          pAdapterInfo->ai_AdapterFamilyString[i]='\0';
-       }
-       pAdapterInfo->ai_AdapterFamilyString[0]='F';
-       pAdapterInfo->ai_AdapterFamilyString[1]='L';
-       pAdapterInfo->ai_AdapterFamilyString[2]='A';
-       pAdapterInfo->ai_AdapterFamilyString[3]='S';
-       pAdapterInfo->ai_AdapterFamilyString[4]='H';
-       pAdapterInfo->ai_AdapterFamilyString[5]='P';
-       pAdapterInfo->ai_AdapterFamilyString[6]='O';
-       pAdapterInfo->ai_AdapterFamilyString[7]='I';
-       pAdapterInfo->ai_AdapterFamilyString[8]='N';
-       pAdapterInfo->ai_AdapterFamilyString[9]='T';
-
-   ARAM_ACCESS(ioport);
-
-   for ( i = 0; i < 4; i++ ) {
-
-      pAdapterInfo->ai_XlatInfo[i] =
-         RD_HARPOON(ioport+hp_aramBase+BIOS_DATA_OFFSET+i);
-      }
-
-       /* return with -1 if no sort, else return with
-          logical card number sorted by BIOS (zero-based) */
-
-
-       pAdapterInfo->ai_relative_cardnum = 
-      (u08bits)(RD_HARPOON(ioport+hp_aramBase+BIOS_RELATIVE_CARD)-1); 
-
-   SGRAM_ACCESS(ioport);
-
-   s_PhaseTbl[0] = phaseDataOut;
-   s_PhaseTbl[1] = phaseDataIn;
-   s_PhaseTbl[2] = phaseIllegal;
-   s_PhaseTbl[3] = phaseIllegal;
-   s_PhaseTbl[4] = phaseCommand;
-   s_PhaseTbl[5] = phaseStatus;
-   s_PhaseTbl[6] = phaseMsgOut;
-   s_PhaseTbl[7] = phaseMsgIn;
-
-   pAdapterInfo->ai_present = 0x01;
-
-#if defined(BUGBUG)
-
-
-   for (i = 0; i < MAX_CARDS; i++) {
-
-      for (id=0; id<debug_size; id++)
-         debug_int[i][id] =  (u08bits)0x00;
-      debug_index[i] = 0;
-      }
-
-#endif
-
-   return(0);
-}
-
-
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: init_adapter, exported to BUDI via UCBMgr_init_adapter entry
- *
- *
- * Description: Setup adapter for normal operation (hard reset).
- *
- *---------------------------------------------------------------------*/
-STATIC CARD_HANDLE init_adapter(PADAPTER_INFO pCardInfo)
-{
-   PSCCBcard CurrCard;
-       PNVRamInfo pCurrNvRam;
-   u08bits i,j,thisCard, ScamFlg;
-   u16bits temp,sync_bit_map,id;
-   BASE_PORT ioport;
-
-   ioport = (BASE_PORT)pCardInfo->ai_baseaddr;
-
-   for(thisCard =0; thisCard <= MAX_CARDS; thisCard++) {
-
-      if (thisCard == MAX_CARDS) {
-
-         return(FAILURE);
-         }
-
-      if (BL_Card[thisCard].ioPort == ioport) {
-
-         CurrCard = &BL_Card[thisCard];
-         SccbMgrTableInitCard(CurrCard,thisCard);
-         break;
-         }
-
-      else if (BL_Card[thisCard].ioPort == 0x00) {
-
-         BL_Card[thisCard].ioPort = ioport;
-         CurrCard = &BL_Card[thisCard];
-
-                       if(mbCards)
-                               for(i = 0; i < mbCards; i++){
-                                       if(CurrCard->ioPort == 
nvRamInfo[i].niBaseAddr)
-                                               CurrCard->pNvRamInfo = 
&nvRamInfo[i];
-                               }
-         SccbMgrTableInitCard(CurrCard,thisCard);
-         CurrCard->cardIndex = thisCard;
-         CurrCard->cardInfo = pCardInfo;
-
-         break;
-         }
-      }
-
-       pCurrNvRam = CurrCard->pNvRamInfo;
-
-   
-       if(pCurrNvRam){
-               ScamFlg = pCurrNvRam->niScamConf;
-       }
-       else{
-          ScamFlg = (UCHAR) utilEERead(ioport, SCAM_CONFIG/2);
-       }
-       
-
-   BusMasterInit(ioport);
-   XbowInit(ioport, ScamFlg);
-
-#if defined (NO_BIOS_OPTION)
-
-
-   if (DiagXbow(ioport)) return(FAILURE);
-   if (DiagBusMaster(ioport)) return(FAILURE);
-
-#endif  /* No BIOS Option */
-
-   autoLoadDefaultMap(ioport);
-
-
-   for (i = 0,id = 0x01; i != pCardInfo->ai_id; i++,id <<= 1){}
-
-   WR_HARPOON(ioport+hp_selfid_0, id);
-   WR_HARPOON(ioport+hp_selfid_1, 0x00);
-   WR_HARPOON(ioport+hp_arb_id, pCardInfo->ai_id);
-   CurrCard->ourId = (unsigned char) pCardInfo->ai_id;
-
-   i = (u08bits) pCardInfo->ai_stateinfo;
-   if (i & SCSI_PARITY_ENA)
-       WR_HARPOON(ioport+hp_portctrl_1,(HOST_MODE8 | CHK_SCSI_P));
-
-   j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L);
-   if (i & LOW_BYTE_TERM_ENA)
-      j |= SCSI_TERM_ENA_L;
-   WR_HARPOON(ioport+hp_bm_ctrl, j);
-
-   j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H);
-   if (i & HIGH_BYTE_TERM_ENA)
-      j |= SCSI_TERM_ENA_H;
-   WR_HARPOON(ioport+hp_ee_ctrl, j );
-
-
-   if (!(pCardInfo->ai_stateinfo & NO_RESET_IN_INIT)) {
-
-      sresb(ioport,thisCard);
-
-         scini(thisCard, (u08bits) pCardInfo->ai_id, 0);
-      }
-
-
-
-   if (pCardInfo->ai_stateinfo & SUPRESS_UNDERRRUNS_ENA)
-      CurrCard->globalFlags |= F_NO_FILTER;
-
-       if(pCurrNvRam){
-               if(pCurrNvRam->niSysConf & 0x10)
-                       CurrCard->globalFlags |= F_GREEN_PC;
-       }
-       else{
-          if (utilEERead(ioport, (SYSTEM_CONFIG/2)) & GREEN_PC_ENA)
-          CurrCard->globalFlags |= F_GREEN_PC;
-       }
-
-       /* Set global flag to indicate Re-Negotiation to be done on all
-               ckeck condition */
-       if(pCurrNvRam){
-               if(pCurrNvRam->niScsiConf & 0x04)
-                       CurrCard->globalFlags |= F_DO_RENEGO;
-       }
-       else{
-          if (utilEERead(ioport, (SCSI_CONFIG/2)) & RENEGO_ENA)
-          CurrCard->globalFlags |= F_DO_RENEGO;
-       }
-
-       if(pCurrNvRam){
-               if(pCurrNvRam->niScsiConf & 0x08)
-                       CurrCard->globalFlags |= F_CONLUN_IO;
-       }
-       else{
-          if (utilEERead(ioport, (SCSI_CONFIG/2)) & CONNIO_ENA)
-          CurrCard->globalFlags |= F_CONLUN_IO;
-       }
-
-   temp = pCardInfo->ai_per_targ_no_disc;
-
-   for (i = 0,id = 1; i < MAX_SCSI_TAR; i++, id <<= 1) {
-
-      if (temp & id)
-         sccbMgrTbl[thisCard][i].TarStatus |= TAR_ALLOW_DISC;
-      }
-
-   sync_bit_map = 0x0001;
-
-   for (id = 0; id < (MAX_SCSI_TAR/2); id++){
-
-               if(pCurrNvRam){
-                       temp = (USHORT) pCurrNvRam->niSyncTbl[id];
-                       temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) +
-                                        (((temp << 4) & 0x0300) + ((temp << 8) 
& 0xc000));
-               }else
-             temp = utilEERead(ioport, (u16bits)((SYNC_RATE_TBL/2)+id));
-
-      for (i = 0; i < 2; temp >>=8,i++){
-
-         if (pCardInfo->ai_per_targ_init_sync & sync_bit_map){
-
-            sccbMgrTbl[thisCard][id*2+i].TarEEValue = (u08bits)temp;
-            }
-
-         else {
-            sccbMgrTbl[thisCard][id*2+i].TarStatus |= SYNC_SUPPORTED;
-            sccbMgrTbl[thisCard][id*2+i].TarEEValue =
-               (u08bits)(temp & ~EE_SYNC_MASK);
-            }
-
-#if defined(WIDE_SCSI)
-/*         if ((pCardInfo->ai_per_targ_wide_nego & sync_bit_map) ||
-            (id*2+i >= 8)){
-*/
-         if (pCardInfo->ai_per_targ_wide_nego & sync_bit_map){
-
-            sccbMgrTbl[thisCard][id*2+i].TarEEValue |= EE_WIDE_SCSI;
-
-            }
-
-         else { /* NARROW SCSI */
-            sccbMgrTbl[thisCard][id*2+i].TarStatus |= WIDE_NEGOCIATED;
-            }
-
-#else
-         sccbMgrTbl[thisCard][id*2+i].TarStatus |= WIDE_NEGOCIATED;
-#endif
-
-
-         sync_bit_map <<= 1;
-         }
-      }
-
-
-   pCardInfo->ai_SGListFormat=0x01;
-   pCardInfo->ai_DataPtrFormat=0x01;
-   pCardInfo->ai_AEN_mask &= SCSI_RESET_COMPLETE;
-
-   WR_HARPOON((ioport+hp_semaphore),
-      (u08bits)(RD_HARPOON((ioport+hp_semaphore)) | SCCB_MGR_PRESENT));
-
-   return((u32bits)CurrCard);
-
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: build_ucb, exported to BUDI via UCBMgr_build_ucb entry
- *
- * Description: prepare fw portion of ucb. do not start, resource not 
guaranteed
- *             so don't manipulate anything that's derived from states which
- *             may change
- *
- *---------------------------------------------------------------------*/
-void build_UCB(CARD_HANDLE pCurrCard, PUCB p_ucb)
-{
-
-   u08bits thisCard;
-   u08bits i,j;
-
-   PSCCB p_sccb;
-
-
-   thisCard = ((PSCCBcard) pCurrCard)->cardIndex;
-
-
-   p_sccb=(PSCCB)p_ucb->UCB_MgrPrivatePtr;
-
-
-   p_sccb->Sccb_ucb_ptr=p_ucb;
-
-   switch (p_ucb->UCB_opcode & (OPC_DEVICE_RESET+OPC_XFER_SG+OPC_CHK_RESIDUAL))
-   {
-      case OPC_DEVICE_RESET:
-         p_sccb->OperationCode=RESET_COMMAND;
-         break;
-      case OPC_XFER_SG:
-         p_sccb->OperationCode=SCATTER_GATHER_COMMAND;
-         break;
-      case OPC_XFER_SG+OPC_CHK_RESIDUAL:
-         p_sccb->OperationCode=RESIDUAL_SG_COMMAND;
-         break;
-      case OPC_CHK_RESIDUAL:
-
-             p_sccb->OperationCode=RESIDUAL_COMMAND;
-             break;
-      default:
-             p_sccb->OperationCode=SCSI_INITIATOR_COMMAND;
-             break;
-   }
-
-   if (p_ucb->UCB_opcode & OPC_TQ_ENABLE)
-   {
-      p_sccb->ControlByte = (u08bits)((p_ucb->UCB_opcode & OPC_TQ_MASK)>>2) | 
F_USE_CMD_Q;
-   }
-   else
-   {
-      p_sccb->ControlByte = 0;
-   }
-
-
-   p_sccb->CdbLength = (u08bits)p_ucb->UCB_cdblen;
-
-   if (p_ucb->UCB_opcode & OPC_NO_AUTO_SENSE)
-   {
-      p_sccb->RequestSenseLength = 0;
-   }
-   else
-   {
-      p_sccb->RequestSenseLength = (unsigned char) p_ucb->UCB_senselen;
-   }
-
-
-   if (p_ucb->UCB_opcode & OPC_XFER_SG)
-   {
-      p_sccb->DataPointer=p_ucb->UCB_virt_dataptr;
-      p_sccb->DataLength = (((u32bits)p_ucb->UCB_NumSgElements)<<3);
-   }
-   else
-   {
-      p_sccb->DataPointer=p_ucb->UCB_phys_dataptr;
-      p_sccb->DataLength=p_ucb->UCB_datalen;
-   };
-
-   p_sccb->HostStatus=0;
-   p_sccb->TargetStatus=0;
-   p_sccb->TargID=(unsigned char)p_ucb->UCB_targid;
-   p_sccb->Lun=(unsigned char) p_ucb->UCB_lun;
-   p_sccb->SccbIOPort=((PSCCBcard)pCurrCard)->ioPort;
-
-   j=p_ucb->UCB_cdblen;
-   for (i=0;i<j;i++)
-   {
-      p_sccb->Cdb[i] = p_ucb->UCB_cdb[i];
-   }
-
-   p_sccb->SensePointer=p_ucb->UCB_phys_senseptr;
-
-   sinits(p_sccb,thisCard);
-
-}
-#ifndef NO_IOCTLS
-
-/*---------------------------------------------------------------------
- *
- * Function: GetDevSyncRate
- *
- *---------------------------------------------------------------------*/
-STATIC  int GetDevSyncRate(PSCCBcard pCurrCard,PUCB p_ucb)
-{
-       struct _SYNC_RATE_INFO * pSyncStr;
-   PSCCBMgr_tar_info currTar_Info;
-       BASE_PORT ioport;
-       u08bits scsiID, j;
-
-#if (FW_TYPE != _SCCB_MGR_)
-       if( p_ucb->UCB_targid >= pCurrCard->cardInfo->ai_MaxTarg )
-       {
-               return(1);
-       }
-#endif
-
-       ioport  = pCurrCard->ioPort;
-       pSyncStr        = (struct _SYNC_RATE_INFO *) p_ucb->UCB_virt_dataptr;
-       scsiID = (u08bits) p_ucb->UCB_targid;
-   currTar_Info = &sccbMgrTbl[pCurrCard->cardIndex][scsiID];
-       j = currTar_Info->TarSyncCtrl;
-
-       switch (currTar_Info->TarEEValue & EE_SYNC_MASK)
-       {
-               case EE_SYNC_ASYNC:
-                       pSyncStr->RequestMegaXferRate = 0x00;
-                       break;
-               case EE_SYNC_5MB:
-                       pSyncStr->RequestMegaXferRate = (j & NARROW_SCSI) ? 50 
: 100;
-                       break;
-               case EE_SYNC_10MB:
-                       pSyncStr->RequestMegaXferRate = (j & NARROW_SCSI) ? 100 
: 200;
-                       break;
-               case EE_SYNC_20MB:
-                       pSyncStr->RequestMegaXferRate = (j & NARROW_SCSI) ? 200 
: 400;
-                       break;
-       }
-
-       switch ((j >> 5) & 0x07)
-       {
-               case 0x00:
-                       if((j & 0x07) == 0x00)
-                       {
-                               pSyncStr->ActualMegaXferRate = 0x00;    /* 
Async Mode */
-                       }
-                       else
-                       {
-                               pSyncStr->ActualMegaXferRate = (j & 
NARROW_SCSI) ? 200 : 400;
-                       }
-                       break;
-               case 0x01:
-                       pSyncStr->ActualMegaXferRate = (j & NARROW_SCSI) ? 100 
: 200;
-                       break;
-               case 0x02:
-                       pSyncStr->ActualMegaXferRate = (j & NARROW_SCSI) ? 66 : 
122;
-                       break;
-               case 0x03:
-                       pSyncStr->ActualMegaXferRate = (j & NARROW_SCSI) ? 50 : 
100;
-                       break;
-               case 0x04:
-                       pSyncStr->ActualMegaXferRate = (j & NARROW_SCSI) ? 40 : 
80;
-                       break;
-               case 0x05:
-                       pSyncStr->ActualMegaXferRate = (j & NARROW_SCSI) ? 33 : 
66;
-                       break;
-               case 0x06:
-                       pSyncStr->ActualMegaXferRate = (j & NARROW_SCSI) ? 28 : 
56;
-                       break;
-               case 0x07:
-                       pSyncStr->ActualMegaXferRate = (j & NARROW_SCSI) ? 25 : 
50;
-                       break;
-       }
-       pSyncStr->NegotiatedOffset = j & 0x0f;
-
-       return(0);
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: SetDevSyncRate
- *
- *---------------------------------------------------------------------*/
-STATIC int SetDevSyncRate(PSCCBcard pCurrCard, PUCB p_ucb)
-{
-       struct _SYNC_RATE_INFO * pSyncStr;
-   PSCCBMgr_tar_info currTar_Info;
-       BASE_PORT ioPort;
-       u08bits scsiID, i, j, syncVal;
-       u16bits syncOffset, actualXferRate;
-       union {
-               u08bits tempb[2];
-               u16bits tempw;
-       }temp2;
-
-#if (FW_TYPE != _SCCB_MGR_)
-       if( p_ucb->UCB_targid >= pCurrCard->cardInfo->ai_MaxTarg )
-       {
-               return(1);
-       }
-#endif
-
-       ioPort  = pCurrCard->ioPort;
-       pSyncStr        = (struct _SYNC_RATE_INFO *) p_ucb->UCB_virt_dataptr;
-       scsiID = (u08bits) p_ucb->UCB_targid;
-   currTar_Info = &sccbMgrTbl[pCurrCard->cardIndex][scsiID];
-       i = RD_HARPOON(ioPort+hp_xfer_pad);             /* Save current value */
-       WR_HARPOON(ioPort+hp_xfer_pad, (i | ID_UNLOCK));
-       WR_HARPOON(ioPort+hp_select_id, ((scsiID << 4) | scsiID));
-       j = RD_HARPOON(ioPort+hp_synctarg_0);
-       WR_HARPOON(ioPort+hp_xfer_pad, i);              /* restore value */
-
-       actualXferRate = pSyncStr->ActualMegaXferRate;
-       if(!(j & NARROW_SCSI))
-       {
-               actualXferRate <<= 1;
-       }
-       if(actualXferRate == 0x00)
-       {
-               syncVal = EE_SYNC_ASYNC;                        /* Async Mode */
-       }
-       if(actualXferRate == 0x0200)
-       {
-               syncVal = EE_SYNC_20MB;                         /* 20/40 MB 
Mode */
-       }
-       if(actualXferRate > 0x0050 && actualXferRate < 0x0200 )
-       {
-               syncVal = EE_SYNC_10MB;                         /* 10/20 MB 
Mode */
-       }
-       else
-       {
-               syncVal = EE_SYNC_5MB;                          /* 5/10 MB Mode 
*/
-       }
-       if(currTar_Info->TarEEValue && EE_SYNC_MASK == syncVal)
-               return(0);
-       currTar_Info->TarEEValue = (currTar_Info->TarEEValue & !EE_SYNC_MASK)
-                                                                               
        | syncVal;
-       syncOffset = (SYNC_RATE_TBL + scsiID) / 2;
-       temp2.tempw = utilEERead(ioPort, syncOffset);
-       if(scsiID & 0x01)
-       {
-               temp2.tempb[0] = (temp2.tempb[0] & !EE_SYNC_MASK) | syncVal;
-       }
-       else
-       {
-               temp2.tempb[1] = (temp2.tempb[1] & !EE_SYNC_MASK) | syncVal;
-       }
-       utilEEWriteOnOff(ioPort, 1);
-       utilEEWrite(ioPort, temp2.tempw, syncOffset);
-       utilEEWriteOnOff(ioPort, 0);
-       UpdateCheckSum(ioPort);
-
-       return(0);
-}
-/*---------------------------------------------------------------------
- *
- * Function: GetDevWideMode
- *
- *---------------------------------------------------------------------*/
-int GetDevWideMode(PSCCBcard pCurrCard,PUCB p_ucb)
-{
-       u08bits *pData;
-
-       pData = (u08bits *)p_ucb->UCB_virt_dataptr;
-       if(sccbMgrTbl[pCurrCard->cardIndex][p_ucb->UCB_targid].TarEEValue
-                               & EE_WIDE_SCSI)
-       {
-               *pData = 1;
-       }
-       else
-       {
-               *pData = 0;
-       }
-
-       return(0);
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: SetDevWideMode
- *
- *---------------------------------------------------------------------*/
-int SetDevWideMode(PSCCBcard pCurrCard,PUCB p_ucb)
-{
-       u08bits *pData;
-   PSCCBMgr_tar_info currTar_Info;
-       BASE_PORT ioPort;
-       u08bits scsiID, scsiWideMode;
-       u16bits syncOffset;
-       union {
-               u08bits tempb[2];
-               u16bits tempw;
-       }temp2;
-
-#if (FW_TYPE != _SCCB_MGR_)
-       if( !(pCurrCard->cardInfo->ai_attributes & WIDE_CAPABLE) )
-       {
-               return(1);
-       }
-
-       if( p_ucb->UCB_targid >= pCurrCard->cardInfo->ai_MaxTarg )
-       {
-               return(1);
-       }
-#endif
-
-       ioPort  = pCurrCard->ioPort;
-       pData = (u08bits *)p_ucb->UCB_virt_dataptr;
-       scsiID = (u08bits) p_ucb->UCB_targid;
-       currTar_Info = &sccbMgrTbl[pCurrCard->cardIndex][scsiID];
-
-       if(*pData)
-       {
-               if(currTar_Info->TarEEValue & EE_WIDE_SCSI)
-               {
-                       return(0);
-               }
-               else
-               {
-                       scsiWideMode = EE_WIDE_SCSI;
-               }
-       }
-       else
-       {
-               if(!currTar_Info->TarEEValue & EE_WIDE_SCSI)
-               {
-                       return(0);
-               }
-               else
-               {
-                       scsiWideMode = 0;
-               }
-       }
-       currTar_Info->TarEEValue = (currTar_Info->TarEEValue & !EE_WIDE_SCSI)
-                                                                               
        | scsiWideMode;
-
-       syncOffset = (SYNC_RATE_TBL + scsiID) / 2;
-       temp2.tempw = utilEERead(ioPort, syncOffset);
-       if(scsiID & 0x01)
-       {
-               temp2.tempb[0] = (temp2.tempb[0] & !EE_WIDE_SCSI) | 
scsiWideMode;
-       }
-       else
-       {
-               temp2.tempb[1] = (temp2.tempb[1] & !EE_WIDE_SCSI) | 
scsiWideMode;
-       }
-       utilEEWriteOnOff(ioPort, 1);
-       utilEEWrite(ioPort, temp2.tempw, syncOffset);
-       utilEEWriteOnOff(ioPort, 0);
-       UpdateCheckSum(ioPort);
-
-       return(0);
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: ReadNVRam
- *
- *---------------------------------------------------------------------*/
-void ReadNVRam(PSCCBcard pCurrCard,PUCB p_ucb)
-{
-       u08bits *pdata;
-       u16bits i,numwrds,numbytes,offset,temp;
-       u08bits OneMore = FALSE;
-#if defined(DOS)
-       u16bits ioport;
-#else
-       u32bits ioport;
-#endif
-
-       numbytes = (u16bits) p_ucb->UCB_datalen;
-       ioport  = pCurrCard->ioPort;
-   pdata   = (u08bits *) p_ucb->UCB_virt_dataptr;
-       offset  = (u16bits) (p_ucb->UCB_IOCTLParams[0]);
-
-
-
-   if (offset & 0x1)
-       {
-           *((u16bits*) pdata) = utilEERead(ioport,(u16bits)((offset - 1) / 
2)); /* 16 bit read */
-                *pdata = *(pdata + 1);
-                ++offset;
-        ++pdata;
-                --numbytes;
-       }
-
-       numwrds = numbytes / 2;
-       if (numbytes & 1)
-               OneMore = TRUE;
-
-       for (i = 0; i < numwrds; i++)
-       {
-       *((u16bits*) pdata) = utilEERead(ioport,(u16bits)(offset / 2));
-               pdata += 2;
-               offset += 2;
-   }
-       if (OneMore)
-       {
-               --pdata;
-               -- offset;
-       temp = utilEERead(ioport,(u16bits)(offset / 2));
-               *pdata = (u08bits) (temp);
-       }
-
-} /* end proc ReadNVRam */
-
-
-/*---------------------------------------------------------------------
- *
- * Function: WriteNVRam
- *
- *---------------------------------------------------------------------*/
-void WriteNVRam(PSCCBcard pCurrCard,PUCB p_ucb)
-{
-       u08bits *pdata;
-       u16bits i,numwrds,numbytes,offset, eeprom_end;
-       u08bits OneMore = FALSE;
-       union {
-               u08bits  tempb[2];
-               u16bits  tempw;
-       } temp2;
-
-#if defined(DOS)
-       u16bits ioport;
-#else
-       u32bits ioport;
-#endif
-
-       numbytes = (u16bits) p_ucb->UCB_datalen;
-       ioport  = pCurrCard->ioPort;
-   pdata   = (u08bits *) p_ucb->UCB_virt_dataptr;
-       offset  = (u16bits) (p_ucb->UCB_IOCTLParams[0]);
-
-   if (RD_HARPOON(ioport+hp_page_ctrl) & NARROW_SCSI_CARD)
-      eeprom_end = 512;
-   else
-      eeprom_end = 768;
-       
-       if(offset > eeprom_end)
-               return;
-
-       if((offset + numbytes) > eeprom_end)
-               numbytes = eeprom_end - offset;
-
-    utilEEWriteOnOff(ioport,1);   /* Enable write access to the EEPROM */
-
-
-
-   if (offset & 0x1)
-       {
-           temp2.tempw = utilEERead(ioport,(u16bits)((offset - 1) / 2)); /* 16 
bit read */
-                temp2.tempb[1] = *pdata;
-           utilEEWrite(ioport, temp2.tempw, (u16bits)((offset -1) / 2));
-                *pdata = *(pdata + 1);
-                ++offset;
-        ++pdata;
-                --numbytes;
-       }
-
-       numwrds = numbytes / 2;
-       if (numbytes & 1)
-               OneMore = TRUE;
-
-       for (i = 0; i < numwrds; i++)
-       {
-       utilEEWrite(ioport, *((pu16bits)pdata),(u16bits)(offset / 2));
-               pdata += 2;
-               offset += 2;
-   }
-       if (OneMore)
-       {
-
-       temp2.tempw = utilEERead(ioport,(u16bits)(offset / 2));
-               temp2.tempb[0] = *pdata;
-       utilEEWrite(ioport, temp2.tempw, (u16bits)(offset / 2));
-       }
-   utilEEWriteOnOff(ioport,0);   /* Turn off write access */
-   UpdateCheckSum((u32bits)ioport);
-
-} /* end proc WriteNVRam */
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: UpdateCheckSum
- *
- * Description: Update Check Sum in EEPROM
- *
- *---------------------------------------------------------------------*/
-
-
-void UpdateCheckSum(u32bits baseport)
-{
-       USHORT i,sum_data, eeprom_end;
-
-       sum_data = 0x0000;
-
-
-   if (RD_HARPOON(baseport+hp_page_ctrl) & NARROW_SCSI_CARD)
-      eeprom_end = 512;
-   else
-      eeprom_end = 768;
-
-       for (i = 1; i < eeprom_end/2; i++)
-       {
-               sum_data += utilEERead(baseport, i);
-       }
-
-   utilEEWriteOnOff(baseport,1);   /* Enable write access to the EEPROM */
-
-   utilEEWrite(baseport, sum_data, EEPROM_CHECK_SUM/2);
-   utilEEWriteOnOff(baseport,0);   /* Turn off write access */
-}
-
-void SccbMgr_save_foreign_state(PADAPTER_INFO pAdapterInfo)
-{
-}
-
-
-void SccbMgr_restore_foreign_state(CARD_HANDLE pCurrCard)
-{
-}
-
-void SccbMgr_restore_native_state(CARD_HANDLE pCurrCard)
-{
-}
-
-#endif /* NO_IOCTLS */
-
-#endif /* (FW_TYPE==_UCB_MGR_)   */
-
-#ifndef NO_IOCTLS
-#if (FW_TYPE==_UCB_MGR_)
-void SccbMgr_unload_card(CARD_HANDLE pCurrCard)
-#else
-#if defined(DOS)
-void SccbMgr_unload_card(USHORT pCurrCard)
-#else
-void SccbMgr_unload_card(ULONG pCurrCard)
-#endif
-#endif
-{
-       UCHAR i;
-#if defined(DOS)
-       USHORT portBase;
-       USHORT regOffset;
-#else
-       ULONG portBase;
-       ULONG regOffset;
-#endif
-       ULONG scamData;
-#if defined(OS2)
-       ULONG far *pScamTbl;
-#else
-       ULONG *pScamTbl;
-#endif
-       PNVRamInfo pCurrNvRam;
-
-       pCurrNvRam = ((PSCCBcard)pCurrCard)->pNvRamInfo;
-
-       if(pCurrNvRam){
-               WrStack(pCurrNvRam->niBaseAddr, 0, pCurrNvRam->niModel);
-               WrStack(pCurrNvRam->niBaseAddr, 1, pCurrNvRam->niSysConf);
-               WrStack(pCurrNvRam->niBaseAddr, 2, pCurrNvRam->niScsiConf);
-               WrStack(pCurrNvRam->niBaseAddr, 3, pCurrNvRam->niScamConf);
-               WrStack(pCurrNvRam->niBaseAddr, 4, pCurrNvRam->niAdapId);
-
-               for(i = 0; i < MAX_SCSI_TAR / 2; i++)
-                       WrStack(pCurrNvRam->niBaseAddr, (UCHAR)(i+5), 
pCurrNvRam->niSyncTbl[i]);
-
-               portBase = pCurrNvRam->niBaseAddr;
-
-               for(i = 0; i < MAX_SCSI_TAR; i++){
-                       regOffset = hp_aramBase + 64 + i*4;
-#if defined(OS2)
-                       pScamTbl = (ULONG far *) &pCurrNvRam->niScamTbl[i];
-#else
-                       pScamTbl = (ULONG *) &pCurrNvRam->niScamTbl[i];
-#endif
-                       scamData = *pScamTbl;
-                       WR_HARP32(portBase, regOffset, scamData);
-               }
-
-       }else{
-               WrStack(((PSCCBcard)pCurrCard)->ioPort, 0, 0);
-       }
-}
-#endif /* NO_IOCTLS */
-
-
-void RNVRamData(PNVRamInfo pNvRamInfo)
-{
-       UCHAR i;
-#if defined(DOS)
-       USHORT portBase;
-       USHORT regOffset;
-#else
-       ULONG portBase;
-       ULONG regOffset;
-#endif
-       ULONG scamData;
-#if defined (OS2)
-       ULONG far *pScamTbl;
-#else
-       ULONG *pScamTbl;
-#endif
-
-       pNvRamInfo->niModel    = RdStack(pNvRamInfo->niBaseAddr, 0);
-       pNvRamInfo->niSysConf  = RdStack(pNvRamInfo->niBaseAddr, 1);
-       pNvRamInfo->niScsiConf = RdStack(pNvRamInfo->niBaseAddr, 2);
-       pNvRamInfo->niScamConf = RdStack(pNvRamInfo->niBaseAddr, 3);
-       pNvRamInfo->niAdapId   = RdStack(pNvRamInfo->niBaseAddr, 4);
-
-       for(i = 0; i < MAX_SCSI_TAR / 2; i++)
-               pNvRamInfo->niSyncTbl[i] = RdStack(pNvRamInfo->niBaseAddr, 
(UCHAR)(i+5));
-
-       portBase = pNvRamInfo->niBaseAddr;
-
-       for(i = 0; i < MAX_SCSI_TAR; i++){
-               regOffset = hp_aramBase + 64 + i*4;
-               RD_HARP32(portBase, regOffset, scamData);
-#if defined(OS2)
-               pScamTbl = (ULONG far *) &pNvRamInfo->niScamTbl[i];
-#else
-               pScamTbl = (ULONG *) &pNvRamInfo->niScamTbl[i];
-#endif
-               *pScamTbl = scamData;
-       }
-
-}
-
-#if defined(DOS)
-UCHAR RdStack(USHORT portBase, UCHAR index)
-#else
-UCHAR RdStack(ULONG portBase, UCHAR index)
-#endif
-{
-       WR_HARPOON(portBase + hp_stack_addr, index);
-       return(RD_HARPOON(portBase + hp_stack_data));
-}
-
-#if defined(DOS)
-void WrStack(USHORT portBase, UCHAR index, UCHAR data)
-#else
-void WrStack(ULONG portBase, UCHAR index, UCHAR data)
-#endif
-{
-       WR_HARPOON(portBase + hp_stack_addr, index);
-       WR_HARPOON(portBase + hp_stack_data, data);
-}
-
-
-#if (FW_TYPE==_UCB_MGR_)
-u08bits ChkIfChipInitialized(BASE_PORT ioPort)
-#else
-#if defined(DOS)
-UCHAR ChkIfChipInitialized(USHORT ioPort)
-#else
-UCHAR ChkIfChipInitialized(ULONG ioPort)
-#endif
-#endif
-{
-       if((RD_HARPOON(ioPort + hp_arb_id) & 0x0f) != RdStack(ioPort, 4))
-               return(FALSE);
-       if((RD_HARPOON(ioPort + hp_clkctrl_0) & CLKCTRL_DEFAULT)
-                                                               != 
CLKCTRL_DEFAULT)
-               return(FALSE);
-       if((RD_HARPOON(ioPort + hp_seltimeout) == TO_250ms) ||
-               (RD_HARPOON(ioPort + hp_seltimeout) == TO_290ms))
-               return(TRUE);
-       return(FALSE);
-
-}
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_start_sccb
- *
- * Description: Start a command pointed to by p_Sccb. When the
- *              command is completed it will be returned via the
- *              callback function.
- *
- *---------------------------------------------------------------------*/
-#if (FW_TYPE==_UCB_MGR_)
-void SccbMgr_start_sccb(CARD_HANDLE pCurrCard, PUCB p_ucb)
-#else
-#if defined(DOS)
-void SccbMgr_start_sccb(USHORT pCurrCard, PSCCB p_Sccb)
-#else
-void SccbMgr_start_sccb(ULONG pCurrCard, PSCCB p_Sccb)
-#endif
-#endif
-{
-#if defined(DOS)
-   USHORT ioport;
-#else
-   ULONG ioport;
-#endif
-   UCHAR thisCard, lun;
-       PSCCB pSaveSccb;
-   CALL_BK_FN callback;
-
-#if (FW_TYPE==_UCB_MGR_)
-   PSCCB p_Sccb;
-#endif
-
-   mOS_Lock((PSCCBcard)pCurrCard);
-   thisCard = ((PSCCBcard) pCurrCard)->cardIndex;
-   ioport = ((PSCCBcard) pCurrCard)->ioPort;
-
-#if (FW_TYPE==_UCB_MGR_)
-   p_Sccb = (PSCCB)p_ucb->UCB_MgrPrivatePtr;
-#endif
-
-       if((p_Sccb->TargID > MAX_SCSI_TAR) || (p_Sccb->Lun > MAX_LUN))
-       {
-
-#if (FW_TYPE==_UCB_MGR_)
-               p_ucb->UCB_hbastat = SCCB_COMPLETE;
-               p_ucb->UCB_status=SCCB_ERROR;
-               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-               if (callback)
-                       callback(p_ucb);
-#endif
-
-#if (FW_TYPE==_SCCB_MGR_)
-               p_Sccb->HostStatus = SCCB_COMPLETE;
-               p_Sccb->SccbStatus = SCCB_ERROR;
-               callback = (CALL_BK_FN)p_Sccb->SccbCallback;
-               if (callback)
-                       callback(p_Sccb);
-#endif
-
-               mOS_UnLock((PSCCBcard)pCurrCard);
-               return;
-       }
-
-#if (FW_TYPE==_SCCB_MGR_)
-   sinits(p_Sccb,thisCard);
-#endif
-
-
-#if (FW_TYPE==_UCB_MGR_)
-#ifndef NO_IOCTLS
-
-   if (p_ucb->UCB_opcode & OPC_IOCTL)
-       {
-
-               switch (p_ucb->UCB_IOCTLCommand) 
-               {
-                       case READ_NVRAM:
-                               ReadNVRam((PSCCBcard)pCurrCard,p_ucb);
-                               p_ucb->UCB_status=UCB_SUCCESS;
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-
-                       case WRITE_NVRAM:
-                               WriteNVRam((PSCCBcard)pCurrCard,p_ucb);
-                               p_ucb->UCB_status=UCB_SUCCESS;
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-
-                       case SEND_SCSI_PASSTHRU:
-#if (FW_TYPE != _SCCB_MGR_)
-                               if( p_ucb->UCB_targid >=
-                                   
((PSCCBcard)pCurrCard)->cardInfo->ai_MaxTarg )
-                               {
-                                       p_ucb->UCB_status = UCB_ERROR;
-                                       p_ucb->UCB_hbastat = HASTAT_HW_ERROR;
-                                       callback = 
(CALL_BK_FN)p_ucb->UCB_callback;
-                                       if (callback)
-                                               callback(p_ucb);
-                                       mOS_UnLock((PSCCBcard)pCurrCard);
-                                       return;
-                               }
-#endif
-                               break;
-
-                       case HARD_RESET:
-                               p_ucb->UCB_status = UCB_INVALID;
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-                       case GET_DEVICE_SYNCRATE:
-                               if( !GetDevSyncRate((PSCCBcard)pCurrCard,p_ucb) 
)
-                               {
-                                       p_ucb->UCB_status = UCB_SUCCESS;
-                               }
-                               else
-                               {
-                                       p_ucb->UCB_status = UCB_ERROR;
-                                       p_ucb->UCB_hbastat = HASTAT_HW_ERROR;
-                               }
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-                       case SET_DEVICE_SYNCRATE:
-                               if( !SetDevSyncRate((PSCCBcard)pCurrCard,p_ucb) 
)
-                               {
-                                       p_ucb->UCB_status = UCB_SUCCESS;
-                               }
-                               else
-                               {
-                                       p_ucb->UCB_status = UCB_ERROR;
-                                       p_ucb->UCB_hbastat = HASTAT_HW_ERROR;
-                               }
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-                       case GET_WIDE_MODE:
-                               if( !GetDevWideMode((PSCCBcard)pCurrCard,p_ucb) 
)
-                               {
-                                       p_ucb->UCB_status = UCB_SUCCESS;
-                               }
-                               else
-                               {
-                                       p_ucb->UCB_status = UCB_ERROR;
-                                       p_ucb->UCB_hbastat = HASTAT_HW_ERROR;
-                               }
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-                       case SET_WIDE_MODE:
-                               if( !SetDevWideMode((PSCCBcard)pCurrCard,p_ucb) 
)
-                               {
-                                       p_ucb->UCB_status = UCB_SUCCESS;
-                               }
-                               else
-                               {
-                                       p_ucb->UCB_status = UCB_ERROR;
-                                       p_ucb->UCB_hbastat = HASTAT_HW_ERROR;
-                               }
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-                       default:
-                               p_ucb->UCB_status=UCB_INVALID;
-                               callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                               if (callback)
-                                       callback(p_ucb);
-                               mOS_UnLock((PSCCBcard)pCurrCard);
-                               return;
-               }
-       }
-#endif /* NO_IOCTLS */
-#endif /* (FW_TYPE==_UCB_MGR_) */
-
-
-   if (!((PSCCBcard) pCurrCard)->cmdCounter)
-      {
-      WR_HARPOON(ioport+hp_semaphore, (RD_HARPOON(ioport+hp_semaphore)
-         | SCCB_MGR_ACTIVE));
-
-      if (((PSCCBcard) pCurrCard)->globalFlags & F_GREEN_PC)
-         {
-                WR_HARPOON(ioport+hp_clkctrl_0, CLKCTRL_DEFAULT);
-                WR_HARPOON(ioport+hp_sys_ctrl, 0x00);
-         }
-      }
-
-   ((PSCCBcard)pCurrCard)->cmdCounter++;
-
-   if (RD_HARPOON(ioport+hp_semaphore) & BIOS_IN_USE) {
-
-      WR_HARPOON(ioport+hp_semaphore, (RD_HARPOON(ioport+hp_semaphore)
-         | TICKLE_ME));
-               if(p_Sccb->OperationCode == RESET_COMMAND)
-                       {
-                               pSaveSccb = ((PSCCBcard) 
pCurrCard)->currentSCCB;
-                               ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb;
-                               queueSelectFail(&BL_Card[thisCard], thisCard);
-                               ((PSCCBcard) pCurrCard)->currentSCCB = 
pSaveSccb;
-                       }
-               else
-                       {
-             queueAddSccb(p_Sccb,thisCard);
-                       }
-      }
-
-   else if ((RD_HARPOON(ioport+hp_page_ctrl) & G_INT_DISABLE)) {
-
-                       if(p_Sccb->OperationCode == RESET_COMMAND)
-                               {
-                                       pSaveSccb = ((PSCCBcard) 
pCurrCard)->currentSCCB;
-                                       ((PSCCBcard) pCurrCard)->currentSCCB = 
p_Sccb;
-                                       queueSelectFail(&BL_Card[thisCard], 
thisCard);
-                                       ((PSCCBcard) pCurrCard)->currentSCCB = 
pSaveSccb;
-                               }
-                       else
-                               {
-                     queueAddSccb(p_Sccb,thisCard);
-                               }
-      }
-
-   else {
-
-      MDISABLE_INT(ioport);
-
-               if((((PSCCBcard) pCurrCard)->globalFlags & F_CONLUN_IO) && 
-                       ((sccbMgrTbl[thisCard][p_Sccb->TargID].TarStatus & 
TAR_TAG_Q_MASK) != TAG_Q_TRYING))
-                       lun = p_Sccb->Lun;
-               else
-                       lun = 0;
-      if ((((PSCCBcard) pCurrCard)->currentSCCB == NULL) &&
-         (sccbMgrTbl[thisCard][p_Sccb->TargID].TarSelQ_Cnt == 0) &&
-         (sccbMgrTbl[thisCard][p_Sccb->TargID].TarLUNBusy[lun]
-         == FALSE)) {
-
-            ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb;
-                          mOS_UnLock((PSCCBcard)pCurrCard);
-#if defined(DOS)
-            ssel((USHORT)p_Sccb->SccbIOPort,thisCard);
-#else
-           ssel(p_Sccb->SccbIOPort,thisCard);
-#endif
-                          mOS_Lock((PSCCBcard)pCurrCard);
-         }
-
-      else {
-
-                       if(p_Sccb->OperationCode == RESET_COMMAND)
-                               {
-                                       pSaveSccb = ((PSCCBcard) 
pCurrCard)->currentSCCB;
-                                       ((PSCCBcard) pCurrCard)->currentSCCB = 
p_Sccb;
-                                       queueSelectFail(&BL_Card[thisCard], 
thisCard);
-                                       ((PSCCBcard) pCurrCard)->currentSCCB = 
pSaveSccb;
-                               }
-                       else
-                               {
-                       queueAddSccb(p_Sccb,thisCard);
-                               }
-         }
-
-
-      MENABLE_INT(ioport);
-      }
-
-   mOS_UnLock((PSCCBcard)pCurrCard);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_abort_sccb
- *
- * Description: Abort the command pointed to by p_Sccb.  When the
- *              command is completed it will be returned via the
- *              callback function.
- *
- *---------------------------------------------------------------------*/
-#if (FW_TYPE==_UCB_MGR_)
-s32bits SccbMgr_abort_sccb(CARD_HANDLE pCurrCard, PUCB p_ucb)
-#else
-#if defined(DOS)
-int SccbMgr_abort_sccb(USHORT pCurrCard, PSCCB p_Sccb)
-#else
-int SccbMgr_abort_sccb(ULONG pCurrCard, PSCCB p_Sccb)
-#endif
-#endif
-
-{
-#if defined(DOS)
-       USHORT ioport;
-#else
-       ULONG ioport;
-#endif
-
-       UCHAR thisCard;
-       CALL_BK_FN callback;
-       UCHAR TID;
-       PSCCB pSaveSCCB;
-       PSCCBMgr_tar_info currTar_Info;
-
-
-#if (FW_TYPE==_UCB_MGR_)
-       PSCCB    p_Sccb;
-       p_Sccb=(PSCCB)p_ucb->UCB_MgrPrivatePtr;
-#endif
-
-       ioport = ((PSCCBcard) pCurrCard)->ioPort;
-
-       thisCard = ((PSCCBcard)pCurrCard)->cardIndex;
-
-       mOS_Lock((PSCCBcard)pCurrCard);
-
-       if (RD_HARPOON(ioport+hp_page_ctrl) & G_INT_DISABLE)
-       {
-               mOS_UnLock((PSCCBcard)pCurrCard);
-       }
-
-       else
-       {
-
-               if (queueFindSccb(p_Sccb,thisCard))
-               {
-
-                       mOS_UnLock((PSCCBcard)pCurrCard);
-
-                       ((PSCCBcard)pCurrCard)->cmdCounter--;
-
-                       if (!((PSCCBcard)pCurrCard)->cmdCounter)
-                               
WR_HARPOON(ioport+hp_semaphore,(RD_HARPOON(ioport+hp_semaphore)
-                                       & (UCHAR)(~(SCCB_MGR_ACTIVE | 
TICKLE_ME)) ));
-
-#if (FW_TYPE==_SCCB_MGR_)
-                       p_Sccb->SccbStatus = SCCB_ABORT;
-                       callback = p_Sccb->SccbCallback;
-                       callback(p_Sccb);
-#else
-                       p_ucb->UCB_status=SCCB_ABORT;
-                       callback = (CALL_BK_FN)p_ucb->UCB_callback;
-                       callback(p_ucb);
-#endif
-
-                       return(0);
-               }
-
-               else
-               {
-                       mOS_UnLock((PSCCBcard)pCurrCard);
-
-                       if (((PSCCBcard)pCurrCard)->currentSCCB == p_Sccb)
-                       {
-                               p_Sccb->SccbStatus = SCCB_ABORT;
-                               return(0);
-
-                       }
-
-                       else
-                       {
-
-                               TID = p_Sccb->TargID;
-
-
-                               if(p_Sccb->Sccb_tag)
-                               {
-                                       MDISABLE_INT(ioport);
-                                       if (((PSCCBcard) 
pCurrCard)->discQ_Tbl[p_Sccb->Sccb_tag]==p_Sccb)
-                                       {
-                                               p_Sccb->SccbStatus = SCCB_ABORT;
-                                               p_Sccb->Sccb_scsistat = 
ABORT_ST;
-#if (FW_TYPE==_UCB_MGR_)
-                                               p_ucb->UCB_status=SCCB_ABORT;
-#endif
-                                               p_Sccb->Sccb_scsimsg = 
SMABORT_TAG;
-
-                                               if(((PSCCBcard) 
pCurrCard)->currentSCCB == NULL)
-                                               {
-                                                       ((PSCCBcard) 
pCurrCard)->currentSCCB = p_Sccb;
-                                                       ssel(ioport, thisCard);
-                                               }
-                                               else
-                                               {
-                                                       pSaveSCCB = 
((PSCCBcard) pCurrCard)->currentSCCB;
-                                                       ((PSCCBcard) 
pCurrCard)->currentSCCB = p_Sccb;
-                                                       
queueSelectFail((PSCCBcard) pCurrCard, thisCard);
-                                                       ((PSCCBcard) 
pCurrCard)->currentSCCB = pSaveSCCB;
-                                               }
-                                       }
-                                       MENABLE_INT(ioport);
-                                       return(0);
-                               }
-                               else
-                               {
-                                       currTar_Info = 
&sccbMgrTbl[thisCard][p_Sccb->TargID];
-
-                                       
if(BL_Card[thisCard].discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_Sccb->Lun]] 
-                                                       == p_Sccb)
-                                       {
-                                               p_Sccb->SccbStatus = SCCB_ABORT;
-                                               return(0);
-                                       }
-                               }
-                       }
-               }
-       }
-       return(-1);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_my_int
- *
- * Description: Do a quick check to determine if there is a pending
- *              interrupt for this card and disable the IRQ Pin if so.
- *
- *---------------------------------------------------------------------*/
-#if (FW_TYPE==_UCB_MGR_)
-u08bits SccbMgr_my_int(CARD_HANDLE pCurrCard)
-#else
-#if defined(DOS)
-UCHAR SccbMgr_my_int(USHORT pCurrCard)
-#else
-UCHAR SccbMgr_my_int(ULONG pCurrCard)
-#endif
-#endif
-{
-#if defined(DOS)
-   USHORT ioport;
-#else
-   ULONG ioport;
-#endif
-
-   ioport = ((PSCCBcard)pCurrCard)->ioPort;
-
-   if (RD_HARPOON(ioport+hp_int_status) & INT_ASSERTED)
-   {
-
-#if defined(DOS)
-      MDISABLE_INT(ioport);
-#endif
-
-      return(TRUE);
-   }
-
-   else
-
-      return(FALSE);
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_isr
- *
- * Description: This is our entry point when an interrupt is generated
- *              by the card and the upper level driver passes it on to
- *              us.
- *
- *---------------------------------------------------------------------*/
-#if (FW_TYPE==_UCB_MGR_)
-s32bits SccbMgr_isr(CARD_HANDLE pCurrCard)
-#else
-#if defined(DOS)
-int SccbMgr_isr(USHORT pCurrCard)
-#else
-int SccbMgr_isr(ULONG pCurrCard)
-#endif
-#endif
-{
-   PSCCB currSCCB;
-   UCHAR thisCard,result,bm_status, bm_int_st;
-   USHORT hp_int;
-   UCHAR i, target;
-#if defined(DOS)
-   USHORT ioport;
-#else
-   ULONG ioport;
-#endif
-
-   mOS_Lock((PSCCBcard)pCurrCard);
-
-   thisCard = ((PSCCBcard)pCurrCard)->cardIndex;
-   ioport = ((PSCCBcard)pCurrCard)->ioPort;
-
-   MDISABLE_INT(ioport);
-
-#if defined(BUGBUG)
-   WR_HARPOON(ioport+hp_user_defined_D, RD_HARPOON(ioport+hp_int_status));
-#endif
-
-   if ((bm_int_st=RD_HARPOON(ioport+hp_int_status)) & EXT_STATUS_ON)
-               bm_status = RD_HARPOON(ioport+hp_ext_status) & 
(UCHAR)BAD_EXT_STATUS;
-   else
-      bm_status = 0;
-
-   WR_HARPOON(ioport+hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT));
-
-   mOS_UnLock((PSCCBcard)pCurrCard);
-
-   while ((hp_int = RDW_HARPOON((ioport+hp_intstat)) & default_intena) |
-         bm_status)
-     {
-
-       currSCCB = ((PSCCBcard)pCurrCard)->currentSCCB;
-
-#if defined(BUGBUG)
-   Debug_Load(thisCard,(UCHAR) 0XFF);
-   Debug_Load(thisCard,bm_int_st);
-
-   Debug_Load(thisCard,hp_int_0);
-   Debug_Load(thisCard,hp_int_1);
-#endif
-
-
-      if (hp_int & (FIFO | TIMEOUT | RESET | SCAM_SEL) || bm_status) {
-         result = 
SccbMgr_bad_isr(ioport,thisCard,((PSCCBcard)pCurrCard),hp_int);
-         WRW_HARPOON((ioport+hp_intstat), (FIFO | TIMEOUT | RESET | SCAM_SEL));
-         bm_status = 0;
-
-         if (result) {
-
-                          mOS_Lock((PSCCBcard)pCurrCard);
-            MENABLE_INT(ioport);
-                          mOS_UnLock((PSCCBcard)pCurrCard);
-            return(result);
-            }
-         }
-
-
-      else if (hp_int & ICMD_COMP) {
-
-         if ( !(hp_int & BUS_FREE) ) {
-            /* Wait for the BusFree before starting a new command.  We
-               must also check for being reselected since the BusFree
-               may not show up if another device reselects us in 1.5us or
-               less.  SRR Wednesday, 3/8/1995.
-                */
-          while (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL))) ;
-        }
-
-         if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT)
-
-            phaseChkFifo(ioport, thisCard);
-
-/*         WRW_HARPOON((ioport+hp_intstat),
-            (BUS_FREE | ICMD_COMP | ITAR_DISC | XFER_CNT_0));
-         */
-
-                WRW_HARPOON((ioport+hp_intstat), CLR_ALL_INT_1);
-
-         autoCmdCmplt(ioport,thisCard);
-
-         }
-
-
-      else if (hp_int & ITAR_DISC)
-         {
-
-         if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) {
-
-            phaseChkFifo(ioport, thisCard);
-
-            }
-
-         if (RD_HARPOON(ioport+hp_gp_reg_1) == SMSAVE_DATA_PTR) {
-
-            WR_HARPOON(ioport+hp_gp_reg_1, 0x00);
-            currSCCB->Sccb_XferState |= F_NO_DATA_YET;
-
-            currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC;
-            }
-
-         currSCCB->Sccb_scsistat = DISCONNECT_ST;
-         queueDisconnect(currSCCB,thisCard);
-
-            /* Wait for the BusFree before starting a new command.  We
-               must also check for being reselected since the BusFree
-               may not show up if another device reselects us in 1.5us or
-               less.  SRR Wednesday, 3/8/1995.
-             */
-          while (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL)) &&
-                 !((RDW_HARPOON((ioport+hp_intstat)) & PHASE) &&
-                   RD_HARPOON((ioport+hp_scsisig)) ==
-                   (SCSI_BSY | SCSI_REQ | SCSI_CD | SCSI_MSG | SCSI_IOBIT))) ;
-
-          /*
-            The additional loop exit condition above detects a timing problem
-            with the revision D/E harpoon chips.  The caller should reset the
-            host adapter to recover when 0xFE is returned.
-          */
-          if (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL)))
-            {
-              mOS_Lock((PSCCBcard)pCurrCard);
-              MENABLE_INT(ioport);
-              mOS_UnLock((PSCCBcard)pCurrCard);
-              return 0xFE;
-            }
-
-         WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ITAR_DISC));
-
-
-         ((PSCCBcard)pCurrCard)->globalFlags |= F_NEW_SCCB_CMD;
-
-       }
-
-
-      else if (hp_int & RSEL) {
-
-         WRW_HARPOON((ioport+hp_intstat), (PROG_HLT | RSEL | PHASE | 
BUS_FREE));
-
-         if (RDW_HARPOON((ioport+hp_intstat)) & ITAR_DISC)
-                     {
-            if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT)
-                             {
-               phaseChkFifo(ioport, thisCard);
-               }
-
-            if (RD_HARPOON(ioport+hp_gp_reg_1) == SMSAVE_DATA_PTR)
-                             {
-               WR_HARPOON(ioport+hp_gp_reg_1, 0x00);
-               currSCCB->Sccb_XferState |= F_NO_DATA_YET;
-               currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC;
-               }
-
-            WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ITAR_DISC));
-            currSCCB->Sccb_scsistat = DISCONNECT_ST;
-            queueDisconnect(currSCCB,thisCard);
-            }
-
-         sres(ioport,thisCard,((PSCCBcard)pCurrCard));
-         phaseDecode(ioport,thisCard);
-
-         }
-
-
-      else if ((hp_int & IDO_STRT) && (!(hp_int & BUS_FREE)))
-         {
-
-            WRW_HARPOON((ioport+hp_intstat), (IDO_STRT | XFER_CNT_0));
-            phaseDecode(ioport,thisCard);
-
-         }
-
-
-      else if ( (hp_int & IUNKWN) || (hp_int & PROG_HLT) )
-                  {
-                  WRW_HARPOON((ioport+hp_intstat), (PHASE | IUNKWN | 
PROG_HLT));
-                  if ((RD_HARPOON(ioport+hp_prgmcnt_0) & (UCHAR)0x3f)< 
(UCHAR)SELCHK)
-                       {
-                       phaseDecode(ioport,thisCard);
-                       }
-                  else
-                       {
-   /* Harpoon problem some SCSI target device respond to selection
-   with short BUSY pulse (<400ns) this will make the Harpoon is not able
-   to latch the correct Target ID into reg. x53.
-   The work around require to correct this reg. But when write to this
-   reg. (0x53) also increment the FIFO write addr reg (0x6f), thus we
-   need to read this reg first then restore it later. After update to 0x53 */
-
-                       i = (UCHAR)(RD_HARPOON(ioport+hp_fifowrite));
-                       target = (UCHAR)(RD_HARPOON(ioport+hp_gp_reg_3));
-                       WR_HARPOON(ioport+hp_xfer_pad, (UCHAR) ID_UNLOCK);
-                       WR_HARPOON(ioport+hp_select_id, (UCHAR)(target | 
target<<4));
-                       WR_HARPOON(ioport+hp_xfer_pad, (UCHAR) 0x00);
-                       WR_HARPOON(ioport+hp_fifowrite, i);
-                       WR_HARPOON(ioport+hp_autostart_3, 
(AUTO_IMMED+TAG_STRT));
-                       }
-                  }
-
-      else if (hp_int & XFER_CNT_0) {
-
-         WRW_HARPOON((ioport+hp_intstat), XFER_CNT_0);
-
-         schkdd(ioport,thisCard);
-
-         }
-
-
-      else if (hp_int & BUS_FREE) {
-
-         WRW_HARPOON((ioport+hp_intstat), BUS_FREE);
-
-               if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) {
-
-               hostDataXferAbort(ioport,thisCard,currSCCB);
-                               }
-
-         phaseBusFree(ioport,thisCard);
-                       }
-
-
-      else if (hp_int & ITICKLE) {
-
-         WRW_HARPOON((ioport+hp_intstat), ITICKLE);
-         ((PSCCBcard)pCurrCard)->globalFlags |= F_NEW_SCCB_CMD;
-         }
-
-
-
-      if (((PSCCBcard)pCurrCard)->globalFlags & F_NEW_SCCB_CMD) {
-
-
-         ((PSCCBcard)pCurrCard)->globalFlags &= ~F_NEW_SCCB_CMD;
-
-
-         if (((PSCCBcard)pCurrCard)->currentSCCB == NULL) {
-
-            queueSearchSelect(((PSCCBcard)pCurrCard),thisCard);
-            }
-
-         if (((PSCCBcard)pCurrCard)->currentSCCB != NULL) {
-            ((PSCCBcard)pCurrCard)->globalFlags &= ~F_NEW_SCCB_CMD;
-            ssel(ioport,thisCard);
-            }
-
-         break;
-
-         }
-
-      }  /*end while */
-
-   mOS_Lock((PSCCBcard)pCurrCard);
-   MENABLE_INT(ioport);
-   mOS_UnLock((PSCCBcard)pCurrCard);
-
-   return(0);
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: Sccb_bad_isr
- *
- * Description: Some type of interrupt has occurred which is slightly
- *              out of the ordinary.  We will now decode it fully, in
- *              this routine.  This is broken up in an attempt to save
- *              processing time.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-UCHAR SccbMgr_bad_isr(USHORT p_port, UCHAR p_card, PSCCBcard pCurrCard, USHORT 
p_int)
-#else
-UCHAR SccbMgr_bad_isr(ULONG p_port, UCHAR p_card, PSCCBcard pCurrCard, USHORT 
p_int)
-#endif
-{
-#if defined(HARP_REVX)
-   ULONG timer;
-#endif
-UCHAR temp, ScamFlg;
-PSCCBMgr_tar_info currTar_Info;
-PNVRamInfo pCurrNvRam;
-
-
-   if (RD_HARPOON(p_port+hp_ext_status) &
-         (BM_FORCE_OFF | PCI_DEV_TMOUT | BM_PARITY_ERR | PIO_OVERRUN) )
-      {
-
-      if (pCurrCard->globalFlags & F_HOST_XFER_ACT)
-         {
-
-         hostDataXferAbort(p_port,p_card, pCurrCard->currentSCCB);
-         }
-
-      if (RD_HARPOON(p_port+hp_pci_stat_cfg) & REC_MASTER_ABORT)
-
-         {
-         WR_HARPOON(p_port+hp_pci_stat_cfg,
-            (RD_HARPOON(p_port+hp_pci_stat_cfg) & ~REC_MASTER_ABORT));
-
-         WR_HARPOON(p_port+hp_host_blk_cnt, 0x00);
-
-         }
-
-      if (pCurrCard->currentSCCB != NULL)
-         {
-
-         if (!pCurrCard->currentSCCB->HostStatus)
-            pCurrCard->currentSCCB->HostStatus = SCCB_BM_ERR;
-
-         sxfrp(p_port,p_card);
-
-            temp = (UCHAR)(RD_HARPOON(p_port+hp_ee_ctrl) &
-                                                       (EXT_ARB_ACK | 
SCSI_TERM_ENA_H));
-       WR_HARPOON(p_port+hp_ee_ctrl, ((UCHAR)temp | SEE_MS | SEE_CS));
-         WR_HARPOON(p_port+hp_ee_ctrl, temp);
-
-         if (!(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET)))
-            {
-            phaseDecode(p_port,p_card);
-            }
-         }
-      }
-
-
-   else if (p_int & RESET)
-         {
-
-                               WR_HARPOON(p_port+hp_clkctrl_0, 
CLKCTRL_DEFAULT);
-                               WR_HARPOON(p_port+hp_sys_ctrl, 0x00);
-           if (pCurrCard->currentSCCB != NULL) {
-
-               if (pCurrCard->globalFlags & F_HOST_XFER_ACT)
-
-               hostDataXferAbort(p_port,p_card, pCurrCard->currentSCCB);
-               }
-
-
-           DISABLE_AUTO(p_port);
-
-           sresb(p_port,p_card);
-
-           while(RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST) {}
-
-                               pCurrNvRam = pCurrCard->pNvRamInfo;
-                               if(pCurrNvRam){
-                                       ScamFlg = pCurrNvRam->niScamConf;
-                               }
-                               else{
-                                  ScamFlg = (UCHAR) utilEERead(p_port, 
SCAM_CONFIG/2);
-                               }
-
-           XbowInit(p_port, ScamFlg);
-
-               scini(p_card, pCurrCard->ourId, 0);
-
-           return(0xFF);
-         }
-
-
-   else if (p_int & FIFO) {
-
-      WRW_HARPOON((p_port+hp_intstat), FIFO);
-
-#if defined(HARP_REVX)
-
-      for (timer=0x00FFFFFFL; timer != 0x00000000L; timer--) {
-
-         if (RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY)
-            break;
-
-         if (RDW_HARPOON((p_port+hp_intstat)) & BUS_FREE)
-            break;
-         }
-
-
-      if ( (RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY) &&
-           (RD_HARPOON(p_port+hp_fiforead) !=
-            RD_HARPOON(p_port+hp_fifowrite)) &&
-           (RD_HARPOON(p_port+hp_xfercnt_0))
-         )
-
-            WR_HARPOON((p_port+hp_xferstat), 0x01);
-
-/*      else
- */
-/*         sxfrp(p_port,p_card);
- */
-#else
-      if (pCurrCard->currentSCCB != NULL)
-         sxfrp(p_port,p_card);
-#endif
-      }
-
-   else if (p_int & TIMEOUT)
-      {
-
-      DISABLE_AUTO(p_port);
-
-      WRW_HARPOON((p_port+hp_intstat),
-                 (PROG_HLT | TIMEOUT | SEL |BUS_FREE | PHASE | IUNKWN));
-
-      pCurrCard->currentSCCB->HostStatus = SCCB_SELECTION_TIMEOUT;
-
-
-               currTar_Info = 
&sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID];
-               if((pCurrCard->globalFlags & F_CONLUN_IO) &&
-                       ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING))
-             currTar_Info->TarLUNBusy[pCurrCard->currentSCCB->Lun] = FALSE;
-               else
-             currTar_Info->TarLUNBusy[0] = FALSE;
-
-
-      if (currTar_Info->TarEEValue & EE_SYNC_MASK)
-         {
-              currTar_Info->TarSyncCtrl = 0;
-         currTar_Info->TarStatus &= ~TAR_SYNC_MASK;
-         }
-
-      if (currTar_Info->TarEEValue & EE_WIDE_SCSI)
-         {
-         currTar_Info->TarStatus &= ~TAR_WIDE_MASK;
-         }
-
-      sssyncv(p_port, pCurrCard->currentSCCB->TargID, 
NARROW_SCSI,currTar_Info);
-
-      queueCmdComplete(pCurrCard, pCurrCard->currentSCCB, p_card);
-
-      }
-
-#if defined(SCAM_LEV_2)
-
-   else if (p_int & SCAM_SEL)
-      {
-
-      scarb(p_port,LEVEL2_TAR);
-      scsel(p_port);
-      scasid(p_card, p_port);
-
-      scbusf(p_port);
-
-      WRW_HARPOON((p_port+hp_intstat), SCAM_SEL);
-      }
-#endif
-
-   return(0x00);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_scsi_reset
- *
- * Description: A SCSI bus reset will be generated and all outstanding
- *              Sccbs will be returned via the callback.
- *
- *---------------------------------------------------------------------*/
-#if (FW_TYPE==_UCB_MGR_)
-void SccbMgr_scsi_reset(CARD_HANDLE pCurrCard)
-#else
-#if defined(DOS)
-void SccbMgr_scsi_reset(USHORT pCurrCard)
-#else
-void SccbMgr_scsi_reset(ULONG pCurrCard)
-#endif
-#endif
-{
-   UCHAR thisCard;
-
-   thisCard = ((PSCCBcard)pCurrCard)->cardIndex;
-
-   mOS_Lock((PSCCBcard)pCurrCard);
-
-   if (((PSCCBcard) pCurrCard)->globalFlags & F_GREEN_PC)
-      {
-      WR_HARPOON(((PSCCBcard) pCurrCard)->ioPort+hp_clkctrl_0, 
CLKCTRL_DEFAULT);
-      WR_HARPOON(((PSCCBcard) pCurrCard)->ioPort+hp_sys_ctrl, 0x00);
-      }
-
-   sresb(((PSCCBcard)pCurrCard)->ioPort,thisCard);
-
-   if (RD_HARPOON(((PSCCBcard)pCurrCard)->ioPort+hp_ext_status) & BM_CMD_BUSY)
-      {
-      WR_HARPOON(((PSCCBcard) pCurrCard)->ioPort+hp_page_ctrl,
-         (RD_HARPOON(((PSCCBcard) pCurrCard)->ioPort+hp_page_ctrl)
-         & ~SCATTER_EN));
-
-      WR_HARPOON(((PSCCBcard) pCurrCard)->ioPort+hp_sg_addr,0x00);
-
-      ((PSCCBcard) pCurrCard)->globalFlags &= ~F_HOST_XFER_ACT;
-      busMstrTimeOut(((PSCCBcard) pCurrCard)->ioPort);
-
-      WR_HARPOON(((PSCCBcard) pCurrCard)->ioPort+hp_int_mask,
-         (INT_CMD_COMPL | SCSI_INTERRUPT));
-      }
-
-/*
-      if (utilEERead(((PSCCBcard)pCurrCard)->ioPort, (SCAM_CONFIG/2))
-            & SCAM_ENABLED)
-*/
-         scini(thisCard, ((PSCCBcard)pCurrCard)->ourId, 0);
-
-#if (FW_TYPE==_UCB_MGR_)
-   ((PSCCBcard)pCurrCard)->cardInfo->ai_AEN_routine(0x01,pCurrCard,0,0,0,0);
-#endif
-
-   mOS_UnLock((PSCCBcard)pCurrCard);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_timer_expired
- *
- * Description: This function allow me to kill my own job that has not
- *              yet completed, and has cause a timeout to occur.  This
- *              timeout has caused the upper level driver to call this
- *              function.
- *
- *---------------------------------------------------------------------*/
-
-#if (FW_TYPE==_UCB_MGR_)
-void SccbMgr_timer_expired(CARD_HANDLE pCurrCard)
-#else
-#if defined(DOS)
-void SccbMgr_timer_expired(USHORT pCurrCard)
-#else
-void SccbMgr_timer_expired(ULONG pCurrCard)
-#endif
-#endif
-{
-}
-
-#if defined(DOS)
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgr_status
- *
- * Description: This function returns the number of outstanding SCCB's.
- *              This is specific to the DOS enviroment, which needs this
- *              to help them keep protected and real mode commands staight.
- *
- *---------------------------------------------------------------------*/
-
-USHORT SccbMgr_status(USHORT pCurrCard)
-{
-   return(BL_Card[pCurrCard].cmdCounter);
-}
-#endif
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgrTableInit
- *
- * Description: Initialize all Sccb manager data structures.
- *
- *---------------------------------------------------------------------*/
-
-void SccbMgrTableInitAll()
-{
-   UCHAR thisCard;
-
-   for (thisCard = 0; thisCard < MAX_CARDS; thisCard++)
-      {
-      SccbMgrTableInitCard(&BL_Card[thisCard],thisCard);
-
-      BL_Card[thisCard].ioPort      = 0x00;
-      BL_Card[thisCard].cardInfo    = NULL;
-      BL_Card[thisCard].cardIndex   = 0xFF;
-      BL_Card[thisCard].ourId       = 0x00;
-               BL_Card[thisCard].pNvRamInfo    = NULL;
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgrTableInit
- *
- * Description: Initialize all Sccb manager data structures.
- *
- *---------------------------------------------------------------------*/
-
-void SccbMgrTableInitCard(PSCCBcard pCurrCard, UCHAR p_card)
-{
-   UCHAR scsiID, qtag;
-
-       for (qtag = 0; qtag < QUEUE_DEPTH; qtag++)
-       {
-               BL_Card[p_card].discQ_Tbl[qtag] = NULL;
-       }
-
-   for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++)
-      {
-      sccbMgrTbl[p_card][scsiID].TarStatus = 0;
-      sccbMgrTbl[p_card][scsiID].TarEEValue = 0;
-      SccbMgrTableInitTarget(p_card, scsiID);
-      }
-
-   pCurrCard->scanIndex = 0x00;
-   pCurrCard->currentSCCB = NULL;
-   pCurrCard->globalFlags = 0x00;
-   pCurrCard->cmdCounter  = 0x00;
-       pCurrCard->tagQ_Lst = 0x01;
-       pCurrCard->discQCount = 0; 
-
-
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: SccbMgrTableInit
- *
- * Description: Initialize all Sccb manager data structures.
- *
- *---------------------------------------------------------------------*/
-
-void SccbMgrTableInitTarget(UCHAR p_card, UCHAR target)
-{
-
-       UCHAR lun, qtag;
-       PSCCBMgr_tar_info currTar_Info;
-
-       currTar_Info = &sccbMgrTbl[p_card][target];
-
-       currTar_Info->TarSelQ_Cnt = 0;
-       currTar_Info->TarSyncCtrl = 0;
-
-       currTar_Info->TarSelQ_Head = NULL;
-       currTar_Info->TarSelQ_Tail = NULL;
-       currTar_Info->TarTagQ_Cnt = 0;
-       currTar_Info->TarLUN_CA = FALSE;
-
-
-       for (lun = 0; lun < MAX_LUN; lun++)
-       {
-               currTar_Info->TarLUNBusy[lun] = FALSE;
-               currTar_Info->LunDiscQ_Idx[lun] = 0;
-       }
-
-       for (qtag = 0; qtag < QUEUE_DEPTH; qtag++)
-       {
-               if(BL_Card[p_card].discQ_Tbl[qtag] != NULL)
-               {
-                       if(BL_Card[p_card].discQ_Tbl[qtag]->TargID == target)
-                       {
-                               BL_Card[p_card].discQ_Tbl[qtag] = NULL;
-                               BL_Card[p_card].discQCount--;
-                       }
-               }
-       }
-}
-
-#if defined(BUGBUG)
-
-/*****************************************************************
- * Save the current byte in the debug array
- *****************************************************************/
-
-
-void Debug_Load(UCHAR p_card, UCHAR p_bug_data)
-{
-   debug_int[p_card][debug_index[p_card]] = p_bug_data;
-   debug_index[p_card]++;
-
-   if (debug_index[p_card] == debug_size)
-
-      debug_index[p_card] = 0;
-}
-
-#endif
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   sccb_dat.c  $
- *
- *   Description:  Functions relating to handling of the SCCB interface 
- *                 between the device driver and the HARPOON.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <harpoon.h>*/
-
-/*
-**  IMPORTANT NOTE!!!
-**
-**  You MUST preassign all data to a valid value or zero.  This is
-**  required due to the MS compiler bug under OS/2 and Solaris Real-Mode
-**  driver environment.
-*/
-
-
-SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR] = { { { 0 } } };
-SCCBCARD BL_Card[MAX_CARDS] = { { 0 } };
-SCCBSCAM_INFO scamInfo[MAX_SCSI_TAR] = { { { 0 } } };
-NVRAMINFO nvRamInfo[MAX_MB_CARDS] = { { 0 } };
-
-
-#if defined(OS2)
-void (far *s_PhaseTbl[8]) (ULONG, UCHAR) = { 0 };
-UCHAR temp_id_string[ID_STRING_LENGTH] = { 0 };
-#elif defined(SOLARIS_REAL_MODE) || defined(__STDC__)
-void (*s_PhaseTbl[8]) (ULONG, UCHAR) = { 0 };
-#else
-void (*s_PhaseTbl[8]) ();
-#endif
-
-#if defined(DOS)
-UCHAR first_time = 0;
-#endif
-
-UCHAR mbCards = 0;
-UCHAR scamHAString[] = {0x63, 0x07, 'B', 'U', 'S', 'L', 'O', 'G', 'I', 'C', \
-                                                               ' ', 'B', 'T', 
'-', '9', '3', '0', \
-                                                               0x20, 0x20, 
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \
-                                                               0x20, 0x20, 
0x20, 0x20, 0x20, 0x20, 0x20, 0x20};
-
-USHORT default_intena = 0;
-
-#if defined(BUGBUG)
-UCHAR    debug_int[MAX_CARDS][debug_size] = { 0 };
-UCHAR    debug_index[MAX_CARDS] = { 0 };
-UCHAR    reserved_1[3] = { 0 };
-#endif
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   scsi.c  $
- *
- *   Description:  Functions for handling SCSI bus functions such as
- *                 selection/reselection, sync negotiation, message-in
- *                 decoding.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <scsi2.h>*/
-/*#include <eeprom.h>*/
-/*#include <harpoon.h>*/
-
-
-/*
-extern SCCBCARD BL_Card[MAX_CARDS];
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-#if defined(BUGBUG)
-void Debug_Load(UCHAR p_card, UCHAR p_bug_data);
-#endif
-*/
-
-/*---------------------------------------------------------------------
- *
- * Function: sfetm
- *
- * Description: Read in a message byte from the SCSI bus, and check
- *              for a parity error.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-UCHAR sfm(USHORT port, PSCCB pCurrSCCB)
-#else
-UCHAR sfm(ULONG port, PSCCB pCurrSCCB)
-#endif
-{
-       UCHAR message;
-       USHORT TimeOutLoop;
-
-       TimeOutLoop = 0;
-       while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&
-                       (TimeOutLoop++ < 20000) ){}
-
-
-       WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);
-
-       message = RD_HARPOON(port+hp_scsidata_0);
-
-       WR_HARPOON(port+hp_scsisig, SCSI_ACK + S_MSGI_PH);
-
-
-       if (TimeOutLoop > 20000)
-               message = 0x00;   /* force message byte = 0 if Time Out on Req 
*/
-
-       if ((RDW_HARPOON((port+hp_intstat)) & PARITY) &&
-               (RD_HARPOON(port+hp_addstat) & SCSI_PAR_ERR))
-       {
-               WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));
-               WR_HARPOON(port+hp_xferstat, 0);
-               WR_HARPOON(port+hp_fiforead, 0);
-               WR_HARPOON(port+hp_fifowrite, 0);
-               if (pCurrSCCB != NULL)
-               {
-                       pCurrSCCB->Sccb_scsimsg = SMPARITY;
-               }
-               message = 0x00;
-               do
-               {
-                       ACCEPT_MSG_ATN(port);
-                       TimeOutLoop = 0;
-                       while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&
-                               (TimeOutLoop++ < 20000) ){}
-                       if (TimeOutLoop > 20000)
-                       {
-                               WRW_HARPOON((port+hp_intstat), PARITY);
-                               return(message);
-                       }
-                       if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) != 
S_MSGI_PH)
-                       {
-                               WRW_HARPOON((port+hp_intstat), PARITY);
-                               return(message);
-                       }
-                       WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);
-
-                       RD_HARPOON(port+hp_scsidata_0);
-
-                       WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));
-
-               }while(1);
-
-       }
-       WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));
-       WR_HARPOON(port+hp_xferstat, 0);
-       WR_HARPOON(port+hp_fiforead, 0);
-       WR_HARPOON(port+hp_fifowrite, 0);
-       return(message);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: ssel
- *
- * Description: Load up automation and select target device.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void ssel(USHORT port, UCHAR p_card)
-#else
-void ssel(ULONG port, UCHAR p_card)
-#endif
-{
-
-#if defined(DOS)
-   UCHAR auto_loaded, i, target, *theCCB;
-#elif defined(OS2)
-   UCHAR auto_loaded, i, target;
-   UCHAR far *theCCB;
-#else
-   UCHAR auto_loaded, i, target, *theCCB;
-#endif
-
-#if defined(DOS)
-   USHORT cdb_reg;
-#else
-   ULONG cdb_reg;
-#endif
-   PSCCBcard CurrCard;
-   PSCCB currSCCB;
-   PSCCBMgr_tar_info currTar_Info;
-   UCHAR lastTag, lun;
-
-   CurrCard = &BL_Card[p_card];
-   currSCCB = CurrCard->currentSCCB;
-   target = currSCCB->TargID;
-   currTar_Info = &sccbMgrTbl[p_card][target];
-   lastTag = CurrCard->tagQ_Lst;
-
-   ARAM_ACCESS(port);
-
-
-       if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT)
-               currSCCB->ControlByte &= ~F_USE_CMD_Q;
-
-       if(((CurrCard->globalFlags & F_CONLUN_IO) && 
-               ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)))
-
-          lun = currSCCB->Lun;
-       else
-               lun = 0;
-
-
-#if defined(DOS)
-   currTar_Info->TarLUNBusy[lun] = TRUE;
-
-#else
-
-   if (CurrCard->globalFlags & F_TAG_STARTED)
-      {
-      if (!(currSCCB->ControlByte & F_USE_CMD_Q))
-         {
-       if ((currTar_Info->TarLUN_CA == FALSE)
-           && ((currTar_Info->TarStatus & TAR_TAG_Q_MASK)
-           == TAG_Q_TRYING))
-            {
-
-                if (currTar_Info->TarTagQ_Cnt !=0)
-                  {
-                          currTar_Info->TarLUNBusy[lun] = TRUE;
-                       queueSelectFail(CurrCard,p_card);
-                                          SGRAM_ACCESS(port);
-                          return;
-                          }
-
-            else {
-                         currTar_Info->TarLUNBusy[lun] = TRUE;
-                         }
-
-             }  /*End non-tagged */
-
-             else {
-                currTar_Info->TarLUNBusy[lun] = TRUE;
-                }
-
-             }  /*!Use cmd Q Tagged */
-
-          else {
-            if (currTar_Info->TarLUN_CA == TRUE)
-               {
-             queueSelectFail(CurrCard,p_card);
-                                  SGRAM_ACCESS(port);
-             return;
-                   }
-
-               currTar_Info->TarLUNBusy[lun] = TRUE;
-
-            }  /*else use cmd Q tagged */
-
-      }  /*if glob tagged started */
-
-   else {
-        currTar_Info->TarLUNBusy[lun] = TRUE;
-        }
-
-#endif /* DOS */
-
-
-
-       if((((CurrCard->globalFlags & F_CONLUN_IO) && 
-               ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) 
-               || (!(currSCCB->ControlByte & F_USE_CMD_Q))))
-       {
-               if(CurrCard->discQCount >= QUEUE_DEPTH)
-               {
-                       currTar_Info->TarLUNBusy[lun] = TRUE;
-                       queueSelectFail(CurrCard,p_card);
-                       SGRAM_ACCESS(port);
-                       return;
-               }
-               for (i = 1; i < QUEUE_DEPTH; i++)
-               {
-                       if (++lastTag >= QUEUE_DEPTH) lastTag = 1;
-                       if (CurrCard->discQ_Tbl[lastTag] == NULL)
-                       {
-                               CurrCard->tagQ_Lst = lastTag;
-                               currTar_Info->LunDiscQ_Idx[lun] = lastTag;
-                               CurrCard->discQ_Tbl[lastTag] = currSCCB;
-                               CurrCard->discQCount++;
-                               break;
-                       }
-               }
-               if(i == QUEUE_DEPTH)
-               {
-                       currTar_Info->TarLUNBusy[lun] = TRUE;
-                       queueSelectFail(CurrCard,p_card);
-                       SGRAM_ACCESS(port);
-                       return;
-               }
-       }
-
-
-
-   auto_loaded = FALSE;
-
-   WR_HARPOON(port+hp_select_id, target);
-   WR_HARPOON(port+hp_gp_reg_3, target);  /* Use by new automation logic */
-
-   if (currSCCB->OperationCode == RESET_COMMAND) {
-      WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+
-                        (currSCCB->Sccb_idmsg & ~DISC_PRIV)));
-
-      WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+NP);
-
-      currSCCB->Sccb_scsimsg = SMDEV_RESET;
-
-      WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT));
-      auto_loaded = TRUE;
-      currSCCB->Sccb_scsistat = SELECT_BDR_ST;
-
-      if (currTar_Info->TarEEValue & EE_SYNC_MASK)
-         {
-              currTar_Info->TarSyncCtrl = 0;
-             currTar_Info->TarStatus &= ~TAR_SYNC_MASK;
-             }
-
-#if defined(WIDE_SCSI)
-
-      if (currTar_Info->TarEEValue & EE_WIDE_SCSI)
-         {
-       currTar_Info->TarStatus &= ~TAR_WIDE_MASK;
-       }
-#endif
-
-      sssyncv(port, target, NARROW_SCSI,currTar_Info);
-      SccbMgrTableInitTarget(p_card, target);
-
-      }
-
-               else if(currSCCB->Sccb_scsistat == ABORT_ST)
-               {
-                       WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+
-                                                               
(currSCCB->Sccb_idmsg & ~DISC_PRIV)));
-
-      WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ);
-
-                       WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+
-                                                               
(((UCHAR)(currSCCB->ControlByte & TAG_TYPE_MASK)
-                                                               >> 6) | 
(UCHAR)0x20)));
-                       WRW_HARPOON((port+SYNC_MSGS+2),
-                                                       
(MPM_OP+AMSG_OUT+currSCCB->Sccb_tag));
-                       WRW_HARPOON((port+SYNC_MSGS+4), (BRH_OP+ALWAYS+NP ));
-
-                       WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT));
-                       auto_loaded = TRUE;
-               
-               }
-
-#if defined(WIDE_SCSI)
-
-
-   else if (!(currTar_Info->TarStatus & WIDE_NEGOCIATED))  {
-      auto_loaded = siwidn(port,p_card);
-      currSCCB->Sccb_scsistat = SELECT_WN_ST;
-      }
-
-#endif
-
-
-   else if (!((currTar_Info->TarStatus & TAR_SYNC_MASK)
-      == SYNC_SUPPORTED))  {
-      auto_loaded = sisyncn(port,p_card, FALSE);
-      currSCCB->Sccb_scsistat = SELECT_SN_ST;
-      }
-
-
-   if (!auto_loaded)
-      {
-
-#if !defined(DOS)
-      if (currSCCB->ControlByte & F_USE_CMD_Q)
-         {
-
-         CurrCard->globalFlags |= F_TAG_STARTED;
-
-         if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK)
-            == TAG_Q_REJECT)
-            {
-            currSCCB->ControlByte &= ~F_USE_CMD_Q;
-
-            /* Fix up the start instruction with a jump to
-               Non-Tag-CMD handling */
-            WRW_HARPOON((port+ID_MSG_STRT),BRH_OP+ALWAYS+NTCMD);
-
-            WRW_HARPOON((port+NON_TAG_ID_MSG),
-                            (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg));
-
-                WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT));
-
-                /* Setup our STATE so we know what happend when
-               the wheels fall off. */
-            currSCCB->Sccb_scsistat = SELECT_ST;
-
-                currTar_Info->TarLUNBusy[lun] = TRUE;
-            }
-
-         else
-            {
-            WRW_HARPOON((port+ID_MSG_STRT), 
(MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg));
-
-            WRW_HARPOON((port+ID_MSG_STRT+2), (MPM_OP+AMSG_OUT+
-                        (((UCHAR)(currSCCB->ControlByte & TAG_TYPE_MASK)
-                        >> 6) | (UCHAR)0x20)));
-
-                               for (i = 1; i < QUEUE_DEPTH; i++)
-                               {
-                                       if (++lastTag >= QUEUE_DEPTH) lastTag = 
1;
-                                       if (CurrCard->discQ_Tbl[lastTag] == 
NULL)
-                                       {
-                                               
WRW_HARPOON((port+ID_MSG_STRT+6),
-                                                       
(MPM_OP+AMSG_OUT+lastTag));
-                                               CurrCard->tagQ_Lst = lastTag;
-                                               currSCCB->Sccb_tag = lastTag;
-                                               CurrCard->discQ_Tbl[lastTag] = 
currSCCB;
-                                               CurrCard->discQCount++;
-                                               break;
-                                       }
-                               }
-
-
-            if ( i == QUEUE_DEPTH )
-               {
-                currTar_Info->TarLUNBusy[lun] = TRUE;
-               queueSelectFail(CurrCard,p_card);
-                                  SGRAM_ACCESS(port);
-                return;
-                }
-
-            currSCCB->Sccb_scsistat = SELECT_Q_ST;
-
-             WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT));
-            }
-         }
-
-      else
-         {
-#endif   /* !DOS */
-
-         WRW_HARPOON((port+ID_MSG_STRT),BRH_OP+ALWAYS+NTCMD);
-
-       WRW_HARPOON((port+NON_TAG_ID_MSG),
-            (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg));
-
-         currSCCB->Sccb_scsistat = SELECT_ST;
-
-         WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT));
-#if !defined(DOS)
-         }
-#endif
-
-
-#if defined(OS2)
-      theCCB = (UCHAR far *)&currSCCB->Cdb[0];
-#else
-      theCCB = (UCHAR *)&currSCCB->Cdb[0];
-#endif
-
-      cdb_reg = port + CMD_STRT;
-
-      for (i=0; i < currSCCB->CdbLength; i++)
-         {
-         WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + *theCCB));
-         cdb_reg +=2;
-         theCCB++;
-         }
-
-      if (currSCCB->CdbLength != TWELVE_BYTE_CMD)
-         WRW_HARPOON(cdb_reg, (BRH_OP+ALWAYS+    NP));
-
-      }  /* auto_loaded */
-
-#if defined(WIDE_SCSI)
-   WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00);
-   WR_HARPOON(port+hp_xferstat, 0x00);
-#endif
-
-   WRW_HARPOON((port+hp_intstat), (PROG_HLT | TIMEOUT | SEL | BUS_FREE));
-
-   WR_HARPOON(port+hp_portctrl_0,(SCSI_PORT));
-
-
-   if (!(currSCCB->Sccb_MGRFlags & F_DEV_SELECTED))
-      {
-      WR_HARPOON(port+hp_scsictrl_0, (SEL_TAR | ENA_ATN | ENA_RESEL | 
ENA_SCAM_SEL));
-      }
-   else
-      {
-
-/*      auto_loaded =  (RD_HARPOON(port+hp_autostart_3) & (UCHAR)0x1F);
-      auto_loaded |= AUTO_IMMED; */
-      auto_loaded = AUTO_IMMED;
-
-      DISABLE_AUTO(port);
-
-      WR_HARPOON(port+hp_autostart_3, auto_loaded);
-      }
-
-   SGRAM_ACCESS(port);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sres
- *
- * Description: Hookup the correct CCB and handle the incoming messages.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void sres(USHORT port, UCHAR p_card, PSCCBcard pCurrCard)
-#else
-void sres(ULONG port, UCHAR p_card, PSCCBcard pCurrCard)
-#endif
-{
-
-#if defined(V302)
-#ifdef DOS
-   UCHAR our_target,message, msgRetryCount;
-   extern UCHAR lun, tag;
-#else
-   UCHAR our_target,message,lun,tag, msgRetryCount;
-#endif
-
-#else  /* V302 */
-   UCHAR our_target, message, lun = 0, tag, msgRetryCount;
-#endif /* V302 */
-
-
-   PSCCBMgr_tar_info currTar_Info;
-       PSCCB currSCCB;
-
-
-
-
-       if(pCurrCard->currentSCCB != NULL)
-       {
-               currTar_Info = 
&sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID];
-               DISABLE_AUTO(port);
-
-
-               WR_HARPOON((port+hp_scsictrl_0),(ENA_RESEL | ENA_SCAM_SEL));
-
-
-               currSCCB = pCurrCard->currentSCCB;
-               if(currSCCB->Sccb_scsistat == SELECT_WN_ST)
-               {
-                       currTar_Info->TarStatus &= ~TAR_WIDE_MASK;
-                       currSCCB->Sccb_scsistat = BUS_FREE_ST;
-               }
-               if(currSCCB->Sccb_scsistat == SELECT_SN_ST)
-               {
-                       currTar_Info->TarStatus &= ~TAR_SYNC_MASK;
-                       currSCCB->Sccb_scsistat = BUS_FREE_ST;
-               }
-               if(((pCurrCard->globalFlags & F_CONLUN_IO) &&
-                       ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-               {
-       currTar_Info->TarLUNBusy[currSCCB->Lun] = FALSE;
-                       if(currSCCB->Sccb_scsistat != ABORT_ST)
-                       {
-                               pCurrCard->discQCount--;
-                               
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[currSCCB->Lun]] 
-                                                                               
                        = NULL;
-                       }
-               }
-               else
-               {
-             currTar_Info->TarLUNBusy[0] = FALSE;
-                       if(currSCCB->Sccb_tag)
-                       {
-                               if(currSCCB->Sccb_scsistat != ABORT_ST)
-                               {
-                                       pCurrCard->discQCount--;
-                                       
pCurrCard->discQ_Tbl[currSCCB->Sccb_tag] = NULL;
-                               }
-                       }else
-                       {
-                               if(currSCCB->Sccb_scsistat != ABORT_ST)
-                               {
-                                       pCurrCard->discQCount--;
-                                       
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = NULL;
-                               }
-                       }
-               }
-
-      queueSelectFail(&BL_Card[p_card],p_card);
-       }
-
-#if defined(WIDE_SCSI)
-       WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00);
-#endif
-
-
-       our_target = (UCHAR)(RD_HARPOON(port+hp_select_id) >> 4);
-       currTar_Info = &sccbMgrTbl[p_card][our_target];
-
-
-       msgRetryCount = 0;
-       do
-       {
-
-#if defined(V302)
-
-               message = GetTarLun(port, p_card, our_target, pCurrCard, &tag, 
&lun);
-
-#else /* V302 */
-
-               currTar_Info = &sccbMgrTbl[p_card][our_target];
-               tag = 0;
-
-
-               while(!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ))
-               {
-                       if (! (RD_HARPOON(port+hp_scsisig) & SCSI_BSY))
-                       {
-
-                               WRW_HARPOON((port+hp_intstat), PHASE);
-                               return;
-                       }
-               }
-
-               WRW_HARPOON((port+hp_intstat), PHASE);
-               if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH)
-               {
-
-                       message = sfm(port,pCurrCard->currentSCCB);
-                       if (message)
-                       {
-
-                               if (message <= (0x80 | LUN_MASK))
-                               {
-                                       lun = message & (UCHAR)LUN_MASK;
-
-#if !defined(DOS)
-                                       if ((currTar_Info->TarStatus & 
TAR_TAG_Q_MASK) == TAG_Q_TRYING)
-                                       {
-                                               if (currTar_Info->TarTagQ_Cnt 
!= 0)
-                                               {
-
-                                                       if 
(!(currTar_Info->TarLUN_CA))
-                                                       {
-                                                               
ACCEPT_MSG(port);    /*Release the ACK for ID msg. */
-
-
-                                                               message = 
sfm(port,pCurrCard->currentSCCB);
-                                                               if (message)
-                                                               {
-                                                                       
ACCEPT_MSG(port);
-                                                               }
-
-                                                               else
-                                                               message = FALSE;
-
-                                                               if(message != 
FALSE)
-                                                               {
-                                                                       tag = 
sfm(port,pCurrCard->currentSCCB);
-
-                                                                       if 
(!(tag)) 
-                                                                               
message = FALSE;
-                                                               }
-
-                                                       } /*C.A. exists! */
-
-                                               } /*End Q cnt != 0 */
-
-                                       } /*End Tag cmds supported! */
-#endif /* !DOS */
-
-                               } /*End valid ID message.  */
-
-                               else
-                               {
-
-                                       ACCEPT_MSG_ATN(port);
-                               }
-
-                       } /* End good id message. */
-
-                       else
-                       {
-
-                               message = FALSE;
-                       }
-               }
-               else
-               {
-                       ACCEPT_MSG_ATN(port);
-
-                  while (!(RDW_HARPOON((port+hp_intstat)) & (PHASE | RESET)) &&
-                         !(RD_HARPOON(port+hp_scsisig) & SCSI_REQ) &&
-                         (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) ;
-
-                       return;
-               }
-       
-#endif /* V302 */
-
-               if(message == FALSE)
-               {
-                       msgRetryCount++;
-                       if(msgRetryCount == 1)
-                       {
-                               SendMsg(port, SMPARITY);
-                       }
-                       else
-                       {
-                               SendMsg(port, SMDEV_RESET);
-
-                               sssyncv(port, our_target, 
NARROW_SCSI,currTar_Info);
-
-                               if (sccbMgrTbl[p_card][our_target].TarEEValue & 
EE_SYNC_MASK) 
-                               {
-                       
-                                       
sccbMgrTbl[p_card][our_target].TarStatus &= ~TAR_SYNC_MASK;
-
-                               }
-
-                               if (sccbMgrTbl[p_card][our_target].TarEEValue & 
EE_WIDE_SCSI) 
-                               {
-
-                                       
sccbMgrTbl[p_card][our_target].TarStatus &= ~TAR_WIDE_MASK;
-                               }
-
-
-                               queueFlushTargSccb(p_card, our_target, 
SCCB_COMPLETE);
-                               SccbMgrTableInitTarget(p_card,our_target);
-                               return;
-                       }
-               }
-       }while(message == FALSE);
-
-
-
-       if(((pCurrCard->globalFlags & F_CONLUN_IO) &&
-               ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)))
-       {
-               currTar_Info->TarLUNBusy[lun] = TRUE;
-               pCurrCard->currentSCCB = 
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[lun]];
-               if(pCurrCard->currentSCCB != NULL)
-               {
-                       ACCEPT_MSG(port);
-               }
-               else 
-               {
-                       ACCEPT_MSG_ATN(port);
-               }
-       }
-       else
-       {
-               currTar_Info->TarLUNBusy[0] = TRUE;
-
-
-               if (tag)
-               {
-                       if (pCurrCard->discQ_Tbl[tag] != NULL)
-                       {
-                               pCurrCard->currentSCCB = 
pCurrCard->discQ_Tbl[tag];
-                               currTar_Info->TarTagQ_Cnt--;
-                               ACCEPT_MSG(port);
-                       }
-                       else
-                       {
-                       ACCEPT_MSG_ATN(port);
-                       }
-               }else
-               {
-                       pCurrCard->currentSCCB = 
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]];
-                       if(pCurrCard->currentSCCB != NULL)
-                       {
-                               ACCEPT_MSG(port);
-                       }
-                       else 
-                       {
-                               ACCEPT_MSG_ATN(port);
-                       }
-               }
-       }
-
-       if(pCurrCard->currentSCCB != NULL)
-       {
-               if(pCurrCard->currentSCCB->Sccb_scsistat == ABORT_ST)
-               {
-               /* During Abort Tag command, the target could have got 
re-selected
-                       and completed the command. Check the select Q and 
remove the CCB
-                       if it is in the Select Q */
-                       queueFindSccb(pCurrCard->currentSCCB, p_card);
-               }
-       }
-
-
-   while (!(RDW_HARPOON((port+hp_intstat)) & (PHASE | RESET)) &&
-         !(RD_HARPOON(port+hp_scsisig) & SCSI_REQ) &&
-         (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) ;
-}
-
-#if defined(V302)
-
-#if defined(DOS)
-UCHAR GetTarLun(USHORT port, UCHAR p_card, UCHAR our_target, PSCCBcard 
pCurrCard, PUCHAR tag, PUCHAR lun)
-#else
-UCHAR GetTarLun(ULONG port, UCHAR p_card, UCHAR our_target, PSCCBcard 
pCurrCard, PUCHAR tag, PUCHAR lun)
-#endif
-{
-   UCHAR message;
-   PSCCBMgr_tar_info currTar_Info;
-
-
-       currTar_Info = &sccbMgrTbl[p_card][our_target];
-       *tag = 0;
-
-
-       while(!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ))
-       {
-               if (! (RD_HARPOON(port+hp_scsisig) & SCSI_BSY))
-               {
-
-                       WRW_HARPOON((port+hp_intstat), PHASE);
-                       return(TRUE);
-               }
-       }
-
-       WRW_HARPOON((port+hp_intstat), PHASE);
-       if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH)
-       {
-
-               message = sfm(port,pCurrCard->currentSCCB);
-               if (message)
-               {
-
-                       if (message <= (0x80 | LUN_MASK))
-                       {
-                               *lun = message & (UCHAR)LUN_MASK;
-
-#if !defined(DOS)
-                               if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) 
== TAG_Q_TRYING)
-                               {
-                                       if (currTar_Info->TarTagQ_Cnt != 0)
-                                       {
-
-                                               if (!(currTar_Info->TarLUN_CA))
-                                               {
-                                                       ACCEPT_MSG(port);    
/*Release the ACK for ID msg. */
-
-
-                                                       message = 
sfm(port,pCurrCard->currentSCCB);
-                                                       if (message)
-                                                       {
-                                                               
ACCEPT_MSG(port);
-                                                       }
-
-                                                       else
-                                                       return(FALSE);
-
-                                                       *tag = 
sfm(port,pCurrCard->currentSCCB);
-
-                                                       if (!(*tag)) 
return(FALSE);
-
-                                               } /*C.A. exists! */
-
-                                       } /*End Q cnt != 0 */
-
-                               } /*End Tag cmds supported! */
-#endif /* !DOS */
-
-                       } /*End valid ID message.  */
-
-                       else
-                       {
-
-                               ACCEPT_MSG_ATN(port);
-                       }
-
-               } /* End good id message. */
-
-               else
-               {
-
-                       return(FALSE);
-               }
-       }
-       else
-       {
-               ACCEPT_MSG_ATN(port);
-               return(TRUE);
-       }
-       return(TRUE);
-}
-
-#endif /* V302 */
-
-#if defined(DOS)
-void SendMsg(USHORT port, UCHAR message)
-#else
-void SendMsg(ULONG port, UCHAR message)
-#endif
-{
-       while(!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ))
-       {
-               if (! (RD_HARPOON(port+hp_scsisig) & SCSI_BSY))
-               {
-
-                       WRW_HARPOON((port+hp_intstat), PHASE);
-                       return;
-               }
-       }
-
-       WRW_HARPOON((port+hp_intstat), PHASE);
-       if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) == S_MSGO_PH)
-       {
-               WRW_HARPOON((port+hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0));
-
-
-               WR_HARPOON(port+hp_portctrl_0, SCSI_BUS_EN);
-
-               WR_HARPOON(port+hp_scsidata_0,message);
-
-               WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));
-
-               ACCEPT_MSG(port);
-
-               WR_HARPOON(port+hp_portctrl_0, 0x00);
-
-               if ((message == SMABORT) || (message == SMDEV_RESET) ||
-                               (message == SMABORT_TAG) )
-               {
-                       while(!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | 
PHASE))) {}
-
-                       if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE)
-                       {
-                       WRW_HARPOON((port+hp_intstat), BUS_FREE);
-                       }
-               }
-       }
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: sdecm
- *
- * Description: Determine the proper responce to the message from the
- *              target device.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void sdecm(UCHAR message, USHORT port, UCHAR p_card)
-#else
-void sdecm(UCHAR message, ULONG port, UCHAR p_card)
-#endif
-{
-       PSCCB currSCCB;
-       PSCCBcard CurrCard;
-       PSCCBMgr_tar_info currTar_Info;
-
-       CurrCard = &BL_Card[p_card];
-       currSCCB = CurrCard->currentSCCB;
-
-       currTar_Info = &sccbMgrTbl[p_card][currSCCB->TargID];
-
-       if (message == SMREST_DATA_PTR)
-       {
-               if (!(currSCCB->Sccb_XferState & F_NO_DATA_YET))
-               {
-                       currSCCB->Sccb_ATC = currSCCB->Sccb_savedATC;
-
-                       hostDataXferRestart(currSCCB);
-               }
-
-               ACCEPT_MSG(port);
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-       }
-
-       else if (message == SMCMD_COMP)
-       {
-
-
-               if (currSCCB->Sccb_scsistat == SELECT_Q_ST)
-               {
-                       currTar_Info->TarStatus &= ~(UCHAR)TAR_TAG_Q_MASK;
-                       currTar_Info->TarStatus |= (UCHAR)TAG_Q_REJECT;
-               }
-
-               ACCEPT_MSG(port);
-
-       }
-
-       else if ((message == SMNO_OP) || (message >= SMIDENT) 
-                       || (message == SMINIT_RECOVERY) || (message == 
SMREL_RECOVERY))
-       {
-
-               ACCEPT_MSG(port);
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-       }
-
-       else if (message == SMREJECT)
-       {
-
-               if ((currSCCB->Sccb_scsistat == SELECT_SN_ST) ||
-                               (currSCCB->Sccb_scsistat == SELECT_WN_ST) ||
-                               ((currTar_Info->TarStatus & TAR_SYNC_MASK) == 
SYNC_TRYING ) ||
-                               ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == 
TAG_Q_TRYING ) )
-
-               {
-                       WRW_HARPOON((port+hp_intstat), BUS_FREE);
-
-                       ACCEPT_MSG(port);
-
-
-                       while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&
-                               (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) 
{}
-
-                       if(currSCCB->Lun == 0x00)
-                       {
-                               if ((currSCCB->Sccb_scsistat == SELECT_SN_ST))
-                               {
-
-                                       currTar_Info->TarStatus |= 
(UCHAR)SYNC_SUPPORTED;
-
-                                       currTar_Info->TarEEValue &= 
~EE_SYNC_MASK;
-                               }
-
-#if defined(WIDE_SCSI)
-                               else if ((currSCCB->Sccb_scsistat == 
SELECT_WN_ST))
-                               {
-
-
-                                       currTar_Info->TarStatus = 
(currTar_Info->TarStatus &
-                                                                               
                        ~WIDE_ENABLED) | WIDE_NEGOCIATED;
-
-                                       currTar_Info->TarEEValue &= 
~EE_WIDE_SCSI;
-
-                               }
-#endif
-
-                               else if ((currTar_Info->TarStatus & 
TAR_TAG_Q_MASK) == TAG_Q_TRYING )
-                               {
-                                       currTar_Info->TarStatus = 
(currTar_Info->TarStatus &
-                                                                               
                        ~(UCHAR)TAR_TAG_Q_MASK) | TAG_Q_REJECT;
-
-
-                                       currSCCB->ControlByte &= ~F_USE_CMD_Q;
-                                       CurrCard->discQCount--;
-                                       CurrCard->discQ_Tbl[currSCCB->Sccb_tag] 
= NULL;
-                                       currSCCB->Sccb_tag = 0x00;
-
-                               }
-                       }
-
-                       if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE)
-                       {
-
-
-                               if(currSCCB->Lun == 0x00)
-                               {
-                                       WRW_HARPOON((port+hp_intstat), 
BUS_FREE);
-                                       CurrCard->globalFlags |= F_NEW_SCCB_CMD;
-                               }
-                       }
-
-                       else 
-                       {
-
-                               if((CurrCard->globalFlags & F_CONLUN_IO) &&
-                                       ((currTar_Info->TarStatus & 
TAR_TAG_Q_MASK) != TAG_Q_TRYING))
-                                       currTar_Info->TarLUNBusy[currSCCB->Lun] 
= TRUE;
-                               else
-                                       currTar_Info->TarLUNBusy[0] = TRUE;
-
-
-                               currSCCB->ControlByte &= ~(UCHAR)F_USE_CMD_Q;
-
-                               WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-
-                       }
-               }
-
-               else
-               {
-                       ACCEPT_MSG(port);
-
-                       while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&
-                               (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) 
{}
-       
-                       if (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))
-                       {
-                               WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-                       }
-               }
-       }
-
-       else if (message == SMEXT)
-       {
-
-               ACCEPT_MSG(port);
-               shandem(port,p_card,currSCCB);
-       }
-
-       else if (message == SMIGNORWR)
-       {
-
-               ACCEPT_MSG(port);          /* ACK the RESIDUE MSG */
-
-               message = sfm(port,currSCCB);
-
-               if(currSCCB->Sccb_scsimsg != SMPARITY)
-                       ACCEPT_MSG(port);
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-       }
-
-
-       else
-       {
-
-               currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL;
-               currSCCB->Sccb_scsimsg = SMREJECT;
-
-               ACCEPT_MSG_ATN(port);
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-       }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: shandem
- *
- * Description: Decide what to do with the extended message.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void shandem(USHORT port, UCHAR p_card, PSCCB pCurrSCCB)
-#else
-void shandem(ULONG port, UCHAR p_card, PSCCB pCurrSCCB)
-#endif
-{
-       UCHAR length,message;
-
-       length = sfm(port,pCurrSCCB);
-       if (length) 
-       {
-
-               ACCEPT_MSG(port);
-               message = sfm(port,pCurrSCCB);
-               if (message) 
-               {
-
-                       if (message == SMSYNC) 
-                       {
-
-                               if (length == 0x03)
-                               {
-
-                                       ACCEPT_MSG(port);
-                                       stsyncn(port,p_card);
-                               }
-                               else 
-                               {
-
-                                       pCurrSCCB->Sccb_scsimsg = SMREJECT;
-                                       ACCEPT_MSG_ATN(port);
-                               }
-                       }
-#if defined(WIDE_SCSI)
-                       else if (message == SMWDTR) 
-                       {
-
-                               if (length == 0x02)
-                               {
-
-                                       ACCEPT_MSG(port);
-                                       stwidn(port,p_card);
-                               }
-                               else 
-                               {
-
-                                       pCurrSCCB->Sccb_scsimsg = SMREJECT;
-                                       ACCEPT_MSG_ATN(port);
-
-                                       WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-                               }
-                       }
-#endif
-                       else 
-                       {
-
-                               pCurrSCCB->Sccb_scsimsg = SMREJECT;
-                               ACCEPT_MSG_ATN(port);
-
-                               WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-                       }
-               }
-               else
-               {
-                       if(pCurrSCCB->Sccb_scsimsg != SMPARITY)
-                               ACCEPT_MSG(port);
-                       WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-               }
-       }else
-       {
-                       if(pCurrSCCB->Sccb_scsimsg == SMPARITY)
-                               WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-       }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sisyncn
- *
- * Description: Read in a message byte from the SCSI bus, and check
- *              for a parity error.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-UCHAR sisyncn(USHORT port, UCHAR p_card, UCHAR syncFlag)
-#else
-UCHAR sisyncn(ULONG port, UCHAR p_card, UCHAR syncFlag)
-#endif
-{
-   PSCCB currSCCB;
-   PSCCBMgr_tar_info currTar_Info;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-   currTar_Info = &sccbMgrTbl[p_card][currSCCB->TargID];
-
-   if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING)) {
-
-
-      WRW_HARPOON((port+ID_MSG_STRT),
-                 (MPM_OP+AMSG_OUT+(currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV)));
-
-      WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ);
-
-      WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT ));
-      WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x03  ));
-      WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMSYNC));
-
-
-      if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB)
-
-        WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 12));
-
-      else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB)
-
-        WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 25));
-
-      else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB)
-
-        WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 50));
-
-      else
-        WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 00));
-
-
-      WRW_HARPOON((port+SYNC_MSGS+8), (RAT_OP                ));
-      WRW_HARPOON((port+SYNC_MSGS+10),(MPM_OP+AMSG_OUT+DEFAULT_OFFSET));
-      WRW_HARPOON((port+SYNC_MSGS+12),(BRH_OP+ALWAYS+NP      ));
-
-
-               if(syncFlag == FALSE)
-               {
-                  WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT));
-             currTar_Info->TarStatus = ((currTar_Info->TarStatus &
-             ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_TRYING);
-               }
-               else
-               {
-                  WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED + 
CMD_ONLY_STRT));
-               }
-
-
-      return(TRUE);
-      }
-
-   else {
-
-      currTar_Info->TarStatus |=        (UCHAR)SYNC_SUPPORTED;
-      currTar_Info->TarEEValue &= ~EE_SYNC_MASK;
-      return(FALSE);
-      }
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: stsyncn
- *
- * Description: The has sent us a Sync Nego message so handle it as
- *              necessary.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void stsyncn(USHORT port, UCHAR p_card)
-#else
-void stsyncn(ULONG port, UCHAR p_card)
-#endif
-{
-   UCHAR sync_msg,offset,sync_reg,our_sync_msg;
-   PSCCB currSCCB;
-   PSCCBMgr_tar_info currTar_Info;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-   currTar_Info = &sccbMgrTbl[p_card][currSCCB->TargID];
-
-   sync_msg = sfm(port,currSCCB);
-
-       if((sync_msg == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY))
-       {
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-               return;
-       }
-
-   ACCEPT_MSG(port);
-
-
-   offset = sfm(port,currSCCB);
-
-       if((offset == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY))
-       {
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-               return;
-       }
-
-   if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB)
-
-      our_sync_msg = 12;              /* Setup our Message to 20mb/s */
-
-   else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB)
-
-      our_sync_msg = 25;              /* Setup our Message to 10mb/s */
-
-   else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB)
-
-      our_sync_msg = 50;              /* Setup our Message to 5mb/s */
-   else
-
-      our_sync_msg = 0;               /* Message = Async */
-
-   if (sync_msg < our_sync_msg) {
-      sync_msg = our_sync_msg;    /*if faster, then set to max. */
-      }
-
-   if (offset == ASYNC)
-      sync_msg = ASYNC;
-
-   if (offset > MAX_OFFSET)
-      offset = MAX_OFFSET;
-
-   sync_reg = 0x00;
-
-   if (sync_msg > 12)
-
-      sync_reg = 0x20;        /* Use 10MB/s */
-
-   if (sync_msg > 25)
-
-      sync_reg = 0x40;        /* Use 6.6MB/s */
-
-   if (sync_msg > 38)
-
-      sync_reg = 0x60;        /* Use 5MB/s */
-
-   if (sync_msg > 50)
-
-      sync_reg = 0x80;        /* Use 4MB/s */
-
-   if (sync_msg > 62)
-
-      sync_reg = 0xA0;        /* Use 3.33MB/s */
-
-   if (sync_msg > 75)
-
-      sync_reg = 0xC0;        /* Use 2.85MB/s */
-
-   if (sync_msg > 87)
-
-      sync_reg = 0xE0;        /* Use 2.5MB/s */
-
-   if (sync_msg > 100) {
-
-      sync_reg = 0x00;        /* Use ASYNC */
-      offset = 0x00;
-      }
-
-
-#if defined(WIDE_SCSI)
-   if (currTar_Info->TarStatus & WIDE_ENABLED)
-
-      sync_reg |= offset;
-
-   else
-
-      sync_reg |= (offset | NARROW_SCSI);
-
-#else
-   sync_reg |= (offset | NARROW_SCSI);
-#endif
-
-   sssyncv(port,currSCCB->TargID,sync_reg,currTar_Info);
-
-
-   if (currSCCB->Sccb_scsistat == SELECT_SN_ST) {
-
-
-      ACCEPT_MSG(port);
-
-      currTar_Info->TarStatus = ((currTar_Info->TarStatus &
-         ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_SUPPORTED);
-
-      WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-      }
-
-   else {
-
-
-      ACCEPT_MSG_ATN(port);
-
-      sisyncr(port,sync_msg,offset);
-
-      currTar_Info->TarStatus = ((currTar_Info->TarStatus &
-         ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_SUPPORTED);
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sisyncr
- *
- * Description: Answer the targets sync message.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void sisyncr(USHORT port,UCHAR sync_pulse, UCHAR offset)
-#else
-void sisyncr(ULONG port,UCHAR sync_pulse, UCHAR offset)
-#endif
-{
-   ARAM_ACCESS(port);
-   WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT ));
-   WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x03  ));
-   WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMSYNC));
-   WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+sync_pulse));
-   WRW_HARPOON((port+SYNC_MSGS+8), (RAT_OP                ));
-   WRW_HARPOON((port+SYNC_MSGS+10),(MPM_OP+AMSG_OUT+offset));
-   WRW_HARPOON((port+SYNC_MSGS+12),(BRH_OP+ALWAYS+NP      ));
-   SGRAM_ACCESS(port);
-
-   WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);
-   WRW_HARPOON((port+hp_intstat), CLR_ALL_INT_1);
-
-   WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED+CMD_ONLY_STRT));
-
-   while (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | AUTO_INT))) {}
-}
-
-
-
-#if defined(WIDE_SCSI)
-
-/*---------------------------------------------------------------------
- *
- * Function: siwidn
- *
- * Description: Read in a message byte from the SCSI bus, and check
- *              for a parity error.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-UCHAR siwidn(USHORT port, UCHAR p_card)
-#else
-UCHAR siwidn(ULONG port, UCHAR p_card)
-#endif
-{
-   PSCCB currSCCB;
-   PSCCBMgr_tar_info currTar_Info;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-   currTar_Info = &sccbMgrTbl[p_card][currSCCB->TargID];
-
-   if (!((currTar_Info->TarStatus & TAR_WIDE_MASK) == WIDE_NEGOCIATED)) {
-
-
-      WRW_HARPOON((port+ID_MSG_STRT),
-                     (MPM_OP+AMSG_OUT+(currSCCB->Sccb_idmsg & 
~(UCHAR)DISC_PRIV)));
-
-      WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ);
-
-      WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT ));
-      WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x02  ));
-      WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMWDTR));
-      WRW_HARPOON((port+SYNC_MSGS+6), (RAT_OP                ));
-      WRW_HARPOON((port+SYNC_MSGS+8), (MPM_OP+AMSG_OUT+ SM16BIT));
-      WRW_HARPOON((port+SYNC_MSGS+10),(BRH_OP+ALWAYS+NP      ));
-
-      WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT));
-
-
-      currTar_Info->TarStatus = ((currTar_Info->TarStatus &
-         ~(UCHAR)TAR_WIDE_MASK) | (UCHAR)WIDE_ENABLED);
-
-      return(TRUE);
-      }
-
-   else {
-
-      currTar_Info->TarStatus = ((currTar_Info->TarStatus &
-               ~(UCHAR)TAR_WIDE_MASK) | WIDE_NEGOCIATED);
-
-      currTar_Info->TarEEValue &= ~EE_WIDE_SCSI;
-      return(FALSE);
-      }
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: stwidn
- *
- * Description: The has sent us a Wide Nego message so handle it as
- *              necessary.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void stwidn(USHORT port, UCHAR p_card)
-#else
-void stwidn(ULONG port, UCHAR p_card)
-#endif
-{
-   UCHAR width;
-   PSCCB currSCCB;
-   PSCCBMgr_tar_info currTar_Info;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-   currTar_Info = &sccbMgrTbl[p_card][currSCCB->TargID];
-
-   width = sfm(port,currSCCB);
-
-       if((width == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY))
-       {
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));
-               return;
-       }
-
-
-   if (!(currTar_Info->TarEEValue & EE_WIDE_SCSI))
-      width = 0;
-
-   if (width) {
-      currTar_Info->TarStatus |= WIDE_ENABLED;
-      width = 0;
-      }
-   else {
-      width = NARROW_SCSI;
-      currTar_Info->TarStatus &= ~WIDE_ENABLED;
-      }
-
-
-   sssyncv(port,currSCCB->TargID,width,currTar_Info);
-
-
-   if (currSCCB->Sccb_scsistat == SELECT_WN_ST)
-       {
-
-
-
-      currTar_Info->TarStatus |=        WIDE_NEGOCIATED;
-
-          if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_SUPPORTED))
-               {
-             ACCEPT_MSG_ATN(port);
-                  ARAM_ACCESS(port);
-               sisyncn(port,p_card, TRUE);
-             currSCCB->Sccb_scsistat = SELECT_SN_ST;
-                  SGRAM_ACCESS(port);
-               }
-               else
-               {
-             ACCEPT_MSG(port);
-                  WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-               }
-   }
-
-   else {
-
-
-      ACCEPT_MSG_ATN(port);
-
-      if (currTar_Info->TarEEValue & EE_WIDE_SCSI)
-        width = SM16BIT;
-      else
-        width = SM8BIT;
-
-      siwidr(port,width);
-
-      currTar_Info->TarStatus |= (WIDE_NEGOCIATED | WIDE_ENABLED);
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: siwidr
- *
- * Description: Answer the targets Wide nego message.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void siwidr(USHORT port, UCHAR width)
-#else
-void siwidr(ULONG port, UCHAR width)
-#endif
-{
-   ARAM_ACCESS(port);
-   WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT ));
-   WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x02  ));
-   WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMWDTR));
-   WRW_HARPOON((port+SYNC_MSGS+6), (RAT_OP                ));
-   WRW_HARPOON((port+SYNC_MSGS+8),(MPM_OP+AMSG_OUT+width));
-   WRW_HARPOON((port+SYNC_MSGS+10),(BRH_OP+ALWAYS+NP      ));
-   SGRAM_ACCESS(port);
-
-   WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);
-   WRW_HARPOON((port+hp_intstat), CLR_ALL_INT_1);
-
-   WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED+CMD_ONLY_STRT));
-
-   while (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | AUTO_INT))) {}
-}
-
-#endif
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sssyncv
- *
- * Description: Write the desired value to the Sync Register for the
- *              ID specified.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void sssyncv(USHORT p_port, UCHAR p_id, UCHAR p_sync_value,PSCCBMgr_tar_info 
currTar_Info)
-#else
-void sssyncv(ULONG p_port, UCHAR p_id, UCHAR p_sync_value,PSCCBMgr_tar_info 
currTar_Info)
-#endif
-{
-   UCHAR index;
-
-   index = p_id;
-
-   switch (index) {
-
-      case 0:
-        index = 12;             /* hp_synctarg_0 */
-        break;
-      case 1:
-        index = 13;             /* hp_synctarg_1 */
-        break;
-      case 2:
-        index = 14;             /* hp_synctarg_2 */
-        break;
-      case 3:
-        index = 15;             /* hp_synctarg_3 */
-        break;
-      case 4:
-        index = 8;              /* hp_synctarg_4 */
-        break;
-      case 5:
-        index = 9;              /* hp_synctarg_5 */
-        break;
-      case 6:
-        index = 10;             /* hp_synctarg_6 */
-        break;
-      case 7:
-        index = 11;             /* hp_synctarg_7 */
-        break;
-      case 8:
-        index = 4;              /* hp_synctarg_8 */
-        break;
-      case 9:
-        index = 5;              /* hp_synctarg_9 */
-        break;
-      case 10:
-        index = 6;              /* hp_synctarg_10 */
-        break;
-      case 11:
-        index = 7;              /* hp_synctarg_11 */
-        break;
-      case 12:
-        index = 0;              /* hp_synctarg_12 */
-        break;
-      case 13:
-        index = 1;              /* hp_synctarg_13 */
-        break;
-      case 14:
-        index = 2;              /* hp_synctarg_14 */
-        break;
-      case 15:
-        index = 3;              /* hp_synctarg_15 */
-
-      }
-
-   WR_HARPOON(p_port+hp_synctarg_base+index, p_sync_value);
-
-       currTar_Info->TarSyncCtrl = p_sync_value;
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sresb
- *
- * Description: Reset the desired card's SCSI bus.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void sresb(USHORT port, UCHAR p_card)
-#else
-void sresb(ULONG port, UCHAR p_card)
-#endif
-{
-   UCHAR scsiID, i;
-
-   PSCCBMgr_tar_info currTar_Info;
-
-   WR_HARPOON(port+hp_page_ctrl,
-      (RD_HARPOON(port+hp_page_ctrl) | G_INT_DISABLE));
-   WRW_HARPOON((port+hp_intstat), CLR_ALL_INT);
-
-   WR_HARPOON(port+hp_scsictrl_0, SCSI_RST);
-
-   scsiID = RD_HARPOON(port+hp_seltimeout);
-   WR_HARPOON(port+hp_seltimeout,TO_5ms);
-   WRW_HARPOON((port+hp_intstat), TIMEOUT);
-
-   WR_HARPOON(port+hp_portctrl_0,(SCSI_PORT | START_TO));
-
-   while (!(RDW_HARPOON((port+hp_intstat)) & TIMEOUT)) {}
-
-   WR_HARPOON(port+hp_seltimeout,scsiID);
-
-   WR_HARPOON(port+hp_scsictrl_0, ENA_SCAM_SEL);
-
-   Wait(port, TO_5ms);
-
-   WRW_HARPOON((port+hp_intstat), CLR_ALL_INT);
-
-   WR_HARPOON(port+hp_int_mask, (RD_HARPOON(port+hp_int_mask) | 0x00));
-
-   for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++)
-      {
-      currTar_Info = &sccbMgrTbl[p_card][scsiID];
-
-      if (currTar_Info->TarEEValue & EE_SYNC_MASK)
-         {
-               currTar_Info->TarSyncCtrl = 0;
-               currTar_Info->TarStatus &= ~TAR_SYNC_MASK;
-             }
-
-      if (currTar_Info->TarEEValue & EE_WIDE_SCSI)
-         {
-       currTar_Info->TarStatus &= ~TAR_WIDE_MASK;
-       }
-
-      sssyncv(port, scsiID, NARROW_SCSI,currTar_Info);
-
-      SccbMgrTableInitTarget(p_card, scsiID);
-      }
-
-   BL_Card[p_card].scanIndex = 0x00;
-   BL_Card[p_card].currentSCCB = NULL;
-   BL_Card[p_card].globalFlags &= ~(F_TAG_STARTED | F_HOST_XFER_ACT 
-                                                                               
                        | F_NEW_SCCB_CMD);
-   BL_Card[p_card].cmdCounter  = 0x00;
-       BL_Card[p_card].discQCount = 0x00;
-   BL_Card[p_card].tagQ_Lst = 0x01; 
-
-       for(i = 0; i < QUEUE_DEPTH; i++)
-               BL_Card[p_card].discQ_Tbl[i] = NULL;
-
-   WR_HARPOON(port+hp_page_ctrl,
-      (RD_HARPOON(port+hp_page_ctrl) & ~G_INT_DISABLE));
-
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: ssenss
- *
- * Description: Setup for the Auto Sense command.
- *
- *---------------------------------------------------------------------*/
-void ssenss(PSCCBcard pCurrCard)
-{
-   UCHAR i;
-   PSCCB currSCCB;
-
-   currSCCB = pCurrCard->currentSCCB;
-
-
-   currSCCB->Save_CdbLen = currSCCB->CdbLength;
-
-   for (i = 0; i < 6; i++) {
-
-      currSCCB->Save_Cdb[i] = currSCCB->Cdb[i];
-      }
-
-   currSCCB->CdbLength = SIX_BYTE_CMD;
-   currSCCB->Cdb[0]    = SCSI_REQUEST_SENSE;
-   currSCCB->Cdb[1]    = currSCCB->Cdb[1] & (UCHAR)0xE0; /*Keep LUN. */
-   currSCCB->Cdb[2]    = 0x00;
-   currSCCB->Cdb[3]    = 0x00;
-   currSCCB->Cdb[4]    = currSCCB->RequestSenseLength;
-   currSCCB->Cdb[5]    = 0x00;
-
-   currSCCB->Sccb_XferCnt = (unsigned long)currSCCB->RequestSenseLength;
-
-   currSCCB->Sccb_ATC = 0x00;
-
-   currSCCB->Sccb_XferState |= F_AUTO_SENSE;
-
-   currSCCB->Sccb_XferState &= ~F_SG_XFER;
-
-   currSCCB->Sccb_idmsg = currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV;
-
-   currSCCB->ControlByte = 0x00;
-
-   currSCCB->Sccb_MGRFlags &= F_STATUSLOADED;
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sxfrp
- *
- * Description: Transfer data into the bit bucket until the device
- *              decides to switch phase.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void sxfrp(USHORT p_port, UCHAR p_card)
-#else
-void sxfrp(ULONG p_port, UCHAR p_card)
-#endif
-{
-   UCHAR curr_phz;
-
-
-   DISABLE_AUTO(p_port);
-
-   if (BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) {
-
-      hostDataXferAbort(p_port,p_card,BL_Card[p_card].currentSCCB);
-
-      }
-
-   /* If the Automation handled the end of the transfer then do not
-      match the phase or we will get out of sync with the ISR.       */
-
-   if (RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | XFER_CNT_0 | AUTO_INT))
-      return;
-
-   WR_HARPOON(p_port+hp_xfercnt_0, 0x00);
-
-   curr_phz = RD_HARPOON(p_port+hp_scsisig) & (UCHAR)S_SCSI_PHZ;
-
-   WRW_HARPOON((p_port+hp_intstat), XFER_CNT_0);
-
-
-   WR_HARPOON(p_port+hp_scsisig, curr_phz);
-
-   while ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET)) &&
-      (curr_phz == (RD_HARPOON(p_port+hp_scsisig) & (UCHAR)S_SCSI_PHZ)) )
-      {
-      if (curr_phz & (UCHAR)SCSI_IOBIT)
-         {
-       WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | SCSI_INBIT));
-
-             if (!(RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY))
-            {
-                RD_HARPOON(p_port+hp_fifodata_0);
-                }
-             }
-      else
-         {
-       WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | HOST_WRT));
-          if (RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY)
-            {
-                WR_HARPOON(p_port+hp_fifodata_0,0xFA);
-                }
-             }
-      } /* End of While loop for padding data I/O phase */
-
-      while ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET)))
-         {
-         if (RD_HARPOON(p_port+hp_scsisig) & SCSI_REQ)
-          break;
-         }
-
-      WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | SCSI_INBIT));
-      while (!(RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY))
-         {
-         RD_HARPOON(p_port+hp_fifodata_0);
-         }
-
-      if ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET)))
-         {
-         WR_HARPOON(p_port+hp_autostart_0, (AUTO_IMMED+DISCONNECT_START));
-         while (!(RDW_HARPOON((p_port+hp_intstat)) & AUTO_INT)) {}
-
-         if (RDW_HARPOON((p_port+hp_intstat)) & (ICMD_COMP | ITAR_DISC))
-          while (!(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RSEL))) ;
-         }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: schkdd
- *
- * Description: Make sure data has been flushed from both FIFOs and abort
- *              the operations if necessary.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void schkdd(USHORT port, UCHAR p_card)
-#else
-void schkdd(ULONG port, UCHAR p_card)
-#endif
-{
-   USHORT TimeOutLoop;
-       UCHAR sPhase;
-
-   PSCCB currSCCB;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-
-
-   if ((currSCCB->Sccb_scsistat != DATA_OUT_ST) &&
-       (currSCCB->Sccb_scsistat != DATA_IN_ST)) {
-      return;
-      }
-
-
-
-   if (currSCCB->Sccb_XferState & F_ODD_BALL_CNT)
-      {
-
-      currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt-1);
-
-      currSCCB->Sccb_XferCnt = 1;
-
-      currSCCB->Sccb_XferState &= ~F_ODD_BALL_CNT;
-      WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00);
-      WR_HARPOON(port+hp_xferstat, 0x00);
-      }
-
-   else
-      {
-
-      currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt;
-
-      currSCCB->Sccb_XferCnt = 0;
-      }
-
-   if ((RDW_HARPOON((port+hp_intstat)) & PARITY) &&
-      (currSCCB->HostStatus == SCCB_COMPLETE)) {
-
-      currSCCB->HostStatus = SCCB_PARITY_ERR;
-      WRW_HARPOON((port+hp_intstat), PARITY);
-      }
-
-
-   hostDataXferAbort(port,p_card,currSCCB);
-
-
-   while (RD_HARPOON(port+hp_scsisig) & SCSI_ACK) {}
-
-   TimeOutLoop = 0;
-
-   while(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)
-      {
-      if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) {
-             return;
-          }
-      if (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F) {
-             break;
-          }
-      if (RDW_HARPOON((port+hp_intstat)) & RESET) {
-             return;
-          }
-      if ((RD_HARPOON(port+hp_scsisig) & SCSI_REQ) || (TimeOutLoop++>0x3000) )
-          break;
-      }
-
-       sPhase = RD_HARPOON(port+hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ);
-   if ((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY))                     ||
-      (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F)                       ||
-      (sPhase == (SCSI_BSY | S_DATAO_PH)) ||
-      (sPhase == (SCSI_BSY | S_DATAI_PH)))
-      {
-
-          WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);
-
-          if (!(currSCCB->Sccb_XferState & F_ALL_XFERRED))
-         {
-             if (currSCCB->Sccb_XferState & F_HOST_XFER_DIR) {
-                phaseDataIn(port,p_card);
-               }
-
-               else {
-              phaseDataOut(port,p_card);
-               }
-               }
-               else
-       {
-               sxfrp(port,p_card);
-               if (!(RDW_HARPOON((port+hp_intstat)) &
-                     (BUS_FREE | ICMD_COMP | ITAR_DISC | RESET)))
-         {
-               WRW_HARPOON((port+hp_intstat), AUTO_INT);
-                  phaseDecode(port,p_card);
-                  }
-          }
-
-   }
-
-   else {
-      WR_HARPOON(port+hp_portctrl_0, 0x00);
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sinits
- *
- * Description: Setup SCCB manager fields in this SCCB.
- *
- *---------------------------------------------------------------------*/
-
-void sinits(PSCCB p_sccb, UCHAR p_card)
-{
-   PSCCBMgr_tar_info currTar_Info;
-
-       if((p_sccb->TargID > MAX_SCSI_TAR) || (p_sccb->Lun > MAX_LUN))
-       {
-               return;
-       }
-   currTar_Info = &sccbMgrTbl[p_card][p_sccb->TargID];
-
-   p_sccb->Sccb_XferState     = 0x00;
-   p_sccb->Sccb_XferCnt       = p_sccb->DataLength;
-
-   if ((p_sccb->OperationCode == SCATTER_GATHER_COMMAND) ||
-      (p_sccb->OperationCode == RESIDUAL_SG_COMMAND)) {
-
-      p_sccb->Sccb_SGoffset   = 0;
-      p_sccb->Sccb_XferState  = F_SG_XFER;
-      p_sccb->Sccb_XferCnt    = 0x00;
-      }
-
-   if (p_sccb->DataLength == 0x00)
-
-      p_sccb->Sccb_XferState |= F_ALL_XFERRED;
-
-   if (p_sccb->ControlByte & F_USE_CMD_Q)
-      {
-      if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT)
-         p_sccb->ControlByte &= ~F_USE_CMD_Q;
-
-      else
-             currTar_Info->TarStatus |= TAG_Q_TRYING;
-      }
-
-/*      For !single SCSI device in system  & device allow Disconnect
-       or command is tag_q type then send Cmd with Disconnect Enable
-       else send Cmd with Disconnect Disable */
-
-/*
-   if (((!(BL_Card[p_card].globalFlags & F_SINGLE_DEVICE)) &&
-      (currTar_Info->TarStatus & TAR_ALLOW_DISC)) ||
-      (currTar_Info->TarStatus & TAG_Q_TRYING)) {
-*/
-   if ((currTar_Info->TarStatus & TAR_ALLOW_DISC) ||
-      (currTar_Info->TarStatus & TAG_Q_TRYING)) {
-      p_sccb->Sccb_idmsg      = (UCHAR)(SMIDENT | DISC_PRIV) | p_sccb->Lun;
-      }
-
-   else {
-
-      p_sccb->Sccb_idmsg      = (UCHAR)SMIDENT | p_sccb->Lun;
-      }
-
-   p_sccb->HostStatus         = 0x00;
-   p_sccb->TargetStatus       = 0x00;
-   p_sccb->Sccb_tag           = 0x00;
-   p_sccb->Sccb_MGRFlags      = 0x00;
-   p_sccb->Sccb_sgseg         = 0x00;
-   p_sccb->Sccb_ATC           = 0x00;
-   p_sccb->Sccb_savedATC      = 0x00;
-/*
-   p_sccb->SccbVirtDataPtr    = 0x00;
-   p_sccb->Sccb_forwardlink   = NULL;
-   p_sccb->Sccb_backlink      = NULL;
- */
-   p_sccb->Sccb_scsistat      = BUS_FREE_ST;
-   p_sccb->SccbStatus         = SCCB_IN_PROCESS;
-   p_sccb->Sccb_scsimsg       = SMNO_OP;
-
-}
-
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   phase.c  $
- *
- *   Description:  Functions to intially handle the SCSI bus phase when
- *                 the target asserts request (and the automation is not
- *                 enabled to handle the situation).
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <scsi2.h>*/
-/*#include <harpoon.h>*/
-
-
-/*
-extern SCCBCARD BL_Card[MAX_CARDS];
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-
-#if defined(OS2)
-   extern void (far *s_PhaseTbl[8]) (ULONG, UCHAR);
-#else
-   #if defined(DOS)
-      extern void (*s_PhaseTbl[8]) (USHORT, UCHAR);
-   #else
-      extern void (*s_PhaseTbl[8]) (ULONG, UCHAR);
-   #endif
-#endif
-*/
-
-/*---------------------------------------------------------------------
- *
- * Function: Phase Decode
- *
- * Description: Determine the phase and call the appropriate function.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void phaseDecode(USHORT p_port, UCHAR p_card)
-#else
-void phaseDecode(ULONG p_port, UCHAR p_card)
-#endif
-{
-   unsigned char phase_ref;
-#if defined(OS2)
-   void (far *phase) (ULONG, UCHAR);
-#else
-   #if defined(DOS)
-      void (*phase) (USHORT, UCHAR);
-   #else
-      void (*phase) (ULONG, UCHAR);
-   #endif
-#endif
-
-
-   DISABLE_AUTO(p_port);
-
-   phase_ref = (UCHAR) (RD_HARPOON(p_port+hp_scsisig) & S_SCSI_PHZ);
-
-   phase = s_PhaseTbl[phase_ref];
-
-   (*phase)(p_port, p_card);           /* Call the correct phase func */
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Data Out Phase
- *
- * Description: Start up both the BusMaster and Xbow.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(OS2)
-void far phaseDataOut(ULONG port, UCHAR p_card)
-#else
-#if defined(DOS)
-void phaseDataOut(USHORT port, UCHAR p_card)
-#else
-void phaseDataOut(ULONG port, UCHAR p_card)
-#endif
-#endif
-{
-
-   PSCCB currSCCB;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-   if (currSCCB == NULL)
-      {
-      return;  /* Exit if No SCCB record */
-      }
-
-   currSCCB->Sccb_scsistat = DATA_OUT_ST;
-   currSCCB->Sccb_XferState &= ~(F_HOST_XFER_DIR | F_NO_DATA_YET);
-
-   WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);
-
-   WRW_HARPOON((port+hp_intstat), XFER_CNT_0);
-
-   WR_HARPOON(port+hp_autostart_0, (END_DATA+END_DATA_START));
-
-   dataXferProcessor(port, &BL_Card[p_card]);
-
-#if defined(NOBUGBUG)
-   if (RDW_HARPOON((port+hp_intstat)) & XFER_CNT_0)
-      WRW_HARPOON((port+hp_intstat), XFER_CNT_0);
-
-#endif
-
-
-   if (currSCCB->Sccb_XferCnt == 0) {
-
-
-      if ((currSCCB->ControlByte & SCCB_DATA_XFER_OUT) &&
-        (currSCCB->HostStatus == SCCB_COMPLETE))
-        currSCCB->HostStatus = SCCB_DATA_OVER_RUN;
-
-      sxfrp(port,p_card);
-      if (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | RESET)))
-           phaseDecode(port,p_card);
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Data In Phase
- *
- * Description: Startup the BusMaster and the XBOW.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(OS2)
-void far phaseDataIn(ULONG port, UCHAR p_card)
-#else
-#if defined(DOS)
-void phaseDataIn(USHORT port, UCHAR p_card)
-#else
-void phaseDataIn(ULONG port, UCHAR p_card)
-#endif
-#endif
-{
-
-   PSCCB currSCCB;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-
-   if (currSCCB == NULL)
-      {
-      return;  /* Exit if No SCCB record */
-      }
-
-
-   currSCCB->Sccb_scsistat = DATA_IN_ST;
-   currSCCB->Sccb_XferState |= F_HOST_XFER_DIR;
-   currSCCB->Sccb_XferState &= ~F_NO_DATA_YET;
-
-   WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);
-
-   WRW_HARPOON((port+hp_intstat), XFER_CNT_0);
-
-   WR_HARPOON(port+hp_autostart_0, (END_DATA+END_DATA_START));
-
-   dataXferProcessor(port, &BL_Card[p_card]);
-
-   if (currSCCB->Sccb_XferCnt == 0) {
-
-
-      if ((currSCCB->ControlByte & SCCB_DATA_XFER_IN) &&
-        (currSCCB->HostStatus == SCCB_COMPLETE))
-        currSCCB->HostStatus = SCCB_DATA_OVER_RUN;
-
-      sxfrp(port,p_card);
-      if (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | RESET)))
-           phaseDecode(port,p_card);
-
-      }
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: Command Phase
- *
- * Description: Load the CDB into the automation and start it up.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(OS2)
-void far phaseCommand(ULONG p_port, UCHAR p_card)
-#else
-#if defined(DOS)
-void phaseCommand(USHORT p_port, UCHAR p_card)
-#else
-void phaseCommand(ULONG p_port, UCHAR p_card)
-#endif
-#endif
-{
-   PSCCB currSCCB;
-#if defined(DOS)
-   USHORT cdb_reg;
-#else
-   ULONG cdb_reg;
-#endif
-   UCHAR i;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-
-   if (currSCCB->OperationCode == RESET_COMMAND) {
-
-      currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL;
-      currSCCB->CdbLength = SIX_BYTE_CMD;
-      }
-
-   WR_HARPOON(p_port+hp_scsisig, 0x00);
-
-   ARAM_ACCESS(p_port);
-
-
-   cdb_reg = p_port + CMD_STRT;
-
-   for (i=0; i < currSCCB->CdbLength; i++) {
-
-      if (currSCCB->OperationCode == RESET_COMMAND)
-
-        WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + 0x00));
-
-      else
-        WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + currSCCB->Cdb[i]));
-      cdb_reg +=2;
-      }
-
-   if (currSCCB->CdbLength != TWELVE_BYTE_CMD)
-      WRW_HARPOON(cdb_reg, (BRH_OP+ALWAYS+    NP));
-
-   WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT));
-
-   currSCCB->Sccb_scsistat = COMMAND_ST;
-
-   WR_HARPOON(p_port+hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT));
-   SGRAM_ACCESS(p_port);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Status phase
- *
- * Description: Bring in the status and command complete message bytes
- *
- *---------------------------------------------------------------------*/
-
-#if defined(OS2)
-void far phaseStatus(ULONG port, UCHAR p_card)
-#else
-#if defined(DOS)
-void phaseStatus(USHORT port, UCHAR p_card)
-#else
-void phaseStatus(ULONG port, UCHAR p_card)
-#endif
-#endif
-{
-   /* Start-up the automation to finish off this command and let the
-      isr handle the interrupt for command complete when it comes in.
-      We could wait here for the interrupt to be generated?
-    */
-
-   WR_HARPOON(port+hp_scsisig, 0x00);
-
-   WR_HARPOON(port+hp_autostart_0, (AUTO_IMMED+END_DATA_START));
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Phase Message Out
- *
- * Description: Send out our message (if we have one) and handle whatever
- *              else is involed.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(OS2)
-void far phaseMsgOut(ULONG port, UCHAR p_card)
-#else
-#if defined(DOS)
-void phaseMsgOut(USHORT port, UCHAR p_card)
-#else
-void phaseMsgOut(ULONG port, UCHAR p_card)
-#endif
-#endif
-{
-       UCHAR message,scsiID;
-       PSCCB currSCCB;
-       PSCCBMgr_tar_info currTar_Info;
-
-       currSCCB = BL_Card[p_card].currentSCCB;
-
-       if (currSCCB != NULL) {
-
-               message = currSCCB->Sccb_scsimsg;
-               scsiID = currSCCB->TargID;
-
-               if (message == SMDEV_RESET) 
-               {
-
-
-                       currTar_Info = &sccbMgrTbl[p_card][scsiID];
-                       currTar_Info->TarSyncCtrl = 0;
-                       sssyncv(port, scsiID, NARROW_SCSI,currTar_Info);
-
-                       if (sccbMgrTbl[p_card][scsiID].TarEEValue & 
EE_SYNC_MASK) 
-                       {
-
-                               sccbMgrTbl[p_card][scsiID].TarStatus &= 
~TAR_SYNC_MASK;
-
-                       }
-
-                       if (sccbMgrTbl[p_card][scsiID].TarEEValue & 
EE_WIDE_SCSI) 
-                       {
-
-                               sccbMgrTbl[p_card][scsiID].TarStatus &= 
~TAR_WIDE_MASK;
-                       }
-
-
-                       queueFlushSccb(p_card,SCCB_COMPLETE);
-                       SccbMgrTableInitTarget(p_card,scsiID);
-               }
-               else if (currSCCB->Sccb_scsistat == ABORT_ST)
-               {
-                       currSCCB->HostStatus = SCCB_COMPLETE;
-                       if(BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] != 
NULL)
-                       {
-                               BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = 
NULL;
-                               sccbMgrTbl[p_card][scsiID].TarTagQ_Cnt--;
-                       }
-                                       
-               }
-
-               else if (currSCCB->Sccb_scsistat < COMMAND_ST) 
-               {
-
-
-                       if(message == SMNO_OP)
-                       {
-                               currSCCB->Sccb_MGRFlags |= F_DEV_SELECTED;
-               
-                               ssel(port,p_card);
-                               return;
-                       }
-               }
-               else 
-               {
-
-
-                       if (message == SMABORT)
-
-                               queueFlushSccb(p_card,SCCB_COMPLETE);
-               }
-
-       }
-       else 
-       {
-               message = SMABORT;
-       }
-
-       WRW_HARPOON((port+hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0));
-
-
-       WR_HARPOON(port+hp_portctrl_0, SCSI_BUS_EN);
-
-       WR_HARPOON(port+hp_scsidata_0,message);
-
-       WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));
-
-       ACCEPT_MSG(port);
-
-       WR_HARPOON(port+hp_portctrl_0, 0x00);
-
-       if ((message == SMABORT) || (message == SMDEV_RESET) || 
-                               (message == SMABORT_TAG) ) 
-       {
-
-               while(!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | PHASE))) {}
-
-               if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) 
-               {
-                       WRW_HARPOON((port+hp_intstat), BUS_FREE);
-
-                       if (currSCCB != NULL) 
-                       {
-
-                               if((BL_Card[p_card].globalFlags & F_CONLUN_IO) 
&&
-                                       
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING))
-                                       
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = FALSE;
-                               else
-                                       
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = FALSE;
-
-                               queueCmdComplete(&BL_Card[p_card],currSCCB, 
p_card);
-                       }
-
-                       else 
-                       {
-                               BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD;
-                       }
-               }
-
-               else 
-               {
-
-                       sxfrp(port,p_card);
-               }
-       }
-
-       else 
-       {
-
-               if(message == SMPARITY)
-               {
-                       currSCCB->Sccb_scsimsg = SMNO_OP;
-                       WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-               }
-               else
-               {
-                       sxfrp(port,p_card);
-               }
-       }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Message In phase
- *
- * Description: Bring in the message and determine what to do with it.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(OS2)
-void far phaseMsgIn(ULONG port, UCHAR p_card)
-#else
-#if defined(DOS)
-void phaseMsgIn(USHORT port, UCHAR p_card)
-#else
-void phaseMsgIn(ULONG port, UCHAR p_card)
-#endif
-#endif
-{
-       UCHAR message;
-       PSCCB currSCCB;
-
-       currSCCB = BL_Card[p_card].currentSCCB;
-
-       if (BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) 
-       {
-
-               phaseChkFifo(port, p_card);
-       }
-
-       message = RD_HARPOON(port+hp_scsidata_0);
-       if ((message == SMDISC) || (message == SMSAVE_DATA_PTR)) 
-       {
-
-               WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+END_DATA_START));
-
-       }
-
-       else 
-       {
-
-               message = sfm(port,currSCCB);
-               if (message) 
-               {
-
-
-                       sdecm(message,port,p_card);
-
-               }
-               else
-               {
-                       if(currSCCB->Sccb_scsimsg != SMPARITY)
-                               ACCEPT_MSG(port);
-                       WR_HARPOON(port+hp_autostart_1, 
(AUTO_IMMED+DISCONNECT_START));
-               }
-       }
-
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Illegal phase
- *
- * Description: Target switched to some illegal phase, so all we can do
- *              is report an error back to the host (if that is possible)
- *              and send an ABORT message to the misbehaving target.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(OS2)
-void far phaseIllegal(ULONG port, UCHAR p_card)
-#else
-#if defined(DOS)
-void phaseIllegal(USHORT port, UCHAR p_card)
-#else
-void phaseIllegal(ULONG port, UCHAR p_card)
-#endif
-#endif
-{
-   PSCCB currSCCB;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-
-   WR_HARPOON(port+hp_scsisig, RD_HARPOON(port+hp_scsisig));
-   if (currSCCB != NULL) {
-
-      currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL;
-      currSCCB->Sccb_scsistat = ABORT_ST;
-      currSCCB->Sccb_scsimsg = SMABORT;
-      }
-
-   ACCEPT_MSG_ATN(port);
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Phase Check FIFO
- *
- * Description: Make sure data has been flushed from both FIFOs and abort
- *              the operations if necessary.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void phaseChkFifo(USHORT port, UCHAR p_card)
-#else
-void phaseChkFifo(ULONG port, UCHAR p_card)
-#endif
-{
-   ULONG xfercnt;
-   PSCCB currSCCB;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-
-   if (currSCCB->Sccb_scsistat == DATA_IN_ST)
-      {
-
-      while((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) &&
-             (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY)) {}
-
-
-      if (!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY))
-         {
-             currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt;
-
-             currSCCB->Sccb_XferCnt = 0;
-
-             if ((RDW_HARPOON((port+hp_intstat)) & PARITY) &&
-                   (currSCCB->HostStatus == SCCB_COMPLETE))
-            {
-                currSCCB->HostStatus = SCCB_PARITY_ERR;
-                WRW_HARPOON((port+hp_intstat), PARITY);
-                }
-
-             hostDataXferAbort(port,p_card,currSCCB);
-
-             dataXferProcessor(port, &BL_Card[p_card]);
-
-             while((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) &&
-                (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY)) {}
-
-             }
-      }  /*End Data In specific code. */
-
-
-
-#if defined(DOS)
-   asm { mov dx,port;
-      add dx,hp_xfercnt_2;
-      in  al,dx;
-      dec dx;
-      xor ah,ah;
-      mov word ptr xfercnt+2,ax;
-      in  al,dx;
-      dec dx;
-      mov ah,al;
-      in  al,dx;
-      mov word ptr xfercnt,ax;
-      }
-#else
-   GET_XFER_CNT(port,xfercnt);
-#endif
-
-
-   WR_HARPOON(port+hp_xfercnt_0, 0x00);
-
-
-   WR_HARPOON(port+hp_portctrl_0, 0x00);
-
-   currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt - xfercnt);
-
-   currSCCB->Sccb_XferCnt = xfercnt;
-
-   if ((RDW_HARPOON((port+hp_intstat)) & PARITY) &&
-      (currSCCB->HostStatus == SCCB_COMPLETE)) {
-
-      currSCCB->HostStatus = SCCB_PARITY_ERR;
-      WRW_HARPOON((port+hp_intstat), PARITY);
-      }
-
-
-   hostDataXferAbort(port,p_card,currSCCB);
-
-
-   WR_HARPOON(port+hp_fifowrite, 0x00);
-   WR_HARPOON(port+hp_fiforead, 0x00);
-   WR_HARPOON(port+hp_xferstat, 0x00);
-
-   WRW_HARPOON((port+hp_intstat), XFER_CNT_0);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Phase Bus Free
- *
- * Description: We just went bus free so figure out if it was
- *              because of command complete or from a disconnect.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void phaseBusFree(USHORT port, UCHAR p_card)
-#else
-void phaseBusFree(ULONG port, UCHAR p_card)
-#endif
-{
-   PSCCB currSCCB;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-
-   if (currSCCB != NULL)
-      {
-
-      DISABLE_AUTO(port);
-
-
-      if (currSCCB->OperationCode == RESET_COMMAND)
-         {
-
-                       if((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-                               
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING))
-                        
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = FALSE;
-                       else
-                        sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 
FALSE;
-
-             queueCmdComplete(&BL_Card[p_card], currSCCB, p_card);
-
-             queueSearchSelect(&BL_Card[p_card],p_card);
-
-             }
-
-      else if(currSCCB->Sccb_scsistat == SELECT_SN_ST)
-             {
-             sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |=
-                                (UCHAR)SYNC_SUPPORTED;
-             sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_SYNC_MASK;
-             }
-
-      else if(currSCCB->Sccb_scsistat == SELECT_WN_ST)
-             {
-             sccbMgrTbl[p_card][currSCCB->TargID].TarStatus =
-                           (sccbMgrTbl[p_card][currSCCB->TargID].
-                  TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED;
-
-             sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_WIDE_SCSI;
-             }
-
-#if !defined(DOS)
-      else if(currSCCB->Sccb_scsistat == SELECT_Q_ST)
-             {
-             /* Make sure this is not a phony BUS_FREE.  If we were
-             reselected or if BUSY is NOT on then this is a
-             valid BUS FREE.  SRR Wednesday, 5/10/1995.     */
-
-             if ((!(RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) ||
-                (RDW_HARPOON((port+hp_intstat)) & RSEL))
-                {
-                sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= 
~TAR_TAG_Q_MASK;
-                sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= TAG_Q_REJECT;
-                }
-
-             else
-            {
-                return;
-                }
-         }
-#endif
-
-      else
-             {
-
-             currSCCB->Sccb_scsistat = BUS_FREE_ST;
-
-         if (!currSCCB->HostStatus)
-                {
-                currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL;
-                }
-
-                       if((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-                               
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING))
-                        
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = FALSE;
-                       else
-                        sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 
FALSE;
-
-             queueCmdComplete(&BL_Card[p_card], currSCCB, p_card);
-             return;
-             }
-
-
-      BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD;
-
-      } /*end if !=null */
-}
-
-
-
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   automate.c  $
- *
- *   Description:  Functions relating to programming the automation of
- *                 the HARPOON.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <scsi2.h>*/
-/*#include <harpoon.h>*/
-
-/*
-extern SCCBCARD BL_Card[MAX_CARDS];
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-extern SCCBCARD BL_Card[MAX_CARDS];
-*/
-
-/*---------------------------------------------------------------------
- *
- * Function: Auto Load Default Map
- *
- * Description: Load the Automation RAM with the defualt map values.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void autoLoadDefaultMap(USHORT p_port)
-#else
-void autoLoadDefaultMap(ULONG p_port)
-#endif
-{
-#if defined(DOS)
-   USHORT map_addr;
-#else
-   ULONG map_addr;
-#endif
-
-   ARAM_ACCESS(p_port);
-   map_addr = p_port + hp_aramBase;
-
-   WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0xC0));  /*ID MESSAGE */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0x20));  /*SIMPLE TAG QUEUEING MSG 
*/
-   map_addr +=2;
-   WRW_HARPOON(map_addr, RAT_OP);                   /*RESET ATTENTION */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0x00));  /*TAG ID MSG */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 0 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 1 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 2 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 3 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 4 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 5 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 6 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 7 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 8 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 9 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 10 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00));  /*CDB BYTE 11 */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CPE_OP+ADATA_OUT+ DINT)); /*JUMP IF DATA OUT */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (TCB_OP+FIFO_0+ DI));     /*JUMP IF NO DATA IN FIFO */
-   map_addr +=2;                                   /*This means AYNC DATA IN */
-   WRW_HARPOON(map_addr, (SSI_OP+   SSI_IDO_STRT)); /*STOP AND INTERRUPT */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CPE_OP+ADATA_IN+DINT));   /*JUMP IF NOT DATA IN PHZ 
*/
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+  ST));    /*IF NOT MSG IN CHECK 4 
DATA IN */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CRD_OP+SDATA+    0x02));  /*SAVE DATA PTR MSG? */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+   DC));    /*GO CHECK FOR DISCONNECT 
MSG */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MRR_OP+SDATA+    D_AR1)); /*SAVE DATA PTRS MSG */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+  ST));    /*IF NOT MSG IN CHECK DATA 
IN */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CRD_OP+SDATA+    0x04));  /*DISCONNECT MSG? */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+   UNKNWN));/*UKNKNOWN MSG */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MRR_OP+SDATA+    D_BUCKET));/*XFER DISCONNECT MSG */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (SSI_OP+          SSI_ITAR_DISC));/*STOP AND 
INTERRUPT */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CPN_OP+ASTATUS+  UNKNWN));/*JUMP IF NOT STATUS PHZ. 
*/
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MRR_OP+SDATA+  D_AR0));   /*GET STATUS BYTE */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+  CC));    /*ERROR IF NOT MSG IN PHZ 
*/
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (CRD_OP+SDATA+    0x00));  /*CHECK FOR CMD COMPLETE 
MSG. */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+   CC));    /*ERROR IF NOT CMD 
COMPLETE MSG. */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (MRR_OP+SDATA+  D_BUCKET));/*GET CMD COMPLETE MSG */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (SSI_OP+       SSI_ICMD_COMP));/*END OF COMMAND */
-   map_addr +=2;
-
-   WRW_HARPOON(map_addr, (SSI_OP+ SSI_IUNKWN));  /*RECEIVED UNKNOWN MSG BYTE */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (SSI_OP+ SSI_INO_CC));  /*NO COMMAND COMPLETE AFTER 
STATUS */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (SSI_OP+ SSI_ITICKLE)); /*BIOS Tickled the Mgr */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (SSI_OP+ SSI_IRFAIL));  /*EXPECTED ID/TAG MESSAGES 
AND */
-   map_addr +=2;                             /* DIDN'T GET ONE */
-   WRW_HARPOON(map_addr, (CRR_OP+AR3+  S_IDREG)); /* comp SCSI SEL ID & AR3*/
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (BRH_OP+EQUAL+   0x00));    /*SEL ID OK then Conti. */
-   map_addr +=2;
-   WRW_HARPOON(map_addr, (SSI_OP+ SSI_INO_CC));  /*NO COMMAND COMPLETE AFTER 
STATUS */
-
-
-
-   SGRAM_ACCESS(p_port);
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: Auto Command Complete
- *
- * Description: Post command back to host and find another command
- *              to execute.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void autoCmdCmplt(USHORT p_port, UCHAR p_card)
-#else
-void autoCmdCmplt(ULONG p_port, UCHAR p_card)
-#endif
-{
-   PSCCB currSCCB;
-   UCHAR status_byte;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-
-   status_byte = RD_HARPOON(p_port+hp_gp_reg_0);
-
-   sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA = FALSE;
-
-   if (status_byte != SSGOOD) {
-
-      if (status_byte == SSQ_FULL) {
-
-
-                       if(((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-                               
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-                       {
-                sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] 
= TRUE;
-                               if(BL_Card[p_card].discQCount != 0)
-                                       BL_Card[p_card].discQCount--;
-                               
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]]
 = NULL;
-                       }
-                       else
-                       {
-                sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = TRUE;
-                               if(currSCCB->Sccb_tag)
-                               {
-                                       if(BL_Card[p_card].discQCount != 0)
-                                               BL_Card[p_card].discQCount--;
-                                       
BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL;
-                               }else
-                               {
-                                       if(BL_Card[p_card].discQCount != 0)
-                                               BL_Card[p_card].discQCount--;
-                                       
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] 
= NULL;
-                               }
-                       }
-
-         currSCCB->Sccb_MGRFlags |= F_STATUSLOADED;
-
-         queueSelectFail(&BL_Card[p_card],p_card);
-
-         return;
-         }
-
-      if(currSCCB->Sccb_scsistat == SELECT_SN_ST)
-         {
-         sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |=
-            (UCHAR)SYNC_SUPPORTED;
-
-             sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_SYNC_MASK;
-         BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD;
-
-                       if(((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-                               
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-                       {
-                sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] 
= TRUE;
-                               if(BL_Card[p_card].discQCount != 0)
-                                       BL_Card[p_card].discQCount--;
-                               
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]]
 = NULL;
-                       }
-                       else
-                       {
-                sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = TRUE;
-                               if(currSCCB->Sccb_tag)
-                               {
-                                       if(BL_Card[p_card].discQCount != 0)
-                                               BL_Card[p_card].discQCount--;
-                                       
BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL;
-                               }else
-                               {
-                                       if(BL_Card[p_card].discQCount != 0)
-                                               BL_Card[p_card].discQCount--;
-                                       
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] 
= NULL;
-                               }
-                       }
-         return;
-
-         }
-
-      if(currSCCB->Sccb_scsistat == SELECT_WN_ST)
-         {
-
-             sccbMgrTbl[p_card][currSCCB->TargID].TarStatus =
-                (sccbMgrTbl[p_card][currSCCB->TargID].
-                TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED;
-
-             sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_WIDE_SCSI;
-         BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD;
-
-                       if(((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-                               
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-                       {
-                sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] 
= TRUE;
-                               if(BL_Card[p_card].discQCount != 0)
-                                       BL_Card[p_card].discQCount--;
-                               
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]]
 = NULL;
-                       }
-                       else
-                       {
-                sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = TRUE;
-                               if(currSCCB->Sccb_tag)
-                               {
-                                       if(BL_Card[p_card].discQCount != 0)
-                                               BL_Card[p_card].discQCount--;
-                                       
BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL;
-                               }else
-                               {
-                                       if(BL_Card[p_card].discQCount != 0)
-                                               BL_Card[p_card].discQCount--;
-                                       
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] 
= NULL;
-                               }
-                       }
-         return;
-      
-         }
-     
-          if (status_byte == SSCHECK) 
-               {
-                       if(BL_Card[p_card].globalFlags & F_DO_RENEGO)
-                       {
-                               if 
(sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue & EE_SYNC_MASK)
-                               {
-                                       
sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_SYNC_MASK;
-                               }
-                               if 
(sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue & EE_WIDE_SCSI)
-                               {
-                                       
sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_WIDE_MASK;
-                               }
-                       }
-               }
-
-      if (!(currSCCB->Sccb_XferState & F_AUTO_SENSE)) {
-
-         currSCCB->SccbStatus = SCCB_ERROR;
-         currSCCB->TargetStatus = status_byte;
-
-         if (status_byte == SSCHECK) {
-
-            sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA
-               = TRUE;
-     
-
-#if (FW_TYPE==_SCCB_MGR_)
-            if (currSCCB->RequestSenseLength != NO_AUTO_REQUEST_SENSE) {
-
-               if (currSCCB->RequestSenseLength == 0)
-                  currSCCB->RequestSenseLength = 14;
-
-               ssenss(&BL_Card[p_card]);
-               BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD;
-
-                                       if(((BL_Card[p_card].globalFlags & 
F_CONLUN_IO) &&
-                                               
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-                                       {
-                                
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = TRUE;
-                                               if(BL_Card[p_card].discQCount 
!= 0)
-                                                       
BL_Card[p_card].discQCount--;
-                                               
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]]
 = NULL;
-                                       }
-                                       else
-                                       {
-                             
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = TRUE;
-                                               if(currSCCB->Sccb_tag)
-                                               {
-                                                       
if(BL_Card[p_card].discQCount != 0)
-                                                               
BL_Card[p_card].discQCount--;
-                                                       
BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL;
-                                               }else
-                                               {
-                                                       
if(BL_Card[p_card].discQCount != 0)
-                                                               
BL_Card[p_card].discQCount--;
-                                                       
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] 
= NULL;
-                                               }
-                                       }
-               return;
-               }
-#else
-                                  if ((!(currSCCB->Sccb_ucb_ptr->UCB_opcode & 
OPC_NO_AUTO_SENSE)) &&
-                                       (currSCCB->RequestSenseLength))
-                                  {
-                                       ssenss(&BL_Card[p_card]);
-                                     BL_Card[p_card].globalFlags |= 
F_NEW_SCCB_CMD;
-
-                                               
if(((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-                                                       
((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-                                               {
-                                  
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = TRUE;
-                                                       
if(BL_Card[p_card].discQCount != 0)
-                                                               
BL_Card[p_card].discQCount--;
-                                                       
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]]
 = NULL;
-                                               }
-                                               else
-                                               {
-                                  
sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = TRUE;
-                                                       if(currSCCB->Sccb_tag)
-                                                       {
-                                                               
if(BL_Card[p_card].discQCount != 0)
-                                                                       
BL_Card[p_card].discQCount--;
-                                                               
BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL;
-                                                       }else
-                                                       {
-                                                               
if(BL_Card[p_card].discQCount != 0)
-                                                                       
BL_Card[p_card].discQCount--;
-                                                               
BL_Card[p_card].discQ_Tbl[sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] 
= NULL;
-                                                       }
-                                               }
-                                     return;
-                                  }
-
-#endif
-            }
-         }
-      }
-
-
-       if((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-               ((sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & 
TAR_TAG_Q_MASK) != TAG_Q_TRYING))
-          sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 
FALSE;
-       else
-          sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = FALSE;
-
-
-   queueCmdComplete(&BL_Card[p_card], currSCCB, p_card);
-}
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   busmstr.c  $
- *
- *   Description:  Functions to start, stop, and abort BusMaster operations.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <scsi2.h>*/
-/*#include <harpoon.h>*/
-
-
-/*
-extern SCCBCARD BL_Card[MAX_CARDS];
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-*/
-
-#define SHORT_WAIT   0x0000000F
-#define LONG_WAIT    0x0000FFFFL
-
-#if defined(BUGBUG)
-void Debug_Load(UCHAR p_card, UCHAR p_bug_data);
-#endif
-
-/*---------------------------------------------------------------------
- *
- * Function: Data Transfer Processor
- *
- * Description: This routine performs two tasks.
- *              (1) Start data transfer by calling HOST_DATA_XFER_START
- *              function.  Once data transfer is started, (2) Depends
- *              on the type of data transfer mode Scatter/Gather mode
- *              or NON Scatter/Gather mode.  In NON Scatter/Gather mode,
- *              this routine checks Sccb_MGRFlag (F_HOST_XFER_ACT bit) for
- *              data transfer done.  In Scatter/Gather mode, this routine
- *              checks bus master command complete and dual rank busy
- *              bit to keep chaining SC transfer command.  Similarly,
- *              in Scatter/Gather mode, it checks Sccb_MGRFlag
- *              (F_HOST_XFER_ACT bit) for data transfer done.
- *              
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void dataXferProcessor(USHORT port, PSCCBcard pCurrCard)
-#else
-void dataXferProcessor(ULONG port, PSCCBcard pCurrCard)
-#endif
-{
-   PSCCB currSCCB;
-
-   currSCCB = pCurrCard->currentSCCB;
-
-      if (currSCCB->Sccb_XferState & F_SG_XFER)
-                       {
-                       if (pCurrCard->globalFlags & F_HOST_XFER_ACT)
-
-                               {
-                       currSCCB->Sccb_sgseg += (UCHAR)SG_BUF_CNT;
-               currSCCB->Sccb_SGoffset = 0x00; 
-                               }
-                       pCurrCard->globalFlags |= F_HOST_XFER_ACT;
-         
-         busMstrSGDataXferStart(port, currSCCB);
-                       }
-
-      else
-                       {
-                       if (!(pCurrCard->globalFlags & F_HOST_XFER_ACT))
-                               {
-                               pCurrCard->globalFlags |= F_HOST_XFER_ACT;
-         
-               busMstrDataXferStart(port, currSCCB);
-               }
-                       }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: BusMaster Scatter Gather Data Transfer Start
- *
- * Description:
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void busMstrSGDataXferStart(USHORT p_port, PSCCB pcurrSCCB)
-#else
-void busMstrSGDataXferStart(ULONG p_port, PSCCB pcurrSCCB)
-#endif
-{
-   ULONG count,addr,tmpSGCnt;
-   UINT sg_index;
-   UCHAR sg_count, i;
-#if defined(DOS)
-   USHORT reg_offset;
-#else
-   ULONG reg_offset;
-#endif
-
-
-   if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) {
-
-      count =  ((ULONG) HOST_RD_CMD)<<24;
-      }
-
-   else {
-      count =  ((ULONG) HOST_WRT_CMD)<<24;
-      }
-
-   sg_count = 0;
-   tmpSGCnt = 0;
-   sg_index = pcurrSCCB->Sccb_sgseg;
-   reg_offset = hp_aramBase;
-
-
-       i = (UCHAR) (RD_HARPOON(p_port+hp_page_ctrl) & 
~(SGRAM_ARAM|SCATTER_EN));
-
-
-       WR_HARPOON(p_port+hp_page_ctrl, i);
-
-   while ((sg_count < (UCHAR)SG_BUF_CNT) &&
-      ((ULONG)(sg_index * (UINT)SG_ELEMENT_SIZE) < pcurrSCCB->DataLength) ) {
-
-#if defined(COMPILER_16_BIT) && !defined(DOS)
-      tmpSGCnt += *(((ULONG far *)pcurrSCCB->DataPointer)+
-         (sg_index * 2));
-
-      count |= *(((ULONG far *)pcurrSCCB->DataPointer)+
-         (sg_index * 2));
-
-      addr = *(((ULONG far *)pcurrSCCB->DataPointer)+
-         ((sg_index * 2) + 1));
-
-#else
-      tmpSGCnt += *(((ULONG *)pcurrSCCB->DataPointer)+
-         (sg_index * 2));
-
-      count |= *(((ULONG *)pcurrSCCB->DataPointer)+
-         (sg_index * 2));
-
-      addr = *(((ULONG *)pcurrSCCB->DataPointer)+
-         ((sg_index * 2) + 1));
-#endif
-
-
-      if ((!sg_count) && (pcurrSCCB->Sccb_SGoffset)) {
-
-         addr += ((count & 0x00FFFFFFL) - pcurrSCCB->Sccb_SGoffset);
-         count = (count & 0xFF000000L) | pcurrSCCB->Sccb_SGoffset;
-
-         tmpSGCnt = count & 0x00FFFFFFL;
-         }
-
-      WR_HARP32(p_port,reg_offset,addr);
-      reg_offset +=4;
-
-      WR_HARP32(p_port,reg_offset,count);
-      reg_offset +=4;
-
-      count &= 0xFF000000L;
-      sg_index++;
-      sg_count++;
-
-      } /*End While */
-
-   pcurrSCCB->Sccb_XferCnt = tmpSGCnt;
-
-   WR_HARPOON(p_port+hp_sg_addr,(sg_count<<4));
-
-   if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) {
-
-      WR_HARP32(p_port,hp_xfercnt_0,tmpSGCnt);
-
-
-      WR_HARPOON(p_port+hp_portctrl_0,(DMA_PORT | SCSI_PORT | SCSI_INBIT));
-      WR_HARPOON(p_port+hp_scsisig, S_DATAI_PH);
-      }
-
-   else {
-
-
-      if ((!(RD_HARPOON(p_port+hp_synctarg_0) & NARROW_SCSI)) &&
-         (tmpSGCnt & 0x000000001))
-         {
-
-         pcurrSCCB->Sccb_XferState |= F_ODD_BALL_CNT;
-         tmpSGCnt--;
-         }
-
-
-      WR_HARP32(p_port,hp_xfercnt_0,tmpSGCnt);
-
-      WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT | DMA_PORT | DMA_RD));
-      WR_HARPOON(p_port+hp_scsisig, S_DATAO_PH);
-      }
-
-
-   WR_HARPOON(p_port+hp_page_ctrl, (UCHAR) (i | SCATTER_EN));
-
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: BusMaster Data Transfer Start
- *
- * Description: 
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void busMstrDataXferStart(USHORT p_port, PSCCB pcurrSCCB)
-#else
-void busMstrDataXferStart(ULONG p_port, PSCCB pcurrSCCB)
-#endif
-{
-   ULONG addr,count;
-
-   if (!(pcurrSCCB->Sccb_XferState & F_AUTO_SENSE)) {
-
-      count = pcurrSCCB->Sccb_XferCnt;
-
-      addr = (ULONG) pcurrSCCB->DataPointer + pcurrSCCB->Sccb_ATC;
-      }
-
-   else {
-      addr = pcurrSCCB->SensePointer;
-      count = pcurrSCCB->RequestSenseLength;
-
-      }
-
-#if defined(DOS)
-   asm { mov dx,p_port;
-         mov ax,word ptr count;
-         add dx,hp_xfer_cnt_lo;
-         out dx,al;
-         inc dx;
-         xchg ah,al
-         out dx,al;
-         inc dx;
-         mov ax,word ptr count+2;
-         out dx,al;
-         inc dx;
-         inc dx;
-         mov ax,word ptr addr;
-         out dx,al;
-         inc dx;
-         xchg ah,al
-         out dx,al;
-         inc dx;
-         mov ax,word ptr addr+2;
-         out dx,al;
-         inc dx;
-         xchg ah,al
-         out dx,al;
-         }
-
-   WR_HARP32(p_port,hp_xfercnt_0,count);
-
-#else
-   HP_SETUP_ADDR_CNT(p_port,addr,count);
-#endif
-
-
-   if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) {
-
-      WR_HARPOON(p_port+hp_portctrl_0,(DMA_PORT | SCSI_PORT | SCSI_INBIT));
-      WR_HARPOON(p_port+hp_scsisig, S_DATAI_PH);
-
-      WR_HARPOON(p_port+hp_xfer_cmd,
-         (XFER_DMA_HOST | XFER_HOST_AUTO | XFER_DMA_8BIT));
-      }
-
-   else {
-
-      WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT | DMA_PORT | DMA_RD));
-      WR_HARPOON(p_port+hp_scsisig, S_DATAO_PH);
-
-      WR_HARPOON(p_port+hp_xfer_cmd,
-         (XFER_HOST_DMA | XFER_HOST_AUTO | XFER_DMA_8BIT));
-
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: BusMaster Timeout Handler
- *
- * Description: This function is called after a bus master command busy time
- *               out is detected.  This routines issue halt state machine
- *               with a software time out for command busy.  If command busy
- *               is still asserted at the end of the time out, it issues
- *               hard abort with another software time out.  It hard abort
- *               command busy is also time out, it'll just give up.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-UCHAR busMstrTimeOut(USHORT p_port)
-#else
-UCHAR busMstrTimeOut(ULONG p_port)
-#endif
-{
-   ULONG timeout;
-
-   timeout = LONG_WAIT;
-
-   WR_HARPOON(p_port+hp_sys_ctrl, HALT_MACH);
-
-   while ((!(RD_HARPOON(p_port+hp_ext_status) & CMD_ABORTED)) && timeout--) {}
-
-   
-   
-   if (RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) {
-      WR_HARPOON(p_port+hp_sys_ctrl, HARD_ABORT);
-
-      timeout = LONG_WAIT;
-      while ((RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {}
-      }
-
-   RD_HARPOON(p_port+hp_int_status);           /*Clear command complete */
-
-   if (RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) {
-      return(TRUE);
-      }
-
-   else {
-      return(FALSE);
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Host Data Transfer Abort
- *
- * Description: Abort any in progress transfer.
- *
- *---------------------------------------------------------------------*/
-#if defined(DOS)
-void hostDataXferAbort(USHORT port, UCHAR p_card, PSCCB pCurrSCCB)
-#else
-void hostDataXferAbort(ULONG port, UCHAR p_card, PSCCB pCurrSCCB)
-#endif
-{
-
-   ULONG timeout;
-   ULONG remain_cnt;
-   UINT sg_ptr;
-
-   BL_Card[p_card].globalFlags &= ~F_HOST_XFER_ACT;
-
-   if (pCurrSCCB->Sccb_XferState & F_AUTO_SENSE) {
-
-
-      if (!(RD_HARPOON(port+hp_int_status) & INT_CMD_COMPL)) {
-
-         WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) | 
FLUSH_XFER_CNTR));
-         timeout = LONG_WAIT;
-
-         while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {}
-
-         WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) & 
~FLUSH_XFER_CNTR));
-
-         if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) {
-
-            if (busMstrTimeOut(port)) {
-
-               if (pCurrSCCB->HostStatus == 0x00)
-
-                  pCurrSCCB->HostStatus = SCCB_BM_ERR;
-
-               }
-
-            if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) 
-
-               if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) 
-
-                  if (pCurrSCCB->HostStatus == 0x00)
-
-                     {
-                     pCurrSCCB->HostStatus = SCCB_BM_ERR;
-#if defined(BUGBUG)
-                     WR_HARPOON(port+hp_dual_addr_lo,
-                        RD_HARPOON(port+hp_ext_status));
-#endif
-                     }
-            }
-         }
-      }
-
-   else if (pCurrSCCB->Sccb_XferCnt) {
-
-      if (pCurrSCCB->Sccb_XferState & F_SG_XFER) {
-
-
-              WR_HARPOON(port+hp_page_ctrl, (RD_HARPOON(port+hp_page_ctrl) &
-            ~SCATTER_EN));
-
-         WR_HARPOON(port+hp_sg_addr,0x00);
-
-         sg_ptr = pCurrSCCB->Sccb_sgseg + SG_BUF_CNT;
-
-         if (sg_ptr > (UINT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE)) {
-
-            sg_ptr = (UINT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE);
-            }
-
-         remain_cnt = pCurrSCCB->Sccb_XferCnt;
-
-         while (remain_cnt < 0x01000000L) {
-
-            sg_ptr--;
-
-#if defined(COMPILER_16_BIT) && !defined(DOS)
-            if (remain_cnt > (ULONG)(*(((ULONG far *)pCurrSCCB->
-               DataPointer) + (sg_ptr * 2)))) {
-
-               remain_cnt -= (ULONG)(*(((ULONG far *)pCurrSCCB->
-                  DataPointer) + (sg_ptr * 2)));
-               }
-
-#else
-            if (remain_cnt > (ULONG)(*(((ULONG *)pCurrSCCB->
-               DataPointer) + (sg_ptr * 2)))) {
-
-               remain_cnt -= (ULONG)(*(((ULONG *)pCurrSCCB->
-                  DataPointer) + (sg_ptr * 2)));
-               }
-#endif
-
-            else {
-
-               break;
-               }
-            }
-
-
-
-         if (remain_cnt < 0x01000000L) {
-
-
-            pCurrSCCB->Sccb_SGoffset = remain_cnt;
-
-            pCurrSCCB->Sccb_sgseg = (USHORT)sg_ptr;
-
-
-            if ((ULONG)(sg_ptr * SG_ELEMENT_SIZE) == pCurrSCCB->DataLength 
-                && (remain_cnt == 0))
-
-               pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED;
-            }
-
-         else {
-
-
-            if (pCurrSCCB->HostStatus == 0x00) {
-
-               pCurrSCCB->HostStatus = SCCB_GROSS_FW_ERR;
-               }
-            }
-         }
-
-
-      if (!(pCurrSCCB->Sccb_XferState & F_HOST_XFER_DIR)) {
-
-
-         if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) {
-
-            busMstrTimeOut(port);
-            }
-
-         else {
-
-            if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) {
-
-               if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) {
-
-                  if (pCurrSCCB->HostStatus == 0x00) {
-
-                     pCurrSCCB->HostStatus = SCCB_BM_ERR;
-#if defined(BUGBUG)
-                     WR_HARPOON(port+hp_dual_addr_lo,
-                        RD_HARPOON(port+hp_ext_status));
-#endif
-                     }
-                  }
-               }
-
-            }
-         }
-
-      else {
-
-
-         if ((RD_HARPOON(port+hp_fifo_cnt)) >= BM_THRESHOLD) {
-
-            timeout = SHORT_WAIT;
-
-            while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) &&
-               ((RD_HARPOON(port+hp_fifo_cnt)) >= BM_THRESHOLD) &&
-               timeout--) {}
-            }
-
-         if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) {
-
-            WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) |
-               FLUSH_XFER_CNTR));
-
-            timeout = LONG_WAIT;
-
-            while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) &&
-               timeout--) {}
-
-            WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) &
-               ~FLUSH_XFER_CNTR));
-
-
-            if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) {
-
-               if (pCurrSCCB->HostStatus == 0x00) {
-
-                  pCurrSCCB->HostStatus = SCCB_BM_ERR;
-                  }
-
-               busMstrTimeOut(port);
-               }
-            }
-
-         if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) {
-
-            if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) {
-
-               if (pCurrSCCB->HostStatus == 0x00) {
-
-                  pCurrSCCB->HostStatus = SCCB_BM_ERR;
-#if defined(BUGBUG)
-                  WR_HARPOON(port+hp_dual_addr_lo,
-                     RD_HARPOON(port+hp_ext_status));
-#endif
-                  }
-               }
-            }
-         }
-
-      }
-
-   else {
-
-
-      if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) {
-
-         timeout = LONG_WAIT;
-
-         while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {}
-
-         if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) {
-
-            if (pCurrSCCB->HostStatus == 0x00) {
-
-               pCurrSCCB->HostStatus = SCCB_BM_ERR;
-               }
-
-            busMstrTimeOut(port);
-            }
-         }
-
-
-      if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) {
-
-         if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) {
-
-            if (pCurrSCCB->HostStatus == 0x00) {
-
-               pCurrSCCB->HostStatus = SCCB_BM_ERR;
-#if defined(BUGBUG)
-               WR_HARPOON(port+hp_dual_addr_lo,
-                  RD_HARPOON(port+hp_ext_status));
-#endif
-               }
-            }
-
-         }
-
-      if (pCurrSCCB->Sccb_XferState & F_SG_XFER) {
-
-         WR_HARPOON(port+hp_page_ctrl, (RD_HARPOON(port+hp_page_ctrl) &
-                 ~SCATTER_EN));
-
-         WR_HARPOON(port+hp_sg_addr,0x00);
-
-         pCurrSCCB->Sccb_sgseg += SG_BUF_CNT;
-
-         pCurrSCCB->Sccb_SGoffset = 0x00; 
-
-
-         if ((ULONG)(pCurrSCCB->Sccb_sgseg * SG_ELEMENT_SIZE) >=
-            pCurrSCCB->DataLength) {
-
-            pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED;
-
-            pCurrSCCB->Sccb_sgseg = (USHORT)(pCurrSCCB->DataLength / 
SG_ELEMENT_SIZE);
-
-            }
-         }
-
-      else {
-
-         if (!(pCurrSCCB->Sccb_XferState & F_AUTO_SENSE))
-
-            pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED;
-         }
-      }
-
-   WR_HARPOON(port+hp_int_mask,(INT_CMD_COMPL | SCSI_INTERRUPT));
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Host Data Transfer Restart
- *
- * Description: Reset the available count due to a restore data
- *              pointers message.
- *
- *---------------------------------------------------------------------*/
-void hostDataXferRestart(PSCCB currSCCB)
-{
-   ULONG data_count;
-   UINT  sg_index;
-#if defined(COMPILER_16_BIT) && !defined(DOS)
-   ULONG far *sg_ptr;
-#else
-   ULONG *sg_ptr;
-#endif
-
-   if (currSCCB->Sccb_XferState & F_SG_XFER) {
-
-      currSCCB->Sccb_XferCnt = 0;
-
-      sg_index = 0xffff;         /*Index by long words into sg list. */
-      data_count = 0;            /*Running count of SG xfer counts. */
-
-#if defined(COMPILER_16_BIT) && !defined(DOS)
-      sg_ptr = (ULONG far *)currSCCB->DataPointer;
-#else
-      sg_ptr = (ULONG *)currSCCB->DataPointer;
-#endif
-
-      while (data_count < currSCCB->Sccb_ATC) {
-
-         sg_index++;
-         data_count += *(sg_ptr+(sg_index * 2));
-         }
-
-      if (data_count == currSCCB->Sccb_ATC) {
-
-         currSCCB->Sccb_SGoffset = 0;
-         sg_index++;
-         }
-
-      else {
-         currSCCB->Sccb_SGoffset = data_count - currSCCB->Sccb_ATC;
-         }
-
-      currSCCB->Sccb_sgseg = (USHORT)sg_index;
-      }
-
-   else {
-      currSCCB->Sccb_XferCnt = currSCCB->DataLength - currSCCB->Sccb_ATC;
-      }
-}
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   scam.c  $
- *
- *   Description:  Functions relating to handling of the SCAM selection
- *                 and the determination of the SCSI IDs to be assigned
- *                 to all perspective SCSI targets.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <scsi2.h>*/
-/*#include <eeprom.h>*/
-/*#include <harpoon.h>*/
-
-
-
-/*
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-extern SCCBCARD BL_Card[MAX_CARDS];
-extern SCCBSCAM_INFO scamInfo[MAX_SCSI_TAR];
-extern NVRAMINFO nvRamInfo[MAX_MB_CARDS];
-#if defined(DOS) || defined(OS2)
-extern UCHAR temp_id_string[ID_STRING_LENGTH];
-#endif
-extern UCHAR scamHAString[];
-*/
-/*---------------------------------------------------------------------
- *
- * Function: scini
- *
- * Description: Setup all data structures necessary for SCAM selection.
- *
- *---------------------------------------------------------------------*/
-
-void scini(UCHAR p_card, UCHAR p_our_id, UCHAR p_power_up)
-{
-
-#if defined(SCAM_LEV_2)
-   UCHAR loser,assigned_id;
-#endif
-#if defined(DOS)
-
-   USHORT p_port;
-#else
-   ULONG p_port;
-#endif
-
-   UCHAR i,k,ScamFlg ;
-   PSCCBcard currCard;
-       PNVRamInfo pCurrNvRam;
-
-   currCard = &BL_Card[p_card];
-   p_port = currCard->ioPort;
-       pCurrNvRam = currCard->pNvRamInfo;
-
-
-       if(pCurrNvRam){
-               ScamFlg = pCurrNvRam->niScamConf;
-               i = pCurrNvRam->niSysConf;
-       }
-       else{
-          ScamFlg = (UCHAR) utilEERead(p_port, SCAM_CONFIG/2);
-          i = (UCHAR)(utilEERead(p_port, (SYSTEM_CONFIG/2)));
-       }
-       if(!(i & 0x02)) /* check if reset bus in AutoSCSI parameter set */
-               return;
-
-   inisci(p_card,p_port, p_our_id);
-
-   /* Force to wait 1 sec after SCSI bus reset. Some SCAM device FW
-      too slow to return to SCAM selection */
-
-   /* if (p_power_up)
-         Wait1Second(p_port);
-      else
-         Wait(p_port, TO_250ms); */
-
-   Wait1Second(p_port);
-
-#if defined(SCAM_LEV_2)
-
-   if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2))
-      {
-      while (!(scarb(p_port,INIT_SELTD))) {}
-
-      scsel(p_port);
-
-      do {
-         scxferc(p_port,SYNC_PTRN);
-         scxferc(p_port,DOM_MSTR);
-         loser = scsendi(p_port,&scamInfo[p_our_id].id_string[0]);
-         } while ( loser == 0xFF );
-
-      scbusf(p_port);
-
-      if ((p_power_up) && (!loser))
-         {
-         sresb(p_port,p_card);
-         Wait(p_port, TO_250ms);
-
-         while (!(scarb(p_port,INIT_SELTD))) {}
-
-         scsel(p_port);
-
-         do {
-            scxferc(p_port, SYNC_PTRN);
-            scxferc(p_port, DOM_MSTR);
-            loser = scsendi(p_port,&scamInfo[p_our_id].
-               id_string[0]);
-            } while ( loser == 0xFF );
-
-         scbusf(p_port);
-         }
-      }
-
-   else
-      {
-      loser = FALSE;
-      }
-
-
-   if (!loser)
-      {
-
-#endif  /* SCAM_LEV_2 */
-
-      scamInfo[p_our_id].state = ID_ASSIGNED;
-
-
-               if (ScamFlg & SCAM_ENABLED)
-               {
-
-             for (i=0; i < MAX_SCSI_TAR; i++)
-                  {
-          if ((scamInfo[i].state == ID_UNASSIGNED) ||
-                  (scamInfo[i].state == ID_UNUSED))
-                     {
-                  if (scsell(p_port,i))
-                  {
-                  scamInfo[i].state = LEGACY;
-                       if ((scamInfo[i].id_string[0] != 0xFF) ||
-                       (scamInfo[i].id_string[1] != 0xFA))
-                        {
-
-                             scamInfo[i].id_string[0] = 0xFF;
-                          scamInfo[i].id_string[1] = 0xFA;
-                                                       if(pCurrNvRam == NULL)
-                                currCard->globalFlags |= F_UPDATE_EEPROM;
-                       }
-                        }
-                  }
-       }
-
-             sresb(p_port,p_card);
-       Wait1Second(p_port);
-         while (!(scarb(p_port,INIT_SELTD))) {}
-         scsel(p_port);
-         scasid(p_card, p_port);
-         }
-
-#if defined(SCAM_LEV_2)
-
-      }
-
-   else if ((loser) && (ScamFlg & SCAM_ENABLED))
-      {
-      scamInfo[p_our_id].id_string[0] = SLV_TYPE_CODE0;
-      assigned_id = FALSE;
-      scwtsel(p_port);
-
-      do {
-         while (scxferc(p_port,0x00) != SYNC_PTRN) {}
-
-         i = scxferc(p_port,0x00);
-         if (i == ASSIGN_ID)
-            {
-            if (!(scsendi(p_port,&scamInfo[p_our_id].id_string[0])))
-                  {
-                  i = scxferc(p_port,0x00);
-                  if (scvalq(i))
-                     {
-                     k = scxferc(p_port,0x00);
-
-                     if (scvalq(k))
-                        {
-                        currCard->ourId =
-                           ((UCHAR)(i<<3)+(k & (UCHAR)7)) & (UCHAR) 0x3F;
-                        inisci(p_card, p_port, p_our_id);
-                        scamInfo[currCard->ourId].state = ID_ASSIGNED;
-                        scamInfo[currCard->ourId].id_string[0]
-                           = SLV_TYPE_CODE0;
-                        assigned_id = TRUE;
-                        }
-                     }
-                  }
-            }
-
-         else if (i == SET_P_FLAG)
-            {
-               if (!(scsendi(p_port,
-                        &scamInfo[p_our_id].id_string[0])))
-                        scamInfo[p_our_id].id_string[0] |= 0x80;
-            }
-         }while (!assigned_id);
-
-      while (scxferc(p_port,0x00) != CFG_CMPLT) {}
-      }
-
-#endif   /* SCAM_LEV_2 */
-   if (ScamFlg & SCAM_ENABLED)
-      {
-      scbusf(p_port);
-      if (currCard->globalFlags & F_UPDATE_EEPROM)
-         {
-         scsavdi(p_card, p_port);
-         currCard->globalFlags &= ~F_UPDATE_EEPROM;
-         }
-      }
-
-
-#if defined(DOS)
-   for (i=0; i < MAX_SCSI_TAR; i++)
-   {
-       if (((ScamFlg & SCAM_ENABLED) && (scamInfo[i].state == LEGACY))
-                       || (i != p_our_id))
-               {
-         scsellDOS(p_port,i);
-             }
-       }
-#endif
-
-/*
-   for (i=0,k=0; i < MAX_SCSI_TAR; i++)
-      {
-      if ((scamInfo[i].state == ID_ASSIGNED) ||
-         (scamInfo[i].state == LEGACY))
-         k++;
-      }
-
-   if (k==2)
-      currCard->globalFlags |= F_SINGLE_DEVICE;
-   else
-      currCard->globalFlags &= ~F_SINGLE_DEVICE;
-*/
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scarb
- *
- * Description: Gain control of the bus and wait SCAM select time (250ms)
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-int scarb(USHORT p_port, UCHAR p_sel_type)
-#else
-int scarb(ULONG p_port, UCHAR p_sel_type)
-#endif
-{
-   if (p_sel_type == INIT_SELTD)
-      {
-
-      while (RD_HARPOON(p_port+hp_scsisig) & (SCSI_SEL | SCSI_BSY)) {}
-
-
-      if (RD_HARPOON(p_port+hp_scsisig) & SCSI_SEL)
-         return(FALSE);
-
-      if (RD_HARPOON(p_port+hp_scsidata_0) != 00)
-         return(FALSE);
-
-      WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | 
SCSI_BSY));
-
-      if (RD_HARPOON(p_port+hp_scsisig) & SCSI_SEL) {
-
-         WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) &
-            ~SCSI_BSY));
-         return(FALSE);
-         }
-
-
-      WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | 
SCSI_SEL));
-
-      if (RD_HARPOON(p_port+hp_scsidata_0) != 00) {
-
-         WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) &
-            ~(SCSI_BSY | SCSI_SEL)));
-         return(FALSE);
-         }
-      }
-
-
-   WR_HARPOON(p_port+hp_clkctrl_0, (RD_HARPOON(p_port+hp_clkctrl_0)
-      & ~ACTdeassert));
-   WR_HARPOON(p_port+hp_scsireset, SCAM_EN);
-   WR_HARPOON(p_port+hp_scsidata_0, 0x00);
-#if defined(WIDE_SCSI)
-   WR_HARPOON(p_port+hp_scsidata_1, 0x00);
-#endif
-   WR_HARPOON(p_port+hp_portctrl_0, SCSI_BUS_EN);
-
-   WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | SCSI_MSG));
-
-   WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig)
-      & ~SCSI_BSY));
-
-   Wait(p_port,TO_250ms);
-
-   return(TRUE);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scbusf
- *
- * Description: Release the SCSI bus and disable SCAM selection.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void scbusf(USHORT p_port)
-#else
-void scbusf(ULONG p_port)
-#endif
-{
-   WR_HARPOON(p_port+hp_page_ctrl,
-      (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE));
-
-
-   WR_HARPOON(p_port+hp_scsidata_0, 0x00);
-
-   WR_HARPOON(p_port+hp_portctrl_0, (RD_HARPOON(p_port+hp_portctrl_0)
-      & ~SCSI_BUS_EN));
-
-   WR_HARPOON(p_port+hp_scsisig, 0x00);
-
-
-   WR_HARPOON(p_port+hp_scsireset,  (RD_HARPOON(p_port+hp_scsireset)
-      & ~SCAM_EN));
-
-   WR_HARPOON(p_port+hp_clkctrl_0, (RD_HARPOON(p_port+hp_clkctrl_0)
-      | ACTdeassert));
-
-#if defined(SCAM_LEV_2)
-   WRW_HARPOON((p_port+hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL));
-#else
-   WRW_HARPOON((p_port+hp_intstat), (BUS_FREE | AUTO_INT));
-#endif
-
-   WR_HARPOON(p_port+hp_page_ctrl,
-      (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE));
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scasid
- *
- * Description: Assign an ID to all the SCAM devices.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void scasid(UCHAR p_card, USHORT p_port)
-#else
-void scasid(UCHAR p_card, ULONG p_port)
-#endif
-{
-#if defined(DOS) || defined(OS2)
-   /* Use external defined in global space area, instead of Stack
-      space. WIN/95 DOS doesnot work TINY mode. The OS doesnot intialize
-      SS equal to DS. Thus the array allocated on stack doesnot get
-      access correctly */
-#else
-   UCHAR temp_id_string[ID_STRING_LENGTH];
-#endif
-
-   UCHAR i,k,scam_id;
-       UCHAR crcBytes[3];
-       PNVRamInfo pCurrNvRam;
-       ushort_ptr pCrcBytes;
-
-       pCurrNvRam = BL_Card[p_card].pNvRamInfo;
-
-   i=FALSE;
-
-   while (!i)
-      {
-
-      for (k=0; k < ID_STRING_LENGTH; k++)
-         {
-         temp_id_string[k] = (UCHAR) 0x00;
-         }
-
-      scxferc(p_port,SYNC_PTRN);
-      scxferc(p_port,ASSIGN_ID);
-
-      if (!(sciso(p_port,&temp_id_string[0])))
-         {
-                       if(pCurrNvRam){
-                               pCrcBytes = (ushort_ptr)&crcBytes[0];
-                               *pCrcBytes = CalcCrc16(&temp_id_string[0]);
-                               crcBytes[2] = CalcLrc(&temp_id_string[0]);
-                               temp_id_string[1] = crcBytes[2];
-                               temp_id_string[2] = crcBytes[0];
-                               temp_id_string[3] = crcBytes[1];
-                               for(k = 4; k < ID_STRING_LENGTH; k++)
-                                       temp_id_string[k] = (UCHAR) 0x00;
-                       }
-         i = scmachid(p_card,temp_id_string);
-
-         if (i == CLR_PRIORITY)
-            {
-            scxferc(p_port,MISC_CODE);
-            scxferc(p_port,CLR_P_FLAG);
-            i = FALSE;  /*Not the last ID yet. */
-            }
-
-         else if (i != NO_ID_AVAIL)
-            {
-            if (i < 8 )
-               scxferc(p_port,ID_0_7);
-            else
-               scxferc(p_port,ID_8_F);
-
-            scam_id = (i & (UCHAR) 0x07);
-
-
-            for (k=1; k < 0x08; k <<= 1)
-               if (!( k & i ))
-                  scam_id += 0x08;        /*Count number of zeros in DB0-3. */
-
-            scxferc(p_port,scam_id);
-
-            i = FALSE;  /*Not the last ID yet. */
-            }
-         }
-
-      else
-         {
-         i = TRUE;
-         }
-
-      }  /*End while */
-
-   scxferc(p_port,SYNC_PTRN);
-   scxferc(p_port,CFG_CMPLT);
-}
-
-
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scsel
- *
- * Description: Select all the SCAM devices.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void scsel(USHORT p_port)
-#else
-void scsel(ULONG p_port)
-#endif
-{
-
-   WR_HARPOON(p_port+hp_scsisig, SCSI_SEL);
-   scwiros(p_port, SCSI_MSG);
-
-   WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY));
-
-
-   WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD));
-   WR_HARPOON(p_port+hp_scsidata_0, (UCHAR)(RD_HARPOON(p_port+hp_scsidata_0) |
-      (UCHAR)(BIT(7)+BIT(6))));
-
-
-   WR_HARPOON(p_port+hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD));
-   scwiros(p_port, SCSI_SEL);
-
-   WR_HARPOON(p_port+hp_scsidata_0, (UCHAR)(RD_HARPOON(p_port+hp_scsidata_0) &
-      ~(UCHAR)BIT(6)));
-   scwirod(p_port, BIT(6));
-
-   WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD));
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scxferc
- *
- * Description: Handshake the p_data (DB4-0) across the bus.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-UCHAR scxferc(USHORT p_port, UCHAR p_data)
-#else
-UCHAR scxferc(ULONG p_port, UCHAR p_data)
-#endif
-{
-   UCHAR curr_data, ret_data;
-
-   curr_data = p_data | BIT(7) | BIT(5);   /*Start with DB7 & DB5 asserted. */
-
-   WR_HARPOON(p_port+hp_scsidata_0, curr_data);
-
-   curr_data &= ~BIT(7);
-
-   WR_HARPOON(p_port+hp_scsidata_0, curr_data);
-
-   scwirod(p_port,BIT(7));              /*Wait for DB7 to be released. */
-       while (!(RD_HARPOON(p_port+hp_scsidata_0) & BIT(5)));
-
-   ret_data = (RD_HARPOON(p_port+hp_scsidata_0) & (UCHAR) 0x1F);
-
-   curr_data |= BIT(6);
-
-   WR_HARPOON(p_port+hp_scsidata_0, curr_data);
-
-   curr_data &= ~BIT(5);
-
-   WR_HARPOON(p_port+hp_scsidata_0, curr_data);
-
-   scwirod(p_port,BIT(5));              /*Wait for DB5 to be released. */
-
-   curr_data &= ~(BIT(4)|BIT(3)|BIT(2)|BIT(1)|BIT(0)); /*Release data bits */
-   curr_data |= BIT(7);
-
-   WR_HARPOON(p_port+hp_scsidata_0, curr_data);
-
-   curr_data &= ~BIT(6);
-
-   WR_HARPOON(p_port+hp_scsidata_0, curr_data);
-
-   scwirod(p_port,BIT(6));              /*Wait for DB6 to be released. */
-
-   return(ret_data);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scsendi
- *
- * Description: Transfer our Identification string to determine if we
- *              will be the dominant master.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-UCHAR scsendi(USHORT p_port, UCHAR p_id_string[])
-#else
-UCHAR scsendi(ULONG p_port, UCHAR p_id_string[])
-#endif
-{
-   UCHAR ret_data,byte_cnt,bit_cnt,defer;
-
-   defer = FALSE;
-
-   for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) {
-
-      for (bit_cnt = 0x80; bit_cnt != 0 ; bit_cnt >>= 1) {
-
-         if (defer)
-            ret_data = scxferc(p_port,00);
-
-         else if (p_id_string[byte_cnt] & bit_cnt)
-
-               ret_data = scxferc(p_port,02);
-
-            else {
-
-               ret_data = scxferc(p_port,01);
-               if (ret_data & 02)
-                  defer = TRUE;
-               }
-
-         if ((ret_data & 0x1C) == 0x10)
-            return(0x00);  /*End of isolation stage, we won! */
-
-         if (ret_data & 0x1C)
-            return(0xFF);
-
-         if ((defer) && (!(ret_data & 0x1F)))
-            return(0x01);  /*End of isolation stage, we lost. */
-
-         } /*bit loop */
-
-      } /*byte loop */
-
-   if (defer)
-      return(0x01);  /*We lost */
-   else
-      return(0);  /*We WON! Yeeessss! */
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: sciso
- *
- * Description: Transfer the Identification string.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-UCHAR sciso(USHORT p_port, UCHAR p_id_string[])
-#else
-UCHAR sciso(ULONG p_port, UCHAR p_id_string[])
-#endif
-{
-   UCHAR ret_data,the_data,byte_cnt,bit_cnt;
-
-   the_data = 0;
-
-   for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) {
-
-      for (bit_cnt = 0; bit_cnt < 8; bit_cnt++) {
-
-         ret_data = scxferc(p_port,0);
-
-         if (ret_data & 0xFC)
-            return(0xFF);
-
-         else {
-
-            the_data <<= 1;
-            if (ret_data & BIT(1)) {
-               the_data |= 1;
-               }
-            }
-
-         if ((ret_data & 0x1F) == 0)
-          {
-/*
-                               if(bit_cnt != 0 || bit_cnt != 8)
-                               {
-                                       byte_cnt = 0;
-                                       bit_cnt = 0;
-                                       scxferc(p_port, SYNC_PTRN);
-                                       scxferc(p_port, ASSIGN_ID);
-                                       continue;
-                               }
-*/
-            if (byte_cnt)
-               return(0x00);
-            else
-               return(0xFF);
-          }
-
-         } /*bit loop */
-
-      p_id_string[byte_cnt] = the_data;
-
-      } /*byte loop */
-
-   return(0);
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scwirod
- *
- * Description: Sample the SCSI data bus making sure the signal has been
- *              deasserted for the correct number of consecutive samples.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void scwirod(USHORT p_port, UCHAR p_data_bit)
-#else
-void scwirod(ULONG p_port, UCHAR p_data_bit)
-#endif
-{
-   UCHAR i;
-
-   i = 0;
-   while ( i < MAX_SCSI_TAR ) {
-
-      if (RD_HARPOON(p_port+hp_scsidata_0) & p_data_bit)
-
-         i = 0;
-
-      else
-
-         i++;
-
-      }
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scwiros
- *
- * Description: Sample the SCSI Signal lines making sure the signal has been
- *              deasserted for the correct number of consecutive samples.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void scwiros(USHORT p_port, UCHAR p_data_bit)
-#else
-void scwiros(ULONG p_port, UCHAR p_data_bit)
-#endif
-{
-   UCHAR i;
-
-   i = 0;
-   while ( i < MAX_SCSI_TAR ) {
-
-      if (RD_HARPOON(p_port+hp_scsisig) & p_data_bit)
-
-         i = 0;
-
-      else
-
-         i++;
-
-      }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scvalq
- *
- * Description: Make sure we received a valid data byte.
- *
- *---------------------------------------------------------------------*/
-
-UCHAR scvalq(UCHAR p_quintet)
-{
-   UCHAR count;
-
-   for (count=1; count < 0x08; count<<=1) {
-      if (!(p_quintet & count))
-         p_quintet -= 0x80;
-      }
-
-   if (p_quintet & 0x18)
-      return(FALSE);
-
-   else
-      return(TRUE);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scsell
- *
- * Description: Select the specified device ID using a selection timeout
- *              less than 4ms.  If somebody responds then it is a legacy
- *              drive and this ID must be marked as such.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-UCHAR scsell(USHORT p_port, UCHAR targ_id)
-#else
-UCHAR scsell(ULONG p_port, UCHAR targ_id)
-#endif
-{
-#if defined(DOS)
-   USHORT i;
-#else
-   ULONG i;
-#endif
-
-   WR_HARPOON(p_port+hp_page_ctrl,
-      (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE));
-
-   ARAM_ACCESS(p_port);
-
-   WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) | SCAM_TIMER));
-   WR_HARPOON(p_port+hp_seltimeout,TO_4ms);
-
-
-   for (i = p_port+CMD_STRT; i < p_port+CMD_STRT+12; i+=2) {
-      WRW_HARPOON(i, (MPM_OP+ACOMMAND));
-      }
-   WRW_HARPOON(i, (BRH_OP+ALWAYS+    NP));
-
-   WRW_HARPOON((p_port+hp_intstat),
-              (RESET | TIMEOUT | SEL | BUS_FREE | AUTO_INT));
-
-   WR_HARPOON(p_port+hp_select_id, targ_id);
-
-   WR_HARPOON(p_port+hp_portctrl_0, SCSI_PORT);
-   WR_HARPOON(p_port+hp_autostart_3, (SELECT | CMD_ONLY_STRT));
-   WR_HARPOON(p_port+hp_scsictrl_0, (SEL_TAR | ENA_RESEL));
-
-
-   while (!(RDW_HARPOON((p_port+hp_intstat)) &
-           (RESET | PROG_HLT | TIMEOUT | AUTO_INT))) {}
-
-   if (RDW_HARPOON((p_port+hp_intstat)) & RESET)
-         Wait(p_port, TO_250ms);
-
-   DISABLE_AUTO(p_port);
-
-   WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) & ~SCAM_TIMER));
-   WR_HARPOON(p_port+hp_seltimeout,TO_290ms);
-
-   SGRAM_ACCESS(p_port);
-
-   if (RDW_HARPOON((p_port+hp_intstat)) & (RESET | TIMEOUT) ) {
-
-      WRW_HARPOON((p_port+hp_intstat),
-                 (RESET | TIMEOUT | SEL | BUS_FREE | PHASE));
-
-      WR_HARPOON(p_port+hp_page_ctrl,
-         (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE));
-
-      return(FALSE);  /*No legacy device */
-      }
-
-   else {
-
-      while(!(RDW_HARPOON((p_port+hp_intstat)) & BUS_FREE)) {
-                               if (RD_HARPOON(p_port+hp_scsisig) & SCSI_REQ)
-                                       {
-                                       WR_HARPOON(p_port+hp_scsisig, (SCSI_ACK 
+ S_ILL_PH));
-                       ACCEPT_MSG(p_port);
-                                       }
-               }
-
-      WRW_HARPOON((p_port+hp_intstat), CLR_ALL_INT_1);
-
-      WR_HARPOON(p_port+hp_page_ctrl,
-         (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE));
-
-      return(TRUE);  /*Found one of them oldies! */
-      }
-}
-
-#if defined(DOS)
-/*---------------------------------------------------------------------
- *
- * Function: scsell for DOS
- *
- * Description: Select the specified device ID using a selection timeout
- *              less than 2ms.  This was specially required to solve
- *              the problem with Plextor 12X CD-ROM drive. This drive
- *                                      was responding the Selection at the 
end of 4ms and 
- *                                      hanging the system.
- *
- *---------------------------------------------------------------------*/
-
-UCHAR scsellDOS(USHORT p_port, UCHAR targ_id)
-{
-   USHORT i;
-
-   WR_HARPOON(p_port+hp_page_ctrl,
-      (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE));
-
-   ARAM_ACCESS(p_port);
-
-   WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) | SCAM_TIMER));
-   WR_HARPOON(p_port+hp_seltimeout,TO_2ms);
-
-
-   for (i = p_port+CMD_STRT; i < p_port+CMD_STRT+12; i+=2) {
-      WRW_HARPOON(i, (MPM_OP+ACOMMAND));
-      }
-   WRW_HARPOON(i, (BRH_OP+ALWAYS+    NP));
-
-   WRW_HARPOON((p_port+hp_intstat),
-              (RESET | TIMEOUT | SEL | BUS_FREE | AUTO_INT));
-
-   WR_HARPOON(p_port+hp_select_id, targ_id);
-
-   WR_HARPOON(p_port+hp_portctrl_0, SCSI_PORT);
-   WR_HARPOON(p_port+hp_autostart_3, (SELECT | CMD_ONLY_STRT));
-   WR_HARPOON(p_port+hp_scsictrl_0, (SEL_TAR | ENA_RESEL));
-
-
-   while (!(RDW_HARPOON((p_port+hp_intstat)) &
-           (RESET | PROG_HLT | TIMEOUT | AUTO_INT))) {}
-
-   if (RDW_HARPOON((p_port+hp_intstat)) & RESET)
-         Wait(p_port, TO_250ms);
-
-   DISABLE_AUTO(p_port);
-
-   WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) & ~SCAM_TIMER));
-   WR_HARPOON(p_port+hp_seltimeout,TO_290ms);
-
-   SGRAM_ACCESS(p_port);
-
-   if (RDW_HARPOON((p_port+hp_intstat)) & (RESET | TIMEOUT) ) {
-
-      WRW_HARPOON((p_port+hp_intstat),
-                 (RESET | TIMEOUT | SEL | BUS_FREE | PHASE));
-
-      WR_HARPOON(p_port+hp_page_ctrl,
-         (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE));
-
-      return(FALSE);  /*No legacy device */
-      }
-
-   else {
-
-      while(!(RDW_HARPOON((p_port+hp_intstat)) & BUS_FREE)) {
-                               if (RD_HARPOON(p_port+hp_scsisig) & SCSI_REQ)
-                                       {
-                                       WR_HARPOON(p_port+hp_scsisig, (SCSI_ACK 
+ S_ILL_PH));
-                       ACCEPT_MSG(p_port);
-                                       }
-               }
-
-      WRW_HARPOON((p_port+hp_intstat), CLR_ALL_INT_1);
-
-      WR_HARPOON(p_port+hp_page_ctrl,
-         (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE));
-
-      return(TRUE);  /*Found one of them oldies! */
-      }
-}
-#endif  /* DOS */
-
-/*---------------------------------------------------------------------
- *
- * Function: scwtsel
- *
- * Description: Wait to be selected by another SCAM initiator.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void scwtsel(USHORT p_port)
-#else
-void scwtsel(ULONG p_port)
-#endif
-{
-   while(!(RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL)) {}
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: inisci
- *
- * Description: Setup the data Structure with the info from the EEPROM.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void inisci(UCHAR p_card, USHORT p_port, UCHAR p_our_id)
-#else
-void inisci(UCHAR p_card, ULONG p_port, UCHAR p_our_id)
-#endif
-{
-   UCHAR i,k,max_id;
-   USHORT ee_data;
-       PNVRamInfo pCurrNvRam;
-
-       pCurrNvRam = BL_Card[p_card].pNvRamInfo;
-
-   if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD)
-      max_id = 0x08;
-
-   else
-      max_id = 0x10;
-
-       if(pCurrNvRam){
-               for(i = 0; i < max_id; i++){
-
-                       for(k = 0; k < 4; k++)
-                               scamInfo[i].id_string[k] = 
pCurrNvRam->niScamTbl[i][k];
-                       for(k = 4; k < ID_STRING_LENGTH; k++)
-                               scamInfo[i].id_string[k] = (UCHAR) 0x00;
-
-             if(scamInfo[i].id_string[0] == 0x00)
-          scamInfo[i].state = ID_UNUSED;  /*Default to unused ID. */
-             else
-             scamInfo[i].state = ID_UNASSIGNED;  /*Default to unassigned ID. */
-
-               }
-       }else {
-          for (i=0; i < max_id; i++)
-          {
-       for (k=0; k < ID_STRING_LENGTH; k+=2)
-                {
-             ee_data = utilEERead(p_port, (USHORT)((EE_SCAMBASE/2) +
-            (USHORT) (i*((USHORT)ID_STRING_LENGTH/2)) + (USHORT)(k/2)));
-               scamInfo[i].id_string[k] = (UCHAR) ee_data;
-                ee_data >>= 8;
-             scamInfo[i].id_string[k+1] = (UCHAR) ee_data;
-          }
-
-             if ((scamInfo[i].id_string[0] == 0x00) ||
-              (scamInfo[i].id_string[0] == 0xFF))
-
-          scamInfo[i].state = ID_UNUSED;  /*Default to unused ID. */
-
-             else
-             scamInfo[i].state = ID_UNASSIGNED;  /*Default to unassigned ID. */
-
-       }
-       }
-       for(k = 0; k < ID_STRING_LENGTH; k++)
-               scamInfo[p_our_id].id_string[k] = scamHAString[k];
-
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: scmachid
- *
- * Description: Match the Device ID string with our values stored in
- *              the EEPROM.
- *
- *---------------------------------------------------------------------*/
-
-UCHAR scmachid(UCHAR p_card, UCHAR p_id_string[])
-{
-
-   UCHAR i,k,match;
-
-
-   for (i=0; i < MAX_SCSI_TAR; i++) {
-
-#if !defined(SCAM_LEV_2)
-      if (scamInfo[i].state == ID_UNASSIGNED)
-         {
-#endif
-         match = TRUE;
-
-         for (k=0; k < ID_STRING_LENGTH; k++)
-            {
-            if (p_id_string[k] != scamInfo[i].id_string[k])
-               match = FALSE;
-            }
-
-         if (match)
-            {
-            scamInfo[i].state = ID_ASSIGNED;
-            return(i);
-            }
-
-#if !defined(SCAM_LEV_2)
-         }
-#endif
-
-      }
-
-
-
-   if (p_id_string[0] & BIT(5))
-      i = 8;
-   else
-      i = MAX_SCSI_TAR;
-
-   if (((p_id_string[0] & 0x06) == 0x02) || ((p_id_string[0] & 0x06) == 0x04))
-      match = p_id_string[1] & (UCHAR) 0x1F;
-   else
-      match = 7;
-
-   while (i > 0)
-      {
-      i--;
-
-      if (scamInfo[match].state == ID_UNUSED)
-         {
-         for (k=0; k < ID_STRING_LENGTH; k++)
-            {
-            scamInfo[match].id_string[k] = p_id_string[k];
-            }
-
-         scamInfo[match].state = ID_ASSIGNED;
-
-                       if(BL_Card[p_card].pNvRamInfo == NULL)
-                BL_Card[p_card].globalFlags |= F_UPDATE_EEPROM;
-         return(match);
-
-         }
-
-
-      match--;
-
-      if (match == 0xFF)
-       {
-         if (p_id_string[0] & BIT(5))
-            match = 7;
-         else
-            match = MAX_SCSI_TAR-1;
-       }
-      }
-
-
-
-   if (p_id_string[0] & BIT(7))
-      {
-      return(CLR_PRIORITY);
-      }
-
-
-   if (p_id_string[0] & BIT(5))
-      i = 8;
-   else
-      i = MAX_SCSI_TAR;
-
-   if (((p_id_string[0] & 0x06) == 0x02) || ((p_id_string[0] & 0x06) == 0x04))
-      match = p_id_string[1] & (UCHAR) 0x1F;
-   else
-      match = 7;
-
-   while (i > 0)
-      {
-
-      i--;
-
-      if (scamInfo[match].state == ID_UNASSIGNED)
-         {
-         for (k=0; k < ID_STRING_LENGTH; k++)
-            {
-            scamInfo[match].id_string[k] = p_id_string[k];
-            }
-
-         scamInfo[match].id_string[0] |= BIT(7);
-         scamInfo[match].state = ID_ASSIGNED;
-                       if(BL_Card[p_card].pNvRamInfo == NULL)
-                BL_Card[p_card].globalFlags |= F_UPDATE_EEPROM;
-         return(match);
-
-         }
-
-
-      match--;
-
-      if (match == 0xFF)
-       {
-         if (p_id_string[0] & BIT(5))
-            match = 7;
-         else
-            match = MAX_SCSI_TAR-1;
-       }
-      }
-
-   return(NO_ID_AVAIL);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: scsavdi
- *
- * Description: Save off the device SCAM ID strings.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void scsavdi(UCHAR p_card, USHORT p_port)
-#else
-void scsavdi(UCHAR p_card, ULONG p_port)
-#endif
-{
-   UCHAR i,k,max_id;
-   USHORT ee_data,sum_data;
-
-
-   sum_data = 0x0000;
-
-   for (i = 1; i < EE_SCAMBASE/2; i++)
-      {
-      sum_data += utilEERead(p_port, i);
-      }
-
-
-   utilEEWriteOnOff(p_port,1);   /* Enable write access to the EEPROM */
-
-   if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD)
-      max_id = 0x08;
-
-   else
-      max_id = 0x10;
-
-   for (i=0; i < max_id; i++)
-      {
-
-      for (k=0; k < ID_STRING_LENGTH; k+=2)
-         {
-         ee_data = scamInfo[i].id_string[k+1];
-         ee_data <<= 8;
-         ee_data |= scamInfo[i].id_string[k];
-         sum_data += ee_data;
-         utilEEWrite(p_port, ee_data, (USHORT)((EE_SCAMBASE/2) +
-            (USHORT)(i*((USHORT)ID_STRING_LENGTH/2)) + (USHORT)(k/2)));
-         }
-      }
-
-
-   utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM/2);
-   utilEEWriteOnOff(p_port,0);   /* Turn off write access */
-}
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   diagnose.c  $
- *
- *   Description:  Diagnostic funtions for testing the integrity of
- *                 the HARPOON.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <eeprom.h>*/
-/*#include <harpoon.h>*/
-
-/*---------------------------------------------------------------------
- *
- * Function: XbowInit
- *
- * Description: Setup the Xbow for normal operation.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void XbowInit(USHORT port, UCHAR ScamFlg)
-#else
-void XbowInit(ULONG port, UCHAR ScamFlg)
-#endif
-{
-UCHAR i;
-
-       i = RD_HARPOON(port+hp_page_ctrl);
-       WR_HARPOON(port+hp_page_ctrl, (UCHAR) (i | G_INT_DISABLE));
-
-   WR_HARPOON(port+hp_scsireset,0x00);
-   WR_HARPOON(port+hp_portctrl_1,HOST_MODE8);
-
-   WR_HARPOON(port+hp_scsireset,(DMA_RESET | HPSCSI_RESET | PROG_RESET | \
-                                FIFO_CLR));
-
-   WR_HARPOON(port+hp_scsireset,SCSI_INI);
-
-   WR_HARPOON(port+hp_clkctrl_0,CLKCTRL_DEFAULT);
-
-   WR_HARPOON(port+hp_scsisig,0x00);         /*  Clear any signals we might */
-   WR_HARPOON(port+hp_scsictrl_0,ENA_SCAM_SEL);
-
-   WRW_HARPOON((port+hp_intstat), CLR_ALL_INT);
-
-#if defined(SCAM_LEV_2)
-   default_intena = RESET | RSEL | PROG_HLT | TIMEOUT |
-                   BUS_FREE | XFER_CNT_0 | AUTO_INT;
-
-   if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2))
-               default_intena |= SCAM_SEL;
-
-#else
-   default_intena = RESET | RSEL | PROG_HLT | TIMEOUT |
-                   BUS_FREE | XFER_CNT_0 | AUTO_INT;
-#endif
-   WRW_HARPOON((port+hp_intena), default_intena);
-
-   WR_HARPOON(port+hp_seltimeout,TO_290ms);
-
-   /* Turn on SCSI_MODE8 for narrow cards to fix the
-      strapping issue with the DUAL CHANNEL card */
-   if (RD_HARPOON(port+hp_page_ctrl) & NARROW_SCSI_CARD)
-      WR_HARPOON(port+hp_addstat,SCSI_MODE8);
-
-#if defined(NO_BIOS_OPTION)
-
-   WR_HARPOON(port+hp_synctarg_0,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_1,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_2,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_3,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_4,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_5,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_6,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_7,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_8,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_9,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_10,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_11,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_12,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_13,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_14,NARROW_SCSI);
-   WR_HARPOON(port+hp_synctarg_15,NARROW_SCSI);
-
-#endif
-       WR_HARPOON(port+hp_page_ctrl, i);
-
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: BusMasterInit
- *
- * Description: Initialize the BusMaster for normal operations.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void BusMasterInit(USHORT p_port)
-#else
-void BusMasterInit(ULONG p_port)
-#endif
-{
-
-
-   WR_HARPOON(p_port+hp_sys_ctrl, DRVR_RST);
-   WR_HARPOON(p_port+hp_sys_ctrl, 0x00);
-
-   WR_HARPOON(p_port+hp_host_blk_cnt, XFER_BLK64);
-
-
-   WR_HARPOON(p_port+hp_bm_ctrl, (BMCTRL_DEFAULT));
-
-   WR_HARPOON(p_port+hp_ee_ctrl, (SCSI_TERM_ENA_H));
-
-
-#if defined(NT)
-
-   WR_HARPOON(p_port+hp_pci_cmd_cfg, (RD_HARPOON(p_port+hp_pci_cmd_cfg)
-      & ~MEM_SPACE_ENA));
-
-#endif
-
-   RD_HARPOON(p_port+hp_int_status);        /*Clear interrupts. */
-   WR_HARPOON(p_port+hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT));
-   WR_HARPOON(p_port+hp_page_ctrl, (RD_HARPOON(p_port+hp_page_ctrl) &
-      ~SCATTER_EN));
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: DiagXbow
- *
- * Description: Test Xbow integrity.  Non-zero return indicates an error.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-int DiagXbow(USHORT port)
-#else
-int DiagXbow(ULONG port)
-#endif
-{
-   unsigned char fifo_cnt,loop_cnt;
-
-   unsigned char fifodata[5];
-   fifodata[0] = 0x00;
-   fifodata[1] = 0xFF;
-   fifodata[2] = 0x55;
-   fifodata[3] = 0xAA;
-   fifodata[4] = 0x00;
-
-
-   WRW_HARPOON((port+hp_intstat), CLR_ALL_INT);
-   WRW_HARPOON((port+hp_intena), 0x0000);
-
-   WR_HARPOON(port+hp_seltimeout,TO_5ms);
-
-   WR_HARPOON(port+hp_portctrl_0,START_TO);
-
-
-   for(fifodata[4] = 0x01; fifodata[4] != (UCHAR) 0; fifodata[4] = fifodata[4] 
<< 1) {
-
-      WR_HARPOON(port+hp_selfid_0,fifodata[4]);
-      WR_HARPOON(port+hp_selfid_1,fifodata[4]);
-
-      if ((RD_HARPOON(port+hp_selfid_0) != fifodata[4]) ||
-          (RD_HARPOON(port+hp_selfid_1) != fifodata[4]))
-         return(1);
-      }
-
-
-   for(loop_cnt = 0; loop_cnt < 4; loop_cnt++) {
-
-      WR_HARPOON(port+hp_portctrl_0,(HOST_PORT | HOST_WRT | START_TO));
-
-
-      for (fifo_cnt = 0; fifo_cnt < FIFO_LEN; fifo_cnt++) {
-
-         WR_HARPOON(port+hp_fifodata_0, fifodata[loop_cnt]);
-         }
-
-
-      if (!(RD_HARPOON(port+hp_xferstat) & FIFO_FULL))
-         return(1);
-
-
-      WR_HARPOON(port+hp_portctrl_0,(HOST_PORT | START_TO));
-
-      for (fifo_cnt = 0; fifo_cnt < FIFO_LEN; fifo_cnt++) {
-
-         if (RD_HARPOON(port+hp_fifodata_0) != fifodata[loop_cnt])
-            return(1);
-         }
-
-
-      if (!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY))
-         return(1);
-      }
-
-
-   while(!(RDW_HARPOON((port+hp_intstat)) & TIMEOUT)) {}
-
-
-   WR_HARPOON(port+hp_seltimeout,TO_290ms);
-
-   WRW_HARPOON((port+hp_intstat), CLR_ALL_INT);
-
-   WRW_HARPOON((port+hp_intena), default_intena);
-
-   return(0);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: DiagBusMaster
- *
- * Description: Test BusMaster integrity.  Non-zero return indicates an
- *              error.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-int DiagBusMaster(USHORT port)
-#else
-int DiagBusMaster(ULONG port)
-#endif
-{
-   UCHAR testdata;
-
-   for(testdata = (UCHAR) 1; testdata != (UCHAR)0; testdata = testdata << 1) {
-
-      WR_HARPOON(port+hp_xfer_cnt_lo,testdata);
-      WR_HARPOON(port+hp_xfer_cnt_mi,testdata);
-      WR_HARPOON(port+hp_xfer_cnt_hi,testdata);
-      WR_HARPOON(port+hp_host_addr_lo,testdata);
-      WR_HARPOON(port+hp_host_addr_lmi,testdata);
-      WR_HARPOON(port+hp_host_addr_hmi,testdata);
-      WR_HARPOON(port+hp_host_addr_hi,testdata);
-
-      if ((RD_HARPOON(port+hp_xfer_cnt_lo) != testdata)   ||
-          (RD_HARPOON(port+hp_xfer_cnt_mi) != testdata)   ||
-          (RD_HARPOON(port+hp_xfer_cnt_hi) != testdata)   ||
-          (RD_HARPOON(port+hp_host_addr_lo) != testdata)  ||
-          (RD_HARPOON(port+hp_host_addr_lmi) != testdata) ||
-          (RD_HARPOON(port+hp_host_addr_hmi) != testdata) ||
-          (RD_HARPOON(port+hp_host_addr_hi) != testdata))
-
-         return(1);
-      }
-   RD_HARPOON(port+hp_int_status);        /*Clear interrupts. */
-   return(0);
-}
-
-
-
-/*---------------------------------------------------------------------
- *
- * Function: DiagEEPROM
- *
- * Description: Verfiy checksum and 'Key' and initialize the EEPROM if
- *              neccessary.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void DiagEEPROM(USHORT p_port)
-#else
-void DiagEEPROM(ULONG p_port)
-#endif
-
-{
-   USHORT index,temp,max_wd_cnt;
-
-   if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD)
-      max_wd_cnt = EEPROM_WD_CNT;
-   else
-      max_wd_cnt = EEPROM_WD_CNT * 2;
-
-   temp = utilEERead(p_port, FW_SIGNATURE/2);
-
-   if (temp == 0x4641) {
-
-      for (index = 2; index < max_wd_cnt; index++) {
-
-         temp += utilEERead(p_port, index);
-
-         }
-
-      if (temp == utilEERead(p_port, EEPROM_CHECK_SUM/2)) {
-
-         return;          /*EEPROM is Okay so return now! */
-         }
-      }
-
-
-   utilEEWriteOnOff(p_port,(UCHAR)1);
-
-   for (index = 0; index < max_wd_cnt; index++) {
-
-      utilEEWrite(p_port, 0x0000, index);
-      }
-
-   temp = 0;
-
-   utilEEWrite(p_port, 0x4641, FW_SIGNATURE/2);
-   temp += 0x4641;
-   utilEEWrite(p_port, 0x3920, MODEL_NUMB_0/2);
-   temp += 0x3920;
-   utilEEWrite(p_port, 0x3033, MODEL_NUMB_2/2);
-   temp += 0x3033;
-   utilEEWrite(p_port, 0x2020, MODEL_NUMB_4/2);
-   temp += 0x2020;
-   utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG/2);
-   temp += 0x70D3;
-   utilEEWrite(p_port, 0x0010, BIOS_CONFIG/2);
-   temp += 0x0010;
-   utilEEWrite(p_port, 0x0003, SCAM_CONFIG/2);
-   temp += 0x0003;
-   utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID/2);
-   temp += 0x0007;
-
-   utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN/2);
-   temp += 0x0000;
-   utilEEWrite(p_port, 0x0000, SEND_START_ENA/2);
-   temp += 0x0000;
-   utilEEWrite(p_port, 0x0000, DEVICE_ENABLE/2);
-   temp += 0x0000;
-
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01/2);
-   temp += 0x4242;
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23/2);
-   temp += 0x4242;
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45/2);
-   temp += 0x4242;
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67/2);
-   temp += 0x4242;
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89/2);
-   temp += 0x4242;
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab/2);
-   temp += 0x4242;
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd/2);
-   temp += 0x4242;
-   utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef/2);
-   temp += 0x4242;
-
-
-   utilEEWrite(p_port, 0x6C46, 64/2);  /*PRODUCT ID */
-   temp += 0x6C46;
-   utilEEWrite(p_port, 0x7361, 66/2);  /* FlashPoint LT   */
-   temp += 0x7361;
-   utilEEWrite(p_port, 0x5068, 68/2);
-   temp += 0x5068;
-   utilEEWrite(p_port, 0x696F, 70/2);
-   temp += 0x696F;
-   utilEEWrite(p_port, 0x746E, 72/2);
-   temp += 0x746E;
-   utilEEWrite(p_port, 0x4C20, 74/2);
-   temp += 0x4C20;
-   utilEEWrite(p_port, 0x2054, 76/2);
-   temp += 0x2054;
-   utilEEWrite(p_port, 0x2020, 78/2);
-   temp += 0x2020;
-
-   index = ((EE_SCAMBASE/2)+(7*16));
-   utilEEWrite(p_port, (0x0700+TYPE_CODE0), index);
-   temp += (0x0700+TYPE_CODE0);
-   index++;
-   utilEEWrite(p_port, 0x5542, index);            /*Vendor ID code */
-   temp += 0x5542;                                /* BUSLOGIC      */
-   index++;
-   utilEEWrite(p_port, 0x4C53, index);
-   temp += 0x4C53;
-   index++;
-   utilEEWrite(p_port, 0x474F, index);
-   temp += 0x474F;
-   index++;
-   utilEEWrite(p_port, 0x4349, index);
-   temp += 0x4349;
-   index++;
-   utilEEWrite(p_port, 0x5442, index);            /*Vendor unique code */
-   temp += 0x5442;                         /* BT- 930           */
-   index++;
-   utilEEWrite(p_port, 0x202D, index);
-   temp += 0x202D;
-   index++;
-   utilEEWrite(p_port, 0x3339, index);
-   temp += 0x3339;
-   index++;                                 /*Serial #          */
-   utilEEWrite(p_port, 0x2030, index);             /* 01234567         */
-   temp += 0x2030;
-   index++;
-   utilEEWrite(p_port, 0x5453, index);
-   temp += 0x5453;
-   index++;
-   utilEEWrite(p_port, 0x5645, index);
-   temp += 0x5645;
-   index++;
-   utilEEWrite(p_port, 0x2045, index);
-   temp += 0x2045;
-   index++;
-   utilEEWrite(p_port, 0x202F, index);
-   temp += 0x202F;
-   index++;
-   utilEEWrite(p_port, 0x4F4A, index);
-   temp += 0x4F4A;
-   index++;
-   utilEEWrite(p_port, 0x204E, index);
-   temp += 0x204E;
-   index++;
-   utilEEWrite(p_port, 0x3539, index);
-   temp += 0x3539;
-
-
-
-   utilEEWrite(p_port, temp, EEPROM_CHECK_SUM/2);
-
-   utilEEWriteOnOff(p_port,(UCHAR)0);
-
-}
-
-
-/*----------------------------------------------------------------------
- *
- *
- *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved
- *
- *   This file is available under both the GNU General Public License
- *   and a BSD-style copyright; see LICENSE.FlashPoint for details.
- *
- *   $Workfile:   utility.c  $
- *
- *   Description:  Utility functions relating to queueing and EEPROM
- *                 manipulation and any other garbage functions.
- *
- *   $Date: 1999/04/26 05:53:56 $
- *
- *   $Revision: 1.1 $
- *
- *----------------------------------------------------------------------*/
-/*#include <globals.h>*/
-
-#if (FW_TYPE==_UCB_MGR_)
-       /*#include <budi.h>*/
-#endif
-
-/*#include <sccbmgr.h>*/
-/*#include <blx30.h>*/
-/*#include <target.h>*/
-/*#include <scsi2.h>*/
-/*#include <harpoon.h>*/
-
-
-/*
-extern SCCBCARD BL_Card[MAX_CARDS];
-extern SCCBMGR_TAR_INFO sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR];
-extern unsigned int SccbGlobalFlags;
-*/
-
-/*---------------------------------------------------------------------
- *
- * Function: Queue Search Select
- *
- * Description: Try to find a new command to execute.
- *
- *---------------------------------------------------------------------*/
-
-void queueSearchSelect(PSCCBcard pCurrCard, UCHAR p_card)
-{
-   UCHAR scan_ptr, lun;
-   PSCCBMgr_tar_info currTar_Info;
-       PSCCB pOldSccb;
-
-   scan_ptr = pCurrCard->scanIndex;
-       do 
-       {
-               currTar_Info = &sccbMgrTbl[p_card][scan_ptr];
-               if((pCurrCard->globalFlags & F_CONLUN_IO) && 
-                       ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING))
-               {
-                       if (currTar_Info->TarSelQ_Cnt != 0)
-                       {
-
-                               scan_ptr++;
-                               if (scan_ptr == MAX_SCSI_TAR)
-                                       scan_ptr = 0;
-                               
-                               for(lun=0; lun < MAX_LUN; lun++)
-                               {
-                                       if(currTar_Info->TarLUNBusy[lun] == 
FALSE)
-                                       {
-
-                                               pCurrCard->currentSCCB = 
currTar_Info->TarSelQ_Head;
-                                               pOldSccb = NULL;
-
-                                               while((pCurrCard->currentSCCB 
!= NULL) &&
-                                                                (lun != 
pCurrCard->currentSCCB->Lun))
-                                               {
-                                                       pOldSccb = 
pCurrCard->currentSCCB;
-                                                       pCurrCard->currentSCCB 
= (PSCCB)(pCurrCard->currentSCCB)->
-                                                                               
                                                        Sccb_forwardlink;
-                                               }
-                                               if(pCurrCard->currentSCCB == 
NULL)
-                                                       continue;
-                                               if(pOldSccb != NULL)
-                                               {
-                                                       
pOldSccb->Sccb_forwardlink = (PSCCB)(pCurrCard->currentSCCB)->
-                                                                               
                                                        Sccb_forwardlink;
-                                                       pOldSccb->Sccb_backlink 
= (PSCCB)(pCurrCard->currentSCCB)->
-                                                                               
                                                        Sccb_backlink;
-                                                       
currTar_Info->TarSelQ_Cnt--;
-                                               }
-                                               else
-                                               {
-                                                       
currTar_Info->TarSelQ_Head = (PSCCB)(pCurrCard->currentSCCB)->Sccb_forwardlink;
-                                       
-                                                       if 
(currTar_Info->TarSelQ_Head == NULL)
-                                                       {
-                                                               
currTar_Info->TarSelQ_Tail = NULL;
-                                                               
currTar_Info->TarSelQ_Cnt = 0;
-                                                       }
-                                                       else
-                                                       {
-                                                               
currTar_Info->TarSelQ_Cnt--;
-                                                               
currTar_Info->TarSelQ_Head->Sccb_backlink = (PSCCB)NULL;
-                                                       }
-                                               }
-                                       pCurrCard->scanIndex = scan_ptr;
-
-                                       pCurrCard->globalFlags |= 
F_NEW_SCCB_CMD;
-
-                                       break;
-                                       }
-                               }
-                       }
-
-                       else 
-                       {
-                               scan_ptr++;
-                               if (scan_ptr == MAX_SCSI_TAR) {
-                                       scan_ptr = 0;
-                               }
-                       }
-
-               }
-               else
-               {
-                       if ((currTar_Info->TarSelQ_Cnt != 0) &&
-                               (currTar_Info->TarLUNBusy[0] == FALSE))
-                       {
-
-                               pCurrCard->currentSCCB = 
currTar_Info->TarSelQ_Head;
-
-                               currTar_Info->TarSelQ_Head = 
(PSCCB)(pCurrCard->currentSCCB)->Sccb_forwardlink;
-
-                               if (currTar_Info->TarSelQ_Head == NULL)
-                               {
-                                       currTar_Info->TarSelQ_Tail = NULL;
-                                       currTar_Info->TarSelQ_Cnt = 0;
-                               }
-                               else
-                               {
-                                       currTar_Info->TarSelQ_Cnt--;
-                                       
currTar_Info->TarSelQ_Head->Sccb_backlink = (PSCCB)NULL;
-                               }
-
-                               scan_ptr++;
-                               if (scan_ptr == MAX_SCSI_TAR)
-                                       scan_ptr = 0;
-
-                               pCurrCard->scanIndex = scan_ptr;
-
-                               pCurrCard->globalFlags |= F_NEW_SCCB_CMD;
-
-                               break;
-                       }
-
-                       else 
-                       {
-                               scan_ptr++;
-                               if (scan_ptr == MAX_SCSI_TAR) 
-                               {
-                                       scan_ptr = 0;
-                               }
-                       }
-               }
-       } while (scan_ptr != pCurrCard->scanIndex);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Queue Select Fail
- *
- * Description: Add the current SCCB to the head of the Queue.
- *
- *---------------------------------------------------------------------*/
-
-void queueSelectFail(PSCCBcard pCurrCard, UCHAR p_card)
-{
-   UCHAR thisTarg;
-   PSCCBMgr_tar_info currTar_Info;
-
-   if (pCurrCard->currentSCCB != NULL)
-         {
-         thisTarg = (UCHAR)(((PSCCB)(pCurrCard->currentSCCB))->TargID);
-      currTar_Info = &sccbMgrTbl[p_card][thisTarg];
-
-      pCurrCard->currentSCCB->Sccb_backlink = (PSCCB)NULL;
-
-      pCurrCard->currentSCCB->Sccb_forwardlink = currTar_Info->TarSelQ_Head;
-
-         if (currTar_Info->TarSelQ_Cnt == 0)
-                {
-                currTar_Info->TarSelQ_Tail = pCurrCard->currentSCCB;
-                }
-
-         else
-                {
-                currTar_Info->TarSelQ_Head->Sccb_backlink = 
pCurrCard->currentSCCB;
-                }
-
-
-         currTar_Info->TarSelQ_Head = pCurrCard->currentSCCB;
-
-         pCurrCard->currentSCCB = NULL;
-         currTar_Info->TarSelQ_Cnt++;
-         }
-}
-/*---------------------------------------------------------------------
- *
- * Function: Queue Command Complete
- *
- * Description: Call the callback function with the current SCCB.
- *
- *---------------------------------------------------------------------*/
-
-void queueCmdComplete(PSCCBcard pCurrCard, PSCCB p_sccb, UCHAR p_card)
-{
-
-#if (FW_TYPE==_UCB_MGR_)
-
-   u08bits SCSIcmd;
-   CALL_BK_FN callback;
-   PSCCBMgr_tar_info currTar_Info;
-
-   PUCB p_ucb;
-   p_ucb=p_sccb->Sccb_ucb_ptr;
-
-   SCSIcmd = p_sccb->Cdb[0];
-
-
-   if (!(p_sccb->Sccb_XferState & F_ALL_XFERRED))
-   {
-
-      if ((p_ucb->UCB_opcode & OPC_CHK_UNDER_OVER_RUN)                     &&
-         (p_sccb->HostStatus == SCCB_COMPLETE)                             &&
-         (p_sccb->TargetStatus != SSCHECK))
-
-         if ((SCSIcmd == SCSI_READ)             ||
-             (SCSIcmd == SCSI_WRITE)            ||
-             (SCSIcmd == SCSI_READ_EXTENDED)    ||
-             (SCSIcmd == SCSI_WRITE_EXTENDED)   ||
-             (SCSIcmd == SCSI_WRITE_AND_VERIFY) ||
-             (SCSIcmd == SCSI_START_STOP_UNIT)  ||
-             (pCurrCard->globalFlags & F_NO_FILTER)
-            )
-               p_sccb->HostStatus = SCCB_DATA_UNDER_RUN;
-   }
-
-   p_ucb->UCB_status=SCCB_SUCCESS;
-
-   if ((p_ucb->UCB_hbastat=p_sccb->HostStatus) || 
(p_ucb->UCB_scsistat=p_sccb->TargetStatus))
-   {
-      p_ucb->UCB_status=SCCB_ERROR;
-   }
-
-   if ((p_sccb->OperationCode == RESIDUAL_SG_COMMAND) ||
-      (p_sccb->OperationCode == RESIDUAL_COMMAND))
-   {
-
-         utilUpdateResidual(p_sccb);
-
-         p_ucb->UCB_datalen=p_sccb->DataLength;
-   }
-
-   pCurrCard->cmdCounter--;
-   if (!pCurrCard->cmdCounter)
-   {
-
-      if (pCurrCard->globalFlags & F_GREEN_PC)
-      {
-         WR_HARPOON(pCurrCard->ioPort+hp_clkctrl_0,(PWR_DWN | 
CLKCTRL_DEFAULT));
-         WR_HARPOON(pCurrCard->ioPort+hp_sys_ctrl, STOP_CLK);
-      }
-
-      WR_HARPOON(pCurrCard->ioPort+hp_semaphore,
-      (RD_HARPOON(pCurrCard->ioPort+hp_semaphore) & ~SCCB_MGR_ACTIVE));
-   }
-
-       if(pCurrCard->discQCount != 0)
-       {
-      currTar_Info = &sccbMgrTbl[p_card][p_sccb->TargID];
-               if(((pCurrCard->globalFlags & F_CONLUN_IO) &&
-                       ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-               {
-                       pCurrCard->discQCount--;
-                       
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_sccb->Lun]] = NULL;
-               }
-               else
-               {
-                       if(p_sccb->Sccb_tag)
-                       {
-                               pCurrCard->discQCount--;
-                               pCurrCard->discQ_Tbl[p_sccb->Sccb_tag] = NULL;
-                       }else
-                       {
-                               pCurrCard->discQCount--;
-                               
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = NULL;
-                       }
-               }
-
-       }
-   callback = (CALL_BK_FN)p_ucb->UCB_callback;
-   callback(p_ucb);
-   pCurrCard->globalFlags |= F_NEW_SCCB_CMD;
-   pCurrCard->currentSCCB = NULL;
-}
-
-
-
-
-#else
-
-   UCHAR i, SCSIcmd;
-   CALL_BK_FN callback;
-   PSCCBMgr_tar_info currTar_Info;
-
-   SCSIcmd = p_sccb->Cdb[0];
-
-
-   if (!(p_sccb->Sccb_XferState & F_ALL_XFERRED)) {
-
-         if ((p_sccb->ControlByte & (SCCB_DATA_XFER_OUT | SCCB_DATA_XFER_IN)) 
&&
-                (p_sccb->HostStatus == SCCB_COMPLETE)                          
   &&
-                (p_sccb->TargetStatus != SSCHECK))
-
-                if ((SCSIcmd == SCSI_READ)             ||
-                        (SCSIcmd == SCSI_WRITE)            ||
-                        (SCSIcmd == SCSI_READ_EXTENDED)    ||
-                        (SCSIcmd == SCSI_WRITE_EXTENDED)   ||
-                        (SCSIcmd == SCSI_WRITE_AND_VERIFY) ||
-                        (SCSIcmd == SCSI_START_STOP_UNIT)  ||
-                        (pCurrCard->globalFlags & F_NO_FILTER)
-                       )
-                          p_sccb->HostStatus = SCCB_DATA_UNDER_RUN;
-         }
-
-
-       if(p_sccb->SccbStatus == SCCB_IN_PROCESS)
-       {
-          if (p_sccb->HostStatus || p_sccb->TargetStatus)
-                 p_sccb->SccbStatus = SCCB_ERROR;
-          else
-                 p_sccb->SccbStatus = SCCB_SUCCESS;
-       }
-
-   if (p_sccb->Sccb_XferState & F_AUTO_SENSE) {
-
-         p_sccb->CdbLength = p_sccb->Save_CdbLen;
-         for (i=0; i < 6; i++) {
-                p_sccb->Cdb[i] = p_sccb->Save_Cdb[i];
-                }
-         }
-
-   if ((p_sccb->OperationCode == RESIDUAL_SG_COMMAND) ||
-         (p_sccb->OperationCode == RESIDUAL_COMMAND)) {
-
-                utilUpdateResidual(p_sccb);
-                }
-
-   pCurrCard->cmdCounter--;
-   if (!pCurrCard->cmdCounter) {
-
-         if (pCurrCard->globalFlags & F_GREEN_PC) {
-                WR_HARPOON(pCurrCard->ioPort+hp_clkctrl_0,(PWR_DWN | 
CLKCTRL_DEFAULT));
-                WR_HARPOON(pCurrCard->ioPort+hp_sys_ctrl, STOP_CLK);
-                }
-
-         WR_HARPOON(pCurrCard->ioPort+hp_semaphore,
-         (RD_HARPOON(pCurrCard->ioPort+hp_semaphore) & ~SCCB_MGR_ACTIVE));
-
-         }
-
-       if(pCurrCard->discQCount != 0)
-       {
-      currTar_Info = &sccbMgrTbl[p_card][p_sccb->TargID];
-               if(((pCurrCard->globalFlags & F_CONLUN_IO) &&
-                       ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != 
TAG_Q_TRYING)))
-               {
-                       pCurrCard->discQCount--;
-                       
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_sccb->Lun]] = NULL;
-               }
-               else
-               {
-                       if(p_sccb->Sccb_tag)
-                       {
-                               pCurrCard->discQCount--;
-                               pCurrCard->discQ_Tbl[p_sccb->Sccb_tag] = NULL;
-                       }else
-                       {
-                               pCurrCard->discQCount--;
-                               
pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = NULL;
-                       }
-               }
-
-       }
-
-       callback = (CALL_BK_FN)p_sccb->SccbCallback;
-   callback(p_sccb);
-   pCurrCard->globalFlags |= F_NEW_SCCB_CMD;
-   pCurrCard->currentSCCB = NULL;
-}
-#endif /* ( if FW_TYPE==...) */
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Queue Disconnect
- *
- * Description: Add SCCB to our disconnect array.
- *
- *---------------------------------------------------------------------*/
-void queueDisconnect(PSCCB p_sccb, UCHAR p_card)
-{
-   PSCCBMgr_tar_info currTar_Info;
-
-       currTar_Info = &sccbMgrTbl[p_card][p_sccb->TargID];
-
-       if(((BL_Card[p_card].globalFlags & F_CONLUN_IO) &&
-               ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)))
-       {
-               
BL_Card[p_card].discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_sccb->Lun]] = p_sccb;
-       }
-       else
-       {
-               if (p_sccb->Sccb_tag)
-               {
-                       BL_Card[p_card].discQ_Tbl[p_sccb->Sccb_tag] = p_sccb;
-                       sccbMgrTbl[p_card][p_sccb->TargID].TarLUNBusy[0] = 
FALSE;
-                       sccbMgrTbl[p_card][p_sccb->TargID].TarTagQ_Cnt++;
-               }else
-               {
-                       
BL_Card[p_card].discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = p_sccb;
-               }
-       }
-       BL_Card[p_card].currentSCCB = NULL;
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Queue Flush SCCB
- *
- * Description: Flush all SCCB's back to the host driver for this target.
- *
- *---------------------------------------------------------------------*/
-
-void  queueFlushSccb(UCHAR p_card, UCHAR error_code)
-{
-   UCHAR qtag,thisTarg;
-   PSCCB currSCCB;
-   PSCCBMgr_tar_info currTar_Info;
-
-   currSCCB = BL_Card[p_card].currentSCCB;
-       if(currSCCB != NULL)
-       {
-          thisTarg = (UCHAR)currSCCB->TargID;
-       currTar_Info = &sccbMgrTbl[p_card][thisTarg];
-
-          for (qtag=0; qtag<QUEUE_DEPTH; qtag++) {
-
-                 if (BL_Card[p_card].discQ_Tbl[qtag] && 
-                                       
(BL_Card[p_card].discQ_Tbl[qtag]->TargID == thisTarg))
-                        {
-
-                        BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = 
(UCHAR)error_code;
-                       
-                        
queueCmdComplete(&BL_Card[p_card],BL_Card[p_card].discQ_Tbl[qtag], p_card);
-
-                        BL_Card[p_card].discQ_Tbl[qtag] = NULL;
-                        currTar_Info->TarTagQ_Cnt--;
-
-                        }
-                 }
-       }
-
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: Queue Flush Target SCCB
- *
- * Description: Flush all SCCB's back to the host driver for this target.
- *
- *---------------------------------------------------------------------*/
-
-void  queueFlushTargSccb(UCHAR p_card, UCHAR thisTarg, UCHAR error_code)
-{
-   UCHAR qtag;
-   PSCCBMgr_tar_info currTar_Info;
-
-   currTar_Info = &sccbMgrTbl[p_card][thisTarg];
-
-   for (qtag=0; qtag<QUEUE_DEPTH; qtag++) {
-
-         if (BL_Card[p_card].discQ_Tbl[qtag] && 
-                               (BL_Card[p_card].discQ_Tbl[qtag]->TargID == 
thisTarg))
-                {
-
-                BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = 
(UCHAR)error_code;
-
-                
queueCmdComplete(&BL_Card[p_card],BL_Card[p_card].discQ_Tbl[qtag], p_card);
-
-                BL_Card[p_card].discQ_Tbl[qtag] = NULL;
-                currTar_Info->TarTagQ_Cnt--;
-
-                }
-         }
-
-}
-
-
-
-
-
-void queueAddSccb(PSCCB p_SCCB, UCHAR p_card)
-{
-   PSCCBMgr_tar_info currTar_Info;
-   currTar_Info = &sccbMgrTbl[p_card][p_SCCB->TargID];
-
-   p_SCCB->Sccb_forwardlink = NULL;
-
-   p_SCCB->Sccb_backlink = currTar_Info->TarSelQ_Tail;
-
-   if (currTar_Info->TarSelQ_Cnt == 0) {
-
-         currTar_Info->TarSelQ_Head = p_SCCB;
-         }
-
-   else {
-
-         currTar_Info->TarSelQ_Tail->Sccb_forwardlink = p_SCCB;
-         }
-
-
-   currTar_Info->TarSelQ_Tail = p_SCCB;
-   currTar_Info->TarSelQ_Cnt++;
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Queue Find SCCB
- *
- * Description: Search the target select Queue for this SCCB, and
- *              remove it if found.
- *
- *---------------------------------------------------------------------*/
-
-UCHAR queueFindSccb(PSCCB p_SCCB, UCHAR p_card)
-{
-   PSCCB q_ptr;
-   PSCCBMgr_tar_info currTar_Info;
-
-   currTar_Info = &sccbMgrTbl[p_card][p_SCCB->TargID];
-
-   q_ptr = currTar_Info->TarSelQ_Head;
-
-   while(q_ptr != NULL) {
-
-         if (q_ptr == p_SCCB) {
-
-
-                if (currTar_Info->TarSelQ_Head == q_ptr) {
-
-                       currTar_Info->TarSelQ_Head = q_ptr->Sccb_forwardlink;
-                       }
-
-                if (currTar_Info->TarSelQ_Tail == q_ptr) {
-
-                       currTar_Info->TarSelQ_Tail = q_ptr->Sccb_backlink;
-                       }
-
-                if (q_ptr->Sccb_forwardlink != NULL) {
-                       q_ptr->Sccb_forwardlink->Sccb_backlink = 
q_ptr->Sccb_backlink;
-                       }
-
-                if (q_ptr->Sccb_backlink != NULL) {
-                       q_ptr->Sccb_backlink->Sccb_forwardlink = 
q_ptr->Sccb_forwardlink;
-                       }
-
-                currTar_Info->TarSelQ_Cnt--;
-
-                return(TRUE);
-                }
-
-         else {
-                q_ptr = q_ptr->Sccb_forwardlink;
-                }
-         }
-
-
-   return(FALSE);
-
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Utility Update Residual Count
- *
- * Description: Update the XferCnt to the remaining byte count.
- *              If we transferred all the data then just write zero.
- *              If Non-SG transfer then report Total Cnt - Actual Transfer
- *              Cnt.  For SG transfers add the count fields of all
- *              remaining SG elements, as well as any partial remaining
- *              element.
- *
- *---------------------------------------------------------------------*/
-
-void  utilUpdateResidual(PSCCB p_SCCB)
-{
-   ULONG partial_cnt;
-   UINT  sg_index;
-#if defined(COMPILER_16_BIT) && !defined(DOS)
-   ULONG far *sg_ptr;
-#else
-   ULONG *sg_ptr;
-#endif
-
-   if (p_SCCB->Sccb_XferState & F_ALL_XFERRED) {
-
-         p_SCCB->DataLength = 0x0000;
-         }
-
-   else if (p_SCCB->Sccb_XferState & F_SG_XFER) {
-
-                partial_cnt = 0x0000;
-
-                sg_index = p_SCCB->Sccb_sgseg;
-
-#if defined(COMPILER_16_BIT) && !defined(DOS)
-                sg_ptr = (ULONG far *)p_SCCB->DataPointer;
-#else
-                sg_ptr = (ULONG *)p_SCCB->DataPointer;
-#endif
-
-                if (p_SCCB->Sccb_SGoffset) {
-
-                       partial_cnt = p_SCCB->Sccb_SGoffset;
-                       sg_index++;
-                       }
-
-                while ( ((ULONG)sg_index * (ULONG)SG_ELEMENT_SIZE) <
-                       p_SCCB->DataLength ) {
-
-                       partial_cnt += *(sg_ptr+(sg_index * 2));
-                       sg_index++;
-                       }
-
-                p_SCCB->DataLength = partial_cnt;
-                }
-
-         else {
-
-                p_SCCB->DataLength -= p_SCCB->Sccb_ATC;
-                }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Wait 1 Second
- *
- * Description: Wait for 1 second.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void Wait1Second(USHORT p_port)
-#else
-void Wait1Second(ULONG p_port)
-#endif
-{
-   UCHAR i;
-
-   for(i=0; i < 4; i++) {
-
-         Wait(p_port, TO_250ms);
-
-         if ((RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST))
-                break;
-
-         if((RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL))
-                break;
-         }
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Wait
- *
- * Description: Wait the desired delay.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void Wait(USHORT p_port, UCHAR p_delay)
-#else
-void Wait(ULONG p_port, UCHAR p_delay)
-#endif
-{
-   UCHAR old_timer;
-   UCHAR green_flag;
-
-   old_timer = RD_HARPOON(p_port+hp_seltimeout);
-
-   green_flag=RD_HARPOON(p_port+hp_clkctrl_0);
-   WR_HARPOON(p_port+hp_clkctrl_0, CLKCTRL_DEFAULT);
-
-   WR_HARPOON(p_port+hp_seltimeout,p_delay);
-   WRW_HARPOON((p_port+hp_intstat), TIMEOUT);
-   WRW_HARPOON((p_port+hp_intena), (default_intena & ~TIMEOUT));
-
-
-   WR_HARPOON(p_port+hp_portctrl_0,
-         (RD_HARPOON(p_port+hp_portctrl_0) | START_TO));
-
-   while (!(RDW_HARPOON((p_port+hp_intstat)) & TIMEOUT)) {
-
-         if ((RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST))
-                break;
-
-         if ((RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL))
-                break;
-         }
-
-   WR_HARPOON(p_port+hp_portctrl_0,
-         (RD_HARPOON(p_port+hp_portctrl_0) & ~START_TO));
-
-   WRW_HARPOON((p_port+hp_intstat), TIMEOUT);
-   WRW_HARPOON((p_port+hp_intena), default_intena);
-
-   WR_HARPOON(p_port+hp_clkctrl_0,green_flag);
-
-   WR_HARPOON(p_port+hp_seltimeout,old_timer);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Enable/Disable Write to EEPROM
- *
- * Description: The EEPROM must first be enabled for writes
- *              A total of 9 clocks are needed.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void utilEEWriteOnOff(USHORT p_port,UCHAR p_mode)
-#else
-void utilEEWriteOnOff(ULONG p_port,UCHAR p_mode)
-#endif
-{
-   UCHAR ee_value;
-
-   ee_value = (UCHAR)(RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | 
SCSI_TERM_ENA_H));
-
-   if (p_mode)
-
-         utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR);
-
-   else
-
-
-         utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR);
-
-   WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */
-   WR_HARPOON(p_port+hp_ee_ctrl, ee_value);       /*Turn off Master Select */
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Write EEPROM
- *
- * Description: Write a word to the EEPROM at the specified
- *              address.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void utilEEWrite(USHORT p_port, USHORT ee_data, USHORT ee_addr)
-#else
-void utilEEWrite(ULONG p_port, USHORT ee_data, USHORT ee_addr)
-#endif
-{
-
-   UCHAR ee_value;
-   USHORT i;
-
-   ee_value = (UCHAR)((RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | 
SCSI_TERM_ENA_H))|
-                  (SEE_MS | SEE_CS));
-
-
-
-   utilEESendCmdAddr(p_port, EE_WRITE, ee_addr);
-
-
-   ee_value |= (SEE_MS + SEE_CS);
-
-   for(i = 0x8000; i != 0; i>>=1) {
-
-         if (i & ee_data)
-        ee_value |= SEE_DO;
-         else
-        ee_value &= ~SEE_DO;
-
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         ee_value |= SEE_CLK;          /* Clock  data! */
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         ee_value &= ~SEE_CLK;
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         }
-   ee_value &= (EXT_ARB_ACK | SCSI_TERM_ENA_H);
-   WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS));
-
-   Wait(p_port, TO_10ms);
-
-   WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to 
EEPROM */
-   WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS));       /* Turn off CS */
-   WR_HARPOON(p_port+hp_ee_ctrl, ee_value);       /* Turn off Master Select */
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: Read EEPROM
- *
- * Description: Read a word from the EEPROM at the desired
- *              address.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-USHORT utilEERead(USHORT p_port, USHORT ee_addr)
-#else
-USHORT utilEERead(ULONG p_port, USHORT ee_addr)
-#endif
-{
-   USHORT i, ee_data1, ee_data2;
-
-       i = 0;
-       ee_data1 = utilEEReadOrg(p_port, ee_addr);
-       do
-       {
-               ee_data2 = utilEEReadOrg(p_port, ee_addr);
-
-               if(ee_data1 == ee_data2)
-                       return(ee_data1);
-
-               ee_data1 = ee_data2;
-               i++;
-
-       }while(i < 4);
-
-       return(ee_data1);
-}
-
-/*---------------------------------------------------------------------
- *
- * Function: Read EEPROM Original 
- *
- * Description: Read a word from the EEPROM at the desired
- *              address.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-USHORT utilEEReadOrg(USHORT p_port, USHORT ee_addr)
-#else
-USHORT utilEEReadOrg(ULONG p_port, USHORT ee_addr)
-#endif
-{
-
-   UCHAR ee_value;
-   USHORT i, ee_data;
-
-   ee_value = (UCHAR)((RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | 
SCSI_TERM_ENA_H))|
-                  (SEE_MS | SEE_CS));
-
-
-   utilEESendCmdAddr(p_port, EE_READ, ee_addr);
-
-
-   ee_value |= (SEE_MS + SEE_CS);
-   ee_data = 0;
-
-   for(i = 1; i <= 16; i++) {
-
-         ee_value |= SEE_CLK;          /* Clock  data! */
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         ee_value &= ~SEE_CLK;
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-
-         ee_data <<= 1;
-
-         if (RD_HARPOON(p_port+hp_ee_ctrl) & SEE_DI)
-                ee_data |= 1;
-         }
-
-   ee_value &= ~(SEE_MS + SEE_CS);
-   WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */
-   WR_HARPOON(p_port+hp_ee_ctrl, ee_value);   /*Turn off Master Select */
-
-   return(ee_data);
-}
-
-
-/*---------------------------------------------------------------------
- *
- * Function: Send EE command and Address to the EEPROM
- *
- * Description: Transfers the correct command and sends the address
- *              to the eeprom.
- *
- *---------------------------------------------------------------------*/
-
-#if defined(DOS)
-void utilEESendCmdAddr(USHORT p_port, UCHAR ee_cmd, USHORT ee_addr)
-#else
-void utilEESendCmdAddr(ULONG p_port, UCHAR ee_cmd, USHORT ee_addr)
-#endif
-{
-   UCHAR ee_value;
-   UCHAR narrow_flg;
-
-   USHORT i;
-
-
-   narrow_flg= (UCHAR)(RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD);
-
-
-   ee_value = SEE_MS;
-   WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-
-   ee_value |= SEE_CS;                             /* Set CS to EEPROM */
-   WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-
-
-   for(i = 0x04; i != 0; i>>=1) {
-
-         if (i & ee_cmd)
-                ee_value |= SEE_DO;
-         else
-                ee_value &= ~SEE_DO;
-
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         ee_value |= SEE_CLK;                         /* Clock  data! */
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         ee_value &= ~SEE_CLK;
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         }
-
-
-   if (narrow_flg)
-         i = 0x0080;
-
-   else
-         i = 0x0200;
-
-
-   while (i != 0) {
-
-         if (i & ee_addr)
-                ee_value |= SEE_DO;
-         else
-                ee_value &= ~SEE_DO;
-
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         ee_value |= SEE_CLK;                         /* Clock  data! */
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         ee_value &= ~SEE_CLK;
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-         WR_HARPOON(p_port+hp_ee_ctrl, ee_value);
-
-         i >>= 1;
-         }
-}
-
-USHORT CalcCrc16(UCHAR buffer[])
-{
-   USHORT crc=0;
-       int i,j;
-   USHORT ch;
-   for (i=0; i < ID_STRING_LENGTH; i++)
-   {
-      ch = (USHORT) buffer[i];
-          for(j=0; j < 8; j++)
-          {
-                  if ((crc ^ ch) & 1)
-            crc = (crc >> 1) ^ CRCMASK;
-                  else
-            crc >>= 1;
-                  ch >>= 1;
-          }
-   }
-       return(crc);
-}
-
-UCHAR CalcLrc(UCHAR buffer[])
-{
-       int i;
-       UCHAR lrc;
-       lrc = 0;
-       for(i = 0; i < ID_STRING_LENGTH; i++)
-               lrc ^= buffer[i];
-       return(lrc);
-}
-
-
-
-/*
-  The following inline definitions avoid type conflicts.
-*/
-
-static inline unsigned char
-FlashPoint__ProbeHostAdapter(FlashPoint_Info_T *FlashPointInfo)
-{
-  return FlashPoint_ProbeHostAdapter((PSCCBMGR_INFO) FlashPointInfo);
-}
-
-
-static inline FlashPoint_CardHandle_T
-FlashPoint__HardwareResetHostAdapter(FlashPoint_Info_T *FlashPointInfo)
-{
-  return FlashPoint_HardwareResetHostAdapter((PSCCBMGR_INFO) FlashPointInfo);
-}
-
-static inline void
-FlashPoint__ReleaseHostAdapter(FlashPoint_CardHandle_T CardHandle)
-{
-  FlashPoint_ReleaseHostAdapter(CardHandle);
-}
-
-
-static inline void
-FlashPoint__StartCCB(FlashPoint_CardHandle_T CardHandle, BusLogic_CCB_T *CCB)
-{
-  FlashPoint_StartCCB(CardHandle, (PSCCB) CCB);
-}
-
-
-static inline void
-FlashPoint__AbortCCB(FlashPoint_CardHandle_T CardHandle, BusLogic_CCB_T *CCB)
-{
-  FlashPoint_AbortCCB(CardHandle, (PSCCB) CCB);
-}
-
-
-static inline boolean
-FlashPoint__InterruptPending(FlashPoint_CardHandle_T CardHandle)
-{
-  return FlashPoint_InterruptPending(CardHandle);
-}
-
-
-static inline int
-FlashPoint__HandleInterrupt(FlashPoint_CardHandle_T CardHandle)
-{
-  return FlashPoint_HandleInterrupt(CardHandle);
-}
-
-
-#define FlashPoint_ProbeHostAdapter        FlashPoint__ProbeHostAdapter
-#define FlashPoint_HardwareResetHostAdapter 
FlashPoint__HardwareResetHostAdapter
-#define FlashPoint_ReleaseHostAdapter      FlashPoint__ReleaseHostAdapter
-#define FlashPoint_StartCCB                FlashPoint__StartCCB
-#define FlashPoint_AbortCCB                FlashPoint__AbortCCB
-#define FlashPoint_InterruptPending        FlashPoint__InterruptPending
-#define FlashPoint_HandleInterrupt         FlashPoint__HandleInterrupt
-
-
-/*
-  FlashPoint_InquireTargetInfo returns the Synchronous Period, Synchronous
-  Offset, and Wide Transfers Active information for TargetID on CardHandle.
-*/
-
-void FlashPoint_InquireTargetInfo(FlashPoint_CardHandle_T CardHandle,
-                                 int TargetID,
-                                 unsigned char *SynchronousPeriod,
-                                 unsigned char *SynchronousOffset,
-                                 unsigned char *WideTransfersActive)
-{
-  SCCBMGR_TAR_INFO *TargetInfo =
-    &sccbMgrTbl[((SCCBCARD *)CardHandle)->cardIndex][TargetID];
-  if ((TargetInfo->TarSyncCtrl & SYNC_OFFSET) > 0)
-    {
-      *SynchronousPeriod = 5 * ((TargetInfo->TarSyncCtrl >> 5) + 1);
-      *SynchronousOffset = TargetInfo->TarSyncCtrl & SYNC_OFFSET;
-    }
-  else
-    {
-      *SynchronousPeriod = 0;
-      *SynchronousOffset = 0;
-    }
-  *WideTransfersActive = (TargetInfo->TarSyncCtrl & NARROW_SCSI ? 0 : 1);
-}
-
-
-#else  /* CONFIG_SCSI_OMIT_FLASHPOINT */
-
-
-/*
-  Define prototypes for the FlashPoint SCCB Manager Functions.
-*/
-
-extern unsigned char FlashPoint_ProbeHostAdapter(FlashPoint_Info_T *);
-extern FlashPoint_CardHandle_T
-       FlashPoint_HardwareResetHostAdapter(FlashPoint_Info_T *);
-extern void FlashPoint_StartCCB(FlashPoint_CardHandle_T, BusLogic_CCB_T *);
-extern int FlashPoint_AbortCCB(FlashPoint_CardHandle_T, BusLogic_CCB_T *);
-extern boolean FlashPoint_InterruptPending(FlashPoint_CardHandle_T);
-extern int FlashPoint_HandleInterrupt(FlashPoint_CardHandle_T);
-extern void FlashPoint_ReleaseHostAdapter(FlashPoint_CardHandle_T);
-extern void FlashPoint_InquireTargetInfo(FlashPoint_CardHandle_T,
-                                        int, unsigned char *,
-                                        unsigned char *, unsigned char *);
-
-
-#endif /* CONFIG_SCSI_OMIT_FLASHPOINT */
diff --git a/linux/src/drivers/scsi/aic7xxx_proc.c 
b/linux/src/drivers/scsi/aic7xxx_proc.c
deleted file mode 100644
index 87665d0..0000000
--- a/linux/src/drivers/scsi/aic7xxx_proc.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/*+M*************************************************************************
- * Adaptec AIC7xxx device driver proc support for Linux.
- *
- * Copyright (c) 1995, 1996 Dean W. Gehnert
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING.  If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * ----------------------------------------------------------------
- *  o Modified from the EATA-DMA /proc support.
- *  o Additional support for device block statistics provided by
- *    Matthew Jacob.
- *  o Correction of overflow by Heinz Mauelshagen
- *  o Adittional corrections by Doug Ledford
- *
- *  Dean W. Gehnert, address@hidden, 05/01/96
- *
- *  $Id: aic7xxx_proc.c,v 1.1.4.1 2004/01/16 22:41:26 roland Exp $
- *-M*************************************************************************/
-
-#define        BLS     (&aic7xxx_buffer[size])
-#define HDRB \
-"             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+"
-
-#ifdef PROC_DEBUG
-extern int vsprintf(char *, const char *, va_list);
-
-static void
-proc_debug(const char *fmt, ...)
-{
-  va_list ap;
-  char buf[256];
-
-  va_start(ap, fmt);
-  vsprintf(buf, fmt, ap);
-  printk(buf);
-  va_end(ap);
-}
-#else /* PROC_DEBUG */
-#  define proc_debug(fmt, args...)
-#endif /* PROC_DEBUG */
-
-static int aic7xxx_buffer_size = 0;
-static char *aic7xxx_buffer = NULL;
-
-
-/*+F*************************************************************************
- * Function:
- *   aic7xxx_set_info
- *
- * Description:
- *   Set parameters for the driver from the /proc filesystem.
- *-F*************************************************************************/
-int
-aic7xxx_set_info(char *buffer, int length, struct Scsi_Host *HBAptr)
-{
-  proc_debug("aic7xxx_set_info(): %s\n", buffer);
-  return (-ENOSYS);  /* Currently this is a no-op */
-}
-
-
-/*+F*************************************************************************
- * Function:
- *   aic7xxx_proc_info
- *
- * Description:
- *   Return information to handle /proc support for the driver.
- *-F*************************************************************************/
-int
-aic7xxx_proc_info ( char *buffer, char **start, off_t offset, int length, 
-                    int hostno, int inout)
-{
-  struct Scsi_Host *HBAptr;
-  struct aic7xxx_host *p;
-  int    size = 0;
-  unsigned char i;
-  struct aic7xxx_xferstats *sp;
-  unsigned char target;
-
-  HBAptr = NULL;
-
-  for(p=first_aic7xxx; p->host->host_no != hostno; p=p->next)
-    ;
-
-  if (!p)
-  {
-    size += sprintf(buffer, "Can't find adapter for host number %d\n", hostno);
-    if (size > length)
-    {
-      return (size);
-    }
-    else
-    {
-      return (length);
-    }
-  }
-
-  HBAptr = p->host;
-
-  if (inout == TRUE) /* Has data been written to the file? */ 
-  {
-    return (aic7xxx_set_info(buffer, length, HBAptr));
-  }
-
-  p = (struct aic7xxx_host *) HBAptr->hostdata;
-
-  /*
-   * It takes roughly 1K of space to hold all relevant card info, not
-   * counting any proc stats, so we start out with a 1.5k buffer size and
-   * if proc_stats is defined, then we sweep the stats structure to see
-   * how many drives we will be printing out for and add 384 bytes per
-   * device with active stats.
-   *
-   * Hmmmm...that 1.5k seems to keep growing as items get added so they
-   * can be easily viewed for debugging purposes.  So, we bumped that
-   * 1.5k to 4k so we can quit having to bump it all the time.
-   */
-
-  size = 4096;
-  for (target = 0; target < MAX_TARGETS; target++)
-  {
-    if (p->dev_flags[target] & DEVICE_PRESENT)
-#ifdef AIC7XXX_PROC_STATS
-      size += 512;
-#else
-      size += 256;
-#endif
-  }
-  if (aic7xxx_buffer_size != size)
-  {
-    if (aic7xxx_buffer != NULL) 
-    {
-      kfree(aic7xxx_buffer);
-      aic7xxx_buffer_size = 0;
-    }
-    aic7xxx_buffer = kmalloc(size, GFP_KERNEL);
-  }
-  if (aic7xxx_buffer == NULL)
-  {
-    size = sprintf(buffer, "AIC7xxx - kmalloc error at line %d\n",
-        __LINE__);
-    return size;
-  }
-  aic7xxx_buffer_size = size;
-
-  size = 0;
-  size += sprintf(BLS, "Adaptec AIC7xxx driver version: ");
-  size += sprintf(BLS, "%s/", AIC7XXX_C_VERSION);
-  size += sprintf(BLS, "%s", AIC7XXX_H_VERSION);
-  size += sprintf(BLS, "\n");
-  size += sprintf(BLS, "Compile Options:\n");
-#ifdef CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT
-  size += sprintf(BLS, "  TCQ Enabled By Default : Enabled\n");
-#else
-  size += sprintf(BLS, "  TCQ Enabled By Default : Disabled\n");
-#endif
-#ifdef AIC7XXX_PROC_STATS
-  size += sprintf(BLS, "  AIC7XXX_PROC_STATS     : Enabled\n");
-#else
-  size += sprintf(BLS, "  AIC7XXX_PROC_STATS     : Disabled\n");
-#endif
-  size += sprintf(BLS, "  AIC7XXX_RESET_DELAY    : %d\n", AIC7XXX_RESET_DELAY);
-  size += sprintf(BLS, "\n");
-  size += sprintf(BLS, "Adapter Configuration:\n");
-  size += sprintf(BLS, "           SCSI Adapter: %s\n",
-      board_names[p->board_name_index]);
-  if (p->flags & AHC_TWIN)
-    size += sprintf(BLS, "                         Twin Channel\n");
-  else
-  {
-    char *channel = "";
-    char *ultra = "";
-    char *wide = "Narrow ";
-    if (p->flags & AHC_MULTI_CHANNEL)
-    {
-      channel = " Channel A";
-      if (p->flags & (AHC_CHNLB|AHC_CHNLC))
-        channel = (p->flags & AHC_CHNLB) ? " Channel B" : " Channel C";
-    }
-    if (p->features & AHC_WIDE)
-      wide = "Wide ";
-    if (p->features & AHC_ULTRA2)
-      ultra = "Ultra2-LVD/SE ";
-    else if (p->features & AHC_ULTRA)
-      ultra = "Ultra ";
-    size += sprintf(BLS, "                           %s%sController%s\n",
-      ultra, wide, channel);
-  }
-  if( !(p->maddr) )
-  {
-    size += sprintf(BLS, "    Programmed I/O Base: %lx\n", p->base);
-  }
-  else
-  {
-    size += sprintf(BLS, "    PCI MMAPed I/O Base: 0x%lx\n", p->mbase);
-  }
-  if( (p->chip & (AHC_VL | AHC_EISA)) )
-  {
-    size += sprintf(BLS, "    BIOS Memory Address: 0x%08x\n", p->bios_address);
-  }
-  size += sprintf(BLS, " Adapter SEEPROM Config: %s\n",
-          (p->flags & AHC_SEEPROM_FOUND) ? "SEEPROM found and used." :
-         ((p->flags & AHC_USEDEFAULTS) ? "SEEPROM not found, using defaults." :
-           "SEEPROM not found, using leftover BIOS values.") );
-  size += sprintf(BLS, "      Adaptec SCSI BIOS: %s\n",
-          (p->flags & AHC_BIOS_ENABLED) ? "Enabled" : "Disabled");
-  size += sprintf(BLS, "                    IRQ: %d\n", HBAptr->irq);
-  size += sprintf(BLS, "                   SCBs: Active %d, Max Active %d,\n",
-            p->activescbs, p->max_activescbs);
-  size += sprintf(BLS, "                         Allocated %d, HW %d, "
-            "Page %d\n", p->scb_data->numscbs, p->scb_data->maxhscbs,
-            p->scb_data->maxscbs);
-  if (p->flags & AHC_EXTERNAL_SRAM)
-    size += sprintf(BLS, "                         Using External SCB SRAM\n");
-  size += sprintf(BLS, "             Interrupts: %ld", p->isr_count);
-  if (p->chip & AHC_EISA)
-  {
-    size += sprintf(BLS, " %s\n",
-        (p->pause & IRQMS) ? "(Level Sensitive)" : "(Edge Triggered)");
-  }
-  else
-  {
-    size += sprintf(BLS, "\n");
-  }
-  size += sprintf(BLS, "      BIOS Control Word: 0x%04x\n",
-            p->bios_control);
-  size += sprintf(BLS, "   Adapter Control Word: 0x%04x\n",
-            p->adapter_control);
-  size += sprintf(BLS, "   Extended Translation: %sabled\n",
-      (p->flags & AHC_EXTEND_TRANS_A) ? "En" : "Dis");
-  size += sprintf(BLS, "Disconnect Enable Flags: 0x%04x\n", p->discenable);
-  if (p->features & (AHC_ULTRA | AHC_ULTRA2))
-  {
-    size += sprintf(BLS, "     Ultra Enable Flags: 0x%04x\n", p->ultraenb);
-  }
-  size += sprintf(BLS, " Tag Queue Enable Flags: 0x%04x\n", p->tagenable);
-  size += sprintf(BLS, "Ordered Queue Tag Flags: 0x%04x\n", p->orderedtag);
-  size += sprintf(BLS, "Default Tag Queue Depth: %d\n", 
AIC7XXX_CMDS_PER_DEVICE);
-  size += sprintf(BLS, "    Tagged Queue By Device array for aic7xxx host "
-                       "instance %d:\n", p->instance);
-  size += sprintf(BLS, "      {");
-  for(i=0; i < (MAX_TARGETS - 1); i++)
-    size += sprintf(BLS, "%d,",aic7xxx_tag_info[p->instance].tag_commands[i]);
-  size += sprintf(BLS, "%d}\n",aic7xxx_tag_info[p->instance].tag_commands[i]);
-  size += sprintf(BLS, "    Actual queue depth per device for aic7xxx host "
-                       "instance %d:\n", p->instance);
-  size += sprintf(BLS, "      {");
-  for(i=0; i < (MAX_TARGETS - 1); i++)
-    size += sprintf(BLS, "%d,", p->dev_max_queue_depth[i]);
-  size += sprintf(BLS, "%d}\n", p->dev_max_queue_depth[i]);
-
-  size += sprintf(BLS, "\n");
-  size += sprintf(BLS, "Statistics:\n\n");
-  for (target = 0; target < MAX_TARGETS; target++)
-  {
-    sp = &p->stats[target];
-    if ((p->dev_flags[target] & DEVICE_PRESENT) == 0)
-    {
-      continue;
-    }
-    if (p->features & AHC_TWIN)
-    {
-      size += sprintf(BLS, "(scsi%d:%d:%d:%d)\n",
-          p->host_no, (target >> 3), (target & 0x7), 0);
-    }
-    else
-    {
-      size += sprintf(BLS, "(scsi%d:%d:%d:%d)\n",
-          p->host_no, 0, target, 0);
-    }
-    size += sprintf(BLS, "  Device using %s/%s",
-          (p->transinfo[target].cur_width == MSG_EXT_WDTR_BUS_16_BIT) ?
-          "Wide" : "Narrow",
-          (p->transinfo[target].cur_offset != 0) ?
-          "Sync transfers at " : "Async transfers.\n" );
-    if (p->transinfo[target].cur_offset != 0)
-    {
-      struct aic7xxx_syncrate *sync_rate;
-      int period = p->transinfo[target].cur_period;
-      int rate = (p->transinfo[target].cur_width ==
-                  MSG_EXT_WDTR_BUS_16_BIT) ? 1 : 0;
-
-      sync_rate = aic7xxx_find_syncrate(p, &period, AHC_SYNCRATE_ULTRA2);
-      if (sync_rate != NULL)
-      {
-        size += sprintf(BLS, "%s MByte/sec, offset %d\n",
-                        sync_rate->rate[rate],
-                        p->transinfo[target].cur_offset );
-      }
-      else
-      {
-        size += sprintf(BLS, "3.3 MByte/sec, offset %d\n",
-                        p->transinfo[target].cur_offset );
-      }
-    }
-    size += sprintf(BLS, "  Transinfo settings: ");
-    size += sprintf(BLS, "current(%d/%d/%d), ",
-                    p->transinfo[target].cur_period,
-                    p->transinfo[target].cur_offset,
-                    p->transinfo[target].cur_width);
-    size += sprintf(BLS, "goal(%d/%d/%d), ",
-                    p->transinfo[target].goal_period,
-                    p->transinfo[target].goal_offset,
-                    p->transinfo[target].goal_width);
-    size += sprintf(BLS, "user(%d/%d/%d)\n",
-                    p->transinfo[target].user_period,
-                    p->transinfo[target].user_offset,
-                    p->transinfo[target].user_width);
-#ifdef AIC7XXX_PROC_STATS
-    size += sprintf(BLS, "  Total transfers %ld (%ld reads and %ld writes)\n",
-        sp->r_total + sp->w_total, sp->r_total, sp->w_total);
-    size += sprintf(BLS, "%s\n", HDRB);
-    size += sprintf(BLS, "   Reads:");
-    for (i = 0; i < NUMBER(sp->r_bins); i++)
-    {
-      size += sprintf(BLS, " %7ld", sp->r_bins[i]);
-    }
-    size += sprintf(BLS, "\n");
-    size += sprintf(BLS, "  Writes:");
-    for (i = 0; i < NUMBER(sp->w_bins); i++)
-    {
-      size += sprintf(BLS, " %7ld", sp->w_bins[i]);
-    }
-    size += sprintf(BLS, "\n");
-#else
-    size += sprintf(BLS, "  Total transfers %ld (%ld reads and %ld writes)\n",
-        sp->r_total + sp->w_total, sp->r_total, sp->w_total);
-#endif /* AIC7XXX_PROC_STATS */
-    size += sprintf(BLS, "\n\n");
-  }
-
-  if (size >= aic7xxx_buffer_size)
-  {
-    printk(KERN_WARNING "aic7xxx: Overflow in aic7xxx_proc.c\n");
-  }
-
-  if (offset > size - 1)
-  {
-    kfree(aic7xxx_buffer);
-    aic7xxx_buffer = NULL;
-    aic7xxx_buffer_size = length = 0;
-    *start = NULL;
-  }
-  else
-  {
-    *start = &aic7xxx_buffer[offset];   /* Start of wanted data */
-    if (size - offset < length)
-    {
-      length = size - offset;
-    }
-  }
-
-  return (length);
-}
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-indent-level: 2
- * c-brace-imaginary-offset: 0
- * c-brace-offset: -2
- * c-argdecl-indent: 2
- * c-label-offset: -2
- * c-continued-statement-offset: 2
- * c-continued-brace-offset: 0
- * indent-tabs-mode: nil
- * tab-width: 8
- * End:
- */
diff --git a/linux/src/drivers/scsi/aic7xxx_seq.c 
b/linux/src/drivers/scsi/aic7xxx_seq.c
deleted file mode 100644
index 9205cc4..0000000
--- a/linux/src/drivers/scsi/aic7xxx_seq.c
+++ /dev/null
@@ -1,769 +0,0 @@
-/*
-  * DO NOT EDIT - This file is automatically generated.
-  */
-static unsigned char seqprog[] = {
-       0xff, 0x6a, 0x06, 0x08,
-       0x32, 0x6a, 0x00, 0x00,
-       0x12, 0x6a, 0x00, 0x00,
-       0xff, 0x6a, 0xd6, 0x09,
-       0xff, 0x6a, 0xdc, 0x09,
-       0x00, 0x65, 0x38, 0x59,
-       0xf7, 0x01, 0x02, 0x08,
-       0xff, 0x4e, 0xc8, 0x08,
-       0xbf, 0x60, 0xc0, 0x08,
-       0x60, 0x0b, 0x7c, 0x68,
-       0x40, 0x00, 0x0e, 0x68,
-       0x08, 0x1f, 0x3e, 0x10,
-       0x60, 0x0b, 0x7c, 0x68,
-       0x40, 0x00, 0x0e, 0x68,
-       0x08, 0x1f, 0x3e, 0x10,
-       0xff, 0x3e, 0x3e, 0x60,
-       0x40, 0xfa, 0x10, 0x78,
-       0xff, 0xf6, 0xd4, 0x08,
-       0x01, 0x4e, 0x9c, 0x18,
-       0x40, 0x60, 0xc0, 0x00,
-       0x00, 0x4d, 0x10, 0x70,
-       0x01, 0x4e, 0x9c, 0x18,
-       0xbf, 0x60, 0xc0, 0x08,
-       0x00, 0x6a, 0x72, 0x5c,
-       0xff, 0x4e, 0xc8, 0x18,
-       0x02, 0x6a, 0x88, 0x5b,
-       0xff, 0x52, 0x20, 0x09,
-       0x0d, 0x6a, 0x6a, 0x00,
-       0x00, 0x52, 0xfe, 0x5b,
-       0xff, 0x3e, 0x74, 0x09,
-       0xff, 0x90, 0x7c, 0x08,
-       0xff, 0x3e, 0x20, 0x09,
-       0x00, 0x65, 0x44, 0x58,
-       0x00, 0x65, 0x0e, 0x40,
-       0xf7, 0x1f, 0xca, 0x08,
-       0x08, 0xa1, 0xc8, 0x08,
-       0x00, 0x65, 0xca, 0x00,
-       0xff, 0x65, 0x3e, 0x08,
-       0xf0, 0xa1, 0xc8, 0x08,
-       0x0f, 0x0f, 0x1e, 0x08,
-       0x00, 0x0f, 0x1e, 0x00,
-       0xf0, 0xa1, 0xc8, 0x08,
-       0x0f, 0x05, 0x0a, 0x08,
-       0x00, 0x05, 0x0a, 0x00,
-       0x5a, 0x6a, 0x00, 0x04,
-       0x12, 0x65, 0xc8, 0x00,
-       0x00, 0x01, 0x02, 0x00,
-       0x31, 0x6a, 0xca, 0x00,
-       0x80, 0x37, 0x64, 0x68,
-       0xff, 0x65, 0xca, 0x18,
-       0xff, 0x37, 0xdc, 0x08,
-       0xff, 0x6e, 0xc8, 0x08,
-       0x00, 0x6c, 0x6c, 0x78,
-       0x20, 0x01, 0x02, 0x00,
-       0x4c, 0x37, 0xc8, 0x28,
-       0x08, 0x1f, 0x74, 0x78,
-       0x08, 0x37, 0x6e, 0x00,
-       0x08, 0x64, 0xc8, 0x00,
-       0x70, 0x64, 0xca, 0x18,
-       0xff, 0x6c, 0x0a, 0x08,
-       0x20, 0x64, 0xca, 0x18,
-       0xff, 0x6c, 0x08, 0x0c,
-       0x40, 0x0b, 0x04, 0x69,
-       0x80, 0x0b, 0xf6, 0x78,
-       0xa4, 0x6a, 0x06, 0x00,
-       0x40, 0x6a, 0x16, 0x00,
-       0x10, 0x03, 0xf2, 0x78,
-       0xff, 0x50, 0xc8, 0x08,
-       0x88, 0x6a, 0xcc, 0x00,
-       0x49, 0x6a, 0xee, 0x5b,
-       0x01, 0x6a, 0x26, 0x01,
-       0xff, 0x6a, 0xca, 0x08,
-       0x08, 0x01, 0x02, 0x00,
-       0x02, 0x0b, 0x92, 0x78,
-       0xf7, 0x01, 0x02, 0x08,
-       0xff, 0x06, 0xcc, 0x08,
-       0xff, 0x66, 0x32, 0x09,
-       0x01, 0x65, 0xca, 0x18,
-       0x80, 0x66, 0xa0, 0x78,
-       0xff, 0x66, 0xa2, 0x08,
-       0x10, 0x03, 0x90, 0x68,
-       0xfc, 0x65, 0xc8, 0x18,
-       0x00, 0x65, 0xa8, 0x48,
-       0xff, 0x6a, 0x32, 0x01,
-       0x01, 0x64, 0x18, 0x19,
-       0xff, 0x6a, 0x1a, 0x09,
-       0xff, 0x6a, 0x1c, 0x09,
-       0x84, 0x6a, 0x06, 0x00,
-       0x08, 0x01, 0x02, 0x00,
-       0x02, 0x0b, 0xb2, 0x78,
-       0xff, 0x06, 0xc8, 0x08,
-       0xff, 0x64, 0x32, 0x09,
-       0xff, 0x6a, 0xca, 0x08,
-       0x5b, 0x64, 0xc8, 0x28,
-       0x00, 0x62, 0xc4, 0x18,
-       0xfc, 0x65, 0xca, 0x18,
-       0xff, 0x6a, 0xd4, 0x08,
-       0xfa, 0x65, 0xca, 0x18,
-       0xff, 0x6a, 0xd4, 0x08,
-       0x04, 0x65, 0xca, 0x18,
-       0x0b, 0x65, 0xca, 0x18,
-       0xff, 0x65, 0xc8, 0x08,
-       0x00, 0x8c, 0x18, 0x19,
-       0x02, 0x0b, 0xce, 0x78,
-       0x01, 0x65, 0xd4, 0x60,
-       0xf7, 0x01, 0x02, 0x08,
-       0xff, 0x06, 0x32, 0x09,
-       0xff, 0x65, 0xca, 0x18,
-       0xff, 0x65, 0xce, 0x68,
-       0x0a, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0x64, 0x5c,
-       0x40, 0x51, 0xe6, 0x78,
-       0xe4, 0x6a, 0x06, 0x00,
-       0x08, 0x01, 0x02, 0x00,
-       0x04, 0x6a, 0x18, 0x5b,
-       0x01, 0x50, 0xa0, 0x18,
-       0x00, 0x50, 0xec, 0xe0,
-       0xff, 0x6a, 0xa0, 0x08,
-       0xff, 0x6a, 0x3a, 0x01,
-       0x02, 0x6a, 0x22, 0x01,
-       0x40, 0x51, 0xf2, 0x68,
-       0xff, 0x6a, 0x06, 0x08,
-       0x00, 0x65, 0x0e, 0x40,
-       0x20, 0x6a, 0x16, 0x00,
-       0xf0, 0x19, 0x6e, 0x08,
-       0x08, 0x6a, 0x18, 0x00,
-       0x08, 0x11, 0x22, 0x00,
-       0x08, 0x6a, 0x5a, 0x58,
-       0x08, 0x6a, 0x68, 0x00,
-       0x00, 0x65, 0x18, 0x41,
-       0x12, 0x6a, 0x00, 0x00,
-       0x40, 0x6a, 0x16, 0x00,
-       0xff, 0x3e, 0x20, 0x09,
-       0xff, 0xba, 0x7c, 0x08,
-       0xff, 0xa1, 0x6e, 0x08,
-       0x08, 0x6a, 0x18, 0x00,
-       0x08, 0x11, 0x22, 0x00,
-       0x08, 0x6a, 0x5a, 0x58,
-       0x80, 0x6a, 0x68, 0x00,
-       0x80, 0x36, 0x6c, 0x00,
-       0x00, 0x65, 0xd2, 0x5b,
-       0xff, 0x3d, 0xc8, 0x08,
-       0xbf, 0x64, 0x48, 0x79,
-       0x80, 0x64, 0xf0, 0x71,
-       0xa0, 0x64, 0x0e, 0x72,
-       0xc0, 0x64, 0x08, 0x72,
-       0xe0, 0x64, 0x52, 0x72,
-       0x01, 0x6a, 0x22, 0x01,
-       0x00, 0x65, 0x18, 0x41,
-       0xf7, 0x11, 0x22, 0x08,
-       0x00, 0x65, 0x38, 0x59,
-       0xff, 0x06, 0xd4, 0x08,
-       0xf7, 0x01, 0x02, 0x08,
-       0x09, 0x0c, 0x32, 0x79,
-       0x08, 0x0c, 0x0e, 0x68,
-       0x01, 0x6a, 0x22, 0x01,
-       0xff, 0x6a, 0x26, 0x09,
-       0xff, 0x6a, 0x08, 0x08,
-       0xdf, 0x01, 0x02, 0x08,
-       0x01, 0x6a, 0x7a, 0x00,
-       0x03, 0x36, 0x6c, 0x0c,
-       0x08, 0x6a, 0xcc, 0x00,
-       0xa9, 0x6a, 0xe8, 0x5b,
-       0x00, 0x65, 0x66, 0x41,
-       0xa8, 0x6a, 0x6a, 0x00,
-       0x79, 0x6a, 0x6a, 0x00,
-       0x40, 0x3d, 0x50, 0x69,
-       0x04, 0x35, 0x6a, 0x00,
-       0x00, 0x65, 0x3a, 0x5b,
-       0x80, 0x6a, 0xd4, 0x01,
-       0x10, 0x36, 0x42, 0x69,
-       0x10, 0x36, 0x6c, 0x00,
-       0x07, 0xac, 0x10, 0x31,
-       0x88, 0x6a, 0xcc, 0x00,
-       0xac, 0x6a, 0xe0, 0x5b,
-       0x00, 0x65, 0xda, 0x5b,
-       0xff, 0xa3, 0x70, 0x08,
-       0x39, 0x6a, 0xcc, 0x00,
-       0xa4, 0x6a, 0xe6, 0x5b,
-       0xff, 0x38, 0x74, 0x69,
-       0x80, 0x02, 0x04, 0x00,
-       0xe7, 0x35, 0x6a, 0x08,
-       0x03, 0x69, 0x18, 0x31,
-       0xff, 0x6a, 0x10, 0x00,
-       0xff, 0x6a, 0x12, 0x00,
-       0xff, 0x6a, 0x14, 0x00,
-       0x01, 0x38, 0x7a, 0x61,
-       0x02, 0xfc, 0xf8, 0x01,
-       0xbf, 0x35, 0x6a, 0x08,
-       0xff, 0x69, 0xca, 0x08,
-       0xff, 0x35, 0x26, 0x09,
-       0x04, 0x0b, 0x7e, 0x69,
-       0x04, 0x0b, 0x8a, 0x69,
-       0x10, 0x0c, 0x80, 0x79,
-       0x04, 0x0b, 0x88, 0x69,
-       0xff, 0x6a, 0xca, 0x08,
-       0x00, 0x35, 0x22, 0x5b,
-       0x80, 0x02, 0xd6, 0x69,
-       0xff, 0x65, 0xc8, 0x79,
-       0xff, 0x38, 0x70, 0x18,
-       0xff, 0x38, 0xc8, 0x79,
-       0x80, 0xea, 0xaa, 0x61,
-       0xef, 0x38, 0xc8, 0x18,
-       0x80, 0x6a, 0xc8, 0x00,
-       0x00, 0x65, 0x9c, 0x49,
-       0x33, 0x38, 0xc8, 0x28,
-       0xff, 0x64, 0xd0, 0x09,
-       0x04, 0x39, 0xc0, 0x31,
-       0x09, 0x6a, 0xd6, 0x01,
-       0x80, 0xeb, 0xa2, 0x79,
-       0xf7, 0xeb, 0xd6, 0x09,
-       0x08, 0xeb, 0xa6, 0x69,
-       0x01, 0x6a, 0xd6, 0x01,
-       0x08, 0xe9, 0x10, 0x31,
-       0x88, 0x6a, 0xcc, 0x00,
-       0x39, 0x6a, 0xe6, 0x5b,
-       0x08, 0x6a, 0x18, 0x01,
-       0xff, 0x6a, 0x1a, 0x09,
-       0xff, 0x6a, 0x1c, 0x09,
-       0x0d, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0x64, 0x5c,
-       0x88, 0x6a, 0x54, 0x5c,
-       0x00, 0x65, 0xda, 0x5b,
-       0xff, 0x6a, 0xc8, 0x08,
-       0x08, 0x39, 0x72, 0x18,
-       0x00, 0x3a, 0x74, 0x20,
-       0x10, 0x0c, 0x66, 0x79,
-       0x80, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0xe0, 0x59,
-       0xff, 0x08, 0x52, 0x09,
-       0xff, 0x09, 0x54, 0x09,
-       0xff, 0x0a, 0x56, 0x09,
-       0xff, 0x38, 0x50, 0x09,
-       0x12, 0x01, 0x02, 0x00,
-       0x00, 0x65, 0x18, 0x41,
-       0x00, 0x65, 0xe0, 0x59,
-       0x12, 0x01, 0x02, 0x00,
-       0x7f, 0x02, 0x04, 0x08,
-       0xe1, 0x6a, 0x22, 0x01,
-       0x00, 0x65, 0x18, 0x41,
-       0x04, 0x93, 0xea, 0x69,
-       0xdf, 0x93, 0x26, 0x09,
-       0x20, 0x93, 0xe4, 0x69,
-       0x02, 0x93, 0x26, 0x01,
-       0x01, 0x94, 0xe6, 0x79,
-       0xd7, 0x93, 0x26, 0x09,
-       0x08, 0x93, 0xec, 0x69,
-       0xff, 0x6a, 0xd4, 0x0c,
-       0x00, 0x65, 0x3a, 0x5b,
-       0x02, 0xfc, 0xf8, 0x01,
-       0x05, 0xb4, 0x10, 0x31,
-       0x02, 0x6a, 0x1a, 0x31,
-       0x88, 0x6a, 0xcc, 0x00,
-       0xb4, 0x6a, 0xe4, 0x5b,
-       0xff, 0x6a, 0x1a, 0x09,
-       0xff, 0x6a, 0x1c, 0x09,
-       0x00, 0x65, 0xda, 0x5b,
-       0x3d, 0x6a, 0x22, 0x5b,
-       0xac, 0x6a, 0x22, 0x5b,
-       0x00, 0x65, 0x18, 0x41,
-       0x00, 0x65, 0x3a, 0x5b,
-       0xff, 0x06, 0x44, 0x09,
-       0x00, 0x65, 0x18, 0x41,
-       0xff, 0x34, 0xca, 0x08,
-       0x80, 0x65, 0x32, 0x62,
-       0x0f, 0xa1, 0xca, 0x08,
-       0x07, 0xa1, 0xca, 0x08,
-       0x40, 0xa0, 0xc8, 0x08,
-       0x00, 0x65, 0xca, 0x00,
-       0x80, 0x65, 0xca, 0x00,
-       0x80, 0xa0, 0x22, 0x7a,
-       0xff, 0x65, 0x0c, 0x08,
-       0x00, 0x65, 0x34, 0x42,
-       0x20, 0xa0, 0x3a, 0x7a,
-       0xff, 0x65, 0x0c, 0x08,
-       0x00, 0x65, 0xd2, 0x5b,
-       0xa0, 0x3d, 0x46, 0x62,
-       0x23, 0xa0, 0x0c, 0x08,
-       0x00, 0x65, 0xd2, 0x5b,
-       0xa0, 0x3d, 0x46, 0x62,
-       0x00, 0xb9, 0x3a, 0x42,
-       0xff, 0x65, 0x3a, 0x62,
-       0xa1, 0x6a, 0x22, 0x01,
-       0xff, 0x6a, 0xd4, 0x08,
-       0x10, 0x51, 0x46, 0x72,
-       0x40, 0x6a, 0x18, 0x00,
-       0xff, 0x65, 0x0c, 0x08,
-       0x00, 0x65, 0xd2, 0x5b,
-       0xa0, 0x3d, 0x46, 0x62,
-       0x10, 0x3d, 0x06, 0x00,
-       0x00, 0x65, 0x0e, 0x42,
-       0x40, 0x6a, 0x18, 0x00,
-       0xff, 0x34, 0xa6, 0x08,
-       0x80, 0x34, 0x4e, 0x62,
-       0x7f, 0xa0, 0x40, 0x09,
-       0x08, 0x6a, 0x68, 0x00,
-       0x00, 0x65, 0x18, 0x41,
-       0x64, 0x6a, 0x12, 0x5b,
-       0x80, 0x64, 0xbe, 0x6a,
-       0x04, 0x64, 0xa4, 0x72,
-       0x02, 0x64, 0xaa, 0x72,
-       0x00, 0x6a, 0x6c, 0x72,
-       0x03, 0x64, 0xba, 0x72,
-       0x01, 0x64, 0xa0, 0x72,
-       0x07, 0x64, 0x00, 0x73,
-       0x08, 0x64, 0x68, 0x72,
-       0x11, 0x6a, 0x22, 0x01,
-       0x07, 0x6a, 0x04, 0x5b,
-       0xff, 0x06, 0xd4, 0x08,
-       0x00, 0x65, 0x18, 0x41,
-       0xff, 0xa8, 0x70, 0x6a,
-       0xff, 0xa2, 0x88, 0x7a,
-       0x01, 0x6a, 0x6a, 0x00,
-       0x00, 0xb9, 0xfe, 0x5b,
-       0xff, 0xa2, 0x88, 0x7a,
-       0x71, 0x6a, 0x22, 0x01,
-       0xff, 0x6a, 0xd4, 0x08,
-       0x40, 0x51, 0x88, 0x62,
-       0x0d, 0x6a, 0x6a, 0x00,
-       0x00, 0xb9, 0xfe, 0x5b,
-       0xff, 0x3e, 0x74, 0x09,
-       0xff, 0x90, 0x7c, 0x08,
-       0x00, 0x65, 0x44, 0x58,
-       0x00, 0x65, 0x2a, 0x41,
-       0x20, 0xa0, 0x90, 0x6a,
-       0xff, 0x37, 0xc8, 0x08,
-       0x00, 0x6a, 0xa8, 0x5b,
-       0xff, 0x6a, 0xbe, 0x5b,
-       0xff, 0xf8, 0xc8, 0x08,
-       0xff, 0x4f, 0xc8, 0x08,
-       0x01, 0x6a, 0xa8, 0x5b,
-       0x00, 0xb9, 0xbe, 0x5b,
-       0x01, 0x4f, 0x9e, 0x18,
-       0x02, 0x6a, 0x22, 0x01,
-       0x00, 0x65, 0x6c, 0x5c,
-       0x00, 0x65, 0x2a, 0x41,
-       0x41, 0x6a, 0x22, 0x01,
-       0x00, 0x65, 0x18, 0x41,
-       0x04, 0xa0, 0x40, 0x01,
-       0x00, 0x65, 0x84, 0x5c,
-       0x00, 0x65, 0x2a, 0x41,
-       0x10, 0x36, 0x68, 0x7a,
-       0xff, 0x38, 0x46, 0x09,
-       0xa4, 0x6a, 0xcc, 0x00,
-       0x39, 0x6a, 0xe6, 0x5b,
-       0xac, 0x6a, 0xcc, 0x00,
-       0x14, 0x6a, 0xe6, 0x5b,
-       0xa9, 0x6a, 0xe8, 0x5b,
-       0x00, 0x65, 0x68, 0x42,
-       0xef, 0x36, 0x6c, 0x08,
-       0x00, 0x65, 0x68, 0x42,
-       0x0f, 0x64, 0xc8, 0x08,
-       0x07, 0x64, 0xc8, 0x08,
-       0x00, 0x37, 0x6e, 0x00,
-       0x00, 0x65, 0x78, 0x5b,
-       0xff, 0x51, 0xce, 0x72,
-       0x20, 0x36, 0xde, 0x7a,
-       0x00, 0x90, 0x5c, 0x5b,
-       0x00, 0x65, 0xe0, 0x42,
-       0xff, 0x06, 0xd4, 0x08,
-       0x00, 0x65, 0xd2, 0x5b,
-       0xe0, 0x3d, 0xfa, 0x62,
-       0x20, 0x12, 0xfa, 0x62,
-       0x51, 0x6a, 0x08, 0x5b,
-       0xff, 0x51, 0x20, 0x09,
-       0x20, 0xa0, 0xfa, 0x7a,
-       0x00, 0x90, 0x5c, 0x5b,
-       0x00, 0x65, 0x56, 0x5b,
-       0xff, 0x37, 0xc8, 0x08,
-       0x00, 0xa1, 0xf2, 0x62,
-       0x04, 0xa0, 0xf2, 0x7a,
-       0xfb, 0xa0, 0x40, 0x09,
-       0x80, 0x36, 0x6c, 0x00,
-       0x80, 0xa0, 0x68, 0x7a,
-       0x7f, 0xa0, 0x40, 0x09,
-       0xff, 0x6a, 0x04, 0x5b,
-       0x00, 0x65, 0x68, 0x42,
-       0x04, 0xa0, 0xf8, 0x7a,
-       0x00, 0x65, 0x84, 0x5c,
-       0x00, 0x65, 0xfa, 0x42,
-       0x00, 0x65, 0x6c, 0x5c,
-       0x31, 0x6a, 0x22, 0x01,
-       0x0c, 0x6a, 0x04, 0x5b,
-       0x00, 0x65, 0x68, 0x42,
-       0x61, 0x6a, 0x22, 0x01,
-       0x00, 0x65, 0x68, 0x42,
-       0x10, 0x3d, 0x06, 0x00,
-       0xff, 0x65, 0x68, 0x0c,
-       0xff, 0x06, 0xd4, 0x08,
-       0x01, 0x0c, 0x0a, 0x7b,
-       0x04, 0x0c, 0x0a, 0x6b,
-       0xe0, 0x03, 0x7a, 0x08,
-       0xe0, 0x3d, 0x1e, 0x63,
-       0xff, 0x65, 0xcc, 0x08,
-       0xff, 0x12, 0xda, 0x0c,
-       0xff, 0x06, 0xd4, 0x0c,
-       0xff, 0x65, 0x0c, 0x08,
-       0x02, 0x0b, 0x1a, 0x7b,
-       0xff, 0x6a, 0xd4, 0x0c,
-       0xd1, 0x6a, 0x22, 0x01,
-       0x00, 0x65, 0x18, 0x41,
-       0xff, 0x65, 0x26, 0x09,
-       0x01, 0x0b, 0x32, 0x6b,
-       0x10, 0x0c, 0x24, 0x7b,
-       0x04, 0x0b, 0x2c, 0x6b,
-       0xff, 0x6a, 0xca, 0x08,
-       0x04, 0x93, 0x30, 0x6b,
-       0x01, 0x94, 0x2e, 0x7b,
-       0x10, 0x94, 0x30, 0x6b,
-       0xc7, 0x93, 0x26, 0x09,
-       0xff, 0x99, 0xd4, 0x08,
-       0x08, 0x93, 0x34, 0x6b,
-       0xff, 0x6a, 0xd4, 0x0c,
-       0x80, 0x36, 0x38, 0x6b,
-       0x21, 0x6a, 0x22, 0x05,
-       0xff, 0x65, 0x20, 0x09,
-       0xff, 0x51, 0x46, 0x63,
-       0xff, 0x37, 0xc8, 0x08,
-       0xa1, 0x6a, 0x50, 0x43,
-       0xff, 0x51, 0xc8, 0x08,
-       0xb9, 0x6a, 0x50, 0x43,
-       0xff, 0xba, 0x54, 0x73,
-       0xff, 0xba, 0x20, 0x09,
-       0xff, 0x65, 0xca, 0x18,
-       0x00, 0x6c, 0x4a, 0x63,
-       0xff, 0x90, 0xca, 0x0c,
-       0xff, 0x6a, 0xca, 0x04,
-       0x20, 0x36, 0x72, 0x7b,
-       0x00, 0x90, 0x3e, 0x5b,
-       0xff, 0x65, 0x72, 0x73,
-       0xff, 0xba, 0x66, 0x73,
-       0xff, 0xbb, 0xcc, 0x08,
-       0xff, 0xba, 0x20, 0x09,
-       0xff, 0x66, 0x76, 0x09,
-       0xff, 0x65, 0x20, 0x09,
-       0xff, 0xbb, 0x70, 0x73,
-       0xff, 0xba, 0xcc, 0x08,
-       0xff, 0xbb, 0x20, 0x09,
-       0xff, 0x66, 0x74, 0x09,
-       0xff, 0x65, 0x20, 0x0d,
-       0xff, 0xba, 0x7e, 0x0c,
-       0x00, 0x6a, 0x72, 0x5c,
-       0x0d, 0x6a, 0x6a, 0x00,
-       0x00, 0x51, 0xfe, 0x43,
-       0xff, 0x3f, 0xcc, 0x73,
-       0xff, 0x6a, 0xa2, 0x00,
-       0x00, 0x3f, 0x3e, 0x5b,
-       0xff, 0x65, 0xcc, 0x73,
-       0x20, 0x36, 0x6c, 0x00,
-       0x20, 0xa0, 0x86, 0x6b,
-       0xff, 0xb9, 0xa2, 0x0c,
-       0xff, 0x6a, 0xa2, 0x04,
-       0xff, 0x65, 0xa4, 0x08,
-       0xe0, 0x6a, 0xcc, 0x00,
-       0x45, 0x6a, 0xf2, 0x5b,
-       0x01, 0x6a, 0xd0, 0x01,
-       0x09, 0x6a, 0xd6, 0x01,
-       0x80, 0xeb, 0x92, 0x7b,
-       0x01, 0x6a, 0xd6, 0x01,
-       0x01, 0xe9, 0xa4, 0x34,
-       0x88, 0x6a, 0xcc, 0x00,
-       0x45, 0x6a, 0xf2, 0x5b,
-       0x01, 0x6a, 0x18, 0x01,
-       0xff, 0x6a, 0x1a, 0x09,
-       0xff, 0x6a, 0x1c, 0x09,
-       0x0d, 0x6a, 0x26, 0x01,
-       0x00, 0x65, 0x64, 0x5c,
-       0xff, 0x99, 0xa4, 0x0c,
-       0xff, 0x65, 0xa4, 0x08,
-       0xe0, 0x6a, 0xcc, 0x00,
-       0x45, 0x6a, 0xf2, 0x5b,
-       0x01, 0x6a, 0xd0, 0x01,
-       0x01, 0x6a, 0xdc, 0x05,
-       0x88, 0x6a, 0xcc, 0x00,
-       0x45, 0x6a, 0xf2, 0x5b,
-       0x01, 0x6a, 0x18, 0x01,
-       0xff, 0x6a, 0x1a, 0x09,
-       0xff, 0x6a, 0x1c, 0x09,
-       0x01, 0x6a, 0x26, 0x05,
-       0x01, 0x65, 0xd8, 0x31,
-       0x09, 0xee, 0xdc, 0x01,
-       0x80, 0xee, 0xc2, 0x7b,
-       0xff, 0x6a, 0xdc, 0x0d,
-       0xff, 0x65, 0x32, 0x09,
-       0x0a, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0x64, 0x44,
-       0xff, 0x37, 0xc8, 0x08,
-       0x00, 0x6a, 0x88, 0x5b,
-       0xff, 0x52, 0xa2, 0x0c,
-       0x01, 0x0c, 0xd2, 0x7b,
-       0x04, 0x0c, 0xd2, 0x6b,
-       0xe0, 0x03, 0x7a, 0x08,
-       0xff, 0x3d, 0x06, 0x0c,
-       0xff, 0x8c, 0x10, 0x08,
-       0xff, 0x8d, 0x12, 0x08,
-       0xff, 0x8e, 0x14, 0x0c,
-       0xff, 0x6c, 0xda, 0x08,
-       0xff, 0x6c, 0xda, 0x08,
-       0xff, 0x6c, 0xda, 0x08,
-       0xff, 0x6c, 0xda, 0x08,
-       0xff, 0x6c, 0xda, 0x08,
-       0xff, 0x6c, 0xda, 0x08,
-       0xff, 0x6c, 0xda, 0x0c,
-       0x3d, 0x64, 0xa4, 0x28,
-       0x55, 0x64, 0xc8, 0x28,
-       0x00, 0x6c, 0xda, 0x18,
-       0xff, 0x52, 0xc8, 0x08,
-       0x00, 0x6c, 0xda, 0x20,
-       0xff, 0x6a, 0xc8, 0x08,
-       0x00, 0x6c, 0xda, 0x20,
-       0x00, 0x6c, 0xda, 0x24,
-       0xff, 0x65, 0xc8, 0x08,
-       0xe0, 0x6a, 0xcc, 0x00,
-       0x41, 0x6a, 0xee, 0x5b,
-       0xff, 0x90, 0xe2, 0x09,
-       0x20, 0x6a, 0xd0, 0x01,
-       0x04, 0x35, 0x10, 0x7c,
-       0x1d, 0x6a, 0xdc, 0x01,
-       0xdc, 0xee, 0x0c, 0x64,
-       0x00, 0x65, 0x1c, 0x44,
-       0x01, 0x6a, 0xdc, 0x01,
-       0x20, 0xa0, 0xd8, 0x31,
-       0x09, 0xee, 0xdc, 0x01,
-       0x80, 0xee, 0x16, 0x7c,
-       0x19, 0x6a, 0xdc, 0x01,
-       0xd8, 0xee, 0x1a, 0x64,
-       0xff, 0x6a, 0xdc, 0x09,
-       0x18, 0xee, 0x1e, 0x6c,
-       0xff, 0x6a, 0xd4, 0x0c,
-       0x88, 0x6a, 0xcc, 0x00,
-       0x41, 0x6a, 0xee, 0x5b,
-       0x20, 0x6a, 0x18, 0x01,
-       0xff, 0x6a, 0x1a, 0x09,
-       0xff, 0x6a, 0x1c, 0x09,
-       0xff, 0x35, 0x26, 0x09,
-       0x04, 0x35, 0x48, 0x6c,
-       0xa0, 0x6a, 0xca, 0x00,
-       0x20, 0x65, 0xc8, 0x18,
-       0xff, 0x6c, 0x32, 0x09,
-       0xff, 0x6c, 0x32, 0x09,
-       0xff, 0x6c, 0x32, 0x09,
-       0xff, 0x6c, 0x32, 0x09,
-       0xff, 0x6c, 0x32, 0x09,
-       0xff, 0x6c, 0x32, 0x09,
-       0xff, 0x6c, 0x32, 0x09,
-       0xff, 0x6c, 0x32, 0x09,
-       0x00, 0x65, 0x34, 0x64,
-       0x0a, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0x64, 0x5c,
-       0x04, 0x35, 0x38, 0x7b,
-       0xa0, 0x6a, 0x54, 0x5c,
-       0x00, 0x65, 0x56, 0x5c,
-       0x00, 0x65, 0x56, 0x5c,
-       0x00, 0x65, 0x56, 0x44,
-       0xff, 0x65, 0xcc, 0x08,
-       0xff, 0x99, 0xda, 0x08,
-       0xff, 0x99, 0xda, 0x08,
-       0xff, 0x99, 0xda, 0x08,
-       0xff, 0x99, 0xda, 0x08,
-       0xff, 0x99, 0xda, 0x08,
-       0xff, 0x99, 0xda, 0x08,
-       0xff, 0x99, 0xda, 0x0c,
-       0x08, 0x94, 0x64, 0x7c,
-       0xf7, 0x93, 0x26, 0x09,
-       0x08, 0x93, 0x68, 0x6c,
-       0xff, 0x6a, 0xd4, 0x0c,
-       0xff, 0x40, 0x74, 0x09,
-       0xff, 0x90, 0x80, 0x08,
-       0xff, 0x6a, 0x72, 0x05,
-       0xff, 0x40, 0x80, 0x64,
-       0xff, 0x3f, 0x78, 0x64,
-       0xff, 0x6a, 0xca, 0x04,
-       0xff, 0x3f, 0x20, 0x09,
-       0x01, 0x6a, 0x6a, 0x00,
-       0x00, 0xb9, 0xfe, 0x5b,
-       0x00, 0x90, 0x5c, 0x43,
-       0xff, 0x40, 0x20, 0x09,
-       0xff, 0xba, 0x80, 0x0c,
-       0xff, 0x6a, 0x76, 0x01,
-       0xff, 0x3f, 0x74, 0x09,
-       0xff, 0x90, 0x7e, 0x08,
-       0xff, 0xba, 0x38, 0x73,
-       0xff, 0xba, 0x20, 0x09,
-       0xff, 0x3f, 0x76, 0x09,
-       0xff, 0x3f, 0x20, 0x0d,
-};
-
-static int aic7xxx_patch12_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch12_func(struct aic7xxx_host *p)
-{
-       return ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895);
-}
-
-static int aic7xxx_patch11_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch11_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_WIDE) != 0);
-}
-
-static int aic7xxx_patch10_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch10_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_ULTRA2) == 0);
-}
-
-static int aic7xxx_patch9_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch9_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_ULTRA) != 0);
-}
-
-static int aic7xxx_patch8_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch8_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_ULTRA2) != 0);
-}
-
-static int aic7xxx_patch7_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch7_func(struct aic7xxx_host *p)
-{
-       return ((p->flags & AHC_PAGESCBS) == 0);
-}
-
-static int aic7xxx_patch6_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch6_func(struct aic7xxx_host *p)
-{
-       return ((p->flags & AHC_PAGESCBS) != 0);
-}
-
-static int aic7xxx_patch5_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch5_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_QUEUE_REGS) != 0);
-}
-
-static int aic7xxx_patch4_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch4_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_TWIN) != 0);
-}
-
-static int aic7xxx_patch3_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch3_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_QUEUE_REGS) == 0);
-}
-
-static int aic7xxx_patch2_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch2_func(struct aic7xxx_host *p)
-{
-       return ((p->features & AHC_CMD_CHAN) != 0);
-}
-
-static int aic7xxx_patch1_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch1_func(struct aic7xxx_host *p)
-{
-       return ((p->flags & AHC_TARGETMODE) != 0);
-}
-
-static int aic7xxx_patch0_func(struct aic7xxx_host *p);
-
-static int
-aic7xxx_patch0_func(struct aic7xxx_host *p)
-{
-       return (0);
-}
-
-struct sequencer_patch {
-       int             (*patch_func)(struct aic7xxx_host *);
-       unsigned int    begin      :10,
-                       skip_instr :10,
-                       skip_patch :12;
-} sequencer_patches[] = {
-       { aic7xxx_patch1_func, 1, 1, 2 },
-       { aic7xxx_patch0_func, 2, 1, 1 },
-       { aic7xxx_patch2_func, 3, 2, 1 },
-       { aic7xxx_patch3_func, 7, 1, 1 },
-       { aic7xxx_patch3_func, 8, 1, 1 },
-       { aic7xxx_patch4_func, 11, 4, 1 },
-       { aic7xxx_patch5_func, 16, 3, 2 },
-       { aic7xxx_patch0_func, 19, 4, 1 },
-       { aic7xxx_patch6_func, 23, 1, 1 },
-       { aic7xxx_patch7_func, 26, 1, 1 },
-       { aic7xxx_patch4_func, 34, 4, 1 },
-       { aic7xxx_patch8_func, 38, 3, 2 },
-       { aic7xxx_patch0_func, 41, 3, 1 },
-       { aic7xxx_patch9_func, 47, 7, 1 },
-       { aic7xxx_patch4_func, 55, 3, 1 },
-       { aic7xxx_patch8_func, 58, 2, 1 },
-       { aic7xxx_patch1_func, 63, 60, 1 },
-       { aic7xxx_patch8_func, 164, 1, 2 },
-       { aic7xxx_patch0_func, 165, 1, 1 },
-       { aic7xxx_patch2_func, 169, 1, 1 },
-       { aic7xxx_patch2_func, 172, 1, 2 },
-       { aic7xxx_patch0_func, 173, 2, 1 },
-       { aic7xxx_patch10_func, 175, 1, 1 },
-       { aic7xxx_patch8_func, 182, 1, 2 },
-       { aic7xxx_patch0_func, 183, 3, 1 },
-       { aic7xxx_patch8_func, 187, 1, 2 },
-       { aic7xxx_patch0_func, 188, 1, 1 },
-       { aic7xxx_patch8_func, 189, 7, 2 },
-       { aic7xxx_patch0_func, 196, 1, 1 },
-       { aic7xxx_patch2_func, 201, 13, 2 },
-       { aic7xxx_patch0_func, 214, 8, 1 },
-       { aic7xxx_patch10_func, 222, 1, 1 },
-       { aic7xxx_patch8_func, 227, 1, 1 },
-       { aic7xxx_patch8_func, 228, 1, 1 },
-       { aic7xxx_patch8_func, 233, 1, 1 },
-       { aic7xxx_patch8_func, 235, 2, 1 },
-       { aic7xxx_patch8_func, 240, 8, 1 },
-       { aic7xxx_patch8_func, 249, 1, 1 },
-       { aic7xxx_patch2_func, 250, 2, 2 },
-       { aic7xxx_patch0_func, 252, 4, 1 },
-       { aic7xxx_patch10_func, 256, 2, 2 },
-       { aic7xxx_patch0_func, 258, 1, 1 },
-       { aic7xxx_patch11_func, 265, 1, 2 },
-       { aic7xxx_patch0_func, 266, 1, 1 },
-       { aic7xxx_patch5_func, 328, 1, 2 },
-       { aic7xxx_patch0_func, 329, 1, 1 },
-       { aic7xxx_patch3_func, 332, 1, 1 },
-       { aic7xxx_patch11_func, 351, 1, 2 },
-       { aic7xxx_patch0_func, 352, 1, 1 },
-       { aic7xxx_patch6_func, 356, 1, 1 },
-       { aic7xxx_patch7_func, 364, 3, 2 },
-       { aic7xxx_patch0_func, 367, 1, 1 },
-       { aic7xxx_patch1_func, 396, 3, 1 },
-       { aic7xxx_patch10_func, 410, 1, 1 },
-       { aic7xxx_patch2_func, 453, 7, 2 },
-       { aic7xxx_patch0_func, 460, 8, 1 },
-       { aic7xxx_patch2_func, 469, 4, 2 },
-       { aic7xxx_patch0_func, 473, 6, 1 },
-       { aic7xxx_patch2_func, 479, 4, 2 },
-       { aic7xxx_patch0_func, 483, 3, 1 },
-       { aic7xxx_patch2_func, 512, 17, 4 },
-       { aic7xxx_patch12_func, 520, 4, 2 },
-       { aic7xxx_patch0_func, 524, 2, 1 },
-       { aic7xxx_patch0_func, 529, 33, 1 },
-       { aic7xxx_patch6_func, 566, 2, 1 },
-       { aic7xxx_patch6_func, 569, 9, 1 },
-
-};
diff --git a/linux/src/drivers/scsi/eata_dma.c 
b/linux/src/drivers/scsi/eata_dma.c
deleted file mode 100644
index c019813..0000000
--- a/linux/src/drivers/scsi/eata_dma.c
+++ /dev/null
@@ -1,1603 +0,0 @@
-/************************************************************
- *                                                         *
- *                 Linux EATA SCSI driver                  *
- *                                                         *
- *  based on the CAM document CAM/89-004 rev. 2.0c,        *
- *  DPT's driver kit, some internal documents and source,   *
- *  and several other Linux scsi drivers and kernel docs.   *
- *                                                         *
- *  The driver currently:                                  *
- *     -supports all ISA based EATA-DMA boards             *
- *       like PM2011, PM2021, PM2041, PM3021                *
- *     -supports all EISA based EATA-DMA boards            *
- *       like PM2012B, PM2022, PM2122, PM2322, PM2042,      *
- *            PM3122, PM3222, PM3332                        *
- *     -supports all PCI based EATA-DMA boards             *
- *       like PM2024, PM2124, PM2044, PM2144, PM3224,       *
- *            PM3334                                        *
- *      -supports the Wide, Ultra Wide and Differential     *
- *       versions of the boards                             *
- *     -supports multiple HBAs with & without IRQ sharing  *
- *     -supports all SCSI channels on multi channel boards *
- *      -supports ix86 and MIPS, untested on ALPHA          *
- *     -needs identical IDs on all channels of a HBA       * 
- *     -can be loaded as module                            *
- *     -displays statistical and hardware information      *
- *      in /proc/scsi/eata_dma                             *
- *      -provides rudimentary latency measurement           * 
- *       possibilities via /proc/scsi/eata_dma/<hostnum>    *
- *                                                         *
- *  (c)1993-96 Michael Neuffer                             *
- *             address@hidden                           *
- *            address@hidden               *
- *                                                         *
- *  This program is free software; you can redistribute it  *
- *  and/or modify it under the terms of the GNU General            *
- *  Public License as published by the Free Software       *
- *  Foundation; either version 2 of the License, or        *
- *  (at your option) any later version.                            *
- *                                                         *
- *  This program is distributed in the hope that it will be *
- *  useful, but WITHOUT ANY WARRANTY; without even the     *
- *  implied warranty of MERCHANTABILITY or FITNESS FOR A    *
- *  PARTICULAR PURPOSE.         See the GNU General Public License *
- *  for more details.                                      *
- *                                                         *
- *  You should have received a copy of the GNU General     *
- *  Public License along with this kernel; if not, write to *
- *  the Free Software Foundation, Inc., 675 Mass Ave,      *
- *  Cambridge, MA 02139, USA.                              *
- *                                                         *
- * I have to thank DPT for their excellent support. I took  *
- * me almost a year and a stopover at their HQ, on my first *
- * trip to the USA, to get it, but since then they've been  *
- * very helpful and tried to give me all the infos and     *
- * support I need.                                         *
- *                                                         *
- * Thanks also to Simon Shapiro, Greg Hosler and Mike       *
- * Jagdis who did a lot of testing and found quite a number *
- * of bugs during the development.                          *
- ************************************************************
- *  last change: 96/10/21                 OS: Linux 2.0.23  *
- ************************************************************/
-
-/* Look in eata_dma.h for configuration and revision information */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/string.h>
-#include <linux/ioport.h>
-#include <linux/malloc.h>
-#include <linux/in.h>
-#include <linux/bios32.h>
-#include <linux/pci.h>
-#include <linux/proc_fs.h>
-#include <linux/delay.h>
-#include <asm/byteorder.h>
-#include <asm/types.h>
-#include <asm/io.h>
-#include <asm/dma.h>
-#include <asm/pgtable.h>
-#ifdef __mips__
-#include <asm/cachectl.h>
-#endif
-#include <linux/blk.h>
-#include "scsi.h"
-#include "sd.h"
-#include "hosts.h"
-#include "eata_dma.h"
-#include "eata_dma_proc.h" 
-
-#include <linux/stat.h>
-#include <linux/config.h>      /* for CONFIG_PCI */
-
-struct proc_dir_entry proc_scsi_eata_dma = {
-    PROC_SCSI_EATA, 8, "eata_dma",
-    S_IFDIR | S_IRUGO | S_IXUGO, 2
-};
-
-static u32 ISAbases[] =
-{0x1F0, 0x170, 0x330, 0x230};
-static unchar EISAbases[] =
-{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
-static uint registered_HBAs = 0;
-static struct Scsi_Host *last_HBA = NULL;
-static struct Scsi_Host *first_HBA = NULL;
-static unchar reg_IRQ[] =
-{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-static unchar reg_IRQL[] =
-{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-static struct eata_sp *status = 0;   /* Statuspacket array   */
-static void *dma_scratch = 0;
-
-static struct eata_register *fake_int_base;
-static int fake_int_result;
-static int fake_int_happened;
-
-static ulong int_counter = 0;
-static ulong queue_counter = 0;
-
-void eata_scsi_done (Scsi_Cmnd * scmd)
-{
-    scmd->request.rq_status = RQ_SCSI_DONE;
-
-    if (scmd->request.sem != NULL)
-       up(scmd->request.sem);
-    
-    return;
-}   
-
-void eata_fake_int_handler(s32 irq, void *dev_id, struct pt_regs * regs)
-{
-    fake_int_result = inb((ulong)fake_int_base + HA_RSTATUS);
-    fake_int_happened = TRUE;
-    DBG(DBG_INTR3, printk("eata_fake_int_handler called irq%d base %p"
-                         " res %#x\n", irq, fake_int_base, fake_int_result));
-    return;
-}
-
-#include "eata_dma_proc.c"
-
-#ifdef MODULE
-int eata_release(struct Scsi_Host *sh)
-{
-    uint i;
-    if (sh->irq && reg_IRQ[sh->irq] == 1) free_irq(sh->irq, NULL);
-    else reg_IRQ[sh->irq]--;
-    
-    scsi_init_free((void *)status, 512);
-    scsi_init_free((void *)dma_scratch - 4, 1024);
-    for (i = 0; i < sh->can_queue; i++){ /* Free all SG arrays */
-       if(SD(sh)->ccb[i].sg_list != NULL)
-           scsi_init_free((void *) SD(sh)->ccb[i].sg_list, 
-                          sh->sg_tablesize * sizeof(struct eata_sg_list));
-    }
-    
-    if (SD(sh)->channel == 0) {
-       if (sh->dma_channel != BUSMASTER) free_dma(sh->dma_channel);
-       if (sh->io_port && sh->n_io_port)
-           release_region(sh->io_port, sh->n_io_port);
-    }
-    return(TRUE);
-}
-#endif
-
-
-inline void eata_latency_in(struct eata_ccb *cp, hostdata *hd)
-{
-    uint time;
-    time = jiffies - cp->timestamp;
-    if(hd->all_lat[1] > time)
-        hd->all_lat[1] = time;
-    if(hd->all_lat[2] < time)
-        hd->all_lat[2] = time;
-    hd->all_lat[3] += time;
-    hd->all_lat[0]++;
-    if((cp->rw_latency) == WRITE) { /* was WRITE */
-        if(hd->writes_lat[cp->sizeindex][1] > time)
-           hd->writes_lat[cp->sizeindex][1] = time;
-       if(hd->writes_lat[cp->sizeindex][2] < time)
-           hd->writes_lat[cp->sizeindex][2] = time;
-       hd->writes_lat[cp->sizeindex][3] += time;
-       hd->writes_lat[cp->sizeindex][0]++;
-    } else if((cp->rw_latency) == READ) {
-        if(hd->reads_lat[cp->sizeindex][1] > time)
-           hd->reads_lat[cp->sizeindex][1] = time;
-       if(hd->reads_lat[cp->sizeindex][2] < time)
-           hd->reads_lat[cp->sizeindex][2] = time;
-       hd->reads_lat[cp->sizeindex][3] += time;
-       hd->reads_lat[cp->sizeindex][0]++;
-    }
-} 
-
-inline void eata_latency_out(struct eata_ccb *cp, Scsi_Cmnd *cmd)
-{
-    int x, z;
-    short *sho;
-    long *lon;
-    x = 0;                             /* just to keep GCC quiet */ 
-    cp->timestamp = jiffies;           /* For latency measurements */
-    switch(cmd->cmnd[0]) {
-    case WRITE_6:   
-        x = cmd->cmnd[4]/2; 
-       cp->rw_latency = WRITE;
-       break;
-    case READ_6:    
-        x = cmd->cmnd[4]/2; 
-       cp->rw_latency = READ;
-       break;
-    case WRITE_10:   
-        sho = (short *) &cmd->cmnd[7];
-       x = ntohs(*sho)/2;            
-       cp->rw_latency = WRITE;
-       break;
-    case READ_10:
-        sho = (short *) &cmd->cmnd[7];
-       x = ntohs(*sho)/2;            
-       cp->rw_latency = READ;
-       break;
-    case WRITE_12:   
-        lon = (long *) &cmd->cmnd[6];
-       x = ntohl(*lon)/2;            
-       cp->rw_latency = WRITE;
-       break;
-    case READ_12:
-        lon = (long *) &cmd->cmnd[6];
-       x = ntohl(*lon)/2;            
-       cp->rw_latency = READ;
-       break;
-    default:
-        cp->rw_latency = OTHER;
-       break;
-    }
-    if (cmd->cmnd[0] == WRITE_6 || cmd->cmnd[0] == WRITE_10 || 
-       cmd->cmnd[0] == WRITE_12 || cmd->cmnd[0] == READ_6 || 
-       cmd->cmnd[0] == READ_10 || cmd->cmnd[0] == READ_12) {
-        for(z = 0; (x > (1 << z)) && (z <= 11); z++) 
-           /* nothing */;
-       cp->sizeindex = z;
-    } 
-}
-
-
-void eata_int_handler(int irq, void *dev_id, struct pt_regs * regs)
-{
-    uint i, result = 0;
-    uint hba_stat, scsi_stat, eata_stat;
-    Scsi_Cmnd *cmd;
-    struct eata_ccb *ccb;
-    struct eata_sp *sp;
-    uint base;
-    uint x;
-    struct Scsi_Host *sh;
-
-    for (x = 1, sh = first_HBA; x <= registered_HBAs; x++, sh = SD(sh)->next) {
-       if (sh->irq != irq)
-           continue;
-       
-       while(inb((uint)sh->base + HA_RAUXSTAT) & HA_AIRQ) {
-           
-           int_counter++;
-           
-           sp = &SD(sh)->sp;
-#ifdef __mips__
-            sys_cacheflush(sp, sizeof(struct eata_sp), 2);
-#endif
-           ccb = sp->ccb;
-           
-           if(ccb == NULL) {
-               eata_stat = inb((uint)sh->base + HA_RSTATUS);
-               printk("eata_dma: int_handler, Spurious IRQ %d "
-                      "received. CCB pointer not set.\n", irq);
-               break;
-           }
-
-           cmd = ccb->cmd;
-           base = (uint) cmd->host->base;
-                   hba_stat = sp->hba_stat;
-           
-           scsi_stat = (sp->scsi_stat >> 1) & 0x1f; 
-           
-           if (sp->EOC == FALSE) {
-               eata_stat = inb(base + HA_RSTATUS);
-               printk(KERN_WARNING "eata_dma: int_handler, board: %x cmd %lx "
-                      "returned unfinished.\n"
-                      "EATA: %x HBA: %x SCSI: %x spadr %lx spadrirq %lx, "
-                      "irq%d\n", base, (long)ccb, eata_stat, hba_stat, 
-                      scsi_stat,(long)&status, (long)&status[irq], irq);
-               cmd->result = DID_ERROR << 16;
-               ccb->status = FREE;
-               cmd->scsi_done(cmd);
-               break;
-           } 
-           
-           sp->EOC = FALSE; /* Clean out this flag */
-
-           if (ccb->status == LOCKED || ccb->status == RESET) {
-               printk("eata_dma: int_handler, reseted command pid %ld returned"
-                     "\n", cmd->pid);
-              DBG(DBG_INTR && DBG_DELAY, DELAY(1));
-           }
-           
-           eata_stat = inb(base + HA_RSTATUS); 
-           DBG(DBG_INTR, printk("IRQ %d received, base %#.4x, pid %ld, "
-                                "target: %x, lun: %x, ea_s: %#.2x, hba_s: "
-                                "%#.2x \n", irq, base, cmd->pid, cmd->target,
-                                cmd->lun, eata_stat, hba_stat));
-           
-           switch (hba_stat) {
-           case HA_NO_ERROR:   /* NO Error */
-               if(HD(cmd)->do_latency == TRUE && ccb->timestamp) 
-                   eata_latency_in(ccb, HD(cmd));
-               result = DID_OK << 16;
-               break;
-           case HA_ERR_SEL_TO:         /* Selection Timeout */
-           case HA_ERR_CMD_TO:         /* Command Timeout   */
-               result = DID_TIME_OUT << 16;
-               break;
-           case HA_BUS_RESET:          /* SCSI Bus Reset Received */
-               result = DID_RESET << 16;
-               DBG(DBG_STATUS, printk(KERN_WARNING "scsi%d: BUS RESET "
-                                      "received on cmd %ld\n", 
-                                      HD(cmd)->HBA_number, cmd->pid));
-               break;
-           case HA_INIT_POWERUP:       /* Initial Controller Power-up */
-               if (cmd->device->type != TYPE_TAPE)
-                   result = DID_BUS_BUSY << 16;
-               else
-                   result = DID_ERROR << 16;
-               
-               for (i = 0; i < MAXTARGET; i++)
-               DBG(DBG_STATUS, printk(KERN_DEBUG "scsi%d: cmd pid %ld "
-                                      "returned with INIT_POWERUP\n", 
-                                      HD(cmd)->HBA_number, cmd->pid));
-               break;
-           case HA_CP_ABORT_NA:
-           case HA_CP_ABORTED:
-               result = DID_ABORT << 16;
-               DBG(DBG_STATUS, printk(KERN_WARNING "scsi%d: aborted cmd "
-                                      "returned\n", HD(cmd)->HBA_number));
-               break;
-           case HA_CP_RESET_NA:
-           case HA_CP_RESET:
-               HD(cmd)->resetlevel[cmd->channel] = 0; 
-               result = DID_RESET << 16;
-               DBG(DBG_STATUS, printk(KERN_WARNING "scsi%d: reseted cmd "
-                                      "pid %ldreturned\n", 
-                                      HD(cmd)->HBA_number, cmd->pid));
-           case HA_SCSI_HUNG:          /* SCSI Hung                 */
-               printk(KERN_ERR "scsi%d: SCSI hung\n", HD(cmd)->HBA_number);
-               result = DID_ERROR << 16;
-               break;
-           case HA_RSENSE_FAIL:        /* Auto Request-Sense Failed */
-               DBG(DBG_STATUS, printk(KERN_ERR "scsi%d: Auto Request Sense "
-                                      "Failed\n", HD(cmd)->HBA_number));
-               result = DID_ERROR << 16;
-               break;
-           case HA_UNX_BUSPHASE:       /* Unexpected Bus Phase */
-           case HA_UNX_BUS_FREE:       /* Unexpected Bus Free */
-           case HA_BUS_PARITY:         /* Bus Parity Error */
-           case HA_UNX_MSGRJCT:        /* Unexpected Message Reject */
-           case HA_RESET_STUCK:        /* SCSI Bus Reset Stuck */
-           case HA_PARITY_ERR:         /* Controller Ram Parity */
-           default:
-               result = DID_ERROR << 16;
-               break;
-           }
-           cmd->result = result | (scsi_stat << 1); 
-           
-#if DBG_INTR2
-           if (scsi_stat || result || hba_stat || eata_stat != 0x50 
-               || cmd->scsi_done == NULL || cmd->device->id == 7) 
-               printk("HBA: %d, channel %d, id: %d, lun %d, pid %ld:\n" 
-                      "eata_stat %#x, hba_stat %#.2x, scsi_stat %#.2x, "
-                      "sense_key: %#x, result: %#.8x\n", x, 
-                      cmd->device->channel, cmd->device->id, cmd->device->lun,
-                      cmd->pid, eata_stat, hba_stat, scsi_stat, 
-                      cmd->sense_buffer[2] & 0xf, cmd->result); 
-           DBG(DBG_INTR&&DBG_DELAY,DELAY(1));
-#endif
-           
-           ccb->status = FREE;     /* now we can release the slot  */
-           cmd->scsi_done(cmd);
-       }
-    }
-
-    return;
-}
-
-inline int eata_send_command(u32 addr, u32 base, u8 command)
-{
-    long loop = R_LIMIT;
-    
-    while (inb(base + HA_RAUXSTAT) & HA_ABUSY)
-       if (--loop == 0)
-           return(FALSE);
-
-    if(addr != (u32) NULL)
-        addr = virt_to_bus((void *)addr);
-
-    /*
-     * This is overkill.....but the MIPSen seem to need this
-     * and it will be optimized away for i86 and ALPHA machines.
-     */
-    flush_cache_all();
-
-    /* And now the address in nice little byte chunks */
-#ifdef __LITTLE_ENDIAN
-    outb(addr,       base + HA_WDMAADDR);
-    outb(addr >> 8,  base + HA_WDMAADDR + 1);
-    outb(addr >> 16, base + HA_WDMAADDR + 2);
-    outb(addr >> 24, base + HA_WDMAADDR + 3);
-#else
-    outb(addr >> 24, base + HA_WDMAADDR);
-    outb(addr >> 16, base + HA_WDMAADDR + 1);
-    outb(addr >> 8,  base + HA_WDMAADDR + 2);
-    outb(addr,       base + HA_WDMAADDR + 3);
-#endif
-    outb(command, base + HA_WCOMMAND);
-    return(TRUE);
-}
-
-inline int eata_send_immediate(u32 base, u32 addr, u8 ifc, u8 code, u8 code2)
-{
-    if(addr != (u32) NULL)
-        addr = virt_to_bus((void *)addr);
-
-    /*
-     * This is overkill.....but the MIPSen seem to need this
-     * and it will be optimized away for i86 and ALPHA machines.
-     */
-    flush_cache_all();
-
-    outb(0x0, base + HA_WDMAADDR - 1);
-    if(addr){
-#ifdef __LITTLE_ENDIAN
-        outb(addr,       base + HA_WDMAADDR);
-       outb(addr >> 8,  base + HA_WDMAADDR + 1);
-       outb(addr >> 16, base + HA_WDMAADDR + 2);
-       outb(addr >> 24, base + HA_WDMAADDR + 3);
-#else
-        outb(addr >> 24, base + HA_WDMAADDR);
-       outb(addr >> 16, base + HA_WDMAADDR + 1);
-       outb(addr >> 8,  base + HA_WDMAADDR + 2);
-       outb(addr,       base + HA_WDMAADDR + 3);
-#endif
-    } else {
-        outb(0x0, base + HA_WDMAADDR);
-        outb(0x0, base + HA_WDMAADDR + 1);
-       outb(code2, base + HA_WCODE2);
-       outb(code,  base + HA_WCODE);
-    }
-    
-    outb(ifc, base + HA_WIFC);
-    outb(EATA_CMD_IMMEDIATE, base + HA_WCOMMAND);
-    return(TRUE);
-}
-
-int eata_queue(Scsi_Cmnd * cmd, void (* done) (Scsi_Cmnd *))
-{
-    unsigned int i, x, y;
-    ulong flags;
-    hostdata *hd;
-    struct Scsi_Host *sh;
-    struct eata_ccb *ccb;
-    struct scatterlist *sl;
-
-    
-    save_flags(flags);
-    cli();
-
-#if 0
-    for (x = 1, sh = first_HBA; x <= registered_HBAs; x++, sh = SD(sh)->next) {
-      if(inb((uint)sh->base + HA_RAUXSTAT) & HA_AIRQ) {
-            printk("eata_dma: scsi%d interrupt pending in eata_queue.\n"
-                  "          Calling interrupt handler.\n", sh->host_no);
-            eata_int_handler(sh->irq, 0, 0);
-      }
-    }
-#endif
-    
-    queue_counter++;
-
-    hd = HD(cmd);
-    sh = cmd->host;
-    
-    if (cmd->cmnd[0] == REQUEST_SENSE && cmd->sense_buffer[0] != 0) {
-        DBG(DBG_REQSENSE, printk(KERN_DEBUG "Tried to REQUEST SENSE\n"));
-       cmd->result = DID_OK << 16;
-       done(cmd);
-
-       return(0);
-    }
-
-    /* check for free slot */
-    for (y = hd->last_ccb + 1, x = 0; x < sh->can_queue; x++, y++) { 
-       if (y >= sh->can_queue)
-           y = 0;
-       if (hd->ccb[y].status == FREE)
-           break;
-    }
-    
-    hd->last_ccb = y;
-
-    if (x >= sh->can_queue) { 
-       cmd->result = DID_BUS_BUSY << 16;
-       DBG(DBG_QUEUE && DBG_ABNORM, 
-           printk(KERN_CRIT "eata_queue pid %ld, HBA QUEUE FULL..., "
-                  "returning DID_BUS_BUSY\n", cmd->pid));
-       done(cmd);
-       restore_flags(flags);
-       return(0);
-    }
-    ccb = &hd->ccb[y];
-    
-    memset(ccb, 0, sizeof(struct eata_ccb) - sizeof(struct eata_sg_list *));
-    
-    ccb->status = USED;                        /* claim free slot */
-
-    restore_flags(flags);
-    
-    DBG(DBG_QUEUE, printk("eata_queue pid %ld, target: %x, lun: %x, y %d\n",
-                         cmd->pid, cmd->target, cmd->lun, y));
-    DBG(DBG_QUEUE && DBG_DELAY, DELAY(1));
-    
-    if(hd->do_latency == TRUE) 
-        eata_latency_out(ccb, cmd);
-
-    cmd->scsi_done = (void *)done;
-    
-    switch (cmd->cmnd[0]) {
-    case CHANGE_DEFINITION: case COMPARE:        case COPY:
-    case COPY_VERIFY:      case LOG_SELECT:      case MODE_SELECT:
-    case MODE_SELECT_10:    case SEND_DIAGNOSTIC: case WRITE_BUFFER:
-    case FORMAT_UNIT:      case REASSIGN_BLOCKS: case RESERVE:
-    case SEARCH_EQUAL:     case SEARCH_HIGH:     case SEARCH_LOW:
-    case WRITE_6:          case WRITE_10:        case WRITE_VERIFY:
-    case UPDATE_BLOCK:     case WRITE_LONG:      case WRITE_SAME:      
-    case SEARCH_HIGH_12:    case SEARCH_EQUAL_12: case SEARCH_LOW_12:
-    case WRITE_12:         case WRITE_VERIFY_12: case SET_WINDOW: 
-    case MEDIUM_SCAN:      case SEND_VOLUME_TAG:            
-    case 0xea:     /* alternate number for WRITE LONG */
-       ccb->DataOut = TRUE;    /* Output mode */
-       break;
-    case TEST_UNIT_READY:
-    default:
-       ccb->DataIn = TRUE;     /* Input mode  */
-    }
-
-    /* FIXME: This will have to be changed once the midlevel driver 
-     *        allows different HBA IDs on every channel.
-     */
-    if (cmd->target == sh->this_id) 
-       ccb->Interpret = TRUE;  /* Interpret command */
-
-    if (cmd->use_sg) {
-       ccb->scatter = TRUE;    /* SG mode     */
-       if (ccb->sg_list == NULL) {
-           ccb->sg_list = kmalloc(sh->sg_tablesize * sizeof(struct 
eata_sg_list),
-                                 GFP_ATOMIC | GFP_DMA);
-       }
-       if (ccb->sg_list == NULL)
-           panic("eata_dma: Run out of DMA memory for SG lists !\n");
-       ccb->cp_dataDMA = htonl(virt_to_bus(ccb->sg_list)); 
-       
-       ccb->cp_datalen = htonl(cmd->use_sg * sizeof(struct eata_sg_list));
-       sl=(struct scatterlist *)cmd->request_buffer;
-       for(i = 0; i < cmd->use_sg; i++, sl++){
-           ccb->sg_list[i].data = htonl(virt_to_bus(sl->address));
-           ccb->sg_list[i].len = htonl((u32) sl->length);
-       }
-    } else {
-       ccb->scatter = FALSE;
-       ccb->cp_datalen = htonl(cmd->request_bufflen);
-       ccb->cp_dataDMA = htonl(virt_to_bus(cmd->request_buffer));
-    }
-    
-    ccb->Auto_Req_Sen = TRUE;
-    ccb->cp_reqDMA = htonl(virt_to_bus(cmd->sense_buffer));
-    ccb->reqlen = sizeof(cmd->sense_buffer);
-    
-    ccb->cp_id = cmd->target;
-    ccb->cp_channel = cmd->channel;
-    ccb->cp_lun = cmd->lun;
-    ccb->cp_dispri = TRUE;
-    ccb->cp_identify = TRUE;
-    memcpy(ccb->cp_cdb, cmd->cmnd, cmd->cmd_len);
-    
-    ccb->cp_statDMA = htonl(virt_to_bus(&(hd->sp)));
-    
-    ccb->cp_viraddr = ccb; /* This will be passed thru, so we don't need to 
-                           * convert it */
-    ccb->cmd = cmd;
-    cmd->host_scribble = (char *)&hd->ccb[y];  
-    
-    if(eata_send_command((u32) ccb, (u32) sh->base, EATA_CMD_DMA_SEND_CP) == 
FALSE) {
-       cmd->result = DID_BUS_BUSY << 16;
-       DBG(DBG_QUEUE && DBG_ABNORM, 
-           printk("eata_queue target %d, pid %ld, HBA busy, "
-                  "returning DID_BUS_BUSY\n",cmd->target, cmd->pid));
-       ccb->status = FREE;    
-       done(cmd);
-       return(0);
-    }
-    DBG(DBG_QUEUE, printk("Queued base %#.4x pid: %ld target: %x lun: %x "
-                        "slot %d irq %d\n", (s32)sh->base, cmd->pid, 
-                        cmd->target, cmd->lun, y, sh->irq));
-    DBG(DBG_QUEUE && DBG_DELAY, DELAY(1));
-
-    return(0);
-}
-
-
-int eata_abort(Scsi_Cmnd * cmd)
-{
-    ulong loop = HZ / 2;
-    ulong flags;
-    int x;
-    struct Scsi_Host *sh;
- 
-    save_flags(flags);
-    cli();
-
-    DBG(DBG_ABNORM, printk("eata_abort called pid: %ld target: %x lun: %x"
-                          " reason %x\n", cmd->pid, cmd->target, cmd->lun, 
-                          cmd->abort_reason));
-    DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-
-    /* Some interrupt controllers seem to loose interrupts */
-    for (x = 1, sh = first_HBA; x <= registered_HBAs; x++, sh = SD(sh)->next) {
-        if(inb((uint)sh->base + HA_RAUXSTAT) & HA_AIRQ) {
-            printk("eata_dma: scsi%d interrupt pending in eata_abort.\n"
-                  "          Calling interrupt handler.\n", sh->host_no);
-           eata_int_handler(sh->irq, 0, 0);
-       }
-    }
-
-    while (inb((u32)(cmd->host->base) + HA_RAUXSTAT) & HA_ABUSY) {
-       if (--loop == 0) {
-           printk("eata_dma: abort, timeout error.\n");
-           DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-           restore_flags(flags);
-           return (SCSI_ABORT_ERROR);
-       }
-    }
-    if (CD(cmd)->status == RESET) {
-       printk("eata_dma: abort, command reset error.\n");
-       DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-       restore_flags(flags);
-       return (SCSI_ABORT_ERROR);
-    }
-    if (CD(cmd)->status == LOCKED) {
-       DBG(DBG_ABNORM, printk("eata_dma: abort, queue slot locked.\n"));
-       DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-       restore_flags(flags);
-       return (SCSI_ABORT_NOT_RUNNING);
-    }
-    if (CD(cmd)->status == USED) {
-       DBG(DBG_ABNORM, printk("Returning: SCSI_ABORT_BUSY\n"));
-       restore_flags(flags);
-       return (SCSI_ABORT_BUSY);  /* SNOOZE */ 
-    }
-    if (CD(cmd)->status == FREE) {
-       DBG(DBG_ABNORM, printk("Returning: SCSI_ABORT_NOT_RUNNING\n")); 
-       restore_flags(flags);
-       return (SCSI_ABORT_NOT_RUNNING);
-    }
-    restore_flags(flags);
-    panic("eata_dma: abort: invalid slot status\n");
-}
-
-int eata_reset(Scsi_Cmnd * cmd, unsigned int resetflags)
-{
-    uint x; 
-    ulong loop = loops_per_sec / 3;
-    ulong flags;
-    unchar success = FALSE;
-    Scsi_Cmnd *sp; 
-    struct Scsi_Host *sh;
-    
-    save_flags(flags);
-    cli();
-    
-    DBG(DBG_ABNORM, printk("eata_reset called pid:%ld target: %x lun: %x"
-                          " reason %x\n", cmd->pid, cmd->target, cmd->lun, 
-                          cmd->abort_reason));
-       
-    for (x = 1, sh = first_HBA; x <= registered_HBAs; x++, sh = SD(sh)->next) {
-        if(inb((uint)sh->base + HA_RAUXSTAT) & HA_AIRQ) {
-            printk("eata_dma: scsi%d interrupt pending in eata_reset.\n"
-                  "          Calling interrupt handler.\n", sh->host_no);
-            eata_int_handler(sh->irq, 0, 0);
-      }
-    }
-
-    if (HD(cmd)->state == RESET) {
-       printk("eata_reset: exit, already in reset.\n");
-       restore_flags(flags);
-       DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-       return (SCSI_RESET_ERROR);
-    }
-    
-    while (inb((u32)(cmd->host->base) + HA_RAUXSTAT) & HA_ABUSY)
-       if (--loop == 0) {
-           printk("eata_reset: exit, timeout error.\n");
-           restore_flags(flags);
-           DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-           return (SCSI_RESET_ERROR);
-       }
- 
-    for (x = 0; x < cmd->host->can_queue; x++) {
-       if (HD(cmd)->ccb[x].status == FREE)
-           continue;
-
-       if (HD(cmd)->ccb[x].status == LOCKED) {
-           HD(cmd)->ccb[x].status = FREE;
-           printk("eata_reset: locked slot %d forced free.\n", x);
-           DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-           continue;
-       }
-
-
-       sp = HD(cmd)->ccb[x].cmd;
-       HD(cmd)->ccb[x].status = RESET;
-       
-       if (sp == NULL)
-           panic("eata_reset: slot %d, sp==NULL.\n", x);
-
-       printk("eata_reset: slot %d in reset, pid %ld.\n", x, sp->pid);
-
-       DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-       
-       if (sp == cmd)
-           success = TRUE;
-    }
-    
-    /* hard reset the HBA  */
-    inb((u32) (cmd->host->base) + HA_RSTATUS); /* This might cause trouble */
-    eata_send_command(0, (u32) cmd->host->base, EATA_CMD_RESET);
-    
-    HD(cmd)->state = RESET;
-
-    DBG(DBG_ABNORM, printk("eata_reset: board reset done, enabling "
-                          "interrupts.\n"));
-
-    DELAY(2); /* In theorie we should get interrupts and set free all
-              * used queueslots */
-    
-    DBG(DBG_ABNORM, printk("eata_reset: interrupts disabled again.\n"));
-    DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-    
-    for (x = 0; x < cmd->host->can_queue; x++) {
-       
-       /* Skip slots already set free by interrupt and those that 
-         * are still LOCKED from the last reset */
-       if (HD(cmd)->ccb[x].status != RESET)
-           continue;
-       
-       sp = HD(cmd)->ccb[x].cmd;
-       sp->result = DID_RESET << 16;
-       
-       /* This mailbox is still waiting for its interrupt */
-       HD(cmd)->ccb[x].status = LOCKED;
-       
-       printk("eata_reset: slot %d locked, DID_RESET, pid %ld done.\n",
-              x, sp->pid);
-       DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-
-       sp->scsi_done(sp);
-    }
-    
-    HD(cmd)->state = FALSE;
-    restore_flags(flags);
-    
-    if (success) {
-       DBG(DBG_ABNORM, printk("eata_reset: exit, pending.\n"));
-       DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-       return (SCSI_RESET_PENDING);
-    } else {
-       DBG(DBG_ABNORM, printk("eata_reset: exit, wakeup.\n"));
-       DBG(DBG_ABNORM && DBG_DELAY, DELAY(1));
-       return (SCSI_RESET_PUNT);
-    }
-}
-
-/* Here we try to determine the optimum queue depth for
- * each attached device.
- *
- * At the moment the algorithm is rather simple
- */
-static void eata_select_queue_depths(struct Scsi_Host *host, 
-                                    Scsi_Device *devicelist)
-{
-    Scsi_Device *device;
-    int devcount = 0; 
-    int factor = 0;
-
-#if CRIPPLE_QUEUE    
-    for(device = devicelist; device != NULL; device = device->next) {
-        if(device->host == host)
-           device->queue_depth = 2;
-    }
-#else
-    /* First we do a sample run go find out what we have */
-    for(device = devicelist; device != NULL; device = device->next) {
-        if (device->host == host) {
-           devcount++;
-           switch(device->type) {
-           case TYPE_DISK:
-           case TYPE_MOD:
-               factor += TYPE_DISK_QUEUE;
-               break;
-           case TYPE_TAPE:
-               factor += TYPE_TAPE_QUEUE;
-               break;
-           case TYPE_WORM:
-           case TYPE_ROM:
-               factor += TYPE_ROM_QUEUE;
-               break;
-           case TYPE_PROCESSOR:
-           case TYPE_SCANNER:
-           default:
-               factor += TYPE_OTHER_QUEUE;
-               break;
-           }
-       }
-    }
-
-    DBG(DBG_REGISTER, printk(KERN_DEBUG "scsi%d: needed queueslots %d\n", 
-                            host->host_no, factor));
-
-    if(factor == 0)    /* We don't want to get a DIV BY ZERO error */
-        factor = 1;
-
-    factor = (SD(host)->queuesize * 10) / factor;
-
-    DBG(DBG_REGISTER, printk(KERN_DEBUG "scsi%d: using factor %dE-1\n", 
-                            host->host_no, factor));
-
-    /* Now that have the factor we can set the individual queuesizes */
-    for(device = devicelist; device != NULL; device = device->next) {
-        if(device->host == host) {
-           if(SD(device->host)->bustype != IS_ISA){
-               switch(device->type) {
-               case TYPE_DISK:
-               case TYPE_MOD:
-                   device->queue_depth = (TYPE_DISK_QUEUE * factor) / 10;
-                   break;
-               case TYPE_TAPE:
-                   device->queue_depth = (TYPE_TAPE_QUEUE * factor) / 10;
-                   break;
-               case TYPE_WORM:
-               case TYPE_ROM:
-                   device->queue_depth = (TYPE_ROM_QUEUE * factor) / 10;
-                   break;
-               case TYPE_PROCESSOR:
-               case TYPE_SCANNER:
-               default:
-                   device->queue_depth = (TYPE_OTHER_QUEUE * factor) / 10;
-                   break;
-               }
-           } else /* ISA forces us to limit the queue depth because of the 
-                   * bounce buffer memory overhead. I know this is cruel */
-               device->queue_depth = 2; 
-
-           /* 
-            * It showed that we need to set an upper limit of commands 
-             * we can allow to  queue for a single device on the bus. 
-            * If we get above that limit, the broken midlevel SCSI code 
-            * will produce bogus timeouts and aborts en masse. :-(
-            */
-           if(device->queue_depth > UPPER_DEVICE_QUEUE_LIMIT)
-               device->queue_depth = UPPER_DEVICE_QUEUE_LIMIT;
-           if(device->queue_depth == 0) 
-               device->queue_depth = 1;
-
-           printk(KERN_INFO "scsi%d: queue depth for target %d on channel %d "
-                  "set to %d\n", host->host_no, device->id, device->channel,
-                  device->queue_depth);
-       }
-    }
-#endif
-}
-
-#if CHECK_BLINK
-int check_blink_state(long base)
-{
-    ushort loops = 10;
-    u32 blinkindicator;
-    u32 state = 0x12345678;
-    u32 oldstate = 0;
-
-    blinkindicator = htonl(0x54504442);
-    while ((loops--) && (state != oldstate)) {
-       oldstate = state;
-       state = inl((uint) base + 1);
-    }
-
-    DBG(DBG_BLINK, printk("Did Blink check. Status: %d\n",
-             (state == oldstate) && (state == blinkindicator)));
-
-    if ((state == oldstate) && (state == blinkindicator))
-       return(TRUE);
-    else
-       return (FALSE);
-}
-#endif
-
-char * get_board_data(u32 base, u32 irq, u32 id)
-{
-    struct eata_ccb *cp;
-    struct eata_sp  *sp;
-    static char *buff;
-    ulong i;
-
-    cp = (struct eata_ccb *) scsi_init_malloc(sizeof(struct eata_ccb),
-                                             GFP_ATOMIC | GFP_DMA);
-    sp = (struct eata_sp *) scsi_init_malloc(sizeof(struct eata_sp), 
-                                            GFP_ATOMIC | GFP_DMA);
-
-    buff = dma_scratch;
- 
-    memset(cp, 0, sizeof(struct eata_ccb));
-    memset(sp, 0, sizeof(struct eata_sp));
-    memset(buff, 0, 256);
-
-    cp->DataIn = TRUE;    
-    cp->Interpret = TRUE;   /* Interpret command */
-    cp->cp_dispri = TRUE;
-    cp->cp_identify = TRUE;
- 
-    cp->cp_datalen = htonl(56);  
-    cp->cp_dataDMA = htonl(virt_to_bus(buff));
-    cp->cp_statDMA = htonl(virt_to_bus(sp));
-    cp->cp_viraddr = cp;
-    
-    cp->cp_id = id;
-    cp->cp_lun = 0;
-
-    cp->cp_cdb[0] = INQUIRY;
-    cp->cp_cdb[1] = 0;
-    cp->cp_cdb[2] = 0;
-    cp->cp_cdb[3] = 0;
-    cp->cp_cdb[4] = 56;
-    cp->cp_cdb[5] = 0;
-
-    fake_int_base = (struct eata_register *) base;
-    fake_int_result = FALSE;
-    fake_int_happened = FALSE;
-
-    eata_send_command((u32) cp, (u32) base, EATA_CMD_DMA_SEND_CP);
-    
-    i = jiffies + (3 * HZ);
-    while (fake_int_happened == FALSE && jiffies <= i) 
-       barrier();
-    
-    DBG(DBG_INTR3, printk(KERN_DEBUG "fake_int_result: %#x hbastat %#x "
-                         "scsistat %#x, buff %p sp %p\n",
-                         fake_int_result, (u32) (sp->hba_stat /*& 0x7f*/), 
-                         (u32) sp->scsi_stat, buff, sp));
-
-    scsi_init_free((void *)cp, sizeof(struct eata_ccb));
-    scsi_init_free((void *)sp, sizeof(struct eata_sp));
-    
-    if ((fake_int_result & HA_SERROR) || jiffies > i){
-       printk(KERN_WARNING "eata_dma: trying to reset HBA at %x to clear "
-              "possible blink state\n", base); 
-       /* hard reset the HBA  */
-       inb((u32) (base) + HA_RSTATUS);
-       eata_send_command(0, base, EATA_CMD_RESET);
-       DELAY(1);
-       return (NULL);
-    } else
-       return (buff);
-}
-
-
-int get_conf_PIO(u32 base, struct get_conf *buf)
-{
-    ulong loop = R_LIMIT;
-    u16 *p;
-
-    if(check_region(base, 9)) 
-       return (FALSE);
-     
-    memset(buf, 0, sizeof(struct get_conf));
-
-    while (inb(base + HA_RSTATUS) & HA_SBUSY)
-       if (--loop == 0) 
-           return (FALSE);
-
-    fake_int_base = (struct eata_register *) base;
-    fake_int_result = FALSE;
-    fake_int_happened = FALSE;
-       
-    DBG(DBG_PIO && DBG_PROBE,
-       printk("Issuing PIO READ CONFIG to HBA at %#x\n", base));
-    eata_send_command(0, base, EATA_CMD_PIO_READ_CONFIG);
-
-    loop = R_LIMIT;
-    for (p = (u16 *) buf; 
-        (long)p <= ((long)buf + (sizeof(struct get_conf) / 2)); p++) {
-       while (!(inb(base + HA_RSTATUS) & HA_SDRQ))
-           if (--loop == 0)
-               return (FALSE);
-
-       loop = R_LIMIT;
-       *p = inw(base + HA_RDATA);
-    }
-
-    if (!(inb(base + HA_RSTATUS) & HA_SERROR)) {           /* Error ? */
-       if (htonl(EATA_SIGNATURE) == buf->signature) {
-           DBG(DBG_PIO&&DBG_PROBE, printk("EATA Controller found at %x "
-                                          "EATA Level: %x\n", (uint) base, 
-                                          (uint) (buf->version)));
-           
-           while (inb(base + HA_RSTATUS) & HA_SDRQ) 
-               inw(base + HA_RDATA);
-           return (TRUE);
-       } 
-    } else {
-       DBG(DBG_PROBE, printk("eata_dma: get_conf_PIO, error during transfer "
-                 "for HBA at %lx\n", (long)base));
-    }
-    return (FALSE);
-}
-
-
-void print_config(struct get_conf *gc)
-{
-    printk("LEN: %d ver:%d OCS:%d TAR:%d TRNXFR:%d MORES:%d DMAS:%d\n",
-          (u32) ntohl(gc->len), gc->version,
-          gc->OCS_enabled, gc->TAR_support, gc->TRNXFR, gc->MORE_support,
-          gc->DMA_support);
-    printk("DMAV:%d HAAV:%d SCSIID0:%d ID1:%d ID2:%d QUEUE:%d SG:%d SEC:%d\n",
-          gc->DMA_valid, gc->HAA_valid, gc->scsi_id[3], gc->scsi_id[2],
-          gc->scsi_id[1], ntohs(gc->queuesiz), ntohs(gc->SGsiz), gc->SECOND);
-    printk("IRQ:%d IRQT:%d DMAC:%d FORCADR:%d SG_64K:%d SG_UAE:%d MID:%d "
-          "MCH:%d MLUN:%d\n",
-          gc->IRQ, gc->IRQ_TR, (8 - gc->DMA_channel) & 7, gc->FORCADR, 
-          gc->SG_64K, gc->SG_UAE, gc->MAX_ID, gc->MAX_CHAN, gc->MAX_LUN); 
-    printk("RIDQ:%d PCI:%d EISA:%d\n",
-          gc->ID_qest, gc->is_PCI, gc->is_EISA);
-    DBG(DPT_DEBUG, DELAY(14));
-}
-
-short register_HBA(u32 base, struct get_conf *gc, Scsi_Host_Template * tpnt, 
-                  u8 bustype)
-{
-    ulong size = 0;
-    unchar dma_channel = 0;
-    char *buff = 0;
-    unchar bugs = 0;
-    struct Scsi_Host *sh;
-    hostdata *hd;
-    int x;
-    
-    
-    DBG(DBG_REGISTER, print_config(gc));
-
-    if (gc->DMA_support == FALSE) {
-       printk("The EATA HBA at %#.4x does not support DMA.\n" 
-              "Please use the EATA-PIO driver.\n", base);
-       return (FALSE);
-    }
-    if(gc->HAA_valid == FALSE || ntohl(gc->len) < 0x22) 
-       gc->MAX_CHAN = 0;
-
-    if (reg_IRQ[gc->IRQ] == FALSE) {   /* Interrupt already registered ? */
-       if (!request_irq(gc->IRQ, (void *) eata_fake_int_handler, SA_INTERRUPT,
-                        "eata_dma", NULL)){
-           reg_IRQ[gc->IRQ]++;
-           if (!gc->IRQ_TR)
-               reg_IRQL[gc->IRQ] = TRUE;   /* IRQ is edge triggered */
-       } else {
-           printk("Couldn't allocate IRQ %d, Sorry.", gc->IRQ);
-           return (FALSE);
-       }
-    } else {           /* More than one HBA on this IRQ */
-       if (reg_IRQL[gc->IRQ] == TRUE) {
-           printk("Can't support more than one HBA on this IRQ,\n"
-                  "  if the IRQ is edge triggered. Sorry.\n");
-           return (FALSE);
-       } else
-           reg_IRQ[gc->IRQ]++;
-    }
-
- 
-    /* If DMA is supported but DMA_valid isn't set to indicate that
-     * the channel number is given we must have pre 2.0 firmware (1.7?)
-     * which leaves us to guess since the "newer ones" also don't set the 
-     * DMA_valid bit.
-     */
-    if (gc->DMA_support && !gc->DMA_valid && gc->DMA_channel) {
-      printk(KERN_WARNING "eata_dma: If you are using a pre 2.0 firmware "
-            "please update it !\n"
-            "          You can get new firmware releases from ftp.dpt.com\n");
-       gc->DMA_channel = (base == 0x1f0 ? 3 /* DMA=5 */ : 2 /* DMA=6 */);
-       gc->DMA_valid = TRUE;
-    }
-
-    /* if gc->DMA_valid it must be an ISA HBA and we have to register it */
-    dma_channel = BUSMASTER;
-    if (gc->DMA_valid) {
-       if (request_dma(dma_channel = (8 - gc->DMA_channel) & 7, "eata_dma")) {
-           printk(KERN_WARNING "Unable to allocate DMA channel %d for ISA HBA"
-                  " at %#.4x.\n", dma_channel, base);
-           reg_IRQ[gc->IRQ]--;
-           if (reg_IRQ[gc->IRQ] == 0)
-               free_irq(gc->IRQ, NULL);
-           if (gc->IRQ_TR == FALSE)
-               reg_IRQL[gc->IRQ] = FALSE; 
-           return (FALSE);
-       }
-    }
-
-    if (dma_channel != BUSMASTER) {
-       disable_dma(dma_channel);
-       clear_dma_ff(dma_channel);
-       set_dma_mode(dma_channel, DMA_MODE_CASCADE);
-       enable_dma(dma_channel);
-    }
-
-    if (bustype != IS_EISA && bustype != IS_ISA)
-       buff = get_board_data(base, gc->IRQ, gc->scsi_id[3]);
-
-    if (buff == NULL) {
-       if (bustype == IS_EISA || bustype == IS_ISA) {
-           bugs = bugs || BROKEN_INQUIRY;
-       } else {
-           if (gc->DMA_support == FALSE)
-               printk(KERN_WARNING "HBA at %#.4x doesn't support DMA. "
-                      "Sorry\n", base);
-           else
-               printk(KERN_WARNING "HBA at %#.4x does not react on INQUIRY. "
-                      "Sorry.\n", base);
-           if (gc->DMA_valid) 
-               free_dma(dma_channel);
-           reg_IRQ[gc->IRQ]--;
-           if (reg_IRQ[gc->IRQ] == 0)
-               free_irq(gc->IRQ, NULL);
-           if (gc->IRQ_TR == FALSE)
-               reg_IRQL[gc->IRQ] = FALSE; 
-           return (FALSE);
-       }
-    }
- 
-    if (gc->DMA_support == FALSE && buff != NULL)  
-       printk(KERN_WARNING "HBA %.12sat %#.4x doesn't set the DMA_support "
-              "flag correctly.\n", &buff[16], base);
-    
-    request_region(base, 9, "eata_dma"); /* We already checked the 
-                                         * availability, so this
-                                         * should not fail.
-                                         */
-    
-    if(ntohs(gc->queuesiz) == 0) {
-       gc->queuesiz = ntohs(64);
-       printk(KERN_WARNING "Warning: Queue size has to be corrected. Assuming"
-              " 64 queueslots\n"
-              "         This might be a PM2012B with a defective Firmware\n"
-              "         Contact DPT address@hidden for an upgrade\n");
-    }
-
-    size = sizeof(hostdata) + ((sizeof(struct eata_ccb) + sizeof(long)) 
-                              * ntohs(gc->queuesiz));
-
-    DBG(DBG_REGISTER, printk("scsi_register size: %ld\n", size));
-
-    sh = scsi_register(tpnt, size);
-    
-    if(sh != NULL) {
-
-        hd = SD(sh);              
-
-       memset(hd->reads, 0, sizeof(u32) * 26); 
-       
-       sh->select_queue_depths = eata_select_queue_depths;
-       
-       hd->bustype = bustype;
-
-       /*
-        * If we are using a ISA board, we can't use extended SG,
-        * because we would need excessive amounts of memory for
-        * bounce buffers.
-        */
-       if (gc->SG_64K==TRUE && ntohs(gc->SGsiz)==64 && hd->bustype!=IS_ISA){
-           sh->sg_tablesize = SG_SIZE_BIG;
-       } else {
-           sh->sg_tablesize = ntohs(gc->SGsiz);
-           if (sh->sg_tablesize > SG_SIZE || sh->sg_tablesize == 0) {
-               if (sh->sg_tablesize == 0)
-                   printk(KERN_WARNING "Warning: SG size had to be fixed.\n"
-                          "This might be a PM2012 with a defective Firmware"
-                          "\nContact DPT address@hidden for an upgrade\n");
-               sh->sg_tablesize = SG_SIZE;
-           }
-       }
-       hd->sgsize = sh->sg_tablesize;
-    }
-
-    if(sh != NULL) {
-        sh->can_queue = hd->queuesize = ntohs(gc->queuesiz);
-               sh->cmd_per_lun = 0;
-    }
-
-    if(sh == NULL) { 
-        DBG(DBG_REGISTER, printk(KERN_NOTICE "eata_dma: couldn't register HBA"
-                                " at%x \n", base));
-       scsi_unregister(sh);
-       if (gc->DMA_valid) 
-           free_dma(dma_channel);
-       
-       reg_IRQ[gc->IRQ]--;
-       if (reg_IRQ[gc->IRQ] == 0)
-           free_irq(gc->IRQ, NULL);
-       if (gc->IRQ_TR == FALSE)
-           reg_IRQL[gc->IRQ] = FALSE; 
-       return (FALSE);
-    }
-
-    
-    hd->broken_INQUIRY = (bugs & BROKEN_INQUIRY);
-
-    if(hd->broken_INQUIRY == TRUE) {
-       strcpy(hd->vendor, "DPT");
-       strcpy(hd->name, "??????????");
-       strcpy(hd->revision, "???.?");
-        hd->firmware_revision = 0;
-    } else {   
-       strncpy(hd->vendor, &buff[8], 8);
-       hd->vendor[8] = 0;
-       strncpy(hd->name, &buff[16], 17);
-       hd->name[17] = 0;
-       hd->revision[0] = buff[32];
-       hd->revision[1] = buff[33];
-       hd->revision[2] = buff[34];
-       hd->revision[3] = '.';
-       hd->revision[4] = buff[35];
-       hd->revision[5] = 0;
-        hd->firmware_revision = (buff[32] << 24) + (buff[33] << 16) 
-                                   + (buff[34] << 8) + buff[35]; 
-    }
-
-    if (hd->firmware_revision >= (('0'<<24) + ('7'<<16) + ('G'<< 8) + '0'))
-        hd->immediate_support = 1;
-    else 
-        hd->immediate_support = 0;
-
-    switch (ntohl(gc->len)) {
-    case 0x1c:
-       hd->EATA_revision = 'a';
-       break;
-    case 0x1e:
-       hd->EATA_revision = 'b';
-       break;
-    case 0x22:
-       hd->EATA_revision = 'c';
-       break;
-    case 0x24:
-       hd->EATA_revision = 'z';                
-    default:
-       hd->EATA_revision = '?';
-    }
-
-
-    if(ntohl(gc->len) >= 0x22) {
-       sh->max_id = gc->MAX_ID + 1;
-       sh->max_lun = gc->MAX_LUN + 1;
-    } else {
-       sh->max_id = 8;
-       sh->max_lun = 8;
-    }
-
-    hd->HBA_number = sh->host_no;
-    hd->channel = gc->MAX_CHAN;            
-    sh->max_channel = gc->MAX_CHAN; 
-    sh->unique_id = base;
-    sh->base = (char *) base;
-    sh->io_port = base;
-    sh->n_io_port = 9;
-    sh->irq = gc->IRQ;
-    sh->dma_channel = dma_channel;
-    
-    /* FIXME:
-     * SCSI midlevel code should support different HBA ids on every channel
-     */
-    sh->this_id = gc->scsi_id[3];
-    
-    if (gc->SECOND)
-       hd->primary = FALSE;
-    else
-       hd->primary = TRUE;
-    
-    sh->wish_block = FALSE;       
-    
-    if (hd->bustype != IS_ISA) {
-       sh->unchecked_isa_dma = FALSE;
-    } else {
-       sh->unchecked_isa_dma = TRUE;   /* We're doing ISA DMA */
-    }
-    
-    for(x = 0; x <= 11; x++){           /* Initialize min. latency */
-       hd->writes_lat[x][1] = 0xffffffff;
-       hd->reads_lat[x][1] = 0xffffffff;
-    }
-    hd->all_lat[1] = 0xffffffff;
-
-    hd->next = NULL;   /* build a linked list of all HBAs */
-    hd->prev = last_HBA;
-    if(hd->prev != NULL)
-       SD(hd->prev)->next = sh;
-    last_HBA = sh;
-    if (first_HBA == NULL)
-       first_HBA = sh;
-    registered_HBAs++;
-    
-    return (TRUE);
-}
-
-
-
-void find_EISA(struct get_conf *buf, Scsi_Host_Template * tpnt)
-{
-    u32 base;
-    int i;
-    
-#if CHECKPAL
-    u8 pal1, pal2, pal3;
-#endif
-    
-    for (i = 0; i < MAXEISA; i++) {
-       if (EISAbases[i] == TRUE) { /* Still a possibility ?          */
-           
-           base = 0x1c88 + (i * 0x1000);
-#if CHECKPAL
-           pal1 = inb((u16)base - 8);
-           pal2 = inb((u16)base - 7);
-           pal3 = inb((u16)base - 6);
-           
-           if (((pal1 == DPT_ID1) && (pal2 == DPT_ID2)) ||
-               ((pal1 == NEC_ID1) && (pal2 == NEC_ID2) && (pal3 == NEC_ID3))||
-               ((pal1 == ATT_ID1) && (pal2 == ATT_ID2) && (pal3 == ATT_ID3))){
-               DBG(DBG_PROBE, printk("EISA EATA id tags found: %x %x %x \n",
-                                     (int)pal1, (int)pal2, (int)pal3));
-#endif
-               if (get_conf_PIO(base, buf) == TRUE) {
-                   if (buf->IRQ) {  
-                       DBG(DBG_EISA, printk("Registering EISA HBA\n"));
-                       register_HBA(base, buf, tpnt, IS_EISA);
-                   } else
-                       printk("eata_dma: No valid IRQ. HBA removed from 
list\n");
-               }
-#if CHECK_BLINK
-               else {
-                   if (check_blink_state(base)) 
-                       printk("HBA is in BLINK state. Consult your HBAs "
-                              "Manual to correct this.\n");
-               } 
-#endif
-               /* Nothing found here so we take it from the list */
-               EISAbases[i] = 0;  
-#if CHECKPAL
-           } 
-#endif
-       }
-    }
-    return; 
-}
-
-void find_ISA(struct get_conf *buf, Scsi_Host_Template * tpnt)
-{
-    int i;
-    
-    for (i = 0; i < MAXISA; i++) {  
-       if (ISAbases[i]) {  
-           if (get_conf_PIO(ISAbases[i],buf) == TRUE){
-               DBG(DBG_ISA, printk("Registering ISA HBA\n"));
-               register_HBA(ISAbases[i], buf, tpnt, IS_ISA);
-           } 
-#if CHECK_BLINK
-           else {
-               if (check_blink_state(ISAbases[i])) 
-                   printk("HBA is in BLINK state. Consult your HBAs "
-                          "Manual to correct this.\n");
-           }
-#endif
-           ISAbases[i] = 0;
-       }
-    }
-    return;
-}
-
-void find_PCI(struct get_conf *buf, Scsi_Host_Template * tpnt)
-{
-
-#ifndef CONFIG_PCI
-    printk("eata_dma: kernel PCI support not enabled. Skipping scan for PCI 
HBAs.\n");
-#else
-    
-    u8 pci_bus, pci_device_fn;
-    static s16 pci_index = 0;  /* Device index to PCI BIOS calls */
-    u32 base = 0;
-    u16 com_adr;
-    u16 rev_device;
-    u32 error, i, x;
-    u8 pal1, pal2, pal3;
-
-    if (pcibios_present()) {
-       for (i = 0; i <= MAXPCI; ++i, ++pci_index) {
-           if (pcibios_find_device(PCI_VENDOR_ID_DPT, PCI_DEVICE_ID_DPT, 
-                                   pci_index, &pci_bus, &pci_device_fn))
-               break;
-           DBG(DBG_PROBE && DBG_PCI, 
-               printk("eata_dma: find_PCI, HBA at bus %d, device %d,"
-                      " function %d, index %d\n", (s32)pci_bus, 
-                      (s32)((pci_device_fn & 0xf8) >> 3),
-                      (s32)(pci_device_fn & 7), pci_index));
-           
-           if (!(error = pcibios_read_config_word(pci_bus, pci_device_fn, 
-                                      PCI_CLASS_DEVICE, &rev_device))) {
-               if (rev_device == PCI_CLASS_STORAGE_SCSI) {
-                   if (!(error = pcibios_read_config_word(pci_bus, 
-                                              pci_device_fn, PCI_COMMAND, 
-                                              (u16 *) & com_adr))) {
-                       if (!((com_adr & PCI_COMMAND_IO) && 
-                             (com_adr & PCI_COMMAND_MASTER))) {
-                           printk("eata_dma: find_PCI, HBA has IO or"
-                                  " BUSMASTER mode disabled\n");
-                           continue;
-                       }
-                   } else
-                       printk("eata_dma: find_PCI, error %x while reading "
-                              "PCI_COMMAND\n", error);
-               } else
-                   printk("eata_dma: find_PCI, DEVICECLASSID %x didn't 
match\n", 
-                          rev_device);
-           } else {
-               printk("eata_dma: find_PCI, error %x while reading "
-                      "PCI_CLASS_BASE\n", 
-                      error);
-               continue;
-           }
-           
-           if (!(error = pcibios_read_config_dword(pci_bus, pci_device_fn,
-                                      PCI_BASE_ADDRESS_0, (int *) &base))){
-               
-               /* Check if the address is valid */
-               if (base & 0x01) {
-                   base &= 0xfffffffe;
-                    /* EISA tag there ? */
-                   pal1 = inb(base);
-                   pal2 = inb(base + 1);
-                   pal3 = inb(base + 2);
-                   if (((pal1 == DPT_ID1) && (pal2 == DPT_ID2)) ||
-                       ((pal1 == NEC_ID1) && (pal2 == NEC_ID2) && 
-                        (pal3 == NEC_ID3)) ||
-                       ((pal1 == ATT_ID1) && (pal2 == ATT_ID2) && 
-                        (pal3 == ATT_ID3)))
-                       base += 0x08;
-                   else
-                       base += 0x10;   /* Now, THIS is the real address */
-
-                   if (base != 0x1f8) {
-                       /* We didn't find it in the primary search */
-                       if (get_conf_PIO(base, buf) == TRUE) {
-
-                           /* OK. We made it till here, so we can go now  
-                            * and register it. We  only have to check and 
-                            * eventually remove it from the EISA and ISA list 
-                            */
-                           DBG(DBG_PCI, printk("Registering PCI HBA\n"));
-                           register_HBA(base, buf, tpnt, IS_PCI);
-                           
-                           if (base < 0x1000) {
-                               for (x = 0; x < MAXISA; ++x) {
-                                   if (ISAbases[x] == base) {
-                                       ISAbases[x] = 0;
-                                       break;
-                                   }
-                               }
-                           } else if ((base & 0x0fff) == 0x0c88) 
-                               EISAbases[(base >> 12) & 0x0f] = 0;
-                           continue;  /* break; */
-                       } 
-#if CHECK_BLINK
-                       else if (check_blink_state(base) == TRUE) {
-                           printk("eata_dma: HBA is in BLINK state.\n"
-                                  "Consult your HBAs manual to correct 
this.\n");
-                       }
-#endif
-                   }
-               }
-           } else {
-               printk("eata_dma: error %x while reading "
-                      "PCI_BASE_ADDRESS_0\n", error);
-           }
-       }
-    } else {
-       printk("eata_dma: No BIOS32 extensions present. This driver release "
-              "still depends on it.\n"
-              "          Skipping scan for PCI HBAs. \n");
-    }
-#endif /* #ifndef CONFIG_PCI */
-    return;
-}
-
-int eata_detect(Scsi_Host_Template * tpnt)
-{
-    struct Scsi_Host *HBA_ptr;
-    struct get_conf gc;
-    int i;
-    
-    DBG((DBG_PROBE && DBG_DELAY) || DPT_DEBUG,
-       printk("Using lots of delays to let you read the debugging output\n"));
-
-    tpnt->proc_dir = &proc_scsi_eata_dma;
-
-    status = scsi_init_malloc(512, GFP_ATOMIC | GFP_DMA);
-    dma_scratch = scsi_init_malloc(1024, GFP_ATOMIC | GFP_DMA);
-
-    if(status == NULL || dma_scratch == NULL) {
-       printk("eata_dma: can't allocate enough memory to probe for hosts !\n");
-       return(0);
-    }
-
-    dma_scratch += 4;
-
-    find_PCI(&gc, tpnt);
-    
-    find_EISA(&gc, tpnt);
-    
-    find_ISA(&gc, tpnt);
-    
-    for (i = 0; i < MAXIRQ; i++) {  /* Now that we know what we have, we     */
-       if (reg_IRQ[i] >= 1){       /* exchange the interrupt handler which  */
-           free_irq(i, NULL);      /* we used for probing with the real one */
-           request_irq(i, (void *)(eata_int_handler), SA_INTERRUPT|SA_SHIRQ, 
-                       "eata_dma", NULL);
-       }
-    }
-
-    HBA_ptr = first_HBA;
-
-    if (registered_HBAs != 0) {
-        printk("EATA (Extended Attachment) driver version: %d.%d%s"
-               "\ndeveloped in co-operation with DPT\n"
-               "(c) 1993-96 Michael Neuffer, address@hidden",
-               VER_MAJOR, VER_MINOR, VER_SUB);
-        printk("Registered HBAs:");
-        printk("\nHBA no. Boardtype    Revis  EATA Bus  BaseIO IRQ"
-               " DMA Ch ID Pr QS  S/G IS\n");
-        for (i = 1; i <= registered_HBAs; i++) {
-           printk("scsi%-2d: %.12s v%s 2.0%c %s %#.4x  %2d",
-                  HBA_ptr->host_no, SD(HBA_ptr)->name, SD(HBA_ptr)->revision,
-                  SD(HBA_ptr)->EATA_revision, (SD(HBA_ptr)->bustype == 'P')? 
-                  "PCI ":(SD(HBA_ptr)->bustype == 'E')?"EISA":"ISA ",
-                  (u32) HBA_ptr->base, HBA_ptr->irq);
-           if(HBA_ptr->dma_channel != BUSMASTER)
-               printk("  %2x ", HBA_ptr->dma_channel);
-           else
-               printk(" %s", "BMST");
-           printk(" %d  %d  %c %3d %3d %c\n", 
-                  SD(HBA_ptr)->channel+1, HBA_ptr->this_id, 
-                  (SD(HBA_ptr)->primary == TRUE)?'Y':'N', 
-                  HBA_ptr->can_queue, HBA_ptr->sg_tablesize, 
-                  (SD(HBA_ptr)->immediate_support == TRUE)?'Y':'N'); 
-           HBA_ptr = SD(HBA_ptr)->next;
-       }
-    } else {
-       scsi_init_free((void *)status, 512);
-    }
-
-    scsi_init_free((void *)dma_scratch - 4, 1024);
-
-    DBG(DPT_DEBUG, DELAY(12));
-
-    return(registered_HBAs);
-}
-
-#ifdef MODULE
-/* Eventually this will go into an include file, but this will be later */
-Scsi_Host_Template driver_template = EATA_DMA;
-#include "scsi_module.c"
-#endif
-
-/*
- * Overrides for Emacs so that we almost follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-indent-level: 4
- * c-brace-imaginary-offset: 0
- * c-brace-offset: -4
- * c-argdecl-indent: 4
- * c-label-offset: -4
- * c-continued-statement-offset: 4
- * c-continued-brace-offset: 0
- * tab-width: 8
- * End:
- */
diff --git a/linux/src/drivers/scsi/eata_dma_proc.c 
b/linux/src/drivers/scsi/eata_dma_proc.c
deleted file mode 100644
index 3a3a19a..0000000
--- a/linux/src/drivers/scsi/eata_dma_proc.c
+++ /dev/null
@@ -1,493 +0,0 @@
-
-void swap_statistics(u8 *p)
-{
-    u32 y;
-    u32 *lp, h_lp;
-    u16 *sp, h_sp;
-    u8 *bp;
-    
-    lp = (u32 *)p;
-    sp = ((short *)lp) + 1;        /* Convert Header */
-    h_sp = *sp = ntohs(*sp);
-    lp++;
-
-    do {
-       sp = (u16 *)lp;           /* Convert SubHeader */
-       *sp = ntohs(*sp);
-       bp = (u8 *) lp;
-       y = *(bp + 3);
-       lp++;
-       for (h_lp = (u32)lp; (u32)lp < h_lp + ((u32)*(bp + 3)); lp++)
-           *lp = ntohl(*lp);
-    }while ((u32)lp < ((u32)p) + 4 + h_sp);
-
-}
-
-/*
- * eata_set_info
- * buffer : pointer to the data that has been written to the hostfile
- * length : number of bytes written to the hostfile
- * HBA_ptr: pointer to the Scsi_Host struct
- */
-int eata_set_info(char *buffer, int length, struct Scsi_Host *HBA_ptr)
-{
-    int orig_length = length;
-
-    if (length >= 8 && strncmp(buffer, "eata_dma", 8) == 0) {
-       buffer += 9;
-       length -= 9;
-       if(length >= 8 && strncmp(buffer, "latency", 7) == 0) {
-           SD(HBA_ptr)->do_latency = TRUE;
-           return(orig_length);
-       } 
-       
-       if(length >=10 && strncmp(buffer, "nolatency", 9) == 0) {
-           SD(HBA_ptr)->do_latency = FALSE;
-           return(orig_length);
-       } 
-       
-       printk("Unknown command:%s length: %d\n", buffer, length);
-    } else 
-       printk("Wrong Signature:%10s\n", buffer);
-    
-    return(-EINVAL);
-}
-
-/*
- * eata_proc_info
- * inout : decides on the direction of the dataflow and the meaning of the 
- *        variables
- * buffer: If inout==FALSE data is being written to it else read from it
- * *start: If inout==FALSE start of the valid data in the buffer
- * offset: If inout==FALSE offset from the beginning of the imaginary file 
- *        from which we start writing into the buffer
- * length: If inout==FALSE max number of bytes to be written into the buffer 
- *        else number of bytes in the buffer
- */
-int eata_proc_info(char *buffer, char **start, off_t offset, int length, 
-                  int hostno, int inout)
-{
-
-    Scsi_Device *scd, SDev;
-    struct Scsi_Host *HBA_ptr;
-    Scsi_Cmnd scmd;
-    char cmnd[10];
-    static u8 buff[512];
-    static u8 buff2[512];
-    hst_cmd_stat *rhcs, *whcs;
-    coco        *cc;
-    scsitrans   *st;
-    scsimod     *sm;
-    hobu        *hb;
-    scbu        *sb;
-    boty        *bt;
-    memco       *mc;
-    firm        *fm;
-    subinf      *si; 
-    pcinf       *pi;
-    arrlim      *al;
-    int i, x; 
-    int          size, len = 0;
-    off_t begin = 0;
-    off_t pos = 0;
-    scd = NULL;
-
-    HBA_ptr = first_HBA;
-    for (i = 1; i <= registered_HBAs; i++) {
-       if (HBA_ptr->host_no == hostno)
-           break;
-       HBA_ptr = SD(HBA_ptr)->next;
-    }       
-
-    if(inout == TRUE) /* Has data been written to the file ? */ 
-       return(eata_set_info(buffer, length, HBA_ptr));
-
-    if (offset == 0)
-       memset(buff, 0, sizeof(buff));
-
-    cc = (coco *)     (buff + 0x148);
-    st = (scsitrans *)(buff + 0x164); 
-    sm = (scsimod *)  (buff + 0x16c);
-    hb = (hobu *)     (buff + 0x172);
-    sb = (scbu *)     (buff + 0x178);
-    bt = (boty *)     (buff + 0x17e);
-    mc = (memco *)    (buff + 0x186);
-    fm = (firm *)     (buff + 0x18e);
-    si = (subinf *)   (buff + 0x196); 
-    pi = (pcinf *)    (buff + 0x19c);
-    al = (arrlim *)   (buff + 0x1a2);
-
-    size = sprintf(buffer+len, "EATA (Extended Attachment) driver version: "
-                  "%d.%d%s\n",VER_MAJOR, VER_MINOR, VER_SUB);
-    len += size; pos = begin + len;
-    size = sprintf(buffer + len, "queued commands:     %10ld\n"
-                  "processed interrupts:%10ld\n", queue_counter, int_counter);
-    len += size; pos = begin + len;
-
-    size = sprintf(buffer + len, "\nscsi%-2d: HBA %.10s\n",
-                  HBA_ptr->host_no, SD(HBA_ptr)->name);
-    len += size; 
-    pos = begin + len;
-    size = sprintf(buffer + len, "Firmware revision: v%s\n", 
-                  SD(HBA_ptr)->revision);
-    len += size;
-    pos = begin + len;
-    size = sprintf(buffer + len, "Hardware Configuration:\n");
-    len += size; 
-    pos = begin + len;
-    
-    if(SD(HBA_ptr)->broken_INQUIRY == TRUE) {
-       if (HBA_ptr->dma_channel == BUSMASTER)
-           size = sprintf(buffer + len, "DMA: BUSMASTER\n");
-       else
-           size = sprintf(buffer + len, "DMA: %d\n", HBA_ptr->dma_channel);
-       len += size; 
-       pos = begin + len;
-
-       size = sprintf(buffer + len, "Base IO : %#.4x\n", (u32) HBA_ptr->base);
-       len += size; 
-       pos = begin + len;
-
-       size = sprintf(buffer + len, "Host Bus: EISA\n"); 
-       len += size; 
-       pos = begin + len;
-
-    } else {
-       memset(&SDev, 0, sizeof(Scsi_Device));
-       memset(&scmd, 0, sizeof(Scsi_Cmnd));
-
-       SDev.host = HBA_ptr;
-       SDev.id = HBA_ptr->this_id;
-       SDev.lun = 0;
-       SDev.channel = 0;
-
-       cmnd[0] = LOG_SENSE;
-       cmnd[1] = 0;
-       cmnd[2] = 0x33 + (3<<6);
-       cmnd[3] = 0;
-       cmnd[4] = 0;
-       cmnd[5] = 0;
-        cmnd[6] = 0;
-       cmnd[7] = 0x00;
-       cmnd[8] = 0x66;
-       cmnd[9] = 0;
-
-       scmd.cmd_len = 10;
-       
-       scmd.host = HBA_ptr; 
-       scmd.device = &SDev;
-       scmd.target = HBA_ptr->this_id; 
-       scmd.lun = 0; 
-       scmd.channel = 0;
-       scmd.use_sg = 0;
-
-       /*
-        * Do the command and wait for it to finish.
-        */     
-       {
-           struct semaphore sem = MUTEX_LOCKED;
-           scmd.request.rq_status = RQ_SCSI_BUSY;
-           scmd.request.sem = &sem;
-           scsi_do_cmd (&scmd, cmnd, buff + 0x144, 0x66,  
-                        eata_scsi_done, 1 * HZ, 1);
-           down(&sem);
-       }
-
-       size = sprintf(buffer + len, "IRQ: %2d, %s triggered\n", cc->interrupt,
-                      (cc->intt == TRUE)?"level":"edge");
-       len += size; 
-       pos = begin + len;
-       if (HBA_ptr->dma_channel == 0xff)
-           size = sprintf(buffer + len, "DMA: BUSMASTER\n");
-       else
-           size = sprintf(buffer + len, "DMA: %d\n", HBA_ptr->dma_channel);
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "CPU: MC680%02d %dMHz\n", bt->cpu_type,
-                      bt->cpu_speed);
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "Base IO : %#.4x\n", (u32) HBA_ptr->base);
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "Host Bus: %s\n", 
-                      (SD(HBA_ptr)->bustype == IS_PCI)?"PCI ":
-                      (SD(HBA_ptr)->bustype == IS_EISA)?"EISA":"ISA ");
-       
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "SCSI Bus:%s%s Speed: %sMB/sec. %s\n",
-                      (sb->wide == TRUE)?" WIDE":"", 
-                      (sb->dif == TRUE)?" DIFFERENTIAL":"",
-                      (sb->speed == 0)?"5":(sb->speed == 1)?"10":"20",
-                      (sb->ext == TRUE)?"With external cable detection":"");
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "SCSI channel expansion Module: %s 
present\n",
-                      (bt->sx1 == TRUE)?"SX1 (one channel)":
-                      ((bt->sx2 == TRUE)?"SX2 (two channels)":"not"));
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "SmartRAID hardware: %spresent.\n",
-                      (cc->srs == TRUE)?"":"not ");
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "    Type: %s\n",
-                      ((cc->key == TRUE)?((bt->dmi == TRUE)?"integrated"
-                                          :((bt->dm4 == TRUE)?"DM401X"
-                                          :(bt->dm4k == TRUE)?"DM4000"
-                                          :"-"))
-                                          :"-"));
-       len += size; 
-       pos = begin + len;
-       
-       size = sprintf(buffer + len, "    Max array groups:              %d\n",
-                      (al->code == 0x0e)?al->max_groups:7);
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "    Max drives per RAID 0 array:   %d\n",
-                      (al->code == 0x0e)?al->raid0_drv:7);
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "    Max drives per RAID 3/5 array: %d\n",
-                      (al->code == 0x0e)?al->raid35_drv:7);
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "Cache Module: %spresent.\n",
-                      (cc->csh)?"":"not ");
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "    Type: %s\n",
-                      ((cc->csh == TRUE)?((bt->cmi == TRUE)?"integrated"
-                                        :((bt->cm4 == TRUE)?"CM401X"
-                                        :((bt->cm4k == TRUE)?"CM4000"
-                                        :"-")))
-                                        :"-"));
-       len += size; 
-       pos = begin + len;
-       for (x = 0; x <= 3; x++) {
-           size = sprintf(buffer + len, "    Bank%d: %dMB with%s ECC\n",x,
-                          mc->banksize[x] & 0x7f, 
-                          (mc->banksize[x] & 0x80)?"":"out");
-           len += size; 
-           pos = begin + len;      
-       }   
-       size = sprintf(buffer + len, "Timer Mod.: %spresent\n",
-                      (cc->tmr == TRUE)?"":"not ");
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "NVRAM     : %spresent\n",
-                      (cc->nvr == TRUE)?"":"not ");
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "SmartROM  : %sabled\n",
-                      (bt->srom == TRUE)?"dis":"en");
-       len += size; 
-       pos = begin + len;
-       size = sprintf(buffer + len, "Alarm     : %s\n",
-                      (bt->alrm == TRUE)?"on":"off");
-       len += size; 
-       pos = begin + len;
-       
-       if (pos < offset) {
-           len = 0;
-           begin = pos;
-       }
-       if (pos > offset + length)
-           goto stop_output; 
-
-       if(SD(HBA_ptr)->do_latency == FALSE) { 
-
-           cmnd[0] = LOG_SENSE;
-           cmnd[1] = 0;
-           cmnd[2] = 0x32 + (3<<6); 
-           cmnd[3] = 0;
-           cmnd[4] = 0;
-           cmnd[5] = 0;
-           cmnd[6] = 0;
-           cmnd[7] = 0x01;
-           cmnd[8] = 0x44;
-           cmnd[9] = 0;
-           
-           scmd.cmd_len = 10;
-
-           /*
-            * Do the command and wait for it to finish.
-            */ 
-           {
-               struct semaphore sem = MUTEX_LOCKED;
-               scmd.request.rq_status = RQ_SCSI_BUSY;
-               scmd.request.sem = &sem;
-               scsi_do_cmd (&scmd, cmnd, buff2, 0x144,
-                            eata_scsi_done, 1 * HZ, 1);
-               down(&sem);
-           }
-
-           swap_statistics(buff2);
-           rhcs = (hst_cmd_stat *)(buff2 + 0x2c); 
-           whcs = (hst_cmd_stat *)(buff2 + 0x8c);               
-           
-           for (x = 0; x <= 11; x++) {
-               SD(HBA_ptr)->reads[x] += rhcs->sizes[x];
-               SD(HBA_ptr)->writes[x] += whcs->sizes[x];
-               SD(HBA_ptr)->reads[12] += rhcs->sizes[x];
-               SD(HBA_ptr)->writes[12] += whcs->sizes[x];
-           }
-           size = sprintf(buffer + len, "Host<->Disk command statistics:\n"
-                          "         Reads:          Writes:\n");
-           len += size; 
-           pos = begin + len;
-           for (x = 0; x <= 10; x++) {
-               size = sprintf(buffer+len,"%5dk:%12u %12u\n", 1 << x,
-                              SD(HBA_ptr)->reads[x], 
-                              SD(HBA_ptr)->writes[x]);
-               len += size; 
-               pos = begin + len;
-           }
-           size = sprintf(buffer+len,">1024k:%12u %12u\n",
-                          SD(HBA_ptr)->reads[11], 
-                          SD(HBA_ptr)->writes[11]);
-           len += size; 
-           pos = begin + len;
-           size = sprintf(buffer+len,"Sum   :%12u %12u\n",
-                          SD(HBA_ptr)->reads[12], 
-                          SD(HBA_ptr)->writes[12]);
-           len += size; 
-           pos = begin + len;
-       }
-    }
-    
-    if (pos < offset) {
-       len = 0;
-       begin = pos;
-    }
-    if (pos > offset + length)
-       goto stop_output;
-
-    if(SD(HBA_ptr)->do_latency == TRUE) {
-        int factor = 1024/HZ;
-       size = sprintf(buffer + len, "Host Latency Command Statistics:\n"
-                      "Current timer resolution: %2dms\n"
-                      "         Reads:       Min:(ms)     Max:(ms)     
Ave:(ms)\n",
-                      factor);
-       len += size; 
-       pos = begin + len;
-       for (x = 0; x <= 10; x++) {
-           size = sprintf(buffer+len,"%5dk:%12u %12u %12u %12u\n", 
-                          1 << x,
-                          SD(HBA_ptr)->reads_lat[x][0], 
-                          (SD(HBA_ptr)->reads_lat[x][1] == 0xffffffff) 
-                          ? 0:(SD(HBA_ptr)->reads_lat[x][1] * factor), 
-                          SD(HBA_ptr)->reads_lat[x][2] * factor, 
-                          SD(HBA_ptr)->reads_lat[x][3] * factor /
-                          ((SD(HBA_ptr)->reads_lat[x][0])
-                           ? SD(HBA_ptr)->reads_lat[x][0]:1));
-           len += size; 
-           pos = begin + len;
-       }
-       size = sprintf(buffer+len,">1024k:%12u %12u %12u %12u\n",
-                          SD(HBA_ptr)->reads_lat[11][0], 
-                          (SD(HBA_ptr)->reads_lat[11][1] == 0xffffffff)
-                          ? 0:(SD(HBA_ptr)->reads_lat[11][1] * factor), 
-                          SD(HBA_ptr)->reads_lat[11][2] * factor, 
-                          SD(HBA_ptr)->reads_lat[11][3] * factor /
-                          ((SD(HBA_ptr)->reads_lat[x][0])
-                           ? SD(HBA_ptr)->reads_lat[x][0]:1));
-       len += size; 
-       pos = begin + len;
-
-       if (pos < offset) {
-           len = 0;
-           begin = pos;
-       }
-       if (pos > offset + length)
-           goto stop_output;
-
-       size = sprintf(buffer + len,
-                      "         Writes:      Min:(ms)     Max:(ms)     
Ave:(ms)\n");
-       len += size; 
-       pos = begin + len;
-       for (x = 0; x <= 10; x++) {
-           size = sprintf(buffer+len,"%5dk:%12u %12u %12u %12u\n", 
-                          1 << x,
-                          SD(HBA_ptr)->writes_lat[x][0], 
-                          (SD(HBA_ptr)->writes_lat[x][1] == 0xffffffff)
-                          ? 0:(SD(HBA_ptr)->writes_lat[x][1] * factor), 
-                          SD(HBA_ptr)->writes_lat[x][2] * factor, 
-                          SD(HBA_ptr)->writes_lat[x][3] * factor /
-                          ((SD(HBA_ptr)->writes_lat[x][0])
-                           ? SD(HBA_ptr)->writes_lat[x][0]:1));
-           len += size; 
-           pos = begin + len;
-       }
-       size = sprintf(buffer+len,">1024k:%12u %12u %12u %12u\n",
-                          SD(HBA_ptr)->writes_lat[11][0], 
-                          (SD(HBA_ptr)->writes_lat[11][1] == 0xffffffff)
-                          ? 0:(SD(HBA_ptr)->writes_lat[x][1] * factor), 
-                          SD(HBA_ptr)->writes_lat[11][2] * factor, 
-                          SD(HBA_ptr)->writes_lat[11][3] * factor /
-                          ((SD(HBA_ptr)->writes_lat[x][0])
-                           ? SD(HBA_ptr)->writes_lat[x][0]:1));
-       len += size; 
-       pos = begin + len;
-
-       if (pos < offset) {
-           len = 0;
-           begin = pos;
-       }
-       if (pos > offset + length)
-           goto stop_output;
-    }
-
-#if 0
-    scd = scsi_devices;
-    
-    size = sprintf(buffer+len,"Attached devices: %s\n", (scd)?"":"none");
-    len += size; 
-    pos = begin + len;
-    
-    while (scd) {
-       if (scd->host == HBA_ptr) {
-           proc_print_scsidevice(scd, buffer, &size, len);
-           len += size; 
-           pos = begin + len;
-           
-           if (pos < offset) {
-               len = 0;
-               begin = pos;
-           }
-           if (pos > offset + length)
-               goto stop_output;
-       }
-       scd = scd->next;
-    }
-#endif
-    
- stop_output:
-    DBG(DBG_PROC, printk("2pos: %ld offset: %ld len: %d\n", pos, offset, len));
-    *start=buffer+(offset-begin);   /* Start of wanted data */
-    len-=(offset-begin);           /* Start slop */
-    if(len>length)
-       len = length;               /* Ending slop */
-    DBG(DBG_PROC, printk("3pos: %ld offset: %ld len: %d\n", pos, offset, len));
-    
-    return (len);     
-}
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-indent-level: 4
- * c-brace-imaginary-offset: 0
- * c-brace-offset: -4
- * c-argdecl-indent: 4
- * c-label-offset: -4
- * c-continued-statement-offset: 4
- * c-continued-brace-offset: 0
- * tab-width: 8
- * End:
- */
diff --git a/linux/src/drivers/scsi/eata_pio_proc.c 
b/linux/src/drivers/scsi/eata_pio_proc.c
deleted file mode 100644
index 54783f2..0000000
--- a/linux/src/drivers/scsi/eata_pio_proc.c
+++ /dev/null
@@ -1,135 +0,0 @@
-
-/*
- * eata_set_info
- * buffer : pointer to the data that has been written to the hostfile
- * length : number of bytes written to the hostfile
- * HBA_ptr: pointer to the Scsi_Host struct
- */
-int eata_pio_set_info(char *buffer, int length, struct Scsi_Host *HBA_ptr)
-{
-    DBG(DBG_PROC_WRITE, printk("%s\n", buffer));
-    return(-ENOSYS);  /* Currently this is a no-op */
-}
-
-/*
- * eata_proc_info
- * inout : decides on the direction of the dataflow and the meaning of the 
- *         variables
- * buffer: If inout==FALSE data is being written to it else read from it
- * *start: If inout==FALSE start of the valid data in the buffer
- * offset: If inout==FALSE offset from the beginning of the imaginary file 
- *         from which we start writing into the buffer
- * length: If inout==FALSE max number of bytes to be written into the buffer 
- *         else number of bytes in the buffer
- */
-int eata_pio_proc_info(char *buffer, char **start, off_t offset, int length, 
-                      int hostno, int inout)
-{
-
-    Scsi_Device *scd;
-    struct Scsi_Host *HBA_ptr;
-    static u8 buff[512];
-    int i; 
-    int   size, len = 0;
-    off_t begin = 0;
-    off_t pos = 0;
-
-    HBA_ptr = first_HBA;
-    for (i = 1; i <= registered_HBAs; i++) {
-       if (HBA_ptr->host_no == hostno)
-           break;
-       HBA_ptr = SD(HBA_ptr)->next;
-    }        
-
-    if(inout == TRUE) /* Has data been written to the file ? */ 
-       return(eata_pio_set_info(buffer, length, HBA_ptr));
-
-    if (offset == 0)
-       memset(buff, 0, sizeof(buff));
-
-    size = sprintf(buffer+len, "EATA (Extended Attachment) PIO driver version: 
"
-                  "%d.%d%s\n",VER_MAJOR, VER_MINOR, VER_SUB);
-    len += size; pos = begin + len;
-    size = sprintf(buffer + len, "queued commands:     %10ld\n"
-                  "processed interrupts:%10ld\n", queue_counter, int_counter);
-    len += size; pos = begin + len;
-    
-    size = sprintf(buffer + len, "\nscsi%-2d: HBA %.10s\n",
-                  HBA_ptr->host_no, SD(HBA_ptr)->name);
-    len += size; 
-    pos = begin + len;
-    size = sprintf(buffer + len, "Firmware revision: v%s\n", 
-                  SD(HBA_ptr)->revision);
-    len += size;
-    pos = begin + len;
-    size = sprintf(buffer + len, "IO: PIO\n");
-    len += size; 
-    pos = begin + len;
-    size = sprintf(buffer + len, "Base IO : %#.4x\n", (u32) HBA_ptr->base);
-    len += size; 
-    pos = begin + len;
-    size = sprintf(buffer + len, "Host Bus: %s\n", 
-                  (SD(HBA_ptr)->bustype == 'P')?"PCI ":
-                  (SD(HBA_ptr)->bustype == 'E')?"EISA":"ISA ");
-    
-    len += size; 
-    pos = begin + len;
-    
-    if (pos < offset) {
-       len = 0;
-       begin = pos;
-    }
-    if (pos > offset + length)
-       goto stop_output;
-    
-    scd = scsi_devices;
-    
-    size = sprintf(buffer+len,"Attached devices: %s\n", (scd)?"":"none");
-    len += size; 
-    pos = begin + len;
-    
-    while (scd) {
-       if (scd->host == HBA_ptr) {
-           proc_print_scsidevice(scd, buffer, &size, len);
-           len += size; 
-           pos = begin + len;
-           
-           if (pos < offset) {
-               len = 0;
-               begin = pos;
-           }
-           if (pos > offset + length)
-               goto stop_output;
-       }
-       scd = scd->next;
-    }
-    
- stop_output:
-    DBG(DBG_PROC, printk("2pos: %ld offset: %ld len: %d\n", pos, offset, len));
-    *start=buffer+(offset-begin);   /* Start of wanted data */
-    len-=(offset-begin);            /* Start slop */
-    if(len>length)
-       len = length;               /* Ending slop */
-    DBG(DBG_PROC, printk("3pos: %ld offset: %ld len: %d\n", pos, offset, len));
-    
-    return (len);     
-}
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-indent-level: 4
- * c-brace-imaginary-offset: 0
- * c-brace-offset: -4
- * c-argdecl-indent: 4
- * c-label-offset: -4
- * c-continued-statement-offset: 4
- * c-continued-brace-offset: 0
- * tab-width: 8
- * End:
- */
-
diff --git a/linux/src/drivers/scsi/g_NCR5380.c 
b/linux/src/drivers/scsi/g_NCR5380.c
deleted file mode 100644
index a141b93..0000000
--- a/linux/src/drivers/scsi/g_NCR5380.c
+++ /dev/null
@@ -1,729 +0,0 @@
-/*
- * Generic Generic NCR5380 driver
- *     
- * Copyright 1993, Drew Eckhardt
- *     Visionary Computing
- *     (Unix and Linux consulting and custom programming)
- *     address@hidden
- *      +1 (303) 440-4894
- *
- * NCR53C400 extensions (c) 1994,1995,1996, Kevin Lentin
- *    address@hidden
- *
- * ALPHA RELEASE 1. 
- *
- * For more information, please consult 
- *
- * NCR 5380 Family
- * SCSI Protocol Controller
- * Databook
- *
- * NCR Microelectronics
- * 1635 Aeroplaza Drive
- * Colorado Springs, CO 80916
- * 1+ (719) 578-3400
- * 1+ (800) 334-5454
- */
-
-/* 
- * TODO : flesh out DMA support, find some one actually using this (I have
- *     a memory mapped Trantor board that works fine)
- */
-
-/*
- * Options :
- *
- * PARITY - enable parity checking.  Not supported.
- *
- * SCSI2 - enable support for SCSI-II tagged queueing.  Untested.
- *
- * USLEEP - enable support for devices that don't disconnect.  Untested.
- *
- * The card is detected and initialized in one of several ways : 
- * 1.  With command line overrides - NCR5380=port,irq may be 
- *     used on the LILO command line to override the defaults.
- *
- * 2.  With the GENERIC_NCR5380_OVERRIDE compile time define.  This is 
- *     specified as an array of address, irq, dma, board tuples.  Ie, for
- *     one board at 0x350, IRQ5, no dma, I could say  
- *     -DGENERIC_NCR5380_OVERRIDE={{0xcc000, 5, DMA_NONE, BOARD_NCR5380}}
- * 
- * -1 should be specified for no or DMA interrupt, -2 to autoprobe for an 
- *     IRQ line if overridden on the command line.
- *
- * 3.  When included as a module, with arguments passed on the command line:
- *         ncr_irq=xx  the interrupt
- *         ncr_addr=xx  the port or base address (for port or memory
- *                     mapped, resp.)
- *         ncr_dma=xx  the DMA
- *         ncr_5380=1  to set up for a NCR5380 board
- *         ncr_53c400=1        to set up for a NCR53C400 board
- *     e.g.
- *     modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_5380=1
- *       for a port mapped NCR5380 board or
- *     modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
- *       for a memory mapped NCR53C400 board with interrupts disabled.
- * 
- * 255 should be specified for no or DMA interrupt, 254 to autoprobe for an 
- *     IRQ line if overridden on the command line.
- *     
- */
- 
-#define AUTOPROBE_IRQ
-#define AUTOSENSE
-
-#include <linux/config.h>
-
-#ifdef CONFIG_SCSI_GENERIC_NCR53C400
-#define NCR53C400_PSEUDO_DMA 1
-#define PSEUDO_DMA
-#define NCR53C400
-#define NCR5380_STATS
-#undef NCR5380_STAT_LIMIT
-#endif
-#if defined(CONFIG_SCSI_G_NCR5380_PORT) && defined(CONFIG_SCSI_G_NCR5380_MEM)
-#error You can not configure the Generic NCR 5380 SCSI Driver for memory 
mapped I/O and port mapped I/O at the same time (yet)
-#endif
-#if !defined(CONFIG_SCSI_G_NCR5380_PORT) && !defined(CONFIG_SCSI_G_NCR5380_MEM)
-#error You must configure the Generic NCR 5380 SCSI Driver for one of memory 
mapped I/O and port mapped I/O.
-#endif
-
-#include <asm/system.h>
-#include <asm/io.h>
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/blk.h>
-#include "scsi.h"
-#include "hosts.h"
-#include "g_NCR5380.h"
-#include "NCR5380.h"
-#include "constants.h"
-#include "sd.h"
-#include<linux/stat.h>
-
-struct proc_dir_entry proc_scsi_g_ncr5380 = {
-    PROC_SCSI_GENERIC_NCR5380, 9, "g_NCR5380",
-    S_IFDIR | S_IRUGO | S_IXUGO, 2
-};
-
-#define NCR_NOT_SET 0
-static int ncr_irq=NCR_NOT_SET;
-static int ncr_dma=NCR_NOT_SET;
-static int ncr_addr=NCR_NOT_SET;
-static int ncr_5380=NCR_NOT_SET;
-static int ncr_53c400=NCR_NOT_SET;
-
-static struct override {
-       NCR5380_implementation_fields;
-    int irq;
-    int dma;
-    int board; /* Use NCR53c400, Ricoh, etc. extensions ? */
-} overrides 
-#ifdef GENERIC_NCR5380_OVERRIDE 
-    [] = GENERIC_NCR5380_OVERRIDE
-#else
-    [1] = {{0,},};
-#endif
-
-#define NO_OVERRIDES (sizeof(overrides) / sizeof(struct override))
-
-/*
- * Function : static internal_setup(int board, char *str, int *ints)
- *
- * Purpose : LILO command line initialization of the overrides array,
- * 
- * Inputs : board - either BOARD_NCR5380 for a normal NCR5380 board, 
- *     or BOARD_NCR53C400 for a NCR53C400 board. str - unused, ints - 
- *     array of integer parameters with ints[0] equal to the number of ints.
- *
- */
-
-static void internal_setup(int board, char *str, int *ints) {
-    static int commandline_current = 0;
-    switch (board) {
-    case BOARD_NCR5380:
-       if (ints[0] != 2 && ints[0] != 3) {
-           printk("generic_NCR5380_setup : usage ncr5380=" 
STRVAL(NCR5380_map_name) ",irq,dma\n");
-           return;
-       }
-    case BOARD_NCR53C400:
-       if (ints[0] != 2) {
-           printk("generic_NCR53C400_setup : usage ncr53c400=" 
STRVAL(NCR5380_map_name) ",irq\n");
-           return;
-       }
-    }
-
-    if (commandline_current < NO_OVERRIDES) {
-       overrides[commandline_current].NCR5380_map_name = 
(NCR5380_map_type)ints[1];
-       overrides[commandline_current].irq = ints[2];
-       if (ints[0] == 3) 
-           overrides[commandline_current].dma = ints[3];
-       else 
-           overrides[commandline_current].dma = DMA_NONE;
-       overrides[commandline_current].board = board;
-           ++commandline_current;
-    }
-}
-
-/*
- * Function : generic_NCR5380_setup (char *str, int *ints)
- *
- * Purpose : LILO command line initialization of the overrides array,
- * 
- * Inputs : str - unused, ints - array of integer parameters with ints[0] 
- *     equal to the number of ints.
- */
-
-void generic_NCR5380_setup (char *str, int *ints) {
-    internal_setup (BOARD_NCR5380, str, ints);
-}
-
-/*
- * Function : generic_NCR53C400_setup (char *str, int *ints)
- *
- * Purpose : LILO command line initialization of the overrides array,
- * 
- * Inputs : str - unused, ints - array of integer parameters with ints[0] 
- *     equal to the number of ints.
- */
-
-void generic_NCR53C400_setup (char *str, int *ints) {
-    internal_setup (BOARD_NCR53C400, str, ints);
-}
-
-/* 
- * Function : int generic_NCR5380_detect(Scsi_Host_Template * tpnt)
- *
- * Purpose : initializes generic NCR5380 driver based on the 
- *     command line / compile time port and irq definitions.
- *
- * Inputs : tpnt - template for this SCSI adapter.
- * 
- * Returns : 1 if a host adapter was found, 0 if not.
- *
- */
-
-int generic_NCR5380_detect(Scsi_Host_Template * tpnt) {
-    static int current_override = 0;
-    int count;
-    int flags = 0;
-    struct Scsi_Host *instance;
-
-    if (ncr_irq != NCR_NOT_SET)
-       overrides[0].irq=ncr_irq;
-    if (ncr_dma != NCR_NOT_SET)
-       overrides[0].dma=ncr_dma;
-    if (ncr_addr != NCR_NOT_SET)
-       overrides[0].NCR5380_map_name=(NCR5380_map_type)ncr_addr;
-    if (ncr_5380 != NCR_NOT_SET)
-       overrides[0].board=BOARD_NCR5380;
-    else if (ncr_53c400 != NCR_NOT_SET)
-       overrides[0].board=BOARD_NCR53C400;
-
-    tpnt->proc_dir = &proc_scsi_g_ncr5380;
-
-    for (count = 0; current_override < NO_OVERRIDES; ++current_override) {
-       if (!(overrides[current_override].NCR5380_map_name))
-           continue;
-
-       switch (overrides[current_override].board) {
-       case BOARD_NCR5380:
-           flags = FLAG_NO_PSEUDO_DMA;
-           break;
-       case BOARD_NCR53C400:
-           flags = FLAG_NCR53C400;
-           break;
-       }
-
-       instance = scsi_register (tpnt, sizeof(struct NCR5380_hostdata));
-       instance->NCR5380_instance_name = 
overrides[current_override].NCR5380_map_name;
-
-       NCR5380_init(instance, flags);
-
-       if (overrides[current_override].irq != IRQ_AUTO)
-           instance->irq = overrides[current_override].irq;
-       else 
-           instance->irq = NCR5380_probe_irq(instance, 0xffff);
-
-       if (instance->irq != IRQ_NONE) 
-           if (request_irq(instance->irq, generic_NCR5380_intr, SA_INTERRUPT, 
"NCR5380", NULL)) {
-               printk("scsi%d : IRQ%d not free, interrupts disabled\n", 
-                   instance->host_no, instance->irq);
-               instance->irq = IRQ_NONE;
-           } 
-
-       if (instance->irq == IRQ_NONE) {
-           printk("scsi%d : interrupts not enabled. for better interactive 
performance,\n", instance->host_no);
-           printk("scsi%d : please jumper the board for a free IRQ.\n", 
instance->host_no);
-       }
-
-       printk("scsi%d : at " STRVAL(NCR5380_map_name) " 0x%x", 
instance->host_no, (unsigned int)instance->NCR5380_instance_name);
-       if (instance->irq == IRQ_NONE)
-           printk (" interrupts disabled");
-       else 
-           printk (" irq %d", instance->irq);
-       printk(" options CAN_QUEUE=%d  CMD_PER_LUN=%d release=%d",
-           CAN_QUEUE, CMD_PER_LUN, GENERIC_NCR5380_PUBLIC_RELEASE);
-       NCR5380_print_options(instance);
-       printk("\n");
-
-       ++current_override;
-       ++count;
-    }
-    return count;
-}
-
-const char * generic_NCR5380_info (struct Scsi_Host* host) {
-    static const char string[]="Generic NCR5380/53C400 Driver";
-    return string;
-}
-
-int generic_NCR5380_release_resources(struct Scsi_Host * instance)
-{
-    NCR5380_local_declare();
-
-    NCR5380_setup(instance);
-
-    if (instance->irq != IRQ_NONE)
-       free_irq(instance->irq, NULL);
-
-       return 0;
-}
-
-#ifdef BIOSPARAM
-/*
- * Function : int generic_NCR5380_biosparam(Disk * disk, kdev_t dev, int *ip)
- *
- * Purpose : Generates a BIOS / DOS compatible H-C-S mapping for 
- *     the specified device / size.
- * 
- * Inputs : size = size of device in sectors (512 bytes), dev = block device
- *     major / minor, ip[] = {heads, sectors, cylinders}  
- *
- * Returns : always 0 (success), initializes ip
- *     
- */
-
-/* 
- * XXX Most SCSI boards use this mapping, I could be incorrect.  Some one
- * using hard disks on a trantor should verify that this mapping corresponds
- * to that used by the BIOS / ASPI driver by running the linux fdisk program
- * and matching the H_C_S coordinates to what DOS uses.
- */
-
-int generic_NCR5380_biosparam(Disk * disk, kdev_t dev, int *ip)
-{
-  int size = disk->capacity;
-  ip[0] = 64;
-  ip[1] = 32;
-  ip[2] = size >> 11;
-  return 0;
-}
-#endif
-
-#if NCR53C400_PSEUDO_DMA
-static inline int NCR5380_pread (struct Scsi_Host *instance, unsigned char 
*dst,    int len)
-{
-    int blocks = len / 128;
-    int start = 0;
-    int i;
-    int bl;
-    NCR5380_local_declare();
-
-    NCR5380_setup(instance);
-
-#if (NDEBUG & NDEBUG_C400_PREAD)
-    printk("53C400r: About to read %d blocks for %d bytes\n", blocks, len);
-#endif
-
-    NCR5380_write(C400_CONTROL_STATUS_REG, CSR_BASE | CSR_TRANS_DIR);
-    NCR5380_write(C400_BLOCK_COUNTER_REG, blocks);
-    while (1) {
-    
-#if (NDEBUG & NDEBUG_C400_PREAD)
-       printk("53C400r: %d blocks left\n", blocks);
-#endif
-
-       if ((bl=NCR5380_read(C400_BLOCK_COUNTER_REG)) == 0) {
-#if (NDEBUG & NDEBUG_C400_PREAD)
-           if (blocks)
-               printk("53C400r: blocks still == %d\n", blocks);
-           else
-               printk("53C400r: Exiting loop\n");
-#endif
-           break;
-       }
-
-#if 1
-       if (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_GATED_53C80_IRQ) {
-           printk("53C400r: Got 53C80_IRQ start=%d, blocks=%d\n", start, 
blocks);
-           return -1;
-       }
-#endif
-
-#if (NDEBUG & NDEBUG_C400_PREAD)
-       printk("53C400r: Waiting for buffer, bl=%d\n", bl);
-#endif
-
-       while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY)
-           ;
-#if (NDEBUG & NDEBUG_C400_PREAD)
-       printk("53C400r: Transferring 128 bytes\n");
-#endif
-
-#ifdef CONFIG_SCSI_G_NCR5380_PORT
-       for (i=0; i<128; i++)
-           dst[start+i] = NCR5380_read(C400_HOST_BUFFER);
-#else
-       /* implies CONFIG_SCSI_G_NCR5380_MEM */
-       memmove(dst+start,NCR53C400_host_buffer+NCR5380_map_name,128);
-#endif
-       start+=128;
-       blocks--;
-    }
-
-    if (blocks) {
-#if (NDEBUG & NDEBUG_C400_PREAD)
-       printk("53C400r: EXTRA: Waiting for buffer\n");
-#endif
-       while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY)
-           ;
-
-#if (NDEBUG & NDEBUG_C400_PREAD)
-       printk("53C400r: Transferring EXTRA 128 bytes\n");
-#endif
-#ifdef CONFIG_SCSI_G_NCR5380_PORT
-       for (i=0; i<128; i++)
-           dst[start+i] = NCR5380_read(C400_HOST_BUFFER);
-#else
-       /* implies CONFIG_SCSI_G_NCR5380_MEM */
-       memmove(dst+start,NCR53C400_host_buffer+NCR5380_map_name,128);
-#endif
-       start+=128;
-       blocks--;
-    }
-#if (NDEBUG & NDEBUG_C400_PREAD)
-    else
-       printk("53C400r: No EXTRA required\n");
-#endif
-
-#if (NDEBUG & NDEBUG_C400_PREAD)
-    printk("53C400r: Final values: blocks=%d   start=%d\n", blocks, start);
-#endif
-
-    if (!(NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_GATED_53C80_IRQ))
-       printk("53C400r: no 53C80 gated irq after transfer");
-#if (NDEBUG & NDEBUG_C400_PREAD)
-    else
-       printk("53C400r: Got 53C80 interrupt and tried to clear it\n");
-#endif
-
-/* DON'T DO THIS - THEY NEVER ARRIVE!
-    printk("53C400r: Waiting for 53C80 registers\n");
-    while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_53C80_REG)
-       ;
-*/
-
-    if (!(NCR5380_read(BUS_AND_STATUS_REG) & BASR_END_DMA_TRANSFER))
-       printk("53C400r: no end dma signal\n");
-#if (NDEBUG & NDEBUG_C400_PREAD)
-    else
-       printk("53C400r: end dma as expected\n");
-#endif
-
-    NCR5380_write(MODE_REG, MR_BASE);
-    NCR5380_read(RESET_PARITY_INTERRUPT_REG);
-    return 0;
-}
-               
-static inline int NCR5380_pwrite (struct Scsi_Host *instance, unsigned char 
*src,    int len)
-{
-    int blocks = len / 128;
-    int start = 0;
-    int i;
-    int bl;
-    NCR5380_local_declare();
-
-    NCR5380_setup(instance);
-
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-    printk("53C400w: About to write %d blocks for %d bytes\n", blocks, len);
-#endif
-
-    NCR5380_write(C400_CONTROL_STATUS_REG, CSR_BASE);
-    NCR5380_write(C400_BLOCK_COUNTER_REG, blocks);
-    while (1) {
-       if (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_GATED_53C80_IRQ) {
-           printk("53C400w: Got 53C80_IRQ start=%d, blocks=%d\n", start, 
blocks);
-           return -1;
-       }
-
-       if ((bl=NCR5380_read(C400_BLOCK_COUNTER_REG)) == 0) {
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-           if (blocks)
-               printk("53C400w: exiting loop, blocks still == %d\n", blocks);
-           else
-               printk("53C400w: exiting loop\n");
-#endif
-           break;
-       }
-
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-       printk("53C400w: %d blocks left\n", blocks);
-
-       printk("53C400w: waiting for buffer, bl=%d\n", bl);
-#endif
-       while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY)
-           ;
-
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-       printk("53C400w: transferring 128 bytes\n");
-#endif
-#ifdef CONFIG_SCSI_G_NCR5380_PORT
-       for (i=0; i<128; i++)
-           NCR5380_write(C400_HOST_BUFFER, src[start+i]);
-#else
-       /* implies CONFIG_SCSI_G_NCR5380_MEM */
-       memmove(NCR53C400_host_buffer+NCR5380_map_name,src+start,128);
-#endif
-       start+=128;
-       blocks--;
-    }
-    if (blocks) {
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-       printk("53C400w: EXTRA waiting for buffer\n");
-#endif
-       while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY)
-           ;
-
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-       printk("53C400w: transferring EXTRA 128 bytes\n");
-#endif
-#ifdef CONFIG_SCSI_G_NCR5380_PORT
-       for (i=0; i<128; i++)
-           NCR5380_write(C400_HOST_BUFFER, src[start+i]);
-#else
-       /* implies CONFIG_SCSI_G_NCR5380_MEM */
-       memmove(NCR53C400_host_buffer+NCR5380_map_name,src+start,128);
-#endif
-       start+=128;
-       blocks--;
-    }
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-    else
-       printk("53C400w: No EXTRA required\n");
-#endif
-    
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-    printk("53C400w: Final values: blocks=%d   start=%d\n", blocks, start);
-#endif
-
-#if 0
-    printk("53C400w: waiting for registers to be available\n");
-    THEY NEVER DO!
-    while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_53C80_REG)
-       ;
-    printk("53C400w: Got em\n");
-#endif
-
-    /* Let's wait for this instead - could be ugly */
-    /* All documentation says to check for this. Maybe my hardware is too
-     * fast. Waiting for it seems to work fine! KLL
-     */
-    while (!(i = NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_GATED_53C80_IRQ))
-       ;
-
-    /*
-     * I know. i is certainly != 0 here but the loop is new. See previous
-     * comment.
-     */
-    if (i) {
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-       printk("53C400w: got 53C80 gated irq (last block)\n");
-#endif
-       if (!((i=NCR5380_read(BUS_AND_STATUS_REG)) & BASR_END_DMA_TRANSFER))
-           printk("53C400w: No END OF DMA bit - WHOOPS! BASR=%0x\n",i);
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-       else
-           printk("53C400w: Got END OF DMA\n");
-#endif
-    }
-    else
-       printk("53C400w: no 53C80 gated irq after transfer (last block)\n");
-
-#if 0
-    if (!(NCR5380_read(BUS_AND_STATUS_REG) & BASR_END_DMA_TRANSFER)) {
-       printk("53C400w: no end dma signal\n");
-    }
-#endif
-
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-    printk("53C400w: waiting for last byte...\n");
-#endif
-    while (!(NCR5380_read(TARGET_COMMAND_REG) & TCR_LAST_BYTE_SENT))
-       ;
-
-#if (NDEBUG & NDEBUG_C400_PWRITE)
-    printk("53C400w:     got last byte.\n");
-    printk("53C400w: pwrite exiting with status 0, whoopee!\n");
-#endif
-    return 0;
-}
-#endif /* PSEUDO_DMA */
-
-#include "NCR5380.c"
-
-#define PRINTP(x) len += sprintf(buffer+len, x)
-#define ANDP ,
-
-static int sprint_opcode(char* buffer, int len, int opcode) {
-    int start = len;
-    PRINTP("0x%02x " ANDP opcode);
-    return len-start;
-}
-
-static int sprint_command (char* buffer, int len, unsigned char *command) {
-    int i,s,start=len;
-    len += sprint_opcode(buffer, len, command[0]);
-    for ( i = 1, s = COMMAND_SIZE(command[0]); i < s; ++i)
-       PRINTP("%02x " ANDP command[i]);
-    PRINTP("\n");
-    return len-start;
-}
-
-static int sprint_Scsi_Cmnd (char* buffer, int len, Scsi_Cmnd *cmd) {
-    int start = len;
-    PRINTP("host number %d destination target %d, lun %d\n" ANDP
-       cmd->host->host_no ANDP
-       cmd->target ANDP
-       cmd->lun);
-    PRINTP("        command = ");
-    len += sprint_command (buffer, len, cmd->cmnd);
-    return len-start;
-}
-
-int generic_NCR5380_proc_info(char* buffer, char** start, off_t offset, int 
length, int hostno, int inout)
-{
-    int len = 0;
-    NCR5380_local_declare();
-    unsigned char status;
-    int i;
-    struct Scsi_Host *scsi_ptr;
-    Scsi_Cmnd *ptr;
-    Scsi_Device *dev;
-    struct NCR5380_hostdata *hostdata;
-
-    cli();
-
-    for (scsi_ptr = first_instance; scsi_ptr; scsi_ptr=scsi_ptr->next)
-       if (scsi_ptr->host_no == hostno)
-           break;
-    NCR5380_setup(scsi_ptr);
-    hostdata = (struct NCR5380_hostdata *)scsi_ptr->hostdata;
-
-    PRINTP("SCSI host number %d : %s\n" ANDP scsi_ptr->host_no ANDP 
scsi_ptr->hostt->name);
-    PRINTP("Generic NCR5380 driver version %d\n" ANDP 
GENERIC_NCR5380_PUBLIC_RELEASE);
-    PRINTP("NCR5380 core version %d\n" ANDP NCR5380_PUBLIC_RELEASE);
-#ifdef NCR53C400
-    PRINTP("NCR53C400 extension version %d\n" ANDP NCR53C400_PUBLIC_RELEASE);
-    PRINTP("NCR53C400 card%s detected\n" ANDP  (((struct NCR5380_hostdata 
*)scsi_ptr->hostdata)->flags & FLAG_NCR53C400)?"":" not");
-# if NCR53C400_PSEUDO_DMA
-    PRINTP("NCR53C400 pseudo DMA used\n");
-# endif
-#else
-    PRINTP("NO NCR53C400 driver extensions\n");
-#endif
-    PRINTP("Using %s mapping at %s 0x%x, " ANDP STRVAL(NCR5380_map_config) 
ANDP STRVAL(NCR5380_map_name) ANDP scsi_ptr->NCR5380_instance_name);
-    if (scsi_ptr->irq == IRQ_NONE)
-       PRINTP("no interrupt\n");
-    else
-       PRINTP("on interrupt %d\n" ANDP scsi_ptr->irq);
-
-#ifdef NCR5380_STATS
-    if (hostdata->connected || hostdata->issue_queue || 
hostdata->disconnected_queue)
-       PRINTP("There are commands pending, transfer rates may be crud\n");
-    if (hostdata->pendingr)
-       PRINTP("  %d pending reads" ANDP hostdata->pendingr);
-    if (hostdata->pendingw)
-       PRINTP("  %d pending writes" ANDP hostdata->pendingw);
-    if (hostdata->pendingr || hostdata->pendingw)
-       PRINTP("\n");
-    for (dev = scsi_devices; dev; dev=dev->next) {
-       if (dev->host == scsi_ptr) {
-           unsigned long br = hostdata->bytes_read[dev->id];
-           unsigned long bw = hostdata->bytes_write[dev->id];
-           long tr = hostdata->time_read[dev->id] / HZ;
-           long tw = hostdata->time_write[dev->id] / HZ;
-
-           PRINTP("  T:%d %s " ANDP dev->id ANDP (dev->type < 
MAX_SCSI_DEVICE_CODE) ? scsi_device_types[(int)dev->type] : "Unknown");
-           for (i=0; i<8; i++)
-               if (dev->vendor[i] >= 0x20)
-                   *(buffer+(len++)) = dev->vendor[i];
-           *(buffer+(len++)) = ' ';
-           for (i=0; i<16; i++)
-               if (dev->model[i] >= 0x20)
-                   *(buffer+(len++)) = dev->model[i];
-           *(buffer+(len++)) = ' ';
-           for (i=0; i<4; i++)
-               if (dev->rev[i] >= 0x20)
-                   *(buffer+(len++)) = dev->rev[i];
-           *(buffer+(len++)) = ' ';
-                                   
-           PRINTP("\n%10ld kb read    in %5ld secs" ANDP br/1024 ANDP tr);
-           if (tr)
-               PRINTP(" @ %5ld bps" ANDP br / tr); 
-
-           PRINTP("\n%10ld kb written in %5ld secs" ANDP bw/1024 ANDP tw);
-           if (tw)
-               PRINTP(" @ %5ld bps" ANDP bw / tw); 
-           PRINTP("\n");
-       }
-    }
-#endif
-       
-    status = NCR5380_read(STATUS_REG);
-    if (!(status & SR_REQ))
-       PRINTP("REQ not asserted, phase unknown.\n");
-    else {
-       for (i = 0; (phases[i].value != PHASE_UNKNOWN) &&
-                   (phases[i].value != (status & PHASE_MASK)); ++i)
-           ;
-       PRINTP("Phase %s\n" ANDP phases[i].name);
-    }
-
-    if (!hostdata->connected) {
-       PRINTP("No currently connected command\n");
-    } else {
-       len += sprint_Scsi_Cmnd (buffer, len, (Scsi_Cmnd *) 
hostdata->connected);
-    }
-
-    PRINTP("issue_queue\n");
-
-    for (ptr = (Scsi_Cmnd *) hostdata->issue_queue; ptr;
-               ptr = (Scsi_Cmnd *) ptr->host_scribble)
-       len += sprint_Scsi_Cmnd (buffer, len, ptr);
-
-    PRINTP("disconnected_queue\n");
-
-    for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr;
-               ptr = (Scsi_Cmnd *) ptr->host_scribble)
-       len += sprint_Scsi_Cmnd (buffer, len, ptr);
-       
-    *start = buffer + offset;
-    len -= offset;
-    if (len > length)
-           len = length;
-    sti();
-    return len;
-}
-
-#undef PRINTP
-#undef ANDP
-
-#ifdef MODULE
-/* Eventually this will go into an include file, but this will be later */
-Scsi_Host_Template driver_template = GENERIC_NCR5380;
-
-#include <linux/module.h>
-#include "scsi_module.c"
-#endif
diff --git a/linux/src/drivers/scsi/gdth_proc.c 
b/linux/src/drivers/scsi/gdth_proc.c
deleted file mode 100644
index 8764d55..0000000
--- a/linux/src/drivers/scsi/gdth_proc.c
+++ /dev/null
@@ -1,656 +0,0 @@
-/* gdth_proc.c 
- * $Id: gdth_proc.c,v 1.1 1999/04/26 05:54:38 tb Exp $
- */
-
-#include "gdth_ioctl.h"
-
-int gdth_proc_info(char *buffer,char **start,off_t offset,int length,   
-                   int hostno,int inout)
-{
-    int hanum,busnum,i;
-
-    TRACE2(("gdth_proc_info() length %d ha %d offs %d inout %d\n",
-            length,hostno,(int)offset,inout));
-
-    for (i=0; i<gdth_ctr_vcount; ++i) {
-        if (gdth_ctr_vtab[i]->host_no == hostno)
-            break;
-    }
-    if (i==gdth_ctr_vcount)
-        return(-EINVAL);
-
-    hanum = NUMDATA(gdth_ctr_vtab[i])->hanum;
-    busnum= NUMDATA(gdth_ctr_vtab[i])->busnum;
-
-    if (inout)
-        return(gdth_set_info(buffer,length,i,hanum,busnum));
-    else
-        return(gdth_get_info(buffer,start,offset,length,i,hanum,busnum));
-}
-
-static int gdth_set_info(char *buffer,int length,int vh,int hanum,int busnum)
-{
-    int             ret_val;
-    Scsi_Cmnd       scp;
-    Scsi_Device     sdev;
-    gdth_iowr_str   *piowr;
-
-    TRACE2(("gdth_set_info() ha %d bus %d\n",hanum,busnum));
-    piowr = (gdth_iowr_str *)buffer;
-
-    memset(&sdev,0,sizeof(Scsi_Device));
-    memset(&scp, 0,sizeof(Scsi_Cmnd));
-    sdev.host = gdth_ctr_vtab[vh];
-    sdev.id = sdev.host->this_id;
-    scp.cmd_len = 12;
-    scp.host = gdth_ctr_vtab[vh];
-    scp.target = sdev.host->this_id;
-    scp.device = &sdev;
-    scp.use_sg = 0;
-
-    if (length >= 4) {
-        if (strncmp(buffer,"gdth",4) == 0) {
-            buffer += 5;
-            length -= 5;
-            ret_val = gdth_set_asc_info( buffer, length, hanum, scp );
-        } else if (piowr->magic == GDTIOCTL_MAGIC) {
-            ret_val = gdth_set_bin_info( buffer, length, hanum, scp );
-        } else {
-            printk("GDT: Wrong signature: %6s\n",buffer);
-            ret_val = -EINVAL;
-        }
-    } else {
-        ret_val = -EINVAL;
-    }
-    return ret_val;
-}
-         
-static int gdth_set_asc_info(char *buffer,int length,int hanum,Scsi_Cmnd scp)
-{
-    int             orig_length, drive, wb_mode;
-    char            cmnd[12];
-    int             i, j, found;
-    gdth_ha_str     *ha;
-    gdth_cmd_str    gdtcmd;
-    gdth_cpar_str   *pcpar;
-
-    TRACE2(("gdth_set_asc_info() ha %d\n",hanum));
-    ha = HADATA(gdth_ctr_tab[hanum]);
-    memset(cmnd, 0,10);
-    orig_length = length + 5;
-    drive = -1;
-    wb_mode = 0;
-    found = FALSE;
-
-    if (length >= 5 && strncmp(buffer,"flush",5)==0) {
-        buffer += 6;
-        length -= 6;
-        if (length && *buffer>='0' && *buffer<='9') {
-            drive = (int)(*buffer-'0');
-            ++buffer; --length;
-            if (length && *buffer>='0' && *buffer<='9') {
-                drive = drive*10 + (int)(*buffer-'0');
-                ++buffer; --length;
-            }
-            printk("GDT: Flushing host drive %d .. ",drive);
-        } else {
-            printk("GDT: Flushing all host drives .. ");
-        }
-        for (i = 0; i < MAXBUS; ++i) {
-            for (j = 0; j < MAXID; ++j) {
-                if (ha->id[i][j].type == CACHE_DTYP) {
-                    if (drive != -1 &&
-                        ha->id[i][j].hostdrive != (ushort)drive)
-                        continue;
-                    found = TRUE;
-                    gdtcmd.BoardNode = LOCALBOARD;
-                    gdtcmd.Service = CACHESERVICE;
-                    gdtcmd.OpCode = GDT_FLUSH;
-                    gdtcmd.u.cache.DeviceNo = ha->id[i][j].hostdrive;
-                    gdtcmd.u.cache.BlockNo = 1;
-                    gdtcmd.u.cache.sg_canz = 0;
-                    {
-                        struct semaphore sem = MUTEX_LOCKED;
-                        scp.request.rq_status = RQ_SCSI_BUSY;
-                        scp.request.sem = &sem;
-                        scp.SCp.this_residual = IOCTL_PRI;
-                        scsi_do_cmd(&scp, cmnd, &gdtcmd,
-                                    sizeof(gdth_cmd_str), gdth_scsi_done,
-                                    30*HZ, 1);
-                        down(&sem);
-                    }
-                }
-            }
-        }
-        if (!found)
-            printk("\nNo host drive found !\n");
-        else
-            printk("Done.\n");
-        return(orig_length);
-    }
-
-    if (length >= 7 && strncmp(buffer,"wbp_off",7)==0) {
-        buffer += 8;
-        length -= 8;
-        printk("GDT: Disabling write back permanently .. ");
-        wb_mode = 1;
-    } else if (length >= 6 && strncmp(buffer,"wbp_on",6)==0) {
-        buffer += 7;
-        length -= 7;
-        printk("GDT: Enabling write back permanently .. ");
-        wb_mode = 2;
-    } else if (length >= 6 && strncmp(buffer,"wb_off",6)==0) {
-        buffer += 7;
-        length -= 7;
-        printk("GDT: Disabling write back commands .. ");
-        if (ha->cache_feat & GDT_WR_THROUGH) {
-            gdth_write_through = TRUE;
-            printk("Done.\n");
-        } else {
-            printk("Not supported !\n");
-        }
-        return(orig_length);
-    } else if (length >= 5 && strncmp(buffer,"wb_on",5)==0) {
-        buffer += 6;
-        length -= 6;
-        printk("GDT: Enabling write back commands .. ");
-        gdth_write_through = FALSE;
-        printk("Done.\n");
-        return(orig_length);
-    }
-
-    if (wb_mode) {
-        pcpar = (gdth_cpar_str *)kmalloc( sizeof(gdth_cpar_str),
-            GFP_ATOMIC | GFP_DMA );
-        if (pcpar == NULL) {
-            TRACE2(("gdth_set_info(): Unable to allocate memory.\n"));
-            printk("Unable to allocate memory.\n");
-            return(-EINVAL);
-        }
-        memcpy( pcpar, &ha->cpar, sizeof(gdth_cpar_str) );
-        gdtcmd.BoardNode = LOCALBOARD;
-        gdtcmd.Service = CACHESERVICE;
-        gdtcmd.OpCode = GDT_IOCTL;
-        gdtcmd.u.ioctl.p_param = virt_to_bus(pcpar);
-        gdtcmd.u.ioctl.param_size = sizeof(gdth_cpar_str);
-        gdtcmd.u.ioctl.subfunc = CACHE_CONFIG;
-        gdtcmd.u.ioctl.channel = INVALID_CHANNEL;
-        pcpar->write_back = wb_mode==1 ? 0:1;
-        {
-            struct semaphore sem = MUTEX_LOCKED;
-            scp.request.rq_status = RQ_SCSI_BUSY;
-            scp.request.sem = &sem;
-            scp.SCp.this_residual = IOCTL_PRI;
-            scsi_do_cmd(&scp, cmnd, &gdtcmd, sizeof(gdth_cmd_str),
-                        gdth_scsi_done, 30*HZ, 1);
-            down(&sem);
-        }
-        kfree( pcpar );
-        printk("Done.\n");
-        return(orig_length);
-    }
-
-    printk("GDT: Unknown command: %s  Length: %d\n",buffer,length);
-    return(-EINVAL);
-}
-
-static int gdth_set_bin_info(char *buffer,int length,int hanum,Scsi_Cmnd scp)
-{
-    char            cmnd[12];
-    int             id;
-    unchar          i, j, k, found;
-    gdth_ha_str     *ha;
-    gdth_iowr_str   *piowr;
-    gdth_iord_str   *piord;
-    gdth_cmd_str    *pcmd;
-    ulong           *ppadd;
-    ulong           add_size, flags;
-
-
-    TRACE2(("gdth_set_bin_info() ha %d\n",hanum));
-    ha = HADATA(gdth_ctr_tab[hanum]);
-    memset(cmnd, 0,10);
-    piowr = (gdth_iowr_str *)buffer;
-    piord = NULL;
-    pcmd = NULL;
-
-    if (length < GDTOFFSOF(gdth_iowr_str,iu))
-        return(-EINVAL);
-
-    switch (piowr->ioctl) {
-      case GDTIOCTL_GENERAL:
-        if (length < GDTOFFSOF(gdth_iowr_str,iu.general.data[0]))
-            return(-EINVAL);
-        pcmd = (gdth_cmd_str *)piowr->iu.general.command;
-        pcmd->Service = piowr->service;
-        if (pcmd->OpCode == GDT_IOCTL) {
-            ppadd = &pcmd->u.ioctl.p_param;
-            add_size = pcmd->u.ioctl.param_size;
-        } else if (piowr->service == CACHESERVICE) {
-            add_size = pcmd->u.cache.BlockCnt * SECTOR_SIZE;
-            if (ha->cache_feat & SCATTER_GATHER) {
-                ppadd = &pcmd->u.cache.sg_lst[0].sg_ptr;
-                pcmd->u.cache.DestAddr = -1UL;
-                pcmd->u.cache.sg_lst[0].sg_len = add_size;
-                pcmd->u.cache.sg_canz = 1;
-            } else {
-                ppadd = &pcmd->u.cache.DestAddr;
-                pcmd->u.cache.sg_canz = 0;
-            }
-        } else if (piowr->service == SCSIRAWSERVICE) {
-            add_size = pcmd->u.raw.sdlen;
-            if (ha->raw_feat & SCATTER_GATHER) {
-                ppadd = &pcmd->u.raw.sg_lst[0].sg_ptr;
-                pcmd->u.raw.sdata = -1UL;
-                pcmd->u.raw.sg_lst[0].sg_len = add_size;
-                pcmd->u.raw.sg_ranz = 1;
-            } else {
-                ppadd = &pcmd->u.raw.sdata;
-                pcmd->u.raw.sg_ranz = 0;
-            }
-        } else {
-            return(-EINVAL);
-        }
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) + add_size );
-        if (id == -1)
-            return(-EBUSY);
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-
-        piord->size = sizeof(gdth_iord_str) + add_size;
-        if (add_size > 0) {
-            memcpy(piord->iu.general.data, piowr->iu.general.data, add_size);
-            *ppadd = virt_to_bus(piord->iu.general.data);
-        }
-        /* do IOCTL */
-        {
-            struct semaphore sem = MUTEX_LOCKED;
-            scp.request.rq_status = RQ_SCSI_BUSY;
-            scp.request.sem = &sem;
-            scp.SCp.this_residual = IOCTL_PRI;
-            scsi_do_cmd(&scp, cmnd, pcmd,
-                        sizeof(gdth_cmd_str), gdth_scsi_done,
-                        piowr->timeout*HZ, 1);
-            down(&sem);
-            piord->status = (ulong)scp.SCp.Message;
-        }
-        break;
-
-      case GDTIOCTL_DRVERS:
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) );
-        if (id == -1)
-            return(-EBUSY);
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        piord->size = sizeof(gdth_iord_str);
-        piord->status = S_OK;
-        piord->iu.drvers.version = (GDTH_VERSION<<8) | GDTH_SUBVERSION;
-        break;
-
-      case GDTIOCTL_CTRTYPE:
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) );
-        if (id == -1)
-            return(-EBUSY);
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        piord->size = sizeof(gdth_iord_str);
-        piord->status = S_OK;
-        if (ha->type == GDT_ISA || ha->type == GDT_EISA) {
-            piord->iu.ctrtype.type = (unchar)((ha->stype>>20) - 0x10);
-        } else if (ha->type != GDT_PCIMPR) {
-            piord->iu.ctrtype.type = (unchar)((ha->stype<<8) + 6);
-        } else {
-            piord->iu.ctrtype.type = 0xfe;
-            piord->iu.ctrtype.ext_type = 0x6000 | ha->stype;
-        }
-        piord->iu.ctrtype.info = ha->brd_phys;
-        piord->iu.ctrtype.oem_id = (ushort)GDT3_ID;
-        break;
-
-      case GDTIOCTL_CTRCNT:
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) );
-        if (id == -1)
-            return(-EBUSY);
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        piord->size = sizeof(gdth_iord_str);
-        piord->status = S_OK;
-        piord->iu.ctrcnt.count = (ushort)gdth_ctr_count;
-        break;
-
-      case GDTIOCTL_OSVERS:
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) );
-        if (id == -1)
-            return(-EBUSY);
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        piord->size = sizeof(gdth_iord_str);
-        piord->status = S_OK;
-        piord->iu.osvers.version = (unchar)(LINUX_VERSION_CODE >> 16);
-        piord->iu.osvers.subversion = (unchar)(LINUX_VERSION_CODE >> 8);
-        piord->iu.osvers.revision = (ushort)(LINUX_VERSION_CODE & 0xff);
-        break;
-
-      case GDTIOCTL_LOCKDRV:
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) );
-        if (id == -1)
-            return(-EBUSY);
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        for (i = k = 0; i < piowr->iu.lockdrv.drive_cnt; ++i) {
-            found = FALSE;
-            for (j = 0; j < ha->bus_cnt; ++j) {
-                for (k = 0; k < MAXID; ++k) {
-                    if (ha->id[j][k].type == CACHE_DTYP &&
-                        ha->id[j][k].hostdrive == piowr->iu.lockdrv.drives[i]) 
{
-                        found = TRUE;
-                        break;
-                    }
-                }
-                if (found)
-                    break;
-            }
-            if (!found)
-                continue;
-
-            if (piowr->iu.lockdrv.lock) {
-                save_flags( flags );
-                cli();
-                ha->id[j][k].lock = 1;
-                restore_flags( flags );
-                gdth_wait_completion( hanum, j, k );
-                gdth_stop_timeout( hanum, j, k );
-            } else {
-                save_flags( flags );
-                cli();
-                ha->id[j][k].lock = 0;
-                restore_flags( flags );
-                gdth_start_timeout( hanum, j, k );
-                gdth_next( hanum );
-            }
-        }
-        piord->size = sizeof(gdth_iord_str);
-        piord->status = S_OK;
-        break;
-
-      case GDTIOCTL_LOCKCHN:
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) );
-        if (id == -1)
-            return(-EBUSY);
-        for (k = 0, j = piowr->iu.lockchn.channel; k < MAXID; ++k) {
-            if (ha->id[j][k].type != RAW_DTYP)
-                continue;
-
-            if (piowr->iu.lockchn.lock) {
-                save_flags( flags );
-                cli();
-                ha->id[j][k].lock = 1;
-                restore_flags( flags );
-                gdth_wait_completion( hanum, j, k );
-                gdth_stop_timeout( hanum, j, k );
-            } else {
-                save_flags( flags );
-                cli();
-                ha->id[j][k].lock = 0;
-                restore_flags( flags );
-                gdth_start_timeout( hanum, j, k );
-                gdth_next( hanum );
-            }
-        }
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        piord->size = sizeof(gdth_iord_str);
-        piord->status = S_OK;
-        break;
-
-      case GDTIOCTL_EVENT:
-        id = gdth_ioctl_alloc( hanum, sizeof(gdth_iord_str) );
-        if (id == -1)
-            return(-EBUSY);
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        if (piowr->iu.event.erase == 0) {
-            piord->iu.event.handle = gdth_read_event( piowr->iu.event.handle,
-                (gdth_evt_str *)piord->iu.event.evt );
-        } else {
-            piord->iu.event.handle = piowr->iu.event.handle;
-            gdth_readapp_event( (unchar)piowr->iu.event.erase,
-                (gdth_evt_str *)piord->iu.event.evt );
-        }
-        piord->size = sizeof(gdth_iord_str);
-        piord->status = S_OK;
-        break;
-
-      default:
-        return(-EINVAL);
-    }
-    /* we return a buffer ID to detect the right buffer during READ-IOCTL */
-    return id;
-}
-
-static int gdth_get_info(char *buffer,char **start,off_t offset,
-                         int length,int vh,int hanum,int busnum)
-{
-    int size = 0,len = 0;
-    off_t begin = 0,pos = 0;
-    gdth_ha_str *ha;
-    gdth_iord_str *piord;
-    int id;
-
-    TRACE2(("gdth_get_info() ha %d bus %d\n",hanum,busnum));
-    ha = HADATA(gdth_ctr_tab[hanum]);
-    id = length;
-
-    /* look for buffer ID in length */
-    if (id > 4) {
-#if LINUX_VERSION_CODE >= 0x020000
-        size = sprintf(buffer+len,
-                       "%s SCSI Disk Array Controller\n",
-                       ha->ctr_name);
-#else
-        size = sprintf(buffer+len,
-                       "%s SCSI Disk Array Controller (SCSI Bus %d)\n",
-                       ha->ctr_name,busnum);
-#endif
-        len += size;  pos = begin + len;
-        size = sprintf(buffer+len,
-                       "Firmware Version: %d.%2d\tDriver Version: %s\n",
-                       (unchar)(ha->cpar.version>>8),
-                       (unchar)(ha->cpar.version),GDTH_VERSION_STR);
-        len += size;  pos = begin + len;
- 
-        if (pos < offset) {
-            len = 0;
-            begin = pos;
-        }
-        if (pos > offset + length)
-            goto stop_output;
-
-    } else {
-        piord = (gdth_iord_str *)gdth_ioctl_tab[id-1][hanum];
-        if (piord == NULL)
-            goto stop_output;
-        length = piord->size;
-        memcpy(buffer+len, (char *)piord, length);
-        gdth_ioctl_free(hanum, id);
-        len += length; pos = begin + len;
-
-        if (pos < offset) {
-            len = 0;
-            begin = pos;
-        }
-        if (pos > offset + length)
-            goto stop_output;
-    }
-
-stop_output:
-    *start = buffer +(offset-begin);
-    len -= (offset-begin);
-    if (len > length)
-        len = length;
-    TRACE2(("get_info() len %d pos %d begin %d offset %d length %d size %d\n",
-            len,(int)pos,(int)begin,(int)offset,length,size));
-    return(len);
-}
-
-
-void gdth_scsi_done(Scsi_Cmnd *scp)
-{
-    TRACE2(("gdth_scsi_done()\n"));
-
-    scp->request.rq_status = RQ_SCSI_DONE;
-
-    if (scp->request.sem != NULL)
-        up(scp->request.sem);
-}
-
-static int gdth_ioctl_alloc(int hanum, ushort size)
-{
-    ulong flags;
-    int i;
-
-    if (size == 0)
-        return -1;
-
-    save_flags(flags);
-    cli();
-
-    for (i = 0; i < 4; ++i) {
-        if (gdth_ioctl_tab[i][hanum] == NULL) {
-            gdth_ioctl_tab[i][hanum] = kmalloc( size, GFP_ATOMIC | GFP_DMA );
-            break;
-        }
-    }
-
-    restore_flags(flags);
-    if (i == 4 || gdth_ioctl_tab[i][hanum] == NULL)
-        return -1;
-    return (i+1);
-}
-
-static void gdth_ioctl_free(int hanum, int idx)
-{
-    ulong flags;
-
-    save_flags(flags);
-    cli();
-
-    kfree( gdth_ioctl_tab[idx-1][hanum] );
-    gdth_ioctl_tab[idx-1][hanum] = NULL;
-
-    restore_flags(flags);
-}
-
-static void gdth_wait_completion(int hanum, int busnum, int id)
-{
-    ulong flags;
-    int i;
-    Scsi_Cmnd *scp;
-
-    save_flags(flags);
-    cli();
-
-    for (i = 0; i < GDTH_MAXCMDS; ++i) {
-        scp = gdth_cmd_tab[i][hanum].cmnd;
-#if LINUX_VERSION_CODE >= 0x020000
-        if (!SPECIAL_SCP(scp) && scp->target == (unchar)id &&
-            scp->channel == (unchar)busnum)
-#else
-        if (!SPECIAL_SCP(scp) && scp->target == (unchar)id &&
-            NUMDATA(scp->host)->busnum == (unchar)busnum)
-#endif
-        {
-           scp->SCp.have_data_in = 0;
-            restore_flags(flags);
-            while (!scp->SCp.have_data_in)
-                barrier();
-           scp->scsi_done(scp);
-            save_flags(flags);
-            cli();
-        }
-    }
-    restore_flags(flags);
-}
-
-static void gdth_stop_timeout(int hanum, int busnum, int id)
-{
-    ulong flags;
-    Scsi_Cmnd *scp;
-    gdth_ha_str *ha;
-
-    save_flags(flags);
-    cli();
-    ha = HADATA(gdth_ctr_tab[hanum]);
-
-    for (scp = ha->req_first; scp; scp = (Scsi_Cmnd *)scp->SCp.ptr) {
-#if LINUX_VERSION_CODE >= 0x020000
-        if (scp->target == (unchar)id &&
-            scp->channel == (unchar)busnum)
-#else
-        if (scp->target == (unchar)id &&
-            NUMDATA(scp->host)->busnum == (unchar)busnum)
-#endif
-        {
-            TRACE2(("gdth_stop_timeout(): update_timeout()\n"));
-            scp->SCp.buffers_residual = gdth_update_timeout(hanum, scp, 0);
-        }
-    }
-    restore_flags(flags);
-}
-
-static void gdth_start_timeout(int hanum, int busnum, int id)
-{
-    ulong flags;
-    Scsi_Cmnd *scp;
-    gdth_ha_str *ha;
-
-    save_flags(flags);
-    cli();
-    ha = HADATA(gdth_ctr_tab[hanum]);
-
-    for (scp = ha->req_first; scp; scp = (Scsi_Cmnd *)scp->SCp.ptr) {
-#if LINUX_VERSION_CODE >= 0x020000
-        if (scp->target == (unchar)id &&
-            scp->channel == (unchar)busnum)
-#else
-        if (scp->target == (unchar)id &&
-            NUMDATA(scp->host)->busnum == (unchar)busnum)
-#endif
-        {
-            TRACE2(("gdth_start_timeout(): update_timeout()\n"));
-            gdth_update_timeout(hanum, scp, scp->SCp.buffers_residual);
-        }
-    }
-    restore_flags(flags);
-}
-
-static int gdth_update_timeout(int hanum, Scsi_Cmnd *scp, int timeout)
-{
-    ulong flags;
-    int oldto;
-
-    save_flags(flags);
-    cli();
-    oldto = scp->timeout_per_command;
-    scp->timeout_per_command = timeout;
-
-#if LINUX_VERSION_CODE >= 0x02014B
-    if (timeout == 0) {
-       del_timer(&scp->eh_timeout);
-       scp->eh_timeout.data = (unsigned long) NULL;
-       scp->eh_timeout.expires = 0;
-    } else {
-       if (scp->eh_timeout.data != (unsigned long) NULL) 
-           del_timer(&scp->eh_timeout);
-       scp->eh_timeout.data = (unsigned long) scp;
-       scp->eh_timeout.expires = jiffies + timeout;
-       add_timer(&scp->eh_timeout);
-    }
-#else
-    if (timeout > 0) {
-        if (timer_table[SCSI_TIMER].expires == 0) {
-            timer_table[SCSI_TIMER].expires = jiffies + timeout;
-            timer_active |= 1 << SCSI_TIMER;
-        } else {
-            if (jiffies + timeout < timer_table[SCSI_TIMER].expires)
-                timer_table[SCSI_TIMER].expires = jiffies + timeout;
-        }
-    }
-#endif
-
-    restore_flags(flags);
-    return oldto;
-}
-
diff --git a/linux/src/drivers/scsi/scripts.h b/linux/src/drivers/scsi/scripts.h
deleted file mode 100644
index 482b0c2..0000000
--- a/linux/src/drivers/scsi/scripts.h
+++ /dev/null
@@ -1,1357 +0,0 @@
-/***********************************************************************
-;*     File Name : SCRIPTS.H                                          *
-;*     Description:SCRIPT language for NCR53c825A,875 SCRIPT processor*
-;*                                                                    *
-;***********************************************************************
-
-;==========================================================
-; NCR 53C810,53C815,53C820,53C825,53C825A,53C860,53C875
-; Script language definition for assembly programming
-;==========================================================
-
-;==========================================================
-;      DMA Command
-;==========================================================
-*/
-#define DCMD_BLOCK_MOVE      0
-#define DCMD_IO            0x040000000  /*;BIT30 */
-#define DCMD_RD_WRT        0x040000000  /*;BIT30 */
-#define DCMD_XFER_CTRL     0x080000000  /*;BIT31 */
-#define DCMD_MEM_MOVE      0x0C0000000  /*;(BIT31+BIT30) */
-#define DCMD_LOAD_STORE     0x0E0000000  /*;(BIT31+BIT30+BIT29) */
-/*;==========================================================*/
-#define INDIRECT_ADDR       0x20000000  /*;BIT29 */
-#define TABLE_INDIRECT      0x10000000  /*;BIT28 */
-#define BLOCK_MOVE          0x08000000  /*;BIT27 */
-#define CHAIN_MOVE          0
-/*; SCSI phase definition */
-#define DATA_OUT_           0x00000000  /*;data out phase */
-#define DATA_IN_            0x01000000  /*;BIT24           ; data in phase */
-#define COMMAND_            0x02000000  /*;BIT25           ; command phase */
-#define STATUS_             0x03000000  /*;(BIT25+BIT24)   ; status phase */
-#define RESERVED_OUT        0x04000000  /*;BIT26 */
-#define RESERVED_IN         0x05000000  /*;(BIT26+BIT24) */
-#define MSG_OUT_            0x06000000  /*;(BIT26+BIT25)   ; message in phase 
*/
-#define MSG_IN_             0x07000000  /*;(BIT26+BIT25+BIT24);message out 
phase */
-/*;----------------------------------------------------------*/
-#define DCMD_SELECT         0x40000000  /*;DCMD_IO+0 */
-#define DCMD_SELECT_ATN      0x41000000  /*;(DCMD_IO+BIT24) */
-#define DCMD_WAIT_DISC      0x48000000  /*;(DCMD_IO+BIT27) */
-#define DCMD_WAIT_RESEL      0x50000000  /*;(DCMD_IO+BIT28) */
-#define DCMD_SET_CARRY      0x58000400  /*;(DCMD_IO+BIT28+BIT27+BIT10) */
-#define DCMD_SET_ACK        0x58000040  /*;(DCMD_IO+BIT28+BIT27+BIT6) */
-#define DCMD_SET_ATN        0x58000008  /*;(DCMD_IO+BIT28+BIT27+BIT3) */
-#define DCMD_CLR_CARRY      0x60000400  /*;(DCMD_IO+BIT29+BIT10) */
-#define DCMD_CLR_ACK        0x60000040  /*;(DCMD_IO+BIT29+BIT6) */
-#define DCMD_CLR_ATN        0x60000008  /*;(DCMD_IO+BIT29+BIT3) */
-#define RELATIVE_ADDR       0x04000000  /*;BIT26 */
-#define IO_TABLE_INDIR      0x02000000  /*;BIT25 */
-/*;----------------------------------------------------------*/
-#define MOVE_FROM_SFBR      0x68000000  /*;(DCMD_RD_WRT+BIT29+BIT27) */
-#define MOVE_TO_SFBR        0x70000000  /*;(DCMD_RD_WRT+BIT29+BIT28) */
-#define RD_MODIFY_WRT       0x78000000  /*;(DCMD_RD_WRT+BIT29+BIT28+BIT27) */
-#define OP_MOVE_DATA        0
-#define OP_SHIFT_LEFT_C      0x01000000  /*;BIT24 */
-#define OP_OR               0x02000000  /*;BIT25 */
-#define OP_XOR              0x03000000  /*;(BIT25+BIT24) */
-#define OP_AND              0x04000000  /*;BIT26 */
-#define OP_SHIFT_RIGHT_C     0x05000000  /*;(BIT26+BIT24) */
-#define OP_ADD_DATA         0x06000000  /*;(BIT26+BIT25) */
-#define OP_ADD_DATA_C       0x07000000  /*;(BIT26+BIT25+BIT24) */
-#define USE_SFBR            0x00800000  /*;BIT23 */
-/*;----------------------------------------------------------*/
-#define DCMD_JUMP           0x80000000  /*;DCMD_XFER_CTRL+0 */
-#define DCMD_CALL           0x88000000  /*;(DCMD_XFER_CTRL+BIT27) */
-#define DCMD_RETURN         0x90000000  /*;(DCMD_XFER_CTRL+BIT28) */
-#define DCMD_INT            0x98000000  /*;(DCMD_XFER_CTRL+BIT28+BIT27) */
-#define RELATIVE_           0x00800000  /*;BIT23 */
-#define IF_CARRY            0x00200000  /*;BIT21 */
-#define INT_ON_FLY_         0x00100000  /*;BIT20 */
-#define IF_TRUE             0x00080000  /*;BIT19 */
-#define IF_NOT              0
-#define DATA_CMP            0x00040000  /*;BIT18 */
-#define PHASE_CMP           0x00020000  /*;BIT17 */
-#define WAIT_PHASE_VALID     0x00010000  /*;BIT16 */
-/*;----------------------------------------------------------*/
-#define DSA_RELATIVE        0x10000000  /*;BIT28 */
-#define FLUSH_PREFETCH      0x02000000  /*;BIT25 */
-#define DCMD_LOAD          0x0E1000000  /*;(DCMD_LOAD_STORE+BIT24) */
-#define DCMD_STORE         0x0E0000000  /*;DCMD_LOAD_STORE */
-/*
-;==========================================================
-; SCSI message EQUATES
-;==========================================================
-*/
-#define CMD_COMPLETE        0
-#define EXT_MSG             1
-#define SAVE_PTR            2
-#define RESTORE_PTR         3
-#define DISCONNECTMSG       4
-#define INITIATOR_ERR       5
-#define ABORTMSG            6
-#define MSG_REJECT          7
-#define NOPMSG              8
-#define MSG_PARITY          9
-#define LINK_CMD_CPL        0x0a
-#define LINK_CMD_FLAG       0x0b
-#define RESET_DEVICE        0x0c
-#define IDENTIFYMSG         0x80
-#define SIMPLE_TAG          0x20
-#define IGNORE_WIDE_RES      0x23
-/*
-;==========================================================
-; Operation assumption
-; 1. If phase mismatch during Xfer PAD ==> do nothing
-;    Else compute FIXUP needed
-; 2. After phase mismatch ==> Set to Xfer PAD
-; 3. At disconnection ==> Modify return address
-; 4. 1st restore ptr after reselection is ignored
-; 5. If Xfer PAD is done ==> Error
-;==========================================================
-*/
-/*     static  start_script
-       static  reselected
-       static  reselecttag
-       static  select0
-       static  select1
-       static  check_phase
-       static  status1_phase
-       static  command_phase
-       static  jump_table0
-       static  jump_tableB
-       static  din_phase
-       static  din_phaseB
-       static  din_pad_0
-       static  din_pad_addrB
-       static  dout_phase
-       static  dout_phaseB
-       static  dout_pad_0
-       static  dout_pad_addrB
-       static  jump_tablew
-       static  jump_tableW
-       static  din_phase1
-       static  din_phaseW
-       static  din_pad_1
-       static  din_pad_addrW
-       static  dout_phase1
-       static  dout_phaseW
-       static  dout_pad_1
-       static  dout_pad_addrW
-       static  mout_phase
-       static  status_phase
-       static  min_phase
-       static  set_atn
-       static  clr_atn
-       static  end_script
-       static  start_mov
-       static  SrcPhysAddr
-       static  DesPhysAddr
-*/
-ULONG  start_script[]={
-/*
-;==========================================================
-; Wait for reselection
-;==========================================================
-*/
-       DCMD_WAIT_RESEL
-       };
-ULONG  jmp_select0[]={
-       0       /* offset select0 */
-       };
-ULONG  reselected[]={
-       RD_MODIFY_WRT+OP_OR+0x200+0x340000, /* (2 shl 8) or (__scratcha shl 16) 
*/
-       0,
-
-       DCMD_INT+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+MSG_IN_,
-       __RESELECTED,
-
-       BLOCK_MOVE+MSG_IN_+1    /* ;move in ID byte */
-       };
-ULONG  ACB_msgin123_1[]={
-       0,      /* offset ACB.msgin123,*/
-
-       DCMD_INT+IF_TRUE,
-       __RESELECTED1
-       };
-ULONG  reselecttag[]={
-       DCMD_CLR_ACK,
-       0,
-
-       BLOCK_MOVE+MSG_IN_+2    /* ;move 2 msg bytes */
-       };
-ULONG  ACB_msgin123_2[]={
-       0,      /* offset ACB.msgin123,*/
-
-       DCMD_INT+IF_TRUE,
-       __RESELECTEDT
-       };
-/*
-;==========================================================
-; Select
-; Case 1 : Only identify message is to be sent
-; Case 2 : Synchronous negotiation is requested
-;==========================================================
-*/
-ULONG  select0[]={
-       DCMD_INT+IF_TRUE,
-       __SIGNAL
-       };
-ULONG  select1[]={                /* ; Select with ATN */
-
-       DCMD_SELECT_ATN+IO_TABLE_INDIR  /* +offset SRB.__select ;4200h or 0100H 
*/
-       };
-ULONG  jmp_reselected[]={
-       0,      /* offset reselected, */
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+MSG_OUT_
-       };
-ULONG  jmp_check_phase[]={
-       0,      /* offset check_phase, */
-
-       TABLE_INDIRECT+BLOCK_MOVE+MSG_OUT_
-       };
-ULONG  SRB_msgout0[]={
-       0       /* offset SRB.__msgout0 */
-       };
-ULONG  check_phase[]={
-       DCMD_RETURN+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,
-
-       DCMD_RETURN+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0
-       };
-ULONG  status1_phase[]={
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+STATUS_
-       };
-ULONG  jmp_status_phase[]={
-       0,      /* offset status_phase,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+COMMAND_
-       };
-ULONG  jmp_command_phase[]={
-       0,      /* offset command_phase, */
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+MSG_IN_
-       };
-ULONG  jmp_min_phase[]={
-       0,      /* offset min_phase,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+MSG_OUT_
-       };
-ULONG  jmp_mout_phase[]={
-       0,      /* offset mout_phase,*/
-
-       DCMD_INT+IF_TRUE,
-       __FATALERROR
-       };
-/*
-;==========================================================
-; Command phase
-;==========================================================
-*/
-ULONG  command_phase[]={
-       DCMD_CLR_ATN,
-       0,
-       TABLE_INDIRECT+BLOCK_MOVE+COMMAND_
-       };
-ULONG  SRB_command[]={
-       0,      /* offset SRB.__command,*/
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_check_phase1[]={
-       0       /* offset check_phase */
-       };
-/*
-;==========================================================
-; Data phase jump table for 8 bit operation
-;==========================================================
-*/
-ULONG  jmp_dio_phaseB[]={
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseB+  120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseB+   128,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0   /* offset dout_phaseB+  128 */
-       };
-ULONG  jump_table0[]={
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_
-       };
-ULONG  jmp_din_pad_0[]={
-       0,      /* offset din_pad_0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_
-       };
-ULONG  jmp_dout_pad_0[]={
-       0       /* offset dout_pad_0 */
-       };
-
-#define jump_tableB    jump_table0
-/*
-;==========================================================
-; Data in phase
-;==========================================================
-*/
-ULONG  din_phaseB[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment15,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment15,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment16,*/
-
-       RD_MODIFY_WRT+OP_OR+0x100+0x340000, /*;(1 shl 8) or (__scratcha shl 
16)*/
-       0,
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_IN_
-       };
-ULONG  jmp_status1_phase[]={
-       0       /* offset status1_phase */
-       };
-
-#define din_phase      din_phaseB
-
-ULONG  din_pad_0[]={
-       RD_MODIFY_WRT+OP_OR+0x340000+0x400,  /*;(4 shl 8) or (__scratcha shl 
16)*/
-       0
-       };
-ULONG  din_pad_addrB[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_
-       };
-ULONG  SRB_SegmentPad[]={
-       0,      /* offset SRB.SegmentPad,*/
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_din_pad_addrB[]={
-       0       /* offset din_pad_addrB */
-       };
-/*
-;==========================================================
-; Data out phase
-;==========================================================
-*/
-ULONG  dout_phaseB[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment15,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment15,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment16,*/
-
-       RD_MODIFY_WRT+OP_OR+0x100+0x340000, /*;(1 shl 8) or (__scratcha shl 
16)*/
-       0,
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_OUT_
-       };
-ULONG  jmp_status1_phase1[]={
-       0       /* offset status1_phase */
-       };
-
-#define dout_phase     dout_phaseB
-
-ULONG  dout_pad_0[]={
-       RD_MODIFY_WRT+OP_OR+0x340000+0x400, /*;(4 shl 8) or (__scratcha shl 
16)*/
-       0
-       };
-ULONG  dout_pad_addrB[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_
-       };
-ULONG  SRB_SegmentPad1[]={
-       0,      /* offset SRB.SegmentPad,*/
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_dout_pad_addrB[]={
-       0       /* offset dout_pad_addrB */
-       };
-/*
-;==========================================================
-; Data phase jump table for WIDE SCSI operation
-;==========================================================
-*/
-ULONG  jmp_dio_phaseW[]={
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+   0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+  0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+   8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+  8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+   0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+  0,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+   8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+  8,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 16,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 24,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 32,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 40,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 48,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 56,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 64,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 72,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 80,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 88,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 96,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 104,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 112,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0,  /* offset dout_phaseW+ 120,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
-       0,  /* offset din_phaseW+  128,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
-       0   /* offset dout_phaseW+ 128 */
-       };
-ULONG  jump_tablew[]={
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_
-       };
-ULONG  jmp_din_pad_1[]={
-       0,      /* offset din_pad_1,*/
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_
-       };
-ULONG  jmp_dout_pad_1[]={
-       0       /* offset dout_pad_1 */
-       };
-
-#define jump_tableW    jump_tablew
-/*
-;==========================================================
-; Data in phase
-;==========================================================
-*/
-ULONG  din_phaseW[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment15,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment15,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
-       0, /* offset SRB.Segment16,*/
-
-       RD_MODIFY_WRT+OP_OR+0x340000+0x100, /*;(1 shl 8) or (__scratcha shl 
16)*/
-       0,
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_IN_
-       };
-ULONG  jmp_status1_phase2[]={
-       0       /* offset status1_phase */
-       };
-
-#define din_phase1     din_phaseW
-
-ULONG  din_pad_1[]={
-       RD_MODIFY_WRT+OP_OR+0x340000+0x400, /*;(4 shl 8) or (__scratcha shl 
16)*/
-       0
-       };
-ULONG  din_pad_addrW[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_
-       };
-ULONG  SRB_SegmentPad2[]={
-       0,      /* offset SRB.SegmentPad,*/
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_din_pad_addrW[]={
-       0       /* offset din_pad_addrW */
-       };
-/*
-;==========================================================
-; Data out phase
-;==========================================================
-*/
-ULONG  dout_phaseW[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment15,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment0,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment1,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment2,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment3,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment4,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment5,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment6,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment7,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment8,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment9,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment10,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment11,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment12,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment13,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment14,*/
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment15,*/
-/*;    18000000h or DATA_OUT_ */
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
-       0, /* offset SRB.Segment16,*/
-
-       RD_MODIFY_WRT+OP_OR+0x340000+0x100, /*;(1 shl 8) or (__scratcha shl 
16)*/
-       0,
-
-       DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_OUT_
-       };
-ULONG  jmp_status1_phase3[]={
-       0       /* offset status1_phase */
-       };
-
-#define dout_phase1    dout_phaseW
-
-ULONG  dout_pad_1[]={
-       RD_MODIFY_WRT+OP_OR+0x340000+0x400, /*;(4 shl 8) or (__scratcha shl 
16)*/
-       0
-       };
-ULONG  dout_pad_addrW[]={
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_
-       };
-ULONG  SRB_SegmentPad3[]={
-       0,      /* offset SRB.SegmentPad,*/
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_dout_pad_addrW[]={
-       0       /* offset dout_pad_addrW */
-       };
-/*
-;==========================================================
-; message out phase
-;==========================================================
-*/
-ULONG  mout_phase[]={
-       DCMD_SET_ATN,
-       0,
-
-       DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+MSG_OUT_
-       };
-ULONG  SRB_msgout01[]={
-       0,      /* offset SRB.__msgout0,*/
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_check_phase2[]={
-       0       /* offset check_phase */
-       };
-/*
-;==========================================================
-; Status phase process
-;==========================================================
-*/
-ULONG  status_phase[]={
-       DCMD_BLOCK_MOVE+BLOCK_MOVE+STATUS_+1
-       };
-ULONG  ACB_status[]={
-       0       /* offset ACB.status */
-       };
-/*
-;==========================================================
-; message in phase
-;==========================================================
-*/
-ULONG  min_phase[]={
-       DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+1
-       };
-ULONG  ACB_msgin123_3[]={
-       0,      /* offset ACB.msgin123,*/
-
-       DCMD_JUMP+IF_NOT+DATA_CMP+CMD_COMPLETE
-       };
-ULONG  jmp_jump_msgok[]={
-       0       /* offset jump_msgok */
-       };
-/*
-;==========================================================
-; command complete message
-;==========================================================
-*/
-ULONG  msg__0[]={
-       RD_MODIFY_WRT+OP_AND+0x20000+0x7F00, /*;(7FH shl 8) or (__scntl2 shl 
16)*/
-       0,
-
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_WAIT_DISC,
-       0,
-
-       DCMD_INT+IF_TRUE,
-       __COMPLETE
-       };
-/*
-;==========================================================
-; Other message
-;==========================================================
-*/
-ULONG  jump_msgok[]={
-       DCMD_JUMP+IF_TRUE+DATA_CMP+SAVE_PTR
-       };
-ULONG  jmp_msg__a[]={
-       0,      /* offset msg__a,*/
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+RESTORE_PTR
-       };
-ULONG  jmp_msg__3[]={
-       0,      /* offset msg__3,*/
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+DISCONNECTMSG
-       };
-ULONG  jmp_msg__4[]={
-       0,      /* offset msg__4,*/
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+EXT_MSG
-       };
-ULONG  jmp_msg__1[]={
-       0,      /* offset msg__1,*/
-
-       DCMD_INT+IF_TRUE+DATA_CMP+MSG_REJECT,
-       __MSGREJECT,
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+LINK_CMD_CPL
-       };
-ULONG  jmp_msg__a1[]={
-       0,      /* offset msg__a,*/
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+LINK_CMD_FLAG
-       };
-ULONG  jmp_msg__a2[]={
-       0,      /* offset msg__a,*/
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+IGNORE_WIDE_RES
-       };
-ULONG  jmp_msg__23[]={
-       0,      /* offset msg__23,*/
-
-       DCMD_INT+IF_TRUE,
-       __MSGUNKNOWN
-       };
-/*
-;==========================================================
-; Extended message
-;==========================================================
-*/
-ULONG  msg__1[]={
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+1   /*  ;ext msg len */
-       };
-ULONG  ACB_msgin123_4[]={
-       0,      /* offset ACB.msgin123,*/
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+3
-       };
-ULONG  jmp_msg___3[]={
-       0,      /* offset msg___3,*/
-
-       DCMD_JUMP+IF_TRUE+DATA_CMP+2
-       };
-ULONG  jmp_msg___2[]={
-       0,      /* offset msg___2,*/
-
-       DCMD_INT+IF_TRUE,
-       __MSGEXTEND
-       };
-
-ULONG  msg___3[]={
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+3
-       };
-ULONG  ACB_msgin123_5[]={
-       0,      /* offset ACB.msgin123,*/
-
-       DCMD_INT+IF_TRUE,
-       __MSGSYNC
-       };
-
-ULONG  msg___2[]={
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+2
-       };
-ULONG  ACB_msgin123_6[]={
-       0,      /* offset ACB.msgin123,*/
-
-       DCMD_INT+IF_TRUE,
-       __MSGWIDE
-       };
-/*
-;############################################################
-; for synchronous negotiation
-; 1. Active  ==> INT3, restart at data__1_2
-; 2. Passive ==> INT3, prepare message out, restart at data__1_1
-; 3. Disable ==> INT3, prepare message out, restart at data__1_1
-;############################################################
-*/
-ULONG  set_atn[]={
-       DCMD_SET_ATN,
-       0
-       };
-ULONG  msg__a[]={
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_check_phase3[]={
-       0       /* offset check_phase */
-       };
-
-ULONG  msg__23[]={        /*    ; ignore wide residue */
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+1
-       };
-ULONG  ACB_msgin123_7[]={
-       0,      /* offset ACB.msgin123,*/
-
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_check_phase4[]={
-       0       /* offset check_phase */
-       };
-
-ULONG  msg__3[]={
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_check_phase5[]={
-       0       /* offset check_phase */
-       };
-
-ULONG  msg__4[]={         /*    ; disconnect */
-       RD_MODIFY_WRT+OP_AND+0x20000+0x7F00, /*;(7FH shl 8) or (__scntl2 shl 
16)*/
-       0,
-
-       DCMD_CLR_ACK,
-       0,
-
-       DCMD_WAIT_DISC,
-       0,
-
-       DCMD_INT+IF_TRUE,
-       __DISCONNECTED
-       };
-
-ULONG  clr_atn[]={
-       DCMD_CLR_ATN,
-       0,
-
-       DCMD_JUMP+IF_TRUE
-       };
-ULONG  jmp_check_phase6[]={
-       0       /* offset check_phase */
-       };
-/*
-;==========================================================
-; Used for script operation
-;==========================================================
-*/
-ULONG  start_mov[]={
-/*;      DCMD_MEM_MOVE+(OFFSET DGROUP:end_script - OFFSET DGROUP:start_script) 
  ;Memory move SCRIPTS instruction*/
-       DCMD_MEM_MOVE+0x1000      /*;Memory move SCRIPTS instruction ( 4K )*/
-       };
-ULONG  SrcPhysAddr[]={
-       0               /*; source */
-       };
-ULONG  DesPhysAddr[]={
-       0,              /*; destination */
-
-       DCMD_INT+IF_TRUE, /*; script interrupt, */
-       0,
-
-       DCMD_INT+IF_NOT,  /*; script interrupt */
-       0
-       };
-ULONG  end_script[]={0};
-/***********************************************************************/
-
diff --git a/linux/src/drivers/scsi/scsiio.c b/linux/src/drivers/scsi/scsiio.c
deleted file mode 100644
index cea68b8..0000000
--- a/linux/src/drivers/scsi/scsiio.c
+++ /dev/null
@@ -1,1537 +0,0 @@
-/***********************************************************************
- *     FILE NAME : SCSIIO.C                                           *
- *          BY   : C.L. Huang                                         *
- *     Description: Device Driver for Tekram DC-390W/U/F (T) PCI SCSI *
- *                  Bus Master Host Adapter                           *
- ***********************************************************************/
-
-
-static void
-PrepareSG( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    ULONG  retAddr,wlval;
-    USHORT wval,i;
-    PSGL   psgl;
-    PSGE   psge;
-
-
-    retAddr = pACB->jmp_table8;
-    if(pDCB->DCBscntl3 & EN_WIDE_SCSI)
-       retAddr += jmp_table16;
-    wval = (USHORT)(pSRB->SGcount);
-    wval <<= 4;        /* 16 bytes per entry, datain=8, dataout=8 */
-                       /* (4 bytes for count, 4 bytes for addr) */
-    retAddr -= (ULONG)wval;
-    pSRB->ReturnAddr = retAddr;    /* return address for SCRIPT */
-    if(wval)
-    {
-       wval >>= 1;
-       wlval = (ULONG) pSRB->SegmentPad;
-       wlval -= (ULONG)wval;
-       wval >>= 3;
-       psge = (PSGE) wlval;
-       psgl = pSRB->pSegmentList;
-       for(i=0; i<wval; i++)
-       {
-#ifndef VERSION_ELF_1_2_13
-           psge->SGXPtr = virt_to_phys( psgl->address );
-#else
-           psge->SGXPtr = (ULONG) psgl->address;
-#endif
-           psge->SGXLen = psgl->length;
-           psge++;
-           psgl++;
-       }
-    }
-}
-
-
-static void
-DC390W_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    USHORT ioport;
-    UCHAR  bval;
-
-    pSRB->TagNumber = 31;
-    ioport = pACB->IOPortBase;
-    bval = SIGNAL_PROC;
-    outb(bval,ioport+ISTAT);
-    pACB->pActiveDCB = pDCB;
-    pDCB->pActiveSRB = pSRB;
-    return;
-}
-
-
-#ifndef  VERSION_ELF_1_2_13
-static void
-DC390W_Interrupt( int irq, void *dev_id, struct pt_regs *regs)
-#else
-static void
-DC390W_Interrupt( int irq, struct pt_regs *regs)
-#endif
-{
-    PACB pACB;
-    PDCB pDCB;
-    ULONG  wlval;
-    USHORT ioport = 0;
-    USHORT wval, i;
-    void  (*stateV)( PACB );
-    UCHAR  istat = 0;
-    UCHAR  bval;
-
-    pACB = pACB_start;
-    if( pACB == NULL )
-       return;
-    for( i=0; i < adapterCnt; i++ )
-    {
-       if( pACB->IRQLevel == (UCHAR) irq )
-       {
-            ioport = pACB->IOPortBase;
-            istat = inb( ioport+ISTAT );
-            if( istat & (ABORT_OP+SCSI_INT_PENDING+DMA_INT_PENDING) )
-                break;
-            else
-               pACB = pACB->pNextACB;
-       }
-       else
-       {
-           pACB = pACB->pNextACB;
-       }
-    }
-
-    if( pACB == (PACB )-1 )
-    {
-       printk("DC390W_intr: Spurious interrupt detected!\n");
-       return;
-    }
-
-
-#ifdef DC390W_DEBUG1
-       printk("Istate=%2x,",istat);
-#endif
-    /* if Abort operation occurred, reset abort bit before reading DMA status
-       to prevent further aborted interrupt.  */
-
-    if(istat & ABORT_OP)
-    {
-       istat &= ~ABORT_OP;
-       outb(istat,ioport+ISTAT);
-    }
-
-    pDCB = pACB->pActiveDCB;
-    bval = inb(ioport+CTEST2);  /* Clear Signal Bit */
-
-    /* If Scsi Interrupt, then clear Interrupt Status by reading
-       Scsi interrupt status register 0. */
-
-    wlval = 0;
-    if(istat & SCSI_INT_PENDING)
-    {
-       wlval = (ULONG)inw( ioport+SIST0 );
-       wlval <<= 8;
-    }
-
-    /* If DMA Interrupt, then read the DMA status register to see what happen 
*/
-
-    if(istat & DMA_INT_PENDING)
-    {
-       bval = inb(ioport+DSTAT);
-       wlval |= (ULONG) bval;
-    }
-
-#ifdef DC390W_DEBUG1
-       printk("IDstate=%8x,",(UINT) wlval);
-#endif
-    if(wlval & ( (SEL_TIMEOUT << 16)+
-                ((SCSI_GERROR+UNEXPECT_DISC+SCSI_RESET) << 8)+
-                ILLEGAL_INSTRUC+ABORT_) )
-    {
-        ExceptionHandler( wlval, pACB, pDCB );
-    }
-    else if( wlval & SCRIPTS_INT )
-    {
-        wval = inw( ioport+DSPS );
-        stateV = (void *) IntVector[wval];
-        stateV( pACB );
-    }
-    else if( wlval & ( PARITY_ERROR << 8) )
-       ParityError( pACB, pDCB );
-    else if( wlval & ( PHASE_MISMATCH << 8) )
-       PhaseMismatch( pACB );
-    return;
-}
-
-
-static void
-ExceptionHandler(ULONG wlval, PACB pACB, PDCB pDCB)
-{
-    PSRB  pSRB;
-    UCHAR bval;
-    USHORT ioport;
-
-/* disconnect/scsi reset/illegal instruction */
-
-    ioport = pACB->IOPortBase;
-    if(wlval & ( (SCSI_RESET+SCSI_GERROR) << 8) )
-       DC390W_ScsiRstDetect( pACB );
-    else if(wlval & ABORT_)
-    {
-#ifdef DC390W_DEBUG0
-       printk("AboRst,");
-#endif
-       if( !InitialTime )
-           DC390W_ResetSCSIBus2( pACB );
-    }
-    else if(wlval & (SEL_TIMEOUT << 16) )
-    {
-       pACB->status = SCSI_STAT_SEL_TIMEOUT;
-#ifdef DC390W_DEBUG1
-       printk("Selto,");
-#endif
-       DC390W_CmdCompleted( pACB );
-    }
-    else if(wlval & (UNEXPECT_DISC << 8) )
-    {
-       bval = inb(ioport+STEST3);
-       bval |= CLR_SCSI_FIFO;
-       outb(bval,ioport+STEST3);
-       bval = CLR_DMA_FIFO;
-       outb(bval,ioport+CTEST3);
-       pSRB = pDCB->pActiveSRB;
-       if( pSRB->SRBState & DO_SYNC_NEGO )
-       {
-           pDCB->DevMode &= ~SYNC_NEGO_;
-           pACB->status = SCSI_STAT_CHECKCOND;
-           DC390W_CmdCompleted( pACB );
-       }
-       else if( pSRB->SRBState & DO_WIDE_NEGO )
-       {
-           pDCB->DevMode &= ~WIDE_NEGO_;
-           pACB->status = SCSI_STAT_CHECKCOND;
-           DC390W_CmdCompleted( pACB );
-       }
-       else
-       {
-           pACB->status = SCSI_STAT_UNEXP_BUS_F;
-           DC390W_CmdCompleted( pACB );
-       }
-#ifdef DC390W_DEBUG0
-       printk("Uxpbf,");
-#endif
-    }
-    else
-    {
-#ifdef DC390W_DEBUG0
-       printk("Except,");
-#endif
-       DC390W_ResetSCSIBus( pACB );
-    }
-}
-
-
-static void
-ParityError( PACB pACB, PDCB pDCB )
-{
-    ULONG   ioport;
-    UCHAR   bval,msg;
-    ULONG   wlval;
-    PSRB    pSRB;
-
-    ioport = pACB->IOPortBase;
-    bval = inb(ioport+SCRATCHA);
-    if(bval & RE_SELECTED_)
-    {
-#ifdef DC390W_DEBUG0
-       printk("ParityErr,");
-#endif
-       DC390W_ResetSCSIBus( pACB );
-       return;
-    }
-    else
-    {
-       pSRB = pDCB->pActiveSRB;
-       bval = inb(ioport+STEST3);
-       bval |= CLR_SCSI_FIFO;
-       outb(bval,ioport+STEST3);
-       bval = CLR_DMA_FIFO;
-       outb(bval,ioport+CTEST3);
-
-       bval = inb(ioport+DCMD);
-       bval &= 0x07;       /* get phase bits */
-       if(bval == 0x07)    /* message in phase */
-       {
-           msg = MSG_PARITY_ERROR;
-           wlval = pACB->jmp_clear_ack;
-       }
-       else
-       {
-           msg = MSG_INITIATOR_ERROR;
-           wlval = pACB->jmp_next;
-       }
-       pSRB->__msgout0[0] = 1;
-       pSRB->MsgOutBuf[0] = msg;
-       outl(wlval,(ioport+DSP));
-       return;
-    }
-}
-
-
-static void
-DC390W_Signal( PACB pACB )
-{
-    PDCB pDCB;
-    PSRB pSRB;
-    USHORT ioport;
-    ULONG wlval, flags;
-    UCHAR bval,msgcnt,tagnum;
-
-    save_flags(flags);
-    cli();
-    ioport = pACB->IOPortBase;
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pActiveSRB;
-#ifdef DC390W_DEBUG0
-    printk("Signal,Cmd=%2x", pSRB->CmdBlock[0]);
-#endif
-    wlval = pSRB->PhysSRB;
-    outl(wlval,(ioport+DSA));
-    wlval = pSRB->ReturnAddr;
-    outl(wlval,(ioport+TEMP));
-    msgcnt = 1;
-    bval = pDCB->IdentifyMsg;
-    pSRB->MsgOutBuf[0] = bval;
-    if( (pSRB->CmdBlock[0] != INQUIRY) &&
-       (pSRB->CmdBlock[0] != REQUEST_SENSE) )
-    {
-       if(pDCB->MaxCommand > 1)
-       {
-           wlval = 1;
-           tagnum = 0;
-           while( wlval & pDCB->TagMask )
-           {
-               wlval = wlval << 1;
-               tagnum++;
-           }
-           pDCB->TagMask |= wlval;
-           pSRB->TagNumber = tagnum;
-           pSRB->MsgOutBuf[1] = MSG_SIMPLE_QTAG;
-           pSRB->MsgOutBuf[2] = tagnum;
-           msgcnt = 3;
-       }
-    }
-    else
-    {
-       pSRB->MsgOutBuf[0] &= 0xBF;        /* Diable Disconnected */
-       if(pSRB->CmdBlock[0] == INQUIRY)
-       {
-           if(bval & 0x07)
-               goto type_6_3;
-       }
-       if(pDCB->DevMode & WIDE_NEGO_)
-       {
-           msgcnt = 5;
-           *((PULONG) &(pSRB->MsgOutBuf[1])) = 0x01030201;
-           pSRB->SRBState |= DO_WIDE_NEGO;
-       }
-       else if(pDCB->DevMode & SYNC_NEGO_)
-       {
-           msgcnt = 6;
-           *((PULONG) &(pSRB->MsgOutBuf[1])) = 0x00010301;
-           pSRB->MsgOutBuf[4] = pDCB->NegoPeriod;
-           pSRB->MsgOutBuf[5] = SYNC_NEGO_OFFSET;
-           pSRB->SRBState |= DO_SYNC_NEGO;
-       }
-    }
-type_6_3:
-    pSRB->__msgout0[0] = (ULONG) msgcnt;
-    wlval = 0;
-    outl(wlval,(ioport+SCRATCHA));
-    bval = pDCB->DCBscntl0;
-    outb(bval,ioport+SCNTL0);
-    pSRB->__select = *((PULONG) &(pDCB->DCBselect));
-#ifdef DC390W_DEBUG0
-    printk("__sel=%8x,", (UINT)(pSRB->__select));
-#endif
-    wlval = pACB->jmp_select;
-    outl(wlval,(ioport+DSP));
-    restore_flags(flags);
-    return;
-}
-
-
-static void
-DC390W_MessageWide( PACB pACB )
-{
-    PDCB pDCB;
-    PSRB pSRB;
-    PUCHAR msgoutPtr;
-    USHORT ioport;
-    ULONG wlval;
-    UCHAR bval,msgcnt;
-
-
-#ifdef DC390W_DEBUG0
-    printk("MsgWide,");
-#endif
-    ioport = pACB->IOPortBase;
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pActiveSRB;
-    msgcnt = 0;
-    pDCB->DCBscntl3 &= ~EN_WIDE_SCSI;
-    msgoutPtr = pSRB->MsgOutBuf;
-    if( pSRB->SRBState & DO_WIDE_NEGO )
-    {
-       pSRB->SRBState &= ~DO_WIDE_NEGO;
-       if( pACB->msgin123[0] == 3 )
-       {
-           bval = pACB->msgin123[1];
-           if(bval == 1)
-           {
-               pDCB->DCBscntl3 |= EN_WIDE_SCSI;
-               goto x5;
-           }
-           if(bval < 1)
-               goto x5;
-       }
-    }
-
-/*type_11_1:*/
-    msgcnt = 1;
-    *msgoutPtr = MSG_REJECT_;
-    msgoutPtr++;
-x5:
-    bval = pDCB->DCBscntl3;
-    outb(bval,ioport+SCNTL3);
-    AdjustTemp(pACB,pDCB,pSRB);
-    SetXferRate(pACB,pDCB);
-    if( pDCB->DevMode & SYNC_NEGO_ )
-    {
-       *((PULONG)msgoutPtr) = 0x00010301;
-       *(msgoutPtr + 3) = pDCB->NegoPeriod;
-       *(msgoutPtr + 4) = SYNC_NEGO_OFFSET;
-       msgcnt += 5;
-       pSRB->SRBState |= DO_SYNC_NEGO;
-    }
-
-    pSRB->__msgout0[0] = (ULONG) msgcnt;
-    wlval = pACB->jmp_clear_ack;
-    if(msgcnt)
-       wlval = pACB->jmp_set_atn;
-    outl(wlval,(ioport+DSP));
-    return;
-}
-
-
-static void
-DC390W_MessageSync( PACB pACB )
-{
-    PDCB pDCB;
-    PSRB pSRB;
-    USHORT ioport;
-    ULONG wlval;
-    USHORT wval,wval1;
-    UCHAR bval,bval1;
-
-#ifdef DC390W_DEBUG0
-    printk("MsgSync,");
-#endif
-    ioport = pACB->IOPortBase;
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pActiveSRB;
-    if( !(pSRB->SRBState & DO_SYNC_NEGO) )
-        goto MessageExtnd;
-    pSRB->SRBState &= ~DO_SYNC_NEGO;
-    if(pACB->msgin123[0] != 1)
-    {
-MessageExtnd:
-       pSRB->__msgout0[0] = 1;
-       pSRB->MsgOutBuf[0] = MSG_REJECT_;
-       wlval = pACB->jmp_set_atn;
-       outl(wlval,(ioport+DSP));
-       return;
-    }
-    bval = pACB->msgin123[2];  /* offset */
-asyncx:
-    pDCB->DCBsxfer = bval;
-    if(bval == 0)       /* if offset or period == 0, async */
-    {
-       if( pACB->AdaptType == DC390W )
-           bval = SYNC_CLK_F2+ASYNC_CLK_F2;
-       else
-           bval = SYNC_CLK_F4+ASYNC_CLK_F4;
-       pDCB->DCBscntl3 = bval;
-    }
-    else
-    {
-       bval = pACB->msgin123[1];
-       if(bval == 0)
-           goto asyncx;
-       pDCB->SyncPeriod = bval;
-       wval = (USHORT)bval;
-       wval <<= 3;
-       bval = pDCB->DCBscntl3;
-       bval &= 0x0f;
-       if(wval < 200)          /* < 100 ns ==> Fast-20 */
-       {
-           bval |= 0x90;       /* Fast-20 and div 1 */
-           bval1 = 25;         /* 12.5 ns */
-       }
-       else if(wval < 400)
-       {
-           bval |= 0x30;       /* 1 cycle = 25ns */
-           bval1 = 50;
-       }
-       else                    /* Non Fast */
-       {
-           bval |= 0x50;       /* 1 cycle = 50ns */
-           bval1 = 100;
-       }
-       if( pACB->AdaptType == DC390W )
-           bval -= 0x20;  /* turn down to 40Mhz scsi clock */
-                          /* assume 390W will not receive fast-20 */
-       wval1 = wval;
-       wval /= bval1;
-       if(wval * bval1 < wval1)
-           wval++;
-                           /* XFERP     TP2 TP1 TP0  */
-       wval -= 4;          /*   4        0   0   0   */
-                           /*   5        0   0   1   */
-       wval <<= 5;
-       pDCB->DCBsxfer |= (UCHAR)wval;
-       pDCB->DCBscntl3 = bval;
-    }
-/*sync_2:*/
-    SetXferRate( pACB,pDCB );
-    wlval = pACB->jmp_clear_ack;
-/*sync_3:*/
-    bval = pDCB->DCBscntl3;
-    outb(bval,ioport+SCNTL3);
-    bval = pDCB->DCBsxfer;
-    outb(bval,ioport+SXFER);
-    outl(wlval,(ioport+DSP));
-    return;
-}
-
-
-static void
-DC390W_MsgReject( PACB pACB )
-{
-    PDCB pDCB;
-    PSRB pSRB;
-    ULONG wlval;
-    USHORT ioport;
-    UCHAR bval;
-
-#ifdef DC390W_DEBUG0
-    printk("Msgrjt,");
-#endif
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pActiveSRB;
-    wlval = pACB->jmp_clear_ack;
-    if(pSRB->SRBState & DO_WIDE_NEGO)
-    {
-       pSRB->SRBState &= ~DO_WIDE_NEGO;
-       pDCB->DCBscntl3 &= ~EN_WIDE_SCSI;
-       AdjustTemp( pACB, pDCB, pSRB );
-       SetXferRate( pACB, pDCB );
-       if( pDCB->DevMode & SYNC_NEGO_ )
-       {
-           *((PULONG) &(pSRB->MsgOutBuf[0])) = 0x00010301;
-           pSRB->MsgOutBuf[3] = pDCB->NegoPeriod;
-           pSRB->MsgOutBuf[4] = SYNC_NEGO_OFFSET;
-           pSRB->__msgout0[0] = 5;
-           pSRB->SRBState |= DO_SYNC_NEGO;
-           wlval = pACB->jmp_set_atn;
-       }
-    }
-    else
-    {
-       if(pSRB->SRBState & DO_SYNC_NEGO)
-       {
-           pSRB->SRBState &= ~DO_SYNC_NEGO;
-           pDCB->DCBsxfer = 0; /* reject sync msg, set aync */
-           if( pACB->AdaptType == DC390W )
-               bval = SYNC_CLK_F2+ASYNC_CLK_F2;
-           else
-               bval = SYNC_CLK_F4+ASYNC_CLK_F4;
-           pDCB->DCBscntl3 = bval;
-           SetXferRate(pACB,pDCB);
-           wlval = pACB->jmp_clear_ack;
-       }
-    }
-    ioport = pACB->IOPortBase;
-    bval = pDCB->DCBscntl3;
-    outb(bval,ioport+SCNTL3);
-    bval = pDCB->DCBsxfer;
-    outb(bval,ioport+SXFER);
-    outl(wlval,(ioport+DSP));
-    return;
-}
-
-
-static void
-AdjustTemp( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    USHORT ioport;
-    ULONG wlval;
-
-    wlval = pSRB->ReturnAddr;
-    if(wlval <= pACB->jmp_table8)
-    {
-       if(pDCB->DCBscntl3 & EN_WIDE_SCSI)
-           wlval +=  jmp_table16;
-    }
-    else
-    {
-       if((pDCB->DCBscntl3 & EN_WIDE_SCSI) == 0)
-           wlval -= jmp_table16;
-    }
-    pSRB->ReturnAddr = wlval;
-    ioport = pACB->IOPortBase;
-    outl(wlval,(ioport+TEMP));
-    return;
-}
-
-
-static void
-SetXferRate( PACB pACB, PDCB pDCB )
-{
-    UCHAR  bval;
-    USHORT cnt, i;
-    PDCB   ptr;
-
-    if( !(pDCB->IdentifyMsg & 0x07) )
-    {
-       if( pACB->scan_devices )
-       {
-           CurrDCBscntl3 = pDCB->DCBscntl3;
-       }
-       else
-       {
-           ptr = pACB->pLinkDCB;
-           cnt = pACB->DeviceCnt;
-           bval = pDCB->UnitSCSIID;
-           for(i=0; i<cnt; i++)
-           {
-               if( ptr->UnitSCSIID == bval )
-               {
-                   ptr->DCBsxfer = pDCB->DCBsxfer;
-                   ptr->DCBscntl3 = pDCB->DCBscntl3;
-               }
-               ptr = ptr->pNextDCB;
-           }
-       }
-    }
-    return;
-}
-
-
-static void
-DC390W_UnknownMsg( PACB pACB )
-{
-    PSRB pSRB;
-    ULONG wlval;
-    USHORT ioport;
-
-    pSRB = pACB->pActiveDCB->pActiveSRB;
-    pSRB->__msgout0[0] = 1;
-    pSRB->MsgOutBuf[0] = MSG_REJECT_;
-    wlval = pACB->jmp_set_atn;
-    ioport = pACB->IOPortBase;
-    outl(wlval,(ioport+DSP));
-    return;
-}
-
-
-static void
-DC390W_MessageExtnd( PACB pACB )
-{
-    DC390W_UnknownMsg( pACB );
-}
-
-
-static void
-DC390W_Disconnected( PACB pACB )
-{
-    PDCB pDCB;
-    PSRB pSRB;
-    ULONG  wlval, flags;
-    USHORT ioport;
-    UCHAR bval;
-
-#ifdef DC390W_DEBUG0
-    printk("Discnet,");
-#endif
-    save_flags(flags);
-    cli();
-    pDCB = pACB->pActiveDCB;
-    if (! pDCB)
-     {
-#ifdef DC390W_DEBUG0
-       printk("ACB:%08lx->ActiveDCB:%08lx !,", (ULONG)pACB, (ULONG)pDCB);
-#endif
-       restore_flags(flags); return;
-     }
-
-    pSRB = pDCB->pActiveSRB;
-
-    ioport = pACB->IOPortBase;
-    bval = inb(ioport+SCRATCHA);
-    pSRB->ScratchABuf = bval;
-    pSRB->SRBState |= SRB_DISCONNECT;  /* 1.02 */
-    wlval = pACB->jmp_reselect;
-    outl(wlval,(ioport+DSP));
-    pACB->pActiveDCB = 0;
-    DoWaitingSRB( pACB );
-    restore_flags(flags);
-    return;
-}
-
-
-static void
-DC390W_Reselected( PACB pACB )
-{
-#ifdef DC390W_DEBUG0
-    printk("Rsel,");
-#endif
-    pACB->msgin123[0] = 0x80;   /* set identify byte 80h */
-    DC390W_Reselected1(pACB);
-    return;
-}
-
-
-static void
-DC390W_Reselected1( PACB pACB )
-{
-    PDCB   pDCB;
-    PSRB   pSRB;
-    USHORT ioport, wval;
-    ULONG  wlval, flags;
-    UCHAR  bval;
-
-
-#ifdef DC390W_DEBUG0
-    printk("Rsel1,");
-#endif
-    ioport = pACB->IOPortBase;
-    pDCB = pACB->pActiveDCB;
-    if(pDCB)
-    {
-       pSRB = pDCB->pActiveSRB;
-       RewaitSRB( pDCB, pSRB );
-    }
-
-    wval = (USHORT) (pACB->msgin123[0]);
-    wval = (wval & 7) << 8;            /* get LUN */
-    wval |= (USHORT) (inb(ioport+SSID) & 0x0f); /* get ID */
-    pDCB = pACB->pLinkDCB;
-    while( *((PUSHORT) &pDCB->UnitSCSIID) != wval )
-       pDCB = pDCB->pNextDCB;
-    pACB->pActiveDCB = pDCB;
-    bval = pDCB->DCBscntl3;
-    outb(bval,ioport+SCNTL3);
-    bval = pDCB->DCBsxfer;
-    outb(bval,ioport+SXFER);
-    bval = pDCB->DCBscntl0;
-    outb(bval,ioport+SCNTL0);
-    if(pDCB->MaxCommand > 1)
-    {
-       wlval = pACB->jmp_reselecttag;
-       outl(wlval,(ioport+DSP));
-    }
-    else
-    {
-       pSRB = pDCB->pActiveSRB;
-       if( !pSRB || !(pSRB->SRBState & SRB_DISCONNECT) )
-       {
-           save_flags(flags);
-           cli();
-           pSRB = pACB->pFreeSRB;
-           pACB->pFreeSRB = pSRB->pNextSRB;
-           restore_flags(flags);
-           pSRB->SRBState = SRB_UNEXPECT_RESEL;
-           pDCB->pActiveSRB = pSRB;
-           pSRB->MsgOutBuf[0] = MSG_ABORT;
-           pSRB->__msgout0[0] = 1;
-       }
-       pSRB->SRBState &= ~SRB_DISCONNECT;
-       wlval = pSRB->PhysSRB;
-       outl(wlval,(ioport+DSA));
-       wlval = pSRB->ReturnAddr;
-       outl(wlval,(ioport+TEMP));
-       bval = pSRB->ScratchABuf;
-       outb(bval,ioport+SCRATCHA);
-       if( pSRB->SRBState & SRB_UNEXPECT_RESEL )
-           wlval = pACB->jmp_set_atn;
-       else
-           wlval = pACB->jmp_clear_ack;
-       outl(wlval,(ioport+DSP));
-    }
-    return;
-}
-
-
-static void
-DC390W_ReselectedT( PACB pACB )
-{
-    PDCB pDCB;
-    PSRB pSRB, psrb1;
-    USHORT ioport;
-    ULONG wlval, flags;
-    UCHAR bval;
-
-#ifdef DC390W_DEBUG0
-    printk("RselT,");
-#endif
-    ioport = pACB->IOPortBase;
-    bval = pACB->msgin123[1];
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pGoingSRB;
-    psrb1 = pDCB->pGoingLast;
-    if( !pSRB )
-       goto  UXP_RSL;
-    for(;;)
-    {
-       if(pSRB->TagNumber != bval)
-       {
-           if( pSRB != psrb1 )
-               pSRB = pSRB->pNextSRB;
-           else
-               goto  UXP_RSL;
-       }
-       else
-           break;
-    }
-    if( !(pSRB->SRBState & SRB_DISCONNECT) )
-    {
-UXP_RSL:
-           save_flags(flags);
-           cli();
-           pSRB = pACB->pFreeSRB;
-           pACB->pFreeSRB = pSRB->pNextSRB;
-           restore_flags(flags);
-           pSRB->SRBState = SRB_UNEXPECT_RESEL;
-           pDCB->pActiveSRB = pSRB;
-           pSRB->MsgOutBuf[0] = MSG_ABORT_TAG;
-           pSRB->__msgout0[0] = 1;
-    }
-    else
-    {
-       pSRB->SRBState &= ~SRB_DISCONNECT;
-       pDCB->pActiveSRB = pSRB;
-    }
-    wlval = pSRB->PhysSRB;
-    outl(wlval,(ioport+DSA));
-    wlval = pSRB->ReturnAddr;
-    outl(wlval,(ioport+TEMP));
-    bval = pSRB->ScratchABuf;
-    outb(bval,ioport+SCRATCHA);
-    if( pSRB->SRBState & SRB_UNEXPECT_RESEL )
-       wlval = pACB->jmp_set_atn;
-    else
-       wlval = pACB->jmp_clear_ack;
-    outl(wlval,(ioport+DSP));
-    return;
-}
-
-
-static void
-DC390W_RestorePtr( PACB pACB )
-{
-   PSRB pSRB;
-   USHORT ioport;
-   ULONG wlval;
-
-   pSRB = pACB->pActiveDCB->pActiveSRB;
-   wlval = pSRB->ReturnAddr;
-   ioport = pACB->IOPortBase;
-   outl(wlval,(ioport+TEMP));
-   wlval = inl(ioport+DSP);
-   outl(wlval,(ioport+DSP));
-   return;
-}
-
-
-static void
-PhaseMismatch( PACB pACB )
-{
-    USHORT  ioport;
-    ULONG   wlval,swlval;
-    USHORT  wval;
-    UCHAR   bval,phase;
-    PDCB    pDCB;
-
-#ifdef DC390W_DEBUG0
-    printk("Mismatch,");
-#endif
-    ioport = pACB->IOPortBase;
-    bval = inb(ioport+SCRATCHA);
-    if(bval & OVER_RUN_)       /* xfer PAD */
-    {
-       bval = inb(ioport+STEST3);
-       bval |= CLR_SCSI_FIFO;
-       outb(bval,ioport+STEST3);
-       bval = CLR_DMA_FIFO;
-       outb(bval,ioport+CTEST3);
-       wlval = pACB->jmp_next;          /* check phase */
-       outl(wlval,(ioport+DSP));
-       return;
-    }
-    pDCB = pACB->pActiveDCB;
-    wlval = inl(ioport+DBC);
-    phase = (UCHAR)((wlval & 0x07000000) >> 24);
-    wlval &= 0xffffff; /* bytes not xferred */
-    if( phase == SCSI_DATA_IN )
-    {
-       swlval = pACB->jmp_din8;
-       if( pDCB->DCBscntl3 & EN_WIDE_SCSI )
-            swlval += jmp_din16;
-       DataIOcommon(pACB,swlval,wlval);
-    }
-    else if( phase == SCSI_DATA_OUT )
-    {
-       wval = (USHORT)inb(ioport+CTEST5);
-       wval <<= 8;
-       bval = inb(ioport+DFIFO);
-       wval |= (USHORT) bval;
-       wval -= ((USHORT)(wlval & 0xffff));
-       wval &= 0x3ff;
-       wlval += (ULONG)wval;  /* # of bytes remains in FIFO */
-       bval = inb(ioport+SSTAT0);
-       if(bval & SODR_LSB_FULL)
-          wlval++;            /* data left in Scsi Output Data Buffer */
-       if(bval & SODL_LSB_FULL)
-          wlval++;            /* data left in Scsi Output Data Latch */
-       swlval = pACB->jmp_dout8;
-       if(pDCB->DCBscntl3 & EN_WIDE_SCSI)
-       {
-          swlval += jmp_dout16;
-          bval = inb(ioport+SSTAT2);
-          if(bval & SODR_MSB_FULL)
-              wlval++;
-          if(bval & SODL_MSB_FULL)
-              wlval++;
-       }
-       bval = inb(ioport+STEST3);
-       bval |= CLR_SCSI_FIFO;
-       outb(bval,ioport+STEST3);
-       bval = CLR_DMA_FIFO;
-       outb(bval,ioport+CTEST3);
-       DataIOcommon(pACB,swlval,wlval);
-    }
-    else
-    {
-       bval = inb(ioport+STEST3);
-       bval |= CLR_SCSI_FIFO;
-       outb(bval,ioport+STEST3);
-       bval = CLR_DMA_FIFO;
-       outb(bval,ioport+CTEST3);
-       if(phase == SCSI_MSG_OUT)
-           wlval = pACB->jmp_clear_atn;
-       else
-           wlval = pACB->jmp_next;     /* check phase */
-       outl(wlval,(ioport+DSP));
-    }
-    return;
-}
-
-
-static void
-DataIOcommon( PACB pACB, ULONG Swlval, ULONG  Cwlval )
-{
-    /* Swlval - script address */
-    /* Cwlval - bytes not xferred */
-    PDCB pDCB;
-    PSRB pSRB;
-    PSGE Segptr;
-    USHORT ioport;
-    ULONG  wlval,swlval,dataXferCnt;
-    UCHAR  bval,bvald;
-
-    ioport = pACB->IOPortBase;
-    wlval = inl((ioport+DSP));
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pActiveSRB;
-    wlval -= Swlval;
-    bval = inb(ioport+SBCL);
-    bval &= 0x07;
-    if(bval == SCSI_MSG_IN)
-    {
-       bval = pDCB->DCBscntl3;
-       bval &= ~EN_WIDE_SCSI;
-       outb(bval,ioport+SCNTL3);
-       bval = inb(ioport+SBDL);
-       bvald = pDCB->DCBscntl3;    /* enable WIDE SCSI */
-       outb(bvald,ioport+SCNTL3);
-       if(bval == MSG_DISCONNECT || bval == MSG_SAVE_PTR)
-       {
-           Segptr = (PSGE)((ULONG) &(pSRB->Segment0[0][0]) + wlval);
-           dataXferCnt = Segptr->SGXLen - Cwlval;
-           Segptr->SGXLen = Cwlval;            /* modified count */
-           Segptr->SGXPtr += dataXferCnt;      /* modified address */
-           swlval = pACB->jmp_table8;
-           if(pDCB->DCBscntl3 & EN_WIDE_SCSI)
-               swlval += jmp_table16;
-           wlval <<= 1;
-           swlval += wlval;
-           swlval = swlval - ((MAX_SG_LIST_BUF+1) * 16);
-           pSRB->ReturnAddr = swlval;
-       }
-    }
-    else if( Cwlval )  /* Remaining not xferred -- UNDER_RUN */
-    {
-       Segptr = (PSGE)((ULONG) &(pSRB->Segment0[0][0]) + wlval);
-       dataXferCnt = Segptr->SGXLen - Cwlval;
-       Segptr->SGXLen = Cwlval;            /* modified count */
-       Segptr->SGXPtr += dataXferCnt;      /* modified address */
-       swlval = pACB->jmp_table8;
-       if(pDCB->DCBscntl3 & EN_WIDE_SCSI)
-           swlval += jmp_table16;
-       wlval <<= 1;
-       swlval += wlval;
-       swlval = swlval - ((MAX_SG_LIST_BUF+1) * 16);
-       pSRB->RemainSegPtr = swlval;
-    }
-/* pm__1: */
-    wlval = pSRB->ReturnAddr;
-    outl(wlval,(ioport+TEMP));
-    wlval = pACB->jmp_next;
-    outl(wlval,(ioport+DSP));
-    return;
-}
-
-
-static void
-DC390W_CmdCompleted( PACB pACB )
-{
-    PDCB pDCB;
-    PSRB pSRB;
-    USHORT ioport;
-    ULONG  wlval, flags;
-    UCHAR  bval;
-
-#ifdef DC390W_DEBUG0
-    printk("Cmplete,");
-#endif
-    save_flags(flags);
-    cli();
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pActiveSRB;
-    pDCB->pActiveSRB = NULL;
-    ioport = pACB->IOPortBase;
-
-    bval  = inb(ioport+SCRATCHA);
-    pSRB->ScratchABuf = bval;          /* save status */
-    bval = pSRB->TagNumber;
-    if(pDCB->MaxCommand > 1)
-       pDCB->TagMask &= (~(1 << bval));   /* free tag mask */
-    pACB->pActiveDCB = NULL;           /* no active device */
-    wlval = pACB->jmp_reselect;        /* enable reselection */
-    outl(wlval,(ioport+DSP));
-    SRBdone( pACB, pDCB, pSRB);
-    restore_flags(flags);
-    return;
-}
-
-
-static void
-SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    PSRB   psrb;
-    UCHAR  bval, bval1, i, j, status;
-    PSCSICMD pcmd;
-    PSCSI_INQDATA  ptr;
-    USHORT  disable_tag;
-    ULONG  flags;
-    PSGE   ptr1;
-    PSGL   ptr2;
-    ULONG  wlval,swlval;
-
-    pcmd = pSRB->pcmd;
-    status = pACB->status;
-    if(pSRB->SRBFlag & AUTO_REQSENSE)
-    {
-       pSRB->SRBFlag &= ~AUTO_REQSENSE;
-       pSRB->AdaptStatus = 0;
-       pSRB->TargetStatus = SCSI_STAT_CHECKCOND;
-       if(status == SCSI_STAT_CHECKCOND)
-       {
-           pcmd->result = DID_BAD_TARGET << 16;
-           goto ckc_e;
-       }
-       if(pSRB->RetryCnt == 0)
-       {
-           *((PULONG) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0][0];
-           pSRB->XferredLen = pSRB->Segment0[2][1];
-           if( (pSRB->XferredLen) &&
-               (pSRB->XferredLen >= pcmd->underflow) )
-           {
-               pcmd->result |= (DID_OK << 16);
-           }
-           else
-               pcmd->result = (DRIVER_SENSE << 24) | (DRIVER_OK << 16) |
-                               SCSI_STAT_CHECKCOND;
-           goto ckc_e;
-       }
-       else
-       {
-           pSRB->RetryCnt--;
-           pSRB->TargetStatus = 0;
-           *((PULONG) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0][0];
-           *((PULONG) &(pSRB->CmdBlock[4])) = pSRB->Segment0[0][1];
-           *((PULONG) &(pSRB->CmdBlock[8])) = pSRB->Segment0[1][0];
-           pSRB->__command[0]               = pSRB->Segment0[1][1] & 0xff;
-           pSRB->SGcount                    = (UCHAR) (pSRB->Segment0[1][1] >> 
8);
-           *((PULONG) &(pSRB->pSegmentList))= pSRB->Segment0[2][0];
-           if( pSRB->CmdBlock[0] == TEST_UNIT_READY )
-           {
-               pcmd->result = (DRIVER_SENSE << 24) | (DRIVER_OK << 16) |
-                               SCSI_STAT_CHECKCOND;
-               goto ckc_e;
-           }
-           pcmd->result |= (DRIVER_SENSE << 24);
-           PrepareSG(pACB,pDCB,pSRB);
-           pSRB->XferredLen = 0;
-           DC390W_StartSCSI( pACB, pDCB, pSRB );
-           return;
-       }
-    }
-    if( status )
-    {
-       if( status == SCSI_STAT_CHECKCOND)
-       {
-           if( !(pSRB->ScratchABuf & SRB_OK) && (pSRB->SGcount) && 
(pSRB->RemainSegPtr) )
-           {
-               wlval = pSRB->RemainSegPtr;
-               swlval = pACB->jmp_table8;
-               if(pDCB->DCBscntl3 & EN_WIDE_SCSI)
-                   swlval += jmp_table16;
-               swlval -= wlval;
-               swlval >>= 4;
-               bval = (UCHAR) swlval;
-               wlval = 0;
-               ptr1 = (PSGE) &pSRB->Segment0[MAX_SG_LIST_BUF+1][0];
-               for( i=0; i< bval; i++)
-               {
-                   wlval += ptr1->SGXLen;
-                   ptr1--;
-               }
-
-               bval = pSRB->SGcount;
-               swlval = 0;
-               ptr2 = pSRB->pSegmentList;
-               for( i=0; i< bval; i++)
-               {
-                   swlval += ptr2->length;
-                   ptr2++;
-               }
-               pSRB->XferredLen = swlval - wlval;
-               pSRB->RemainSegPtr = 0;
-#ifdef DC390W_DEBUG0
-               printk("XferredLen=%8x,NotXferLen=%8x,",(UINT) 
pSRB->XferredLen,(UINT) wlval);
-#endif
-           }
-           RequestSense( pACB, pDCB, pSRB );
-           return;
-       }
-       else if( status == SCSI_STAT_QUEUEFULL )
-       {
-           bval = (UCHAR) pDCB->GoingSRBCnt;
-           bval--;
-           pDCB->MaxCommand = bval;
-           RewaitSRB( pDCB, pSRB );
-           pSRB->AdaptStatus = 0;
-           pSRB->TargetStatus = 0;
-           return;
-       }
-       else if(status == SCSI_STAT_SEL_TIMEOUT)
-       {
-           pSRB->AdaptStatus = H_SEL_TIMEOUT;
-           pSRB->TargetStatus = 0;
-           pcmd->result = DID_BAD_TARGET << 16;
-       }
-       else if(status == SCSI_STAT_UNEXP_BUS_F)
-       {
-           pSRB->AdaptStatus = H_UNEXP_BUS_FREE;
-           pSRB->TargetStatus = 0;
-           pcmd->result |= DID_NO_CONNECT << 16;
-       }
-       else if(status == SCSI_STAT_BUS_RST_DETECT )
-       {
-           pSRB->AdaptStatus = H_ABORT;
-           pSRB->TargetStatus = 0;
-           pcmd->result = DID_RESET << 16;
-       }
-       else
-       {
-           pSRB->AdaptStatus = 0;
-           pSRB->TargetStatus = status;
-           if( pSRB->RetryCnt )
-           {
-               pSRB->RetryCnt--;
-               pSRB->TargetStatus = 0;
-               PrepareSG(pACB,pDCB,pSRB);
-               pSRB->XferredLen = 0;
-               DC390W_StartSCSI( pACB, pDCB, pSRB );
-               return;
-           }
-           else
-           {
-               pcmd->result |= (DID_ERROR << 16) | (ULONG) (pACB->msgin123[0] 
<< 8) |
-                              (ULONG) status;
-           }
-       }
-    }
-    else
-    {
-       status = pSRB->ScratchABuf;
-       if(status & OVER_RUN_)
-       {
-           pSRB->AdaptStatus = H_OVER_UNDER_RUN;
-           pSRB->TargetStatus = 0;
-           pcmd->result |= (DID_OK << 16) | (pACB->msgin123[0] << 8);
-       }
-       else                   /* No error */
-       {
-           pSRB->AdaptStatus = 0;
-           pSRB->TargetStatus = 0;
-           pcmd->result |= (DID_OK << 16);
-       }
-    }
-ckc_e:
-
-    if( pACB->scan_devices )
-    {
-       if( pSRB->CmdBlock[0] == TEST_UNIT_READY )
-       {
-           if(pcmd->result != (DID_OK << 16))
-           {
-               if( pcmd->result & SCSI_STAT_CHECKCOND )
-               {
-                   goto RTN_OK;
-               }
-               else
-               {
-                   pACB->DCBmap[pcmd->target] &= ~(1 << pcmd->lun);
-                   pPrevDCB->pNextDCB = pACB->pLinkDCB;
-                   if( (pcmd->target == pACB->max_id) &&
-                      ((pcmd->lun == 0) || (pcmd->lun == pACB->max_lun)) )
-                   {
-                       pACB->scan_devices = 0;
-                   }
-               }
-           }
-           else
-           {
-RTN_OK:
-               pPrevDCB->pNextDCB = pDCB;
-               pDCB->pNextDCB = pACB->pLinkDCB;
-               if( (pcmd->target == pACB->max_id) && (pcmd->lun == 
pACB->max_lun) )
-                   pACB->scan_devices = END_SCAN;
-           }
-       }
-       else if( pSRB->CmdBlock[0] == INQUIRY )
-       {
-           if( (pcmd->target == pACB->max_id) &&
-               (pcmd->lun == pACB->max_lun) )
-           {
-               pACB->scan_devices = 0;
-           }
-           ptr = (PSCSI_INQDATA) (pcmd->request_buffer);
-           if( pcmd->use_sg )
-               ptr = (PSCSI_INQDATA) (((PSGL) ptr)->address);
-           bval1 = ptr->DevType & SCSI_DEVTYPE;
-           if(bval1 == SCSI_NODEV)
-           {
-               pACB->DCBmap[pcmd->target] &= ~(1 << pcmd->lun);
-               pPrevDCB->pNextDCB = pACB->pLinkDCB;
-           }
-           else
-           {
-               pACB->DeviceCnt++;
-               pPrevDCB = pDCB;
-               pACB->pDCB_free = (PDCB) ((ULONG) (pACB->pDCB_free) + sizeof( 
DC390W_DCB ));
-               pDCB->DevType = bval1;
-               if(bval1 == TYPE_DISK || bval1 == TYPE_MOD)
-               {
-                   if( (((ptr->Vers & 0x07) >= 2) || ((ptr->RDF & 0x0F) == 2)) 
&&
-                       (ptr->Flags & SCSI_INQ_CMDQUEUE) &&
-                       (pDCB->DevMode & TAG_QUEUING_) &&
-                       (pDCB->DevMode & EN_DISCONNECT_) )
-                   {
-                       disable_tag = 0;
-                       for(i=0; i<BADDEVCNT; i++)
-                       {
-                           for(j=0; j<28; j++)
-                           {
-                               if( ((PUCHAR)ptr)[8+j] != baddevname[i][j])
-                                   break;
-                           }
-                           if(j == 28)
-                           {
-                               disable_tag = 1;
-                               break;
-                           }
-                       }
-
-                       if( !disable_tag )
-                       {
-                           pDCB->MaxCommand = pACB->TagMaxNum;
-                           pDCB->TagMask = 0;
-                       }
-                   }
-               }
-           }
-       }
-    }
-
-    save_flags( flags );
-    cli();
-/*  ReleaseSRB( pDCB, pSRB ); */
-
-    if(pSRB == pDCB->pGoingSRB )
-    {
-       pDCB->pGoingSRB = pSRB->pNextSRB;
-    }
-    else
-    {
-       psrb = pDCB->pGoingSRB;
-       while( psrb->pNextSRB != pSRB )
-           psrb = psrb->pNextSRB;
-       psrb->pNextSRB = pSRB->pNextSRB;
-       if( pSRB == pDCB->pGoingLast )
-           pDCB->pGoingLast = psrb;
-    }
-    pSRB->pNextSRB = pACB->pFreeSRB;
-    pACB->pFreeSRB = pSRB;
-    pDCB->GoingSRBCnt--;
-
-    DoWaitingSRB( pACB );
-    restore_flags(flags);
-
-/*  Notify cmd done */
-    pcmd->scsi_done( pcmd );
-
-    if( pDCB->QIORBCnt )
-       DoNextCmd( pACB, pDCB );
-    return;
-}
-
-
-static void
-DoingSRB_Done( PACB pACB )
-{
-    PDCB  pDCB, pdcb;
-    PSRB  psrb, psrb2;
-    USHORT  cnt, i;
-    PSCSICMD pcmd;
-
-    pDCB = pACB->pLinkDCB;
-    pdcb = pDCB;
-    do
-    {
-       cnt = pdcb->GoingSRBCnt;
-       psrb = pdcb->pGoingSRB;
-       for( i=0; i<cnt; i++)
-       {
-           psrb2 = psrb->pNextSRB;
-           pcmd = psrb->pcmd;
-           pcmd->result = DID_RESET << 16;
-
-/*         ReleaseSRB( pDCB, pSRB ); */
-
-           psrb->pNextSRB = pACB->pFreeSRB;
-           pACB->pFreeSRB = psrb;
-
-           pcmd->scsi_done( pcmd );
-           psrb  = psrb2;
-       }
-       pdcb->GoingSRBCnt = 0;;
-       pdcb->pGoingSRB = NULL;
-       pdcb->TagMask = 0;
-       pdcb = pdcb->pNextDCB;
-    }
-    while( pdcb != pDCB );
-}
-
-
-static void
-DC390W_ResetSCSIBus( PACB pACB )
-{
-    USHORT ioport;
-    UCHAR  bval;
-    ULONG  flags;
-
-    save_flags(flags);
-    cli();
-    pACB->ACBFlag |= RESET_DEV;
-    ioport = pACB->IOPortBase;
-    bval = ABORT_OP;
-    outb(bval,ioport+ISTAT);
-    udelay(25);
-    bval = 0;
-    outb(bval,ioport+ISTAT);
-
-    bval = ASSERT_RST;
-    outb(bval,ioport+SCNTL1);
-    udelay(25);         /* 25 us */
-    bval = 0;
-    outb(bval,ioport+SCNTL1);
-    restore_flags(flags);
-    return;
-}
-
-
-
-static void
-DC390W_ResetSCSIBus2( PACB pACB )
-{
-    USHORT ioport;
-    UCHAR  bval;
-    ULONG  flags;
-
-    save_flags(flags);
-    cli();
-    ioport = pACB->IOPortBase;
-    bval = ASSERT_RST;
-    outb(bval,ioport+SCNTL1);
-    udelay(25);         /* 25 us */
-    bval = 0;
-    outb(bval,ioport+SCNTL1);
-    restore_flags(flags);
-    return;
-}
-
-
-
-static void
-DC390W_ScsiRstDetect( PACB pACB )
-{
-    ULONG wlval, flags;
-    USHORT ioport;
-    UCHAR  bval;
-
-    save_flags(flags);
-    sti();
-#ifdef DC390W_DEBUG0
-    printk("Reset_Detect0,");
-#endif
-/* delay 1 sec */
-    wlval = jiffies + HZ;
-    while( jiffies < wlval );
-/*  USHORT  i;
-    for( i=0; i<1000; i++ )
-       udelay(1000); */
-
-    cli();
-    ioport = pACB->IOPortBase;
-    bval = inb(ioport+STEST3);
-    bval |= CLR_SCSI_FIFO;
-    outb(bval,ioport+STEST3);
-    bval = CLR_DMA_FIFO;
-    outb(bval,ioport+CTEST3);
-
-    if( pACB->ACBFlag & RESET_DEV )
-       pACB->ACBFlag |= RESET_DONE;
-    else
-    {
-       pACB->ACBFlag |= RESET_DETECT;
-
-       ResetDevParam( pACB );
-/*     DoingSRB_Done( pACB ); ???? */
-       RecoverSRB( pACB );
-       pACB->pActiveDCB = NULL;
-       wlval = pACB->jmp_reselect;
-       outl(wlval,(ioport+DSP));
-       pACB->ACBFlag = 0;
-       DoWaitingSRB( pACB );
-    }
-    restore_flags(flags);
-    return;
-}
-
-
-static void
-RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    PSCSICMD  pcmd;
-
-    pSRB->SRBFlag |= AUTO_REQSENSE;
-    pSRB->Segment0[0][0] = *((PULONG) &(pSRB->CmdBlock[0]));
-    pSRB->Segment0[0][1] = *((PULONG) &(pSRB->CmdBlock[4]));
-    pSRB->Segment0[1][0] = *((PULONG) &(pSRB->CmdBlock[8]));
-    pSRB->Segment0[1][1] = pSRB->__command[0] | (pSRB->SGcount << 8);
-    pSRB->Segment0[2][0] = *((PULONG) &(pSRB->pSegmentList));
-    pSRB->Segment0[2][1] = pSRB->XferredLen;
-    pSRB->AdaptStatus = 0;
-    pSRB->TargetStatus = 0;
-
-    pcmd = pSRB->pcmd;
-
-    pSRB->Segmentx.address = (PUCHAR) &(pcmd->sense_buffer);
-    pSRB->Segmentx.length = sizeof(pcmd->sense_buffer);
-    pSRB->pSegmentList = &pSRB->Segmentx;
-    pSRB->SGcount = 1;
-
-    *((PULONG) &(pSRB->CmdBlock[0])) = 0x00000003;
-    pSRB->CmdBlock[1] = pDCB->IdentifyMsg << 5;
-    *((PUSHORT) &(pSRB->CmdBlock[4])) = sizeof(pcmd->sense_buffer);
-    pSRB->__command[0] = 6;
-    PrepareSG( pACB, pDCB, pSRB );
-    pSRB->XferredLen = 0;
-    DC390W_StartSCSI( pACB, pDCB, pSRB );
-    return;
-}
-
-
-static void
-DC390W_MessageOut( PACB pACB )
-{
-    DC390W_FatalError( pACB );
-}
-
-
-static void
-DC390W_FatalError( PACB pACB )
-{
-    PSRB  pSRB;
-    PDCB  pDCB;
-    ULONG flags;
-
-#ifdef DC390W_DEBUG0
-   printk("DC390W: Fatal Error!!\n");
-#endif
-
-    pDCB = pACB->pActiveDCB;
-    pSRB = pDCB->pActiveSRB;
-    if( pSRB->SRBState & SRB_UNEXPECT_RESEL )
-    {
-       save_flags(flags);
-       cli();
-       pSRB->SRBState &= ~SRB_UNEXPECT_RESEL;
-       pSRB->pNextSRB = pACB->pFreeSRB;
-       pACB->pFreeSRB = pSRB;
-       pACB->pActiveDCB = NULL;
-       pDCB->pActiveSRB = NULL;
-       restore_flags(flags);
-       DoWaitingSRB( pACB );
-    }
-    else
-       DC390W_ResetSCSIBus(pACB);
-    return;
-}
-
-
-static void
-DC390W_Debug( PACB pACB )
-{
-   ULONG wlval;
-   USHORT ioport;
-
-   ioport = pACB->IOPortBase;
-   wlval = inl(ioport+DSP);
-   outl(wlval,(ioport+DSP));
-   return;
-}
-
-
diff --git a/linux/src/drivers/scsi/scsiiom.c b/linux/src/drivers/scsi/scsiiom.c
deleted file mode 100644
index 97801d7..0000000
--- a/linux/src/drivers/scsi/scsiiom.c
+++ /dev/null
@@ -1,1540 +0,0 @@
-/***********************************************************************
- *     FILE NAME : SCSIIOM.C                                          *
- *          BY   : C.L. Huang,    address@hidden                      *
- *     Description: Device Driver for Tekram DC-390 (T) PCI SCSI      *
- *                  Bus Master Host Adapter                           *
- ***********************************************************************/
-
-
-static USHORT
-DC390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    USHORT ioport, rc;
-    UCHAR  bval, bval1, i, cnt;
-    PUCHAR ptr;
-    ULONG  wlval;
-
-    pSRB->TagNumber = 31;
-    ioport = pACB->IOPortBase;
-    bval = pDCB->UnitSCSIID;
-    outb(bval,ioport+Scsi_Dest_ID);
-    bval = pDCB->SyncPeriod;
-    outb(bval,ioport+Sync_Period);
-    bval = pDCB->SyncOffset;
-    outb(bval,ioport+Sync_Offset);
-    bval = pDCB->CtrlR1;
-    outb(bval,ioport+CtrlReg1);
-    bval = pDCB->CtrlR3;
-    outb(bval,ioport+CtrlReg3);
-    bval = pDCB->CtrlR4;
-    outb(bval,ioport+CtrlReg4);
-    bval = CLEAR_FIFO_CMD;        /* Flush FIFO */
-    outb(bval,ioport+ScsiCmd);
-
-    pSRB->ScsiPhase = SCSI_NOP0;
-    bval = pDCB->IdentifyMsg;
-    if( !(pDCB->SyncMode & EN_ATN_STOP) )
-    {
-       if( (pSRB->CmdBlock[0] == INQUIRY) ||
-           (pSRB->CmdBlock[0] == REQUEST_SENSE) ||
-           (pSRB->SRBFlag & AUTO_REQSENSE) )
-       {
-           bval &= 0xBF;       /* NO disconnection */
-           outb(bval,ioport+ScsiFifo);
-           bval1 = SELECT_W_ATN;
-           pSRB->SRBState = SRB_START_;
-           if( pDCB->SyncMode & SYNC_ENABLE )
-           {
-               if( !(pDCB->IdentifyMsg & 7) ||
-                   (pSRB->CmdBlock[0] != INQUIRY) )
-               {
-                   bval1 = SEL_W_ATN_STOP;
-                   pSRB->SRBState = SRB_MSGOUT;
-               }
-           }
-       }
-       else
-       {
-           if(pDCB->SyncMode & EN_TAG_QUEUING)
-           {
-               outb(bval,ioport+ScsiFifo);
-               bval = MSG_SIMPLE_QTAG;
-               outb(bval,ioport+ScsiFifo);
-               wlval = 1;
-               bval = 0;
-               while( wlval & pDCB->TagMask )
-               {
-                   wlval = wlval << 1;
-                   bval++;
-               }
-               outb(bval,ioport+ScsiFifo);
-               pDCB->TagMask |= wlval;
-               pSRB->TagNumber = bval;
-               bval1 = SEL_W_ATN2;
-               pSRB->SRBState = SRB_START_;
-           }
-           else
-           {
-               outb(bval,ioport+ScsiFifo);
-               bval1 = SELECT_W_ATN;
-               pSRB->SRBState = SRB_START_;
-           }
-       }
-
-       if( pSRB->SRBFlag & AUTO_REQSENSE )
-       {
-           bval = REQUEST_SENSE;
-           outb(bval,ioport+ScsiFifo);
-           bval = pDCB->IdentifyMsg << 5;
-           outb(bval,ioport+ScsiFifo);
-           bval = 0;
-           outb(bval,ioport+ScsiFifo);
-           outb(bval,ioport+ScsiFifo);
-           bval = sizeof(pSRB->pcmd->sense_buffer);
-           outb(bval,ioport+ScsiFifo);
-           bval = 0;
-           outb(bval,ioport+ScsiFifo);
-       }
-       else
-       {
-           cnt = pSRB->ScsiCmdLen;
-           ptr = (PUCHAR) pSRB->CmdBlock;
-           for(i=0; i<cnt; i++)
-           {
-               bval = *ptr++;
-               outb(bval,ioport+ScsiFifo);
-           }
-       }
-    }
-    else       /* ATN_STOP */
-    {
-       if( (pSRB->CmdBlock[0] == INQUIRY) ||
-           (pSRB->CmdBlock[0] == REQUEST_SENSE) ||
-           (pSRB->SRBFlag & AUTO_REQSENSE) )
-       {
-           bval &= 0xBF;
-           outb(bval,ioport+ScsiFifo);
-           bval1 = SELECT_W_ATN;
-           pSRB->SRBState = SRB_START_;
-           if( pDCB->SyncMode & SYNC_ENABLE )
-           {
-               if( !(pDCB->IdentifyMsg & 7) ||
-                   (pSRB->CmdBlock[0] != INQUIRY) )
-               {
-                   bval1 = SEL_W_ATN_STOP;
-                   pSRB->SRBState = SRB_MSGOUT;
-               }
-           }
-       }
-       else
-       {
-           if(pDCB->SyncMode & EN_TAG_QUEUING)
-           {
-               outb(bval,ioport+ScsiFifo);
-               pSRB->MsgOutBuf[0] = MSG_SIMPLE_QTAG;
-               wlval = 1;
-               bval = 0;
-               while( wlval & pDCB->TagMask )
-               {
-                   wlval = wlval << 1;
-                   bval++;
-               }
-               pDCB->TagMask |= wlval;
-               pSRB->TagNumber = bval;
-               pSRB->MsgOutBuf[1] = bval;
-               pSRB->MsgCnt = 2;
-               bval1 = SEL_W_ATN_STOP;
-               pSRB->SRBState = SRB_START_;
-           }
-           else
-           {
-               outb(bval,ioport+ScsiFifo);
-               pSRB->MsgOutBuf[0] = MSG_NOP;
-               pSRB->MsgCnt = 1;
-               pSRB->SRBState = SRB_START_;
-               bval1 = SEL_W_ATN_STOP;
-           }
-       }
-    }
-    bval = inb( ioport+Scsi_Status );
-    if( bval & INTERRUPT )
-    {
-       pSRB->SRBState = SRB_READY;
-       pDCB->TagMask &= ~( 1 << pSRB->TagNumber );
-       rc = 1;
-    }
-    else
-    {
-       pSRB->ScsiPhase = SCSI_NOP1;
-       pACB->pActiveDCB = pDCB;
-       pDCB->pActiveSRB = pSRB;
-       rc = 0;
-       outb(bval1,ioport+ScsiCmd);
-    }
-    return( rc );
-}
-
-
-#ifndef  VERSION_ELF_1_2_13
-static void
-DC390_Interrupt( int irq, void *dev_id, struct pt_regs *regs)
-#else
-static void
-DC390_Interrupt( int irq, struct pt_regs *regs)
-#endif
-{
-    PACB   pACB;
-    PDCB   pDCB;
-    PSRB   pSRB;
-    USHORT ioport = 0;
-    USHORT phase, i;
-    void   (*stateV)( PACB, PSRB, PUCHAR );
-    UCHAR  istate = 0;
-    UCHAR  sstatus=0, istatus;
-
-    pACB = pACB_start;
-    if( pACB == NULL )
-       return;
-    for( i=0; i < adapterCnt; i++ )
-    {
-       if( pACB->IRQLevel == (UCHAR) irq )
-       {
-            ioport = pACB->IOPortBase;
-            sstatus = inb( ioport+Scsi_Status );
-            if( sstatus & INTERRUPT )
-                break;
-            else
-               pACB = pACB->pNextACB;
-       }
-       else
-       {
-           pACB = pACB->pNextACB;
-       }
-    }
-
-#ifdef DC390_DEBUG1
-       printk("sstatus=%2x,",sstatus);
-#endif
-
-    if( pACB == (PACB )-1 )
-    {
-       printk("DC390: Spurious interrupt detected!\n");
-       return;
-    }
-
-    istate = inb( ioport+Intern_State );
-    istatus = inb( ioport+INT_Status );
-
-#ifdef DC390_DEBUG1
-       printk("Istatus=%2x,",istatus);
-#endif
-
-    if(istatus &  DISCONNECTED)
-    {
-       DC390_Disconnect( pACB );
-       return;
-    }
-
-    if(istatus &  RESELECTED)
-    {
-       DC390_Reselect( pACB );
-       return;
-    }
-
-    if(istatus &  INVALID_CMD)
-    {
-       DC390_InvalidCmd( pACB );
-       return;
-    }
-
-    if(istatus &  SCSI_RESET)
-    {
-       DC390_ScsiRstDetect( pACB );
-       return;
-    }
-
-    if( istatus & (SUCCESSFUL_OP+SERVICE_REQUEST) )
-    {
-       pDCB = pACB->pActiveDCB;
-       pSRB = pDCB->pActiveSRB;
-       if( pDCB )
-       {
-           if( pDCB->DCBFlag & ABORT_DEV_ )
-               EnableMsgOut( pACB, pSRB );
-       }
-
-       phase = (USHORT) pSRB->ScsiPhase;
-       stateV = (void *) DC390_phase0[phase];
-       stateV( pACB, pSRB, &sstatus );
-
-       pSRB->ScsiPhase = sstatus & 7;
-       phase = (USHORT) sstatus & 7;
-       stateV = (void *) DC390_phase1[phase];
-       stateV( pACB, pSRB, &sstatus );
-    }
-}
-
-
-static void
-DC390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR   sstatus, bval;
-    USHORT  ioport;
-    PSGL    psgl;
-    ULONG   ResidCnt, xferCnt;
-
-    ioport = pACB->IOPortBase;
-    sstatus = *psstatus;
-
-    if( !(pSRB->SRBState & SRB_XFERPAD) )
-    {
-       if( sstatus & PARITY_ERR )
-           pSRB->SRBStatus |= PARITY_ERROR;
-
-       if( sstatus & COUNT_2_ZERO )
-       {
-           bval = inb(ioport+DMA_Status);
-           while( !(bval & DMA_XFER_DONE) )
-               bval = inb(ioport+DMA_Status);
-           pSRB->TotalXferredLen += pSRB->SGToBeXferLen;
-           pSRB->SGIndex++;
-           if( pSRB->SGIndex < pSRB->SGcount )
-           {
-               pSRB->pSegmentList++;
-               psgl = pSRB->pSegmentList;
-
-#ifndef VERSION_ELF_1_2_13
-               pSRB->SGPhysAddr = virt_to_phys( psgl->address );
-#else
-               pSRB->SGPhysAddr = (ULONG) psgl->address;
-#endif
-               pSRB->SGToBeXferLen = (ULONG) psgl->length;
-           }
-           else
-               pSRB->SGToBeXferLen = 0;
-       }
-       else
-       {
-           bval = inb( ioport+Current_Fifo );
-           bval &= 0x1f;
-           ResidCnt = (ULONG) inb(ioport+CtcReg_High);
-           ResidCnt = ResidCnt << 8;
-           ResidCnt |= (ULONG) inb(ioport+CtcReg_Mid);
-           ResidCnt = ResidCnt << 8;
-           ResidCnt |= (ULONG) inb(ioport+CtcReg_Low);
-           ResidCnt += (ULONG) bval;
-
-           xferCnt = pSRB->SGToBeXferLen - ResidCnt;
-           pSRB->SGPhysAddr += xferCnt;
-           pSRB->TotalXferredLen += xferCnt;
-           pSRB->SGToBeXferLen = ResidCnt;
-       }
-    }
-    bval = WRITE_DIRECTION+DMA_IDLE_CMD;
-    outb( bval, ioport+DMA_Cmd);
-}
-
-static void
-DC390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR   sstatus, bval;
-    USHORT  i, ioport, residual;
-    PSGL    psgl;
-    ULONG   ResidCnt, xferCnt;
-    PUCHAR  ptr;
-
-
-    ioport = pACB->IOPortBase;
-    sstatus = *psstatus;
-
-    if( !(pSRB->SRBState & SRB_XFERPAD) )
-    {
-       if( sstatus & PARITY_ERR )
-           pSRB->SRBStatus |= PARITY_ERROR;
-
-       if( sstatus & COUNT_2_ZERO )
-       {
-           bval = inb(ioport+DMA_Status);
-           while( !(bval & DMA_XFER_DONE) )
-               bval = inb(ioport+DMA_Status);
-
-           bval = READ_DIRECTION+DMA_IDLE_CMD;
-           outb( bval, ioport+DMA_Cmd);
-
-           pSRB->TotalXferredLen += pSRB->SGToBeXferLen;
-           pSRB->SGIndex++;
-           if( pSRB->SGIndex < pSRB->SGcount )
-           {
-               pSRB->pSegmentList++;
-               psgl = pSRB->pSegmentList;
-
-#ifndef VERSION_ELF_1_2_13
-               pSRB->SGPhysAddr = virt_to_phys( psgl->address );
-#else
-               pSRB->SGPhysAddr = (ULONG) psgl->address;
-#endif
-               pSRB->SGToBeXferLen = (ULONG) psgl->length;
-           }
-           else
-               pSRB->SGToBeXferLen = 0;
-       }
-       else    /* phase changed */
-       {
-           residual = 0;
-           bval = inb(ioport+Current_Fifo);
-           while( bval & 0x1f )
-           {
-               if( (bval & 0x1f) == 1 )
-               {
-                   for(i=0; i< 0x100; i++)
-                   {
-                       bval = inb(ioport+Current_Fifo);
-                       if( !(bval & 0x1f) )
-                           goto din_1;
-                       else if( i == 0x0ff )
-                       {
-                           residual = 1;   /* ;1 residual byte */
-                           goto din_1;
-                       }
-                   }
-               }
-               else
-                   bval = inb(ioport+Current_Fifo);
-           }
-din_1:
-           bval = READ_DIRECTION+DMA_BLAST_CMD;
-           outb(bval, ioport+DMA_Cmd);
-           for(i=0; i<0x8000; i++)
-           {
-               bval = inb(ioport+DMA_Status);
-               if(bval & BLAST_COMPLETE)
-                   break;
-           }
-           bval = READ_DIRECTION+DMA_IDLE_CMD;
-           outb(bval, ioport+DMA_Cmd);
-
-           ResidCnt = (ULONG) inb(ioport+CtcReg_High);
-           ResidCnt = ResidCnt << 8;
-           ResidCnt |= (ULONG) inb(ioport+CtcReg_Mid);
-           ResidCnt = ResidCnt << 8;
-           ResidCnt |= (ULONG) inb(ioport+CtcReg_Low);
-
-           xferCnt = pSRB->SGToBeXferLen - ResidCnt;
-           pSRB->SGPhysAddr += xferCnt;
-           pSRB->TotalXferredLen += xferCnt;
-           pSRB->SGToBeXferLen = ResidCnt;
-
-           if( residual )
-           {
-               bval = inb(ioport+ScsiFifo);        /* get residual byte */
-#ifndef VERSION_ELF_1_2_13
-               ptr = (PUCHAR) phys_to_virt( pSRB->SGPhysAddr );
-#else
-               ptr = (PUCHAR) pSRB->SGPhysAddr;
-#endif
-               *ptr = bval;
-               pSRB->SGPhysAddr++;
-               pSRB->TotalXferredLen++;
-               pSRB->SGToBeXferLen--;
-           }
-       }
-    }
-}
-
-static void
-DC390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-}
-
-static void
-DC390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR  bval;
-    USHORT ioport;
-
-    ioport = pACB->IOPortBase;
-    bval = inb(ioport+ScsiFifo);
-    pSRB->TargetStatus = bval;
-    bval++;
-    bval = inb(ioport+ScsiFifo);       /* get message */
-    pSRB->EndMessage = bval;
-
-    *psstatus = SCSI_NOP0;
-    pSRB->SRBState = SRB_COMPLETED;
-    bval = MSG_ACCEPTED_CMD;
-    outb(bval, ioport+ScsiCmd);
-}
-
-static void
-DC390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    if( pSRB->SRBState & (SRB_UNEXPECT_RESEL+SRB_ABORT_SENT) )
-       *psstatus = SCSI_NOP0;
-}
-
-static void
-DC390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR  bval;
-    USHORT ioport, wval, wval1;
-    PDCB   pDCB;
-    PSRB   psrb;
-
-    ioport = pACB->IOPortBase;
-    pDCB = pACB->pActiveDCB;
-
-    bval = inb( ioport+ScsiFifo );
-    if( !(pSRB->SRBState & SRB_MSGIN_MULTI) )
-    {
-       if(bval == MSG_DISCONNECT)
-       {
-           pSRB->SRBState = SRB_DISCONNECT;
-       }
-       else if( bval == MSG_SAVE_PTR )
-           goto  min6;
-       else if( (bval == MSG_EXTENDED) || ((bval >= MSG_SIMPLE_QTAG) &&
-                                           (bval <= MSG_ORDER_QTAG)) )
-       {
-           pSRB->SRBState |= SRB_MSGIN_MULTI;
-           pSRB->MsgInBuf[0] = bval;
-           pSRB->MsgCnt = 1;
-           pSRB->pMsgPtr = &pSRB->MsgInBuf[1];
-       }
-       else if(bval == MSG_REJECT_)
-       {
-           bval = RESET_ATN_CMD;
-           outb(bval, ioport+ScsiCmd);
-           if( pSRB->SRBState & DO_SYNC_NEGO)
-               goto  set_async;
-       }
-       else if( bval == MSG_RESTORE_PTR)
-           goto  min6;
-       else
-           goto  min6;
-    }
-    else
-    {  /* minx: */
-
-       *pSRB->pMsgPtr = bval;
-       pSRB->MsgCnt++;
-       pSRB->pMsgPtr++;
-       if( (pSRB->MsgInBuf[0] >= MSG_SIMPLE_QTAG) &&
-           (pSRB->MsgInBuf[0] <= MSG_ORDER_QTAG) )
-       {
-           if( pSRB->MsgCnt == 2)
-           {
-               pSRB->SRBState = 0;
-               bval = pSRB->MsgInBuf[1];
-               pSRB = pDCB->pGoingSRB;
-               psrb = pDCB->pGoingLast;
-               if( pSRB )
-               {
-                   for( ;; )
-                   {
-                       if(pSRB->TagNumber != bval)
-                       {
-                           if( pSRB == psrb )
-                               goto  mingx0;
-                           pSRB = pSRB->pNextSRB;
-                       }
-                       else
-                           break;
-                   }
-                   if( pDCB->DCBFlag & ABORT_DEV_ )
-                   {
-                       pSRB->SRBState = SRB_ABORT_SENT;
-                       EnableMsgOut( pACB, pSRB );
-                   }
-                   if( !(pSRB->SRBState & SRB_DISCONNECT) )
-                       goto  mingx0;
-                   pDCB->pActiveSRB = pSRB;
-                   pSRB->SRBState = SRB_DATA_XFER;
-               }
-               else
-               {
-mingx0:
-                   pSRB = pACB->pTmpSRB;
-                   pSRB->SRBState = SRB_UNEXPECT_RESEL;
-                   pDCB->pActiveSRB = pSRB;
-                   pSRB->MsgOutBuf[0] = MSG_ABORT_TAG;
-                   EnableMsgOut2( pACB, pSRB );
-               }
-           }
-       }
-       else if( (pSRB->MsgInBuf[0] == MSG_EXTENDED) && (pSRB->MsgCnt == 5) )
-       {
-           pSRB->SRBState &= ~(SRB_MSGIN_MULTI+DO_SYNC_NEGO);
-           if( (pSRB->MsgInBuf[1] != 3) || (pSRB->MsgInBuf[2] != 1) )
-           {   /* reject_msg: */
-               pSRB->MsgCnt = 1;
-               pSRB->MsgInBuf[0] = MSG_REJECT_;
-               bval = SET_ATN_CMD;
-               outb(bval, ioport+ScsiCmd);
-           }
-           else if( !(pSRB->MsgInBuf[3]) || !(pSRB->MsgInBuf[4]) )
-           {
-set_async:
-               pDCB = pSRB->pSRBDCB;
-               pDCB->SyncMode &= ~(SYNC_ENABLE+SYNC_NEGO_DONE);
-               pDCB->SyncPeriod = 0;
-               pDCB->SyncOffset = 0;
-               pDCB->CtrlR3 = FAST_CLK;     /* ;non_fast */
-               pDCB->CtrlR4 &= 0x3f;
-               pDCB->CtrlR4 |= EATER_25NS;  /* ; 25ns glitch eater */
-               goto  re_prog;
-           }
-           else
-           {   /* set_sync: */
-
-               pDCB = pSRB->pSRBDCB;
-               pDCB->SyncMode |= SYNC_ENABLE+SYNC_NEGO_DONE;
-               pDCB->SyncOffset &= 0x0f0;
-               pDCB->SyncOffset |= pSRB->MsgInBuf[4];
-               pDCB->NegoPeriod = pSRB->MsgInBuf[3];
-               wval = (USHORT) pSRB->MsgInBuf[3];
-               wval = wval << 2;
-               wval--;
-               wval1 = wval / 25;
-               if( (wval1 * 25) != wval)
-                   wval1++;
-               bval = FAST_CLK+FAST_SCSI;
-               pDCB->CtrlR4 &= 0x3f;
-               if(wval1 >= 8)
-               {
-                   wval1--;
-                   bval = FAST_CLK;        /* ;fast clock/normal scsi */
-                   pDCB->CtrlR4 |= EATER_25NS;   /* ;25 ns glitch eater */
-               }
-               pDCB->CtrlR3 = bval;
-               pDCB->SyncPeriod = (UCHAR)wval1;
-re_prog:
-               bval = pDCB->SyncPeriod;
-               outb(bval, ioport+Sync_Period);
-               bval = pDCB->SyncOffset;
-               outb(bval, ioport+Sync_Offset);
-               bval = pDCB->CtrlR3;
-               outb(bval, ioport+CtrlReg3);
-               bval = pDCB->CtrlR4;
-               outb(bval, ioport+CtrlReg4);
-               SetXferRate( pACB, pDCB);
-           }
-       }
-    }
-min6:
-    *psstatus = SCSI_NOP0;
-    bval = MSG_ACCEPTED_CMD;
-    outb(bval, ioport+ScsiCmd);
-}
-
-static void
-DataIO_Comm( PACB pACB, PSRB pSRB, UCHAR ioDir)
-{
-    PSGL   psgl;
-    UCHAR  bval;
-    USHORT ioport;
-    ULONG  lval;
-
-
-    ioport = pACB->IOPortBase;
-    if( pSRB->SGIndex < pSRB->SGcount )
-    {
-       bval = DMA_IDLE_CMD | ioDir;   /* ;+EN_DMA_INT */
-       outb( bval, ioport+DMA_Cmd);
-       if( !pSRB->SGToBeXferLen )
-       {
-           psgl = pSRB->pSegmentList;
-#ifndef VERSION_ELF_1_2_13
-           pSRB->SGPhysAddr = virt_to_phys( psgl->address );
-#else
-           pSRB->SGPhysAddr = (ULONG) psgl->address;
-#endif
-           pSRB->SGToBeXferLen = (ULONG) psgl->length;
-       }
-       lval = pSRB->SGToBeXferLen;
-       bval = (UCHAR) lval;
-       outb(bval,ioport+CtcReg_Low);
-       lval = lval >> 8;
-       bval = (UCHAR) lval;
-       outb(bval,ioport+CtcReg_Mid);
-       lval = lval >> 8;
-       bval = (UCHAR) lval;
-       outb(bval,ioport+CtcReg_High);
-
-       lval = pSRB->SGToBeXferLen;
-       outl(lval, ioport+DMA_XferCnt);
-
-       lval = pSRB->SGPhysAddr;
-       outl( lval, ioport+DMA_XferAddr);
-
-       bval = DMA_COMMAND+INFO_XFER_CMD;
-       outb(bval, ioport+ScsiCmd);
-
-       pSRB->SRBState = SRB_DATA_XFER;
-
-       bval = DMA_IDLE_CMD | ioDir;    /* ;+EN_DMA_INT */
-       outb(bval, ioport+DMA_Cmd);
-
-       bval = DMA_START_CMD | ioDir;   /* ;+EN_DMA_INT */
-       outb(bval, ioport+DMA_Cmd);
-    }
-    else    /* xfer pad */
-    {
-       if( pSRB->SGcount )
-       {
-           pSRB->AdaptStatus = H_OVER_UNDER_RUN;
-           pSRB->SRBStatus |= OVER_RUN;
-       }
-       bval = 0;
-       outb(bval,ioport+CtcReg_Low);
-       outb(bval,ioport+CtcReg_Mid);
-       outb(bval,ioport+CtcReg_High);
-
-       pSRB->SRBState |= SRB_XFERPAD;
-       bval = DMA_COMMAND+XFER_PAD_BYTE;
-       outb(bval, ioport+ScsiCmd);
-/*
-       bval = DMA_IDLE_CMD | ioDir;    ;+EN_DMA_INT
-       outb(bval, ioport+DMA_Cmd);
-       bval = DMA_START_CMD | ioDir;   ;+EN_DMA_INT
-       outb(bval, ioport+DMA_Cmd);
-*/
-    }
-}
-
-
-static void
-DC390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR  ioDir;
-
-    ioDir = WRITE_DIRECTION;
-    DataIO_Comm( pACB, pSRB, ioDir);
-}
-
-static void
-DC390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR  ioDir;
-
-    ioDir = READ_DIRECTION;
-    DataIO_Comm( pACB, pSRB, ioDir);
-}
-
-static void
-DC390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    PDCB   pDCB;
-    UCHAR  bval;
-    PUCHAR ptr;
-    USHORT ioport, i,  cnt;
-
-
-    ioport = pACB->IOPortBase;
-    bval = RESET_ATN_CMD;
-    outb(bval, ioport+ScsiCmd);
-    bval = CLEAR_FIFO_CMD;
-    outb(bval, ioport+ScsiCmd);
-    if( !(pSRB->SRBFlag & AUTO_REQSENSE) )
-    {
-       cnt = (USHORT) pSRB->ScsiCmdLen;
-       ptr = (PUCHAR) pSRB->CmdBlock;
-       for(i=0; i < cnt; i++)
-       {
-           outb(*ptr, ioport+ScsiFifo);
-           ptr++;
-       }
-    }
-    else
-    {
-       bval = REQUEST_SENSE;
-       outb(bval, ioport+ScsiFifo);
-       pDCB = pACB->pActiveDCB;
-       bval = pDCB->IdentifyMsg << 5;
-       outb(bval, ioport+ScsiFifo);
-       bval = 0;
-       outb(bval, ioport+ScsiFifo);
-       outb(bval, ioport+ScsiFifo);
-       bval = sizeof(pSRB->pcmd->sense_buffer);
-       outb(bval, ioport+ScsiFifo);
-       bval = 0;
-       outb(bval, ioport+ScsiFifo);
-    }
-    pSRB->SRBState = SRB_COMMAND;
-    bval = INFO_XFER_CMD;
-    outb(bval, ioport+ScsiCmd);
-}
-
-static void
-DC390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR  bval;
-    USHORT ioport;
-
-    ioport = pACB->IOPortBase;
-    bval = CLEAR_FIFO_CMD;
-    outb(bval, ioport+ScsiCmd);
-    pSRB->SRBState = SRB_STATUS;
-    bval = INITIATOR_CMD_CMPLTE;
-    outb(bval, ioport+ScsiCmd);
-}
-
-static void
-DC390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR   bval;
-    USHORT  ioport, i, cnt;
-    PUCHAR  ptr;
-    PDCB    pDCB;
-
-    ioport = pACB->IOPortBase;
-    bval = CLEAR_FIFO_CMD;
-    outb(bval, ioport+ScsiCmd);
-    pDCB = pACB->pActiveDCB;
-    if( !(pSRB->SRBState & SRB_MSGOUT) )
-    {
-       cnt = pSRB->MsgCnt;
-       if( cnt )
-       {
-           ptr = (PUCHAR) pSRB->MsgOutBuf;
-           for(i=0; i < cnt; i++)
-           {
-               outb(*ptr, ioport+ScsiFifo);
-               ptr++;
-           }
-           pSRB->MsgCnt = 0;
-           if( (pDCB->DCBFlag & ABORT_DEV_) &&
-               (pSRB->MsgOutBuf[0] == MSG_ABORT) )
-               pSRB->SRBState = SRB_ABORT_SENT;
-       }
-       else
-       {
-           bval = MSG_ABORT;   /* ??? MSG_NOP */
-           if( (pSRB->CmdBlock[0] == INQUIRY ) ||
-               (pSRB->CmdBlock[0] == REQUEST_SENSE) ||
-               (pSRB->SRBFlag & AUTO_REQSENSE) )
-           {
-               if( pDCB->SyncMode & SYNC_ENABLE )
-                   goto  mop1;
-           }
-           outb(bval, ioport+ScsiFifo);
-       }
-       bval = INFO_XFER_CMD;
-       outb( bval, ioport+ScsiCmd);
-    }
-    else
-    {
-mop1:
-       bval = MSG_EXTENDED;
-       outb(bval, ioport+ScsiFifo);
-       bval = 3;       /*    ;length of extended msg */
-       outb(bval, ioport+ScsiFifo);
-       bval = 1;       /*    ; sync nego */
-       outb(bval, ioport+ScsiFifo);
-       bval = pDCB->NegoPeriod;
-       outb(bval, ioport+ScsiFifo);
-       bval = SYNC_NEGO_OFFSET;
-       outb(bval, ioport+ScsiFifo);
-       pSRB->SRBState |= DO_SYNC_NEGO;
-       bval = INFO_XFER_CMD;
-       outb(bval, ioport+ScsiCmd);
-    }
-}
-
-static void
-DC390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-    UCHAR  bval;
-    USHORT ioport;
-
-    ioport = pACB->IOPortBase;
-    bval = CLEAR_FIFO_CMD;
-    outb(bval, ioport+ScsiCmd);
-    if( !(pSRB->SRBState & SRB_MSGIN) )
-    {
-       pSRB->SRBState &= SRB_DISCONNECT;
-       pSRB->SRBState |= SRB_MSGIN;
-    }
-    bval = INFO_XFER_CMD;
-    outb(bval, ioport+ScsiCmd);
-}
-
-static void
-DC390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-}
-
-static void
-DC390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus)
-{
-}
-
-
-static void
-SetXferRate( PACB pACB, PDCB pDCB )
-{
-    UCHAR  bval;
-    USHORT cnt, i;
-    PDCB   ptr;
-
-    if( !(pDCB->IdentifyMsg & 0x07) )
-    {
-       if( pACB->scan_devices )
-       {
-           CurrSyncOffset = pDCB->SyncOffset;
-       }
-       else
-       {
-           ptr = pACB->pLinkDCB;
-           cnt = pACB->DeviceCnt;
-           bval = pDCB->UnitSCSIID;
-           for(i=0; i<cnt; i++)
-           {
-               if( ptr->UnitSCSIID == bval )
-               {
-                   ptr->SyncPeriod = pDCB->SyncPeriod;
-                   ptr->SyncOffset = pDCB->SyncOffset;
-                   ptr->CtrlR3 = pDCB->CtrlR3;
-                   ptr->CtrlR4 = pDCB->CtrlR4;
-                   ptr->SyncMode = pDCB->SyncMode;
-               }
-               ptr = ptr->pNextDCB;
-           }
-       }
-    }
-    return;
-}
-
-
-static void
-DC390_Disconnect( PACB pACB )
-{
-    PDCB   pDCB;
-    PSRB   pSRB, psrb;
-    ULONG  flags;
-    USHORT ioport, i, cnt;
-    UCHAR  bval;
-
-#ifdef DC390_DEBUG0
-    printk("DISC,");
-#endif
-
-    save_flags(flags);
-    cli();
-    ioport = pACB->IOPortBase;
-    pDCB = pACB->pActiveDCB;
-    if (!pDCB)
-     {
-#ifdef DC390_DEBUG0
-       printk("ACB:%08lx->ActiveDCB:%08lx !,",(ULONG)pACB,(ULONG)pDCB);
-#endif
-       restore_flags(flags); return;
-     }
-    pSRB = pDCB->pActiveSRB;
-    pACB->pActiveDCB = 0;
-    pSRB->ScsiPhase = SCSI_NOP0;
-    bval = EN_SEL_RESEL;
-    outb(bval, ioport+ScsiCmd);
-    if( pSRB->SRBState & SRB_UNEXPECT_RESEL )
-    {
-       pSRB->SRBState = 0;
-       DoWaitingSRB( pACB );
-    }
-    else if( pSRB->SRBState & SRB_ABORT_SENT )
-    {
-       pDCB->TagMask = 0;
-       pDCB->DCBFlag = 0;
-       cnt = pDCB->GoingSRBCnt;
-       pDCB->GoingSRBCnt = 0;
-       pSRB = pDCB->pGoingSRB;
-       for( i=0; i < cnt; i++)
-       {
-           psrb = pSRB->pNextSRB;
-           pSRB->pNextSRB = pACB->pFreeSRB;
-           pACB->pFreeSRB = pSRB;
-           pSRB = psrb;
-       }
-       pDCB->pGoingSRB = 0;
-       DoWaitingSRB( pACB );
-    }
-    else
-    {
-       if( (pSRB->SRBState & (SRB_START_+SRB_MSGOUT)) ||
-          !(pSRB->SRBState & (SRB_DISCONNECT+SRB_COMPLETED)) )
-       {       /* Selection time out */
-           if( !(pACB->scan_devices) )
-           {
-               pSRB->SRBState = SRB_READY;
-               RewaitSRB( pDCB, pSRB);
-           }
-           else
-           {
-               pSRB->TargetStatus = SCSI_STAT_SEL_TIMEOUT;
-               goto  disc1;
-           }
-       }
-       else if( pSRB->SRBState & SRB_DISCONNECT )
-       {
-           DoWaitingSRB( pACB );
-       }
-       else if( pSRB->SRBState & SRB_COMPLETED )
-       {
-disc1:
-           if(pDCB->MaxCommand > 1)
-           {
-              bval = pSRB->TagNumber;
-              pDCB->TagMask &= (~(1 << bval));   /* free tag mask */
-           }
-           pDCB->pActiveSRB = 0;
-           pSRB->SRBState = SRB_FREE;
-           SRBdone( pACB, pDCB, pSRB);
-       }
-    }
-    restore_flags(flags);
-    return;
-}
-
-
-static void
-DC390_Reselect( PACB pACB )
-{
-    PDCB   pDCB, pdcb;
-    PSRB   pSRB;
-    USHORT ioport, wval;
-    UCHAR  bval, bval1;
-
-
-#ifdef DC390_DEBUG0
-    printk("RSEL,");
-#endif
-    ioport = pACB->IOPortBase;
-    pDCB = pACB->pActiveDCB;
-    if( pDCB )
-    {  /* Arbitration lost but Reselection win */
-       pSRB = pDCB->pActiveSRB;
-       if( !( pACB->scan_devices ) )
-       {
-           pSRB->SRBState = SRB_READY;
-           RewaitSRB( pDCB, pSRB);
-       }
-    }
-    bval = inb(ioport+ScsiFifo);       /* get ID */
-    bval = bval ^ pACB->HostID_Bit;
-    wval = 0;
-    bval1 = 1;
-    for(;;)
-    {
-       if( !(bval & bval1) )
-       {
-           bval1 = bval1 << 1;
-           wval++;
-       }
-       else
-           break;
-    }
-    wval |=  ( (USHORT) inb(ioport+ScsiFifo) & 7) << 8;  /* get LUN */
-    pDCB = pACB->pLinkDCB;
-    pdcb = pDCB;
-    while( wval != *((PUSHORT) &pDCB->UnitSCSIID) )
-    {
-       pDCB = pDCB->pNextDCB;
-       if( pDCB == pdcb )
-           return;
-    }
-    pACB->pActiveDCB = pDCB;
-    if( pDCB->SyncMode & EN_TAG_QUEUING )
-    {
-       pSRB = pACB->pTmpSRB;
-       pDCB->pActiveSRB = pSRB;
-    }
-    else
-    {
-       pSRB = pDCB->pActiveSRB;
-       if( !pSRB || !(pSRB->SRBState & SRB_DISCONNECT) )
-       {
-           pSRB= pACB->pTmpSRB;
-           pSRB->SRBState = SRB_UNEXPECT_RESEL;
-           pDCB->pActiveSRB = pSRB;
-           EnableMsgOut( pACB, pSRB );
-       }
-       else
-       {
-           if( pDCB->DCBFlag & ABORT_DEV_ )
-           {
-               pSRB->SRBState = SRB_ABORT_SENT;
-               EnableMsgOut( pACB, pSRB );
-           }
-           else
-               pSRB->SRBState = SRB_DATA_XFER;
-       }
-    }
-    pSRB->ScsiPhase = SCSI_NOP0;
-    bval = pDCB->UnitSCSIID;
-    outb( bval, ioport+Scsi_Dest_ID);
-    bval = pDCB->SyncPeriod;
-    outb(bval, ioport+Sync_Period);
-    bval = pDCB->SyncOffset;
-    outb( bval, ioport+Sync_Offset);
-    bval = pDCB->CtrlR1;
-    outb(bval, ioport+CtrlReg1);
-    bval = pDCB->CtrlR3;
-    outb(bval, ioport+CtrlReg3);
-    bval = pDCB->CtrlR4;       /* ; Glitch eater */
-    outb(bval, ioport+CtrlReg4);
-    bval = MSG_ACCEPTED_CMD;   /* ;to rls the /ACK signal */
-    outb(bval, ioport+ScsiCmd);
-}
-
-
-static void
-SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    PSRB   psrb;
-    UCHAR  bval, bval1, i, j, status;
-    PSCSICMD pcmd;
-    PSCSI_INQDATA  ptr;
-    USHORT disable_tag;
-    ULONG  flags;
-    PSGL   ptr2;
-    ULONG  swlval;
-
-    pcmd = pSRB->pcmd;
-    status = pSRB->TargetStatus;
-    if(pSRB->SRBFlag & AUTO_REQSENSE)
-    {
-       pSRB->SRBFlag &= ~AUTO_REQSENSE;
-       pSRB->AdaptStatus = 0;
-       pSRB->TargetStatus = SCSI_STAT_CHECKCOND;
-       if(status == SCSI_STAT_CHECKCOND)
-       {
-           pcmd->result = DID_BAD_TARGET << 16;
-           goto ckc_e;
-       }
-       if(pSRB->RetryCnt == 0)
-       {
-           *((PULONG) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0];
-           pSRB->TotalXferredLen = pSRB->Segment1[1];
-           if( (pSRB->TotalXferredLen) &&
-               (pSRB->TotalXferredLen >= pcmd->underflow) )
-               pcmd->result |= (DID_OK << 16);
-           else
-               pcmd->result = (DRIVER_SENSE << 24) | (DRIVER_OK << 16) |
-                               SCSI_STAT_CHECKCOND;
-#ifdef DC390_DEBUG0
-       printk("Cmd=%2x,Result=%8x,XferL=%8x,",pSRB->CmdBlock[0],
-               (UINT) pcmd->result, (UINT) pSRB->TotalXferredLen);
-#endif
-           goto ckc_e;
-       }
-       else
-       {
-           pSRB->RetryCnt--;
-           pSRB->AdaptStatus = 0;
-           pSRB->TargetStatus = 0;
-           *((PULONG) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0];
-           *((PULONG) &(pSRB->CmdBlock[4])) = pSRB->Segment0[1];
-           if( pSRB->CmdBlock[0] == TEST_UNIT_READY )
-           {
-               pcmd->result = (DRIVER_SENSE << 24) | (DRIVER_OK << 16) |
-                               SCSI_STAT_CHECKCOND;
-               goto ckc_e;
-           }
-           pcmd->result |= (DRIVER_SENSE << 24);
-           pSRB->SGcount                = (UCHAR) pSRB->Segment1[0];
-           pSRB->ScsiCmdLen             = (UCHAR) (pSRB->Segment1[0] >> 8);
-           pSRB->SGIndex = 0;
-           pSRB->TotalXferredLen = 0;
-           pSRB->SGToBeXferLen = 0;
-           if( pcmd->use_sg )
-               pSRB->pSegmentList = (PSGL) pcmd->request_buffer;
-           else if( pcmd->request_buffer )
-           {
-               pSRB->pSegmentList = (PSGL) &pSRB->Segmentx;
-               pSRB->Segmentx.address = (PUCHAR) pcmd->request_buffer;
-               pSRB->Segmentx.length = pcmd->request_bufflen;
-           }
-           if( DC390_StartSCSI( pACB, pDCB, pSRB ) )
-               RewaitSRB( pDCB, pSRB );
-           return;
-       }
-    }
-    if( status )
-    {
-       if( status == SCSI_STAT_CHECKCOND)
-       {
-           if( (pSRB->SGIndex < pSRB->SGcount) && (pSRB->SGcount) && 
(pSRB->SGToBeXferLen) )
-           {
-               bval = pSRB->SGcount;
-               swlval = 0;
-               ptr2 = pSRB->pSegmentList;
-               for( i=pSRB->SGIndex; i < bval; i++)
-               {
-                   swlval += ptr2->length;
-                   ptr2++;
-               }
-#ifdef DC390_DEBUG0
-               printk("XferredLen=%8x,NotXferLen=%8x,",
-                       (UINT) pSRB->TotalXferredLen, (UINT) swlval);
-#endif
-           }
-           RequestSense( pACB, pDCB, pSRB );
-           return;
-       }
-       else if( status == SCSI_STAT_QUEUEFULL )
-       {
-           bval = (UCHAR) pDCB->GoingSRBCnt;
-           bval--;
-           pDCB->MaxCommand = bval;
-           RewaitSRB( pDCB, pSRB );
-           pSRB->AdaptStatus = 0;
-           pSRB->TargetStatus = 0;
-           return;
-       }
-       else if(status == SCSI_STAT_SEL_TIMEOUT)
-       {
-           pSRB->AdaptStatus = H_SEL_TIMEOUT;
-           pSRB->TargetStatus = 0;
-           pcmd->result = DID_BAD_TARGET << 16;
-       }
-       else
-       {
-           pSRB->AdaptStatus = 0;
-           if( pSRB->RetryCnt )
-           {
-               pSRB->RetryCnt--;
-               pSRB->TargetStatus = 0;
-               pSRB->SGIndex = 0;
-               pSRB->TotalXferredLen = 0;
-               pSRB->SGToBeXferLen = 0;
-               if( pcmd->use_sg )
-                   pSRB->pSegmentList = (PSGL) pcmd->request_buffer;
-               else if( pcmd->request_buffer )
-               {
-                   pSRB->pSegmentList = (PSGL) &pSRB->Segmentx;
-                   pSRB->Segmentx.address = (PUCHAR) pcmd->request_buffer;
-                   pSRB->Segmentx.length = pcmd->request_bufflen;
-               }
-               if( DC390_StartSCSI( pACB, pDCB, pSRB ) )
-                   RewaitSRB( pDCB, pSRB );
-               return;
-           }
-           else
-           {
-               pcmd->result |= (DID_ERROR << 16) | (ULONG) (pSRB->EndMessage 
<< 8) |
-                              (ULONG) status;
-           }
-       }
-    }
-    else
-    {
-       status = pSRB->AdaptStatus;
-       if(status & H_OVER_UNDER_RUN)
-       {
-           pSRB->TargetStatus = 0;
-           pcmd->result |= (DID_OK << 16) | (pSRB->EndMessage << 8);
-       }
-       else if( pSRB->SRBStatus & PARITY_ERROR)
-       {
-           pcmd->result |= (DID_PARITY << 16) | (pSRB->EndMessage << 8);
-       }
-       else                   /* No error */
-       {
-           pSRB->AdaptStatus = 0;
-           pSRB->TargetStatus = 0;
-           pcmd->result |= (DID_OK << 16);
-       }
-    }
-
-ckc_e:
-    if( pACB->scan_devices )
-    {
-       if( pSRB->CmdBlock[0] == TEST_UNIT_READY )
-       {
-           if(pcmd->result != (DID_OK << 16))
-           {
-               if( pcmd->result & SCSI_STAT_CHECKCOND )
-               {
-                   goto RTN_OK;
-               }
-               else
-               {
-                   pACB->DCBmap[pcmd->target] &= ~(1 << pcmd->lun);
-                   pPrevDCB->pNextDCB = pACB->pLinkDCB;
-                   if( (pcmd->target == pACB->max_id) &&
-                      ((pcmd->lun == 0) || (pcmd->lun == pACB->max_lun)) )
-                   {
-                       pACB->scan_devices = 0;
-                   }
-               }
-           }
-           else
-           {
-RTN_OK:
-               pPrevDCB->pNextDCB = pDCB;
-               pDCB->pNextDCB = pACB->pLinkDCB;
-               if( (pcmd->target == pACB->max_id) && (pcmd->lun == 
pACB->max_lun) )
-                   pACB->scan_devices = END_SCAN;
-           }
-       }
-       else if( pSRB->CmdBlock[0] == INQUIRY )
-       {
-           if( (pcmd->target == pACB->max_id) &&
-               (pcmd->lun == pACB->max_lun) )
-           {
-               pACB->scan_devices = 0;
-           }
-           ptr = (PSCSI_INQDATA) (pcmd->request_buffer);
-           if( pcmd->use_sg )
-               ptr = (PSCSI_INQDATA) (((PSGL) ptr)->address);
-           bval1 = ptr->DevType & SCSI_DEVTYPE;
-           if(bval1 == SCSI_NODEV)
-           {
-               pACB->DCBmap[pcmd->target] &= ~(1 << pcmd->lun);
-               pPrevDCB->pNextDCB = pACB->pLinkDCB;
-           }
-           else
-           {
-               pACB->DeviceCnt++;
-               pPrevDCB = pDCB;
-               pACB->pDCB_free = (PDCB) ((ULONG) (pACB->pDCB_free) + sizeof( 
DC390_DCB ));
-               pDCB->DevType = bval1;
-               if(bval1 == TYPE_DISK || bval1 == TYPE_MOD)
-               {
-                   if( (((ptr->Vers & 0x07) >= 2) || ((ptr->RDF & 0x0F) == 2)) 
&&
-                       (ptr->Flags & SCSI_INQ_CMDQUEUE) &&
-                       (pDCB->DevMode & TAG_QUEUING_) &&
-                       (pDCB->DevMode & EN_DISCONNECT_) )
-                   {
-                       disable_tag = 0;
-                       for(i=0; i<BADDEVCNT; i++)
-                       {
-                           for(j=0; j<28; j++)
-                           {
-                               if( ((PUCHAR)ptr)[8+j] != baddevname1[i][j])
-                                   break;
-                           }
-                           if(j == 28)
-                           {
-                               disable_tag = 1;
-                               break;
-                           }
-                       }
-
-                       if( !disable_tag )
-                       {
-                           pDCB->MaxCommand = pACB->TagMaxNum;
-                           pDCB->SyncMode |= EN_TAG_QUEUING;
-                           pDCB->TagMask = 0;
-                       }
-                       else
-                       {
-                           pDCB->SyncMode |= EN_ATN_STOP;
-                       }
-                   }
-               }
-           }
-       }
-    }
-
-    save_flags( flags );
-    cli();
-/*  ReleaseSRB( pDCB, pSRB ); */
-
-    if(pSRB == pDCB->pGoingSRB )
-    {
-       pDCB->pGoingSRB = pSRB->pNextSRB;
-    }
-    else
-    {
-       psrb = pDCB->pGoingSRB;
-       while( psrb->pNextSRB != pSRB )
-           psrb = psrb->pNextSRB;
-       psrb->pNextSRB = pSRB->pNextSRB;
-       if( pSRB == pDCB->pGoingLast )
-           pDCB->pGoingLast = psrb;
-    }
-    pSRB->pNextSRB = pACB->pFreeSRB;
-    pACB->pFreeSRB = pSRB;
-    pDCB->GoingSRBCnt--;
-
-    DoWaitingSRB( pACB );
-    restore_flags(flags);
-
-/*  Notify cmd done */
-    pcmd->scsi_done( pcmd );
-
-    if( pDCB->QIORBCnt )
-       DoNextCmd( pACB, pDCB );
-    return;
-}
-
-
-static void
-DoingSRB_Done( PACB pACB )
-{
-    PDCB  pDCB, pdcb;
-    PSRB  psrb, psrb2;
-    USHORT  cnt, i;
-    PSCSICMD pcmd;
-
-    pDCB = pACB->pLinkDCB;
-    pdcb = pDCB;
-    do
-    {
-       cnt = pdcb->GoingSRBCnt;
-       psrb = pdcb->pGoingSRB;
-       for( i=0; i<cnt; i++)
-       {
-           psrb2 = psrb->pNextSRB;
-           pcmd = psrb->pcmd;
-           pcmd->result = DID_RESET << 16;
-
-/*         ReleaseSRB( pDCB, pSRB ); */
-
-           psrb->pNextSRB = pACB->pFreeSRB;
-           pACB->pFreeSRB = psrb;
-
-           pcmd->scsi_done( pcmd );
-           psrb  = psrb2;
-       }
-       pdcb->GoingSRBCnt = 0;;
-       pdcb->pGoingSRB = NULL;
-       pdcb->TagMask = 0;
-       pdcb = pdcb->pNextDCB;
-    }
-    while( pdcb != pDCB );
-}
-
-
-static void
-DC390_ResetSCSIBus( PACB pACB )
-{
-    USHORT ioport;
-    UCHAR  bval;
-    ULONG  flags;
-
-    save_flags(flags);
-    cli();
-    pACB->ACBFlag |= RESET_DEV;
-    ioport = pACB->IOPortBase;
-
-    bval = DMA_IDLE_CMD;
-    outb(bval,ioport+DMA_Cmd);
-
-    bval = RST_SCSI_BUS_CMD;
-    outb(bval,ioport+ScsiCmd);
-
-    restore_flags(flags);
-    return;
-}
-
-
-static void
-DC390_ScsiRstDetect( PACB pACB )
-{
-    ULONG wlval, flags;
-    USHORT ioport;
-    UCHAR  bval;
-
-#ifdef DC390_DEBUG0
-    printk("RST_DETEC");
-#endif
-    save_flags(flags);
-    sti();
-    wlval = jiffies + HZ;
-    while( jiffies < wlval );   /* delay 1 sec */
-
-    cli();
-    ioport = pACB->IOPortBase;
-    bval = DMA_IDLE_CMD;
-    outb(bval,ioport+DMA_Cmd);
-    bval = CLEAR_FIFO_CMD;
-    outb(bval,ioport+ScsiCmd);
-
-    if( pACB->ACBFlag & RESET_DEV )
-       pACB->ACBFlag |= RESET_DONE;
-    else
-    {
-       pACB->ACBFlag |= RESET_DETECT;
-
-       ResetDevParam( pACB );
-/*     DoingSRB_Done( pACB ); ???? */
-       RecoverSRB( pACB );
-       pACB->pActiveDCB = NULL;
-       pACB->ACBFlag = 0;
-       DoWaitingSRB( pACB );
-    }
-    restore_flags(flags);
-    return;
-}
-
-
-static void
-RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB )
-{
-    PSCSICMD  pcmd;
-
-    pSRB->SRBFlag |= AUTO_REQSENSE;
-    pSRB->Segment0[0] = *((PULONG) &(pSRB->CmdBlock[0]));
-    pSRB->Segment0[1] = *((PULONG) &(pSRB->CmdBlock[4]));
-    pSRB->Segment1[0] = (ULONG) ((pSRB->ScsiCmdLen << 8) + pSRB->SGcount);
-    pSRB->Segment1[1] = pSRB->TotalXferredLen;
-    pSRB->AdaptStatus = 0;
-    pSRB->TargetStatus = 0;
-
-    pcmd = pSRB->pcmd;
-
-    pSRB->Segmentx.address = (PUCHAR) &(pcmd->sense_buffer);
-    pSRB->Segmentx.length = sizeof(pcmd->sense_buffer);
-    pSRB->pSegmentList = &pSRB->Segmentx;
-    pSRB->SGcount = 1;
-    pSRB->SGIndex = 0;
-
-    *((PULONG) &(pSRB->CmdBlock[0])) = 0x00000003;
-    pSRB->CmdBlock[1] = pDCB->IdentifyMsg << 5;
-    *((PUSHORT) &(pSRB->CmdBlock[4])) = sizeof(pcmd->sense_buffer);
-    pSRB->ScsiCmdLen = 6;
-
-    pSRB->TotalXferredLen = 0;
-    pSRB->SGToBeXferLen = 0;
-    if( DC390_StartSCSI( pACB, pDCB, pSRB ) )
-       RewaitSRB( pDCB, pSRB );
-}
-
-
-static void
-EnableMsgOut2( PACB pACB, PSRB pSRB )
-{
-    USHORT ioport;
-    UCHAR  bval;
-
-    ioport = pACB->IOPortBase;
-    pSRB->MsgCnt = 1;
-    bval = SET_ATN_CMD;
-    outb(bval, ioport+ScsiCmd);
-}
-
-
-static void
-EnableMsgOut( PACB pACB, PSRB pSRB )
-{
-    pSRB->MsgOutBuf[0] = MSG_ABORT;
-    EnableMsgOut2( pACB, pSRB );
-}
-
-
-static void
-DC390_InvalidCmd( PACB pACB )
-{
-   UCHAR bval;
-   USHORT ioport;
-   PSRB   pSRB;
-
-    pSRB = pACB->pActiveDCB->pActiveSRB;
-    if( pSRB->SRBState & (SRB_START_+SRB_MSGOUT) )
-    {
-       ioport = pACB->IOPortBase;
-       bval = CLEAR_FIFO_CMD;
-       outb(bval,(ioport+ScsiCmd));
-    }
-}
-
diff --git a/linux/src/init/main.c b/linux/src/init/main.c
deleted file mode 100644
index 1aa15b9..0000000
--- a/linux/src/init/main.c
+++ /dev/null
@@ -1,1135 +0,0 @@
-/*
- *  linux/init/main.c
- *
- *  Copyright (C) 1991, 1992  Linus Torvalds
- *
- *  GK 2/5/95  -  Changed to support mounting root fs via NFS
- *  Added initrd & change_root: Werner Almesberger & Hans Lermen, Feb '96
- *  Moan early if gcc is old, avoiding bogus kernels - Paul Gortmaker, May '96
- */
-
-#define __KERNEL_SYSCALLS__
-#include <stdarg.h>
-
-#include <asm/system.h>
-#include <asm/io.h>
-
-#include <linux/types.h>
-#include <linux/fcntl.h>
-#include <linux/config.h>
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/tty.h>
-#include <linux/head.h>
-#include <linux/unistd.h>
-#include <linux/string.h>
-#include <linux/timer.h>
-#include <linux/fs.h>
-#include <linux/ctype.h>
-#include <linux/delay.h>
-#include <linux/utsname.h>
-#include <linux/ioport.h>
-#include <linux/hdreg.h>
-#include <linux/mm.h>
-#include <linux/major.h>
-#include <linux/blk.h>
-#ifdef CONFIG_ROOT_NFS
-#include <linux/nfs_fs.h>
-#endif
-#ifdef CONFIG_MTRR
-#include <asm/mtrr.h>
-#endif
-
-#include <asm/bugs.h>
-
-#include <linux/dev/glue/glue.h>
-
-/*
- * Versions of gcc older than that listed below may actually compile
- * and link okay, but the end product can have subtle run time bugs.
- * To avoid associated bogus bug reports, we flatly refuse to compile
- * with a gcc that is known to be too old from the very beginning.
- */
-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
-#error sorry, your GCC is too old. It builds incorrect kernels.
-#endif
-
-extern char _stext, _etext;
-extern const char *linux_banner;
-
-static char printbuf[1024];
-
-extern int console_loglevel;
-
-static int init(void *);
-extern int bdflush(void *);
-extern int kswapd(void *);
-extern void kswapd_setup(void);
-
-extern void init_modules(void);
-extern long console_init(long, long);
-extern long kmalloc_init(long,long);
-extern void sock_init(void);
-extern unsigned long pci_init(unsigned long, unsigned long);
-extern void sysctl_init(void);
-
-extern void no_scroll(char *str, int *ints);
-extern void swap_setup(char *str, int *ints);
-extern void buff_setup(char *str, int *ints);
-extern void panic_setup(char *str, int *ints);
-extern void bmouse_setup(char *str, int *ints);
-extern void msmouse_setup(char *str, int *ints);
-extern void lp_setup(char *str, int *ints);
-extern void eth_setup(char *str, int *ints);
-extern void xd_setup(char *str, int *ints);
-extern void xd_manual_geo_init(char *str, int *ints);
-extern void floppy_setup(char *str, int *ints);
-extern void st_setup(char *str, int *ints);
-extern void st0x_setup(char *str, int *ints);
-extern void advansys_setup(char *str, int *ints);
-extern void tmc8xx_setup(char *str, int *ints);
-extern void t128_setup(char *str, int *ints);
-extern void pas16_setup(char *str, int *ints);
-extern void generic_NCR5380_setup(char *str, int *intr);
-extern void generic_NCR53C400_setup(char *str, int *intr);
-extern void aha152x_setup(char *str, int *ints);
-extern void aha1542_setup(char *str, int *ints);
-extern void gdth_setup(char *str, int *ints);
-extern void aic7xxx_setup(char *str, int *ints);
-extern void AM53C974_setup(char *str, int *ints);
-extern void BusLogic_Setup(char *str, int *ints);
-extern void ncr53c8xx_setup(char *str, int *ints);
-extern void eata2x_setup(char *str, int *ints);
-extern void u14_34f_setup(char *str, int *ints);
-extern void fdomain_setup(char *str, int *ints);
-extern void in2000_setup(char *str, int *ints);
-extern void NCR53c406a_setup(char *str, int *ints);
-extern void wd7000_setup(char *str, int *ints);
-extern void ppa_setup(char *str, int *ints);
-extern void scsi_luns_setup(char *str, int *ints);
-extern void sound_setup(char *str, int *ints);
-extern void apm_setup(char *str, int *ints);
-extern void reboot_setup(char *str, int *ints);
-#ifdef CONFIG_CDU31A
-extern void cdu31a_setup(char *str, int *ints);
-#endif CONFIG_CDU31A
-#ifdef CONFIG_MCD
-extern void mcd_setup(char *str, int *ints);
-#endif CONFIG_MCD
-#ifdef CONFIG_MCDX
-extern void mcdx_setup(char *str, int *ints);
-#endif CONFIG_MCDX
-#ifdef CONFIG_SBPCD
-extern void sbpcd_setup(char *str, int *ints);
-#endif CONFIG_SBPCD
-#ifdef CONFIG_AZTCD
-extern void aztcd_setup(char *str, int *ints);
-#endif CONFIG_AZTCD
-#ifdef CONFIG_CDU535
-extern void sonycd535_setup(char *str, int *ints);
-#endif CONFIG_CDU535
-#ifdef CONFIG_GSCD
-extern void gscd_setup(char *str, int *ints);
-#endif CONFIG_GSCD
-#ifdef CONFIG_CM206
-extern void cm206_setup(char *str, int *ints);
-#endif CONFIG_CM206
-#ifdef CONFIG_OPTCD
-extern void optcd_setup(char *str, int *ints);
-#endif CONFIG_OPTCD
-#ifdef CONFIG_SJCD
-extern void sjcd_setup(char *str, int *ints);
-#endif CONFIG_SJCD
-#ifdef CONFIG_ISP16_CDI
-extern void isp16_setup(char *str, int *ints);
-#endif CONFIG_ISP16_CDI
-#ifdef CONFIG_BLK_DEV_RAM
-static void ramdisk_start_setup(char *str, int *ints);
-static void load_ramdisk(char *str, int *ints);
-static void prompt_ramdisk(char *str, int *ints);
-static void ramdisk_size(char *str, int *ints);
-#ifdef CONFIG_BLK_DEV_INITRD
-static void no_initrd(char *s,int *ints);
-#endif
-#endif CONFIG_BLK_DEV_RAM
-#ifdef CONFIG_ISDN_DRV_ICN
-extern void icn_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_ISDN_DRV_HISAX
-extern void HiSax_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_ISDN_DRV_PCBIT
-extern void pcbit_setup(char *str, int *ints);
-#endif
-
-#ifdef CONFIG_ATARIMOUSE
-extern void atari_mouse_setup (char *str, int *ints);
-#endif
-#ifdef CONFIG_DMASOUND
-extern void dmasound_setup (char *str, int *ints);
-#endif
-#ifdef CONFIG_ATARI_SCSI
-extern void atari_scsi_setup (char *str, int *ints);
-#endif
-extern void wd33c93_setup (char *str, int *ints);
-extern void gvp11_setup (char *str, int *ints);
-
-#ifdef CONFIG_CYCLADES
-extern void cy_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_DIGI
-extern void pcxx_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_RISCOM8
-extern void riscom8_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_SPECIALIX
-extern void specialix_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_BAYCOM
-extern void baycom_setup(char *str, int *ints);
-#endif
-
-#ifdef CONFIG_PARIDE_PD
-extern void pd_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_PARIDE_PF
-extern void pf_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_PARIDE_PT
-extern void pt_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_PARIDE_PG
-extern void pg_setup(char *str, int *ints);
-#endif
-#ifdef CONFIG_PARIDE_PCD
-extern void pcd_setup(char *str, int *ints);
-#endif
-
-#if defined(CONFIG_SYSVIPC) || defined(CONFIG_KERNELD)
-extern void ipc_init(void);
-#endif
-
-/*
- * Boot command-line arguments
- */
-#define MAX_INIT_ARGS 8
-#define MAX_INIT_ENVS 8
-
-extern void time_init(void);
-
-static unsigned long memory_start = 0;
-static unsigned long memory_end = 0;
-
-int rows, cols;
-
-#ifdef CONFIG_BLK_DEV_RAM
-extern int rd_doload;          /* 1 = load ramdisk, 0 = don't load */
-extern int rd_prompt;          /* 1 = prompt for ramdisk, 0 = don't prompt */
-extern int rd_size;            /* Size of the ramdisk(s) */
-extern int rd_image_start;     /* starting block # of image */
-#ifdef CONFIG_BLK_DEV_INITRD
-kdev_t real_root_dev;
-#endif
-#endif
-
-int root_mountflags = MS_RDONLY;
-char *execute_command = 0;
-
-#ifdef CONFIG_ROOT_NFS
-char nfs_root_name[NFS_ROOT_NAME_LEN] = { "default" };
-char nfs_root_addrs[NFS_ROOT_ADDRS_LEN] = { "" };
-#endif
-
-extern void dquot_init(void);
-
-static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
-static char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
-
-static char * argv_rc[] = { "/bin/sh", NULL };
-static char * envp_rc[] = { "HOME=/", "TERM=linux", NULL };
-
-static char * argv[] = { "-/bin/sh",NULL };
-static char * envp[] = { "HOME=/usr/root", "TERM=linux", NULL };
-
-char *get_options(char *str, int *ints)
-{
-       char *cur = str;
-       int i=1;
-
-       while (cur && isdigit(*cur) && i <= 10) {
-               ints[i++] = simple_strtoul(cur,NULL,0);
-               if ((cur = strchr(cur,',')) != NULL)
-                       cur++;
-       }
-       ints[0] = i-1;
-       return(cur);
-}
-
-static void profile_setup(char *str, int *ints)
-{
-       if (ints[0] > 0)
-               prof_shift = (unsigned long) ints[1];
-       else
-#ifdef CONFIG_PROFILE_SHIFT
-               prof_shift = CONFIG_PROFILE_SHIFT;
-#else
-               prof_shift = 2;
-#endif
-}
-
-struct kernel_param {
-       const char *str;
-       void (*setup_func)(char *, int *);
-} ;
-
-struct kernel_param bootsetups[] = {
-       { "reserve=", reserve_setup },
-       { "profile=", profile_setup },
-#ifdef CONFIG_BLK_DEV_RAM
-       { "ramdisk_start=", ramdisk_start_setup },
-       { "load_ramdisk=", load_ramdisk },
-       { "prompt_ramdisk=", prompt_ramdisk },
-       { "ramdisk=", ramdisk_size },
-       { "ramdisk_size=", ramdisk_size },
-#ifdef CONFIG_BLK_DEV_INITRD
-       { "noinitrd", no_initrd },
-#endif
-#endif
-       { "swap=", swap_setup },
-       { "buff=", buff_setup },
-       { "panic=", panic_setup },
-       { "no-scroll", no_scroll },
-#ifdef CONFIG_BUGi386
-       { "no-hlt", no_halt },
-       { "no387", no_387 },
-       { "reboot=", reboot_setup },
-#endif
-#ifdef CONFIG_INET
-       { "ether=", eth_setup },
-#endif
-#ifdef CONFIG_PRINTER
-        { "lp=", lp_setup },
-#endif
-#ifdef CONFIG_SCSI
-       { "max_scsi_luns=", scsi_luns_setup },
-#endif
-#ifdef CONFIG_SCSI_ADVANSYS
-       { "advansys=", advansys_setup },
-#endif
-#if defined(CONFIG_BLK_DEV_HD)
-       { "hd=", hd_setup },
-#endif
-#ifdef CONFIG_CHR_DEV_ST
-       { "st=", st_setup },
-#endif
-#ifdef CONFIG_BUSMOUSE
-       { "bmouse=", bmouse_setup },
-#endif
-#ifdef CONFIG_MS_BUSMOUSE
-       { "msmouse=", msmouse_setup },
-#endif
-#ifdef CONFIG_SCSI_SEAGATE
-       { "st0x=", st0x_setup },
-       { "tmc8xx=", tmc8xx_setup },
-#endif
-#ifdef CONFIG_SCSI_T128
-       { "t128=", t128_setup },
-#endif
-#ifdef CONFIG_SCSI_PAS16
-       { "pas16=", pas16_setup },
-#endif
-#ifdef CONFIG_SCSI_GENERIC_NCR5380
-       { "ncr5380=", generic_NCR5380_setup },
-       { "ncr53c400=", generic_NCR53C400_setup },
-#endif
-#ifdef CONFIG_SCSI_AHA152X
-       { "aha152x=", aha152x_setup},
-#endif
-#ifdef CONFIG_SCSI_AHA1542
-       { "aha1542=", aha1542_setup},
-#endif
-#ifdef CONFIG_SCSI_GDTH
-       { "gdth=", gdth_setup},
-#endif
-#ifdef CONFIG_SCSI_AIC7XXX
-       { "aic7xxx=", aic7xxx_setup},
-#endif
-#ifdef CONFIG_SCSI_BUSLOGIC
-       { "BusLogic=", BusLogic_Setup},
-#endif
-#ifdef CONFIG_SCSI_NCR53C8XX
-       { "ncr53c8xx=", ncr53c8xx_setup},
-#endif
-#ifdef CONFIG_SCSI_EATA
-       { "eata=", eata2x_setup},
-#endif
-#ifdef CONFIG_SCSI_U14_34F
-       { "u14-34f=", u14_34f_setup},
-#endif
-#ifdef CONFIG_SCSI_AM53C974
-        { "AM53C974=", AM53C974_setup},
-#endif
-#ifdef CONFIG_SCSI_NCR53C406A
-       { "ncr53c406a=", NCR53c406a_setup},
-#endif
-#ifdef CONFIG_SCSI_FUTURE_DOMAIN
-       { "fdomain=", fdomain_setup},
-#endif
-#ifdef CONFIG_SCSI_IN2000
-       { "in2000=", in2000_setup},
-#endif
-#ifdef CONFIG_SCSI_7000FASST
-       { "wd7000=", wd7000_setup},
-#endif
-#ifdef CONFIG_SCSI_PPA
-        { "ppa=", ppa_setup },
-#endif
-#ifdef CONFIG_BLK_DEV_XD
-       { "xd=", xd_setup },
-       { "xd_geo=", xd_manual_geo_init },
-#endif
-#ifdef CONFIG_BLK_DEV_FD
-       { "floppy=", floppy_setup },
-#endif
-#ifdef CONFIG_CDU31A
-       { "cdu31a=", cdu31a_setup },
-#endif CONFIG_CDU31A
-#ifdef CONFIG_MCD
-       { "mcd=", mcd_setup },
-#endif CONFIG_MCD
-#ifdef CONFIG_MCDX
-       { "mcdx=", mcdx_setup },
-#endif CONFIG_MCDX
-#ifdef CONFIG_SBPCD
-       { "sbpcd=", sbpcd_setup },
-#endif CONFIG_SBPCD
-#ifdef CONFIG_AZTCD
-       { "aztcd=", aztcd_setup },
-#endif CONFIG_AZTCD
-#ifdef CONFIG_CDU535
-       { "sonycd535=", sonycd535_setup },
-#endif CONFIG_CDU535
-#ifdef CONFIG_GSCD
-       { "gscd=", gscd_setup },
-#endif CONFIG_GSCD
-#ifdef CONFIG_CM206
-       { "cm206=", cm206_setup },
-#endif CONFIG_CM206
-#ifdef CONFIG_OPTCD
-       { "optcd=", optcd_setup },
-#endif CONFIG_OPTCD
-#ifdef CONFIG_SJCD
-       { "sjcd=", sjcd_setup },
-#endif CONFIG_SJCD
-#ifdef CONFIG_ISP16_CDI
-       { "isp16=", isp16_setup },
-#endif CONFIG_ISP16_CDI
-#ifdef CONFIG_SOUND
-       { "sound=", sound_setup },
-#endif
-#ifdef CONFIG_ISDN_DRV_ICN
-       { "icn=", icn_setup },
-#endif
-#ifdef CONFIG_ISDN_DRV_HISAX
-       { "hisax=", HiSax_setup },
-       { "HiSax=", HiSax_setup },
-#endif
-#ifdef CONFIG_ISDN_DRV_PCBIT
-       { "pcbit=", pcbit_setup },
-#endif
-#ifdef CONFIG_ATARIMOUSE
-       { "atamouse=", atari_mouse_setup },
-#endif
-#ifdef CONFIG_DMASOUND
-       { "dmasound=", dmasound_setup },
-#endif
-#ifdef CONFIG_ATARI_SCSI
-       { "atascsi=", atari_scsi_setup },
-#endif
-#if defined(CONFIG_A3000_SCSI) || defined(CONFIG_A2091_SCSI) \
-           || defined(CONFIG_GVP11_SCSI)
-       { "wd33c93=", wd33c93_setup },
-#endif
-#if defined(CONFIG_GVP11_SCSI)
-       { "gvp11=", gvp11_setup },
-#endif
-#ifdef CONFIG_CYCLADES
-       { "cyclades=", cy_setup },
-#endif
-#ifdef CONFIG_DIGI
-       { "digi=", pcxx_setup },
-#endif
-#ifdef CONFIG_RISCOM8
-       { "riscom8=", riscom8_setup },
-#endif
-#ifdef CONFIG_SPECIALIX
-       { "specialix=", specialix_setup },
-#endif
-#ifdef CONFIG_BAYCOM
-       { "baycom=", baycom_setup },
-#endif
-#ifdef CONFIG_APM
-       { "apm=", apm_setup },
-#endif
-       { 0, 0 }
-};
-
-static struct kernel_param raw_params[] = {
-
-#ifdef CONFIG_PARIDE_PD
-       { "pd.", pd_setup },
-#endif
-#ifdef CONFIG_PARIDE_PCD
-       { "pcd.", pcd_setup },
-#endif
-#ifdef CONFIG_PARIDE_PF
-       { "pf.", pf_setup },
-#endif
-#ifdef CONFIG_PARIDE_PT
-       { "pt.", pt_setup },
-#endif
-#ifdef CONFIG_PARIDE_PG
-       { "pg.", pg_setup },
-#endif
-       { 0, 0 }
-} ;
-
-
-#ifdef CONFIG_BLK_DEV_RAM
-static void ramdisk_start_setup(char *str, int *ints)
-{
-   if (ints[0] > 0 && ints[1] >= 0)
-      rd_image_start = ints[1];
-}
-
-static void load_ramdisk(char *str, int *ints)
-{
-   if (ints[0] > 0 && ints[1] >= 0)
-      rd_doload = ints[1] & 3;
-}
-
-static void prompt_ramdisk(char *str, int *ints)
-{
-   if (ints[0] > 0 && ints[1] >= 0)
-      rd_prompt = ints[1] & 1;
-}
-
-static void ramdisk_size(char *str, int *ints)
-{
-       if (ints[0] > 0 && ints[1] >= 0)
-               rd_size = ints[1];
-}
-
-#endif
-
-static int checksetup(char *line)
-{
-       int i = 0;
-       int ints[11];
-
-#ifdef CONFIG_BLK_DEV_IDE
-       /* ide driver needs the basic string, rather than pre-processed values 
*/
-       if (!strncmp(line,"ide",3) || (!strncmp(line,"hd",2) && line[2] != 
'=')) {
-               ide_setup(line);
-               return 1;
-       }
-#endif
-       while (bootsetups[i].str) {
-               int n = strlen(bootsetups[i].str);
-               if (!strncmp(line,bootsetups[i].str,n)) {
-                       bootsetups[i].setup_func(get_options(line+n,ints), 
ints);
-                       return 1;
-               }
-               i++;
-       }
-
-        for (i=0; raw_params[i].str; i++) {
-                int n = strlen(raw_params[i].str);
-                if (!strncmp(line,raw_params[i].str,n)) {
-                        raw_params[i].setup_func(line+n, NULL);
-                        return 1;
-                }
-        }
-
-       return 0;
-}
-
-/* this should be approx 2 Bo*oMips to start (note initial shift), and will
-   still work even if initially too large, it will just take slightly longer */
-unsigned long loops_per_sec = (1<<12);
-
-#if defined(__SMP__) && defined(__i386__)
-unsigned long smp_loops_per_tick = 1000000;
-#endif
-
-/* This is the number of bits of precision for the loops_per_second.  Each
-   bit takes on average 1.5/HZ seconds.  This (like the original) is a little
-   better than 1% */
-#define LPS_PREC 8
-
-void calibrate_delay(void)
-{
-       int ticks;
-       int loopbit;
-       int lps_precision = LPS_PREC;
-
-       loops_per_sec = (1<<12);
-
-       printk("Calibrating delay loop.. ");
-       while (loops_per_sec <<= 1) {
-               /* wait for "start of" clock tick */
-               ticks = jiffies;
-               while (ticks == jiffies)
-                       /* nothing */;
-               /* Go .. */
-               ticks = jiffies;
-               __delay(loops_per_sec);
-               ticks = jiffies - ticks;
-               if (ticks)
-                       break;
-               }
-
-/* Do a binary approximation to get loops_per_second set to equal one clock
-   (up to lps_precision bits) */
-       loops_per_sec >>= 1;
-       loopbit = loops_per_sec;
-       while ( lps_precision-- && (loopbit >>= 1) ) {
-               loops_per_sec |= loopbit;
-               ticks = jiffies;
-               while (ticks == jiffies);
-               ticks = jiffies;
-               __delay(loops_per_sec);
-               if (jiffies != ticks)   /* longer than 1 tick */
-                       loops_per_sec &= ~loopbit;
-       }
-
-/* finally, adjust loops per second in terms of seconds instead of clocks */   
-       loops_per_sec *= HZ;
-/* Round the value and print it */     
-       printk("ok - %lu.%02lu BogoMIPS\n",
-               (loops_per_sec+2500)/500000,
-               ((loops_per_sec+2500)/5000) % 100);
-
-#if defined(__SMP__) && defined(__i386__)
-       smp_loops_per_tick = loops_per_sec / 400;
-#endif
-}
-
-static void parse_root_dev(char * line)
-{
-       int base = 0;
-       static struct dev_name_struct {
-               const char *name;
-               const int num;
-       } devices[] = {
-               { "nfs",     0x00ff },
-               { "loop",    0x0700 },
-               { "hda",     0x0300 },
-               { "hdb",     0x0340 },
-               { "hdc",     0x1600 },
-               { "hdd",     0x1640 },
-               { "hde",     0x2100 },
-               { "hdf",     0x2140 },
-               { "hdg",     0x2200 },
-               { "hdh",     0x2240 },
-               { "sda",     0x0800 },
-               { "sdb",     0x0810 },
-               { "sdc",     0x0820 },
-               { "sdd",     0x0830 },
-               { "sde",     0x0840 },
-               { "sdf",     0x0850 },
-               { "sdg",     0x0860 },
-               { "sdh",     0x0870 },
-               { "sdi",     0x0880 },
-               { "sdj",     0x0890 },
-               { "sdk",     0x08a0 },
-               { "sdl",     0x08b0 },
-               { "sdm",     0x08c0 },
-               { "sdn",     0x08d0 },
-               { "sdo",     0x08e0 },
-               { "sdp",     0x08f0 },
-               { "fd",      0x0200 },
-               { "xda",     0x0d00 },
-               { "xdb",     0x0d40 },
-               { "ram",     0x0100 },
-               { "scd",     0x0b00 },
-               { "mcd",     0x1700 },
-               { "cdu535",  0x1800 },
-               { "aztcd",   0x1d00 },
-               { "cm206cd", 0x2000 },
-               { "gscd",    0x1000 },
-               { "sbpcd",   0x1900 },
-               { "sonycd",  0x1800 },
-#ifdef CONFIG_PARIDE_PD
-                       { "pda",     0x2d00 },
-                       { "pdb",     0x2d10 },
-                       { "pdc",     0x2d20 },
-                       { "pdd",     0x2d30 },
-#endif
-#ifdef CONFIG_PARIDE_PCD
-               { "pcd",     0x2e00 },
-#endif
-#ifdef CONFIG_PARIDE_PF
-               { "pf",      0x2f00 },
-#endif
-               { NULL, 0 }
-       };
-
-       if (strncmp(line,"/dev/",5) == 0) {
-               struct dev_name_struct *dev = devices;
-               line += 5;
-               do {
-                       int len = strlen(dev->name);
-                       if (strncmp(line,dev->name,len) == 0) {
-                               line += len;
-                               base = dev->num;
-                               break;
-                       }
-                       dev++;
-               } while (dev->name);
-       }
-       ROOT_DEV = to_kdev_t(base + simple_strtoul(line,NULL,base?10:16));
-}
-
-/*
- * This is a simple kernel command line parsing function: it parses
- * the command line, and fills in the arguments/environment to init
- * as appropriate. Any cmd-line option is taken to be an environment
- * variable if it contains the character '='.
- *
- *
- * This routine also checks for options meant for the kernel.
- * These options are not given to init - they are for internal kernel use only.
- */
-static void parse_options(char *line)
-{
-       char *next;
-       int args, envs;
-
-       if (!*line)
-               return;
-       args = 0;
-       envs = 1;       /* TERM is set to 'linux' by default */
-       next = line;
-       while ((line = next) != NULL) {
-               if ((next = strchr(line,' ')) != NULL)
-                       *next++ = 0;
-               /*
-                * check for kernel options first..
-                */
-               if (!strncmp(line,"root=",5)) {
-                       parse_root_dev(line+5);
-                       continue;
-               }
-#ifdef CONFIG_ROOT_NFS
-               if (!strncmp(line, "nfsroot=", 8)) {
-                       int n;
-                       line += 8;
-                       ROOT_DEV = MKDEV(UNNAMED_MAJOR, 255);
-                       if (line[0] == '/' || line[0] == ',' || (line[0] >= '0' 
&& line[0] <= '9')) {
-                               strncpy(nfs_root_name, line, 
sizeof(nfs_root_name));
-                               nfs_root_name[sizeof(nfs_root_name)-1] = '\0';
-                               continue;
-                       }
-                       n = strlen(line) + strlen(NFS_ROOT);
-                       if (n >= sizeof(nfs_root_name))
-                               line[sizeof(nfs_root_name) - strlen(NFS_ROOT) - 
1] = '\0';
-                       sprintf(nfs_root_name, NFS_ROOT, line);
-                       continue;
-               }
-               if (!strncmp(line, "nfsaddrs=", 9)) {
-                       line += 9;
-                       strncpy(nfs_root_addrs, line, sizeof(nfs_root_addrs));
-                       nfs_root_addrs[sizeof(nfs_root_addrs)-1] = '\0';
-                       continue;
-               }
-#endif
-               if (!strcmp(line,"ro")) {
-                       root_mountflags |= MS_RDONLY;
-                       continue;
-               }
-               if (!strcmp(line,"rw")) {
-                       root_mountflags &= ~MS_RDONLY;
-                       continue;
-               }
-               if (!strcmp(line,"debug")) {
-                       console_loglevel = 10;
-                       continue;
-               }
-               if (!strncmp(line,"init=",5)) {
-                       line += 5;
-                       execute_command = line;
-                       continue;
-               }
-               if (checksetup(line))
-                       continue;
-               /*
-                * Then check if it's an environment variable or
-                * an option.
-                */
-               if (strchr(line,'=')) {
-                       if (envs >= MAX_INIT_ENVS)
-                               break;
-                       envp_init[++envs] = line;
-               } else {
-                       if (args >= MAX_INIT_ARGS)
-                               break;
-                       argv_init[++args] = line;
-               }
-       }
-       argv_init[args+1] = NULL;
-       envp_init[envs+1] = NULL;
-}
-
-
-extern void setup_arch(char **, unsigned long *, unsigned long *);
-extern void arch_syms_export(void);
-
-#ifndef __SMP__
-
-/*
- *     Uniprocessor idle thread
- */
- 
-int cpu_idle(void *unused)
-{
-       for(;;)
-               idle();
-}
-
-#else
-
-/*
- *     Multiprocessor idle thread is in arch/...
- */
- 
-extern int cpu_idle(void * unused);
-
-/*
- *     Activate a secondary processor.
- */
- 
-asmlinkage void start_secondary(void)
-{
-       trap_init();
-       init_IRQ();
-       smp_callin();
-       cpu_idle(NULL);
-}
-
-
-
-/*
- *     Called by CPU#0 to activate the rest.
- */
- 
-static void smp_init(void)
-{
-       int i, j;
-       smp_boot_cpus();
-       
-       /*
-        *      Create the slave init tasks as sharing pid 0.
-        *
-        *      This should only happen if we have virtual CPU numbers
-        *      higher than 0.
-        */
-
-       for (i=1; i<smp_num_cpus; i++)
-       {
-               struct task_struct *n, *p;
-
-               j = cpu_logical_map[i];
-               /*
-                *      We use kernel_thread for the idlers which are
-                *      unlocked tasks running in kernel space.
-                */
-               kernel_thread(cpu_idle, NULL, CLONE_PID);
-               /*
-                *      Don't assume linear processor numbering
-                */
-               current_set[j]=task[i];
-               current_set[j]->processor=j;
-               cli();
-               n = task[i]->next_run;
-               p = task[i]->prev_run;
-               nr_running--;
-               n->prev_run = p;
-               p->next_run = n;
-               task[i]->next_run = task[i]->prev_run = task[i];
-               sti();
-       }
-}              
-
-/*
- *     The autoprobe routines assume CPU#0 on the i386
- *     so we don't actually set the game in motion until
- *     they are finished.
- */
- 
-static void smp_begin(void)
-{
-       smp_threads_ready=1;
-       smp_commence();
-}
-       
-#endif
-
-/*
- *     Activate the first processor.
- */
- 
-asmlinkage void start_kernel(void)
-{
-       char * command_line;
-
-/*
- *     This little check will move.
- */
-
-#ifdef __SMP__
-       static int first_cpu=1;
-       
-       if(!first_cpu)
-               start_secondary();
-       first_cpu=0;
-       
-#endif 
-/*
- * Interrupts are still disabled. Do necessary setups, then
- * enable them
- */
-       setup_arch(&command_line, &memory_start, &memory_end);
-       memory_start = paging_init(memory_start,memory_end);
-       trap_init();
-       init_IRQ();
-       sched_init();
-       time_init();
-       parse_options(command_line);
-#ifdef CONFIG_MODULES
-       init_modules();
-#endif
-#ifdef CONFIG_PROFILE
-       if (!prof_shift)
-#ifdef CONFIG_PROFILE_SHIFT
-               prof_shift = CONFIG_PROFILE_SHIFT;
-#else
-               prof_shift = 2;
-#endif
-#endif
-       if (prof_shift) {
-               prof_buffer = (unsigned int *) memory_start;
-               /* only text is profiled */
-               prof_len = (unsigned long) &_etext - (unsigned long) &_stext;
-               prof_len >>= prof_shift;
-               memory_start += prof_len * sizeof(unsigned int);
-               memset(prof_buffer, 0, prof_len * sizeof(unsigned int));
-       }
-       memory_start = console_init(memory_start,memory_end);
-#ifdef CONFIG_PCI
-       memory_start = pci_init(memory_start,memory_end);
-#endif
-       memory_start = kmalloc_init(memory_start,memory_end);
-       sti();
-       calibrate_delay();
-       memory_start = inode_init(memory_start,memory_end);
-       memory_start = file_table_init(memory_start,memory_end);
-       memory_start = name_cache_init(memory_start,memory_end);
-#ifdef CONFIG_BLK_DEV_INITRD
-       if (initrd_start && initrd_start < memory_start) {
-               printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - "
-                   "disabling it.\n",initrd_start,memory_start);
-               initrd_start = 0;
-       }
-#endif
-       mem_init(memory_start,memory_end);
-       buffer_init();
-       sock_init();
-#if defined(CONFIG_SYSVIPC) || defined(CONFIG_KERNELD)
-       ipc_init();
-#endif
-       dquot_init();
-       arch_syms_export();
-       sti();
-       check_bugs();
-
-#if defined(CONFIG_MTRR) && defined(__SMP__)
-       init_mtrr_config();
-#endif
-
-
-       printk(linux_banner);
-#ifdef __SMP__
-       smp_init();
-#endif
-       sysctl_init();
-       /* 
-        *      We count on the initial thread going ok 
-        *      Like idlers init is an unlocked kernel thread, which will
-        *      make syscalls (and thus be locked).
-        */
-       kernel_thread(init, NULL, 0);
-/*
- * task[0] is meant to be used as an "idle" task: it may not sleep, but
- * it might do some general things like count free pages or it could be
- * used to implement a reasonable LRU algorithm for the paging routines:
- * anything that can be useful, but shouldn't take time from the real
- * processes.
- *
- * Right now task[0] just does a infinite idle loop.
- */
-       cpu_idle(NULL);
-}
-
-static int printf(const char *fmt, ...)
-{
-       va_list args;
-       int i;
-
-       va_start(args, fmt);
-       write(1,printbuf,i=vsprintf(printbuf, fmt, args));
-       va_end(args);
-       return i;
-}
-
-static int do_rc(void * rc)
-{
-       close(0);
-       if (open(rc,O_RDONLY,0))
-               return -1;
-       return execve("/bin/sh", argv_rc, envp_rc);
-}
-
-static int do_shell(void * shell)
-{
-       close(0);close(1);close(2);
-       setsid();
-       (void) open("/dev/tty1",O_RDWR,0);
-       (void) dup(0);
-       (void) dup(0);
-       return execve(shell, argv, envp);
-}
-
-#ifdef CONFIG_BLK_DEV_INITRD
-static int do_linuxrc(void * shell)
-{
-       static char *argv[] = { "linuxrc", NULL, };
-
-       close(0);close(1);close(2);
-       setsid();
-       (void) open("/dev/tty1",O_RDWR,0);
-       (void) dup(0);
-       (void) dup(0);
-       return execve(shell, argv, envp_init);
-}
-
-static void no_initrd(char *s,int *ints)
-{
-       mount_initrd = 0;
-}
-#endif
-
-static int init(void * unused)
-{
-       int pid,i;
-#ifdef CONFIG_BLK_DEV_INITRD
-       int real_root_mountflags;
-#endif
-
-       /* Launch bdflush from here, instead of the old syscall way. */
-       kernel_thread(bdflush, NULL, 0);
-       /* Start the background pageout daemon. */
-       kswapd_setup();
-       kernel_thread(kswapd, NULL, 0);
-
-#ifdef CONFIG_BLK_DEV_INITRD
-       real_root_dev = ROOT_DEV;
-       real_root_mountflags = root_mountflags;
-       if (initrd_start && mount_initrd) root_mountflags &= ~MS_RDONLY;
-       else mount_initrd =0;
-#endif
-       setup();
-
-#ifdef __SMP__
-       /*
-        *      With the devices probed and setup we can
-        *      now enter SMP mode.
-        */
-       
-       smp_begin();
-#endif 
-
-       #ifdef CONFIG_UMSDOS_FS
-       {
-               /*
-                       When mounting a umsdos fs as root, we detect
-                       the pseudo_root (/linux) and initialise it here.
-                       pseudo_root is defined in fs/umsdos/inode.c
-               */
-               extern struct inode *pseudo_root;
-               if (pseudo_root != NULL){
-                       current->fs->root = pseudo_root;
-                       current->fs->pwd  = pseudo_root;
-               }
-       }
-       #endif
-
-#ifdef CONFIG_BLK_DEV_INITRD
-       root_mountflags = real_root_mountflags;
-       if (mount_initrd && ROOT_DEV != real_root_dev && ROOT_DEV == 
MKDEV(RAMDISK_MAJOR,0)) {
-               int error;
-
-               pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD);
-               if (pid>0)
-                       while (pid != wait(&i));
-               if (real_root_dev != MKDEV(RAMDISK_MAJOR, 0)) {
-                       error = change_root(real_root_dev,"/initrd");
-                       if (error)
-                               printk(KERN_ERR "Change root to /initrd: "
-                                   "error %d\n",error);
-               }
-       }
-#endif
-       
-       /*
-        *      This keeps serial console MUCH cleaner, but does assume
-        *      the console driver checks there really is a video device
-        *      attached (Sparc effectively does).
-        */
-
-       if ((open("/dev/tty1",O_RDWR,0) < 0) &&
-           (open("/dev/ttyS0",O_RDWR,0) < 0))
-               printk("Unable to open an initial console.\n");
-                       
-       (void) dup(0);
-       (void) dup(0);
-
-       if (!execute_command) {
-               execve("/etc/init",argv_init,envp_init);
-               execve("/bin/init",argv_init,envp_init);
-               execve("/sbin/init",argv_init,envp_init);
-               /* if this fails, fall through to original stuff */
-
-               pid = kernel_thread(do_rc, "/etc/rc", SIGCHLD);
-               if (pid>0)
-                       while (pid != wait(&i))
-                               /* nothing */;
-       }
-
-       while (1) {
-               pid = kernel_thread(do_shell,
-                       execute_command ? execute_command : "/bin/sh",
-                       SIGCHLD);
-               if (pid < 0) {
-                       printf("Fork failed in init\n\r");
-                       continue;
-               }
-               while (1)
-                       if (pid == wait(&i))
-                               break;
-               printf("\n\rchild %d died with code %04x\n\r",pid,i);
-               sync();
-       }
-       return -1;
-}
diff --git a/linux/src/init/version.c b/linux/src/init/version.c
deleted file mode 100644
index 0196fdf..0000000
--- a/linux/src/init/version.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  linux/version.c
- *
- *  Copyright (C) 1992  Theodore Ts'o
- *
- *  May be freely distributed as part of Linux.
- */
-
-#include <linux/config.h>
-#include <linux/utsname.h>
-#include <linux/version.h>
-#include <linux/compile.h>
-
-/* make the "checkconfig" script happy: we really need to include config.h */
-#ifdef CONFIG_BOGUS
-#endif
-
-#define version(a) Version_ ## a
-#define version_string(a) version(a)
-
-int version_string(LINUX_VERSION_CODE) = 0;
-
-struct new_utsname system_utsname = {
-       UTS_SYSNAME, UTS_NODENAME, UTS_RELEASE, UTS_VERSION,
-       UTS_MACHINE, UTS_DOMAINNAME
-};
-
-const char *linux_banner = 
-       "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
-       LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
diff --git a/linux/src/kernel/dma.c b/linux/src/kernel/dma.c
deleted file mode 100644
index 724d8ca..0000000
--- a/linux/src/kernel/dma.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $Id: dma.c,v 1.1 1999/04/26 05:58:29 tb Exp $
- * linux/kernel/dma.c: A DMA channel allocator. Inspired by linux/kernel/irq.c.
- *
- * Written by Hennus Bergman, 1992.
- *
- * 1994/12/26: Changes by Alex Nash to fix a minor bug in /proc/dma.
- *   In the previous version the reported device could end up being wrong,
- *   if a device requested a DMA channel that was already in use.
- *   [It also happened to remove the sizeof(char *) == sizeof(int)
- *   assumption introduced because of those /proc/dma patches. -- Hennus]
- */
-
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <asm/dma.h>
-#include <asm/system.h>
-
-
-/* A note on resource allocation:
- *
- * All drivers needing DMA channels, should allocate and release them
- * through the public routines `request_dma()' and `free_dma()'.
- *
- * In order to avoid problems, all processes should allocate resources in
- * the same sequence and release them in the reverse order.
- *
- * So, when allocating DMAs and IRQs, first allocate the IRQ, then the DMA.
- * When releasing them, first release the DMA, then release the IRQ.
- * If you don't, you may cause allocation requests to fail unnecessarily.
- * This doesn't really matter now, but it will once we get real semaphores
- * in the kernel.
- */
-
-
-
-/* Channel n is busy iff dma_chan_busy[n].lock != 0.
- * DMA0 used to be reserved for DRAM refresh, but apparently not any more...
- * DMA4 is reserved for cascading.
- */
-
-struct dma_chan {
-       int  lock;
-       const char *device_id;
-};
-
-static struct dma_chan dma_chan_busy[MAX_DMA_CHANNELS] = {
-       { 0, 0 },
-       { 0, 0 },
-       { 0, 0 },
-       { 0, 0 },
-       { 1, "cascade" },
-       { 0, 0 },
-       { 0, 0 },
-       { 0, 0 }
-};
-
-int get_dma_list(char *buf)
-{
-       int i, len = 0;
-
-       for (i = 0 ; i < MAX_DMA_CHANNELS ; i++) {
-               if (dma_chan_busy[i].lock) {
-                   len += sprintf(buf+len, "%2d: %s\n",
-                                  i,
-                                  dma_chan_busy[i].device_id);
-               }
-       }
-       return len;
-} /* get_dma_list */
-
-
-int request_dma(unsigned int dmanr, const char * device_id)
-{
-       if (dmanr >= MAX_DMA_CHANNELS)
-               return -EINVAL;
-
-       if (xchg(&dma_chan_busy[dmanr].lock, 1) != 0)
-               return -EBUSY;
-
-       dma_chan_busy[dmanr].device_id = device_id;
-
-       /* old flag was 0, now contains 1 to indicate busy */
-       return 0;
-} /* request_dma */
-
-
-void free_dma(unsigned int dmanr)
-{
-       if (dmanr >= MAX_DMA_CHANNELS) {
-               printk("Trying to free DMA%d\n", dmanr);
-               return;
-       }
-
-       if (xchg(&dma_chan_busy[dmanr].lock, 0) == 0) {
-               printk("Trying to free free DMA%d\n", dmanr);
-               return;
-       }       
-
-} /* free_dma */
diff --git a/linux/src/kernel/printk.c b/linux/src/kernel/printk.c
deleted file mode 100644
index da8ffca..0000000
--- a/linux/src/kernel/printk.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- *  linux/kernel/printk.c
- *
- *  Copyright (C) 1991, 1992  Linus Torvalds
- *
- * Modified to make sys_syslog() more flexible: added commands to
- * return the last 4k of kernel messages, regardless of whether
- * they've been read or not.  Added option to suppress kernel printk's
- * to the console.  Added hook for sending the console messages
- * elsewhere, in preparation for a serial line console (someday).
- * Ted Ts'o, 2/11/93.
- */
-
-#include <stdarg.h>
-
-#include <asm/segment.h>
-#include <asm/system.h>
-
-#include <linux/errno.h>
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/mm.h>
-#include <linux/tty.h>
-#include <linux/tty_driver.h>
-
-#define LOG_BUF_LEN    8192
-
-static char buf[1024];
-
-extern void console_print(const char *);
-
-/* printk's without a loglevel use this.. */
-#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
-
-/* We show everything that is MORE important than this.. */
-#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
-#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
-
-unsigned long log_size = 0;
-struct wait_queue * log_wait = NULL;
-int console_loglevel = DEFAULT_CONSOLE_LOGLEVEL;
-
-static void (*console_print_proc)(const char *) = 0;
-static char log_buf[LOG_BUF_LEN];
-static unsigned long log_start = 0;
-static unsigned long logged_chars = 0;
-
-/*
- * Commands to sys_syslog:
- *
- *     0 -- Close the log.  Currently a NOP.
- *     1 -- Open the log. Currently a NOP.
- *     2 -- Read from the log.
- *     3 -- Read up to the last 4k of messages in the ring buffer.
- *     4 -- Read and clear last 4k of messages in the ring buffer
- *     5 -- Clear ring buffer.
- *     6 -- Disable printk's to console
- *     7 -- Enable printk's to console
- *     8 -- Set level of messages printed to console
- */
-asmlinkage int sys_syslog(int type, char * buf, int len)
-{
-       unsigned long i, j, count;
-       int do_clear = 0;
-       char c;
-       int error;
-
-       if ((type != 3) && !suser())
-               return -EPERM;
-       switch (type) {
-               case 0:         /* Close log */
-                       return 0;
-               case 1:         /* Open log */
-                       return 0;
-               case 2:         /* Read from log */
-                       if (!buf || len < 0)
-                               return -EINVAL;
-                       if (!len)
-                               return 0;
-                       error = verify_area(VERIFY_WRITE,buf,len);
-                       if (error)
-                               return error;
-                       cli();
-                       while (!log_size) {
-                               if (current->signal & ~current->blocked) {
-                                       sti();
-                                       return -ERESTARTSYS;
-                               }
-                               interruptible_sleep_on(&log_wait);
-                       }
-                       i = 0;
-                       while (log_size && i < len) {
-                               c = *((char *) log_buf+log_start);
-                               log_start++;
-                               log_size--;
-                               log_start &= LOG_BUF_LEN-1;
-                               sti();
-                               put_user(c,buf);
-                               buf++;
-                               i++;
-                               cli();
-                       }
-                       sti();
-                       return i;
-               case 4:         /* Read/clear last kernel messages */
-                       do_clear = 1; 
-                       /* FALL THRU */
-               case 3:         /* Read last kernel messages */
-                       if (!buf || len < 0)
-                               return -EINVAL;
-                       if (!len)
-                               return 0;
-                       error = verify_area(VERIFY_WRITE,buf,len);
-                       if (error)
-                               return error;
-                       count = len;
-                       if (count > LOG_BUF_LEN)
-                               count = LOG_BUF_LEN;
-                       if (count > logged_chars)
-                               count = logged_chars;
-                       j = log_start + log_size - count;
-                       for (i = 0; i < count; i++) {
-                               c = *((char *) log_buf+(j++ & (LOG_BUF_LEN-1)));
-                               put_user(c, buf++);
-                       }
-                       if (do_clear)
-                               logged_chars = 0;
-                       return i;
-               case 5:         /* Clear ring buffer */
-                       logged_chars = 0;
-                       return 0;
-               case 6:         /* Disable logging to console */
-                       console_loglevel = MINIMUM_CONSOLE_LOGLEVEL;
-                       return 0;
-               case 7:         /* Enable logging to console */
-                       console_loglevel = DEFAULT_CONSOLE_LOGLEVEL;
-                       return 0;
-               case 8:
-                       if (len < 1 || len > 8)
-                               return -EINVAL;
-                       if (len < MINIMUM_CONSOLE_LOGLEVEL)
-                               len = MINIMUM_CONSOLE_LOGLEVEL;
-                       console_loglevel = len;
-                       return 0;
-       }
-       return -EINVAL;
-}
-
-
-asmlinkage int printk(const char *fmt, ...)
-{
-       va_list args;
-       int i;
-       char *msg, *p, *buf_end;
-       static char msg_level = -1;
-       long flags;
-
-       save_flags(flags);
-       cli();
-       va_start(args, fmt);
-       i = vsprintf(buf + 3, fmt, args); /* hopefully i < sizeof(buf)-4 */
-       buf_end = buf + 3 + i;
-       va_end(args);
-       for (p = buf + 3; p < buf_end; p++) {
-               msg = p;
-               if (msg_level < 0) {
-                       if (
-                               p[0] != '<' ||
-                               p[1] < '0' || 
-                               p[1] > '7' ||
-                               p[2] != '>'
-                       ) {
-                               p -= 3;
-                               p[0] = '<';
-                               p[1] = DEFAULT_MESSAGE_LOGLEVEL + '0';
-                               p[2] = '>';
-                       } else
-                               msg += 3;
-                       msg_level = p[1] - '0';
-               }
-               for (; p < buf_end; p++) {
-                       log_buf[(log_start+log_size) & (LOG_BUF_LEN-1)] = *p;
-                       if (log_size < LOG_BUF_LEN)
-                               log_size++;
-                       else {
-                               log_start++;
-                               log_start &= LOG_BUF_LEN-1;
-                       }
-                       logged_chars++;
-                       if (*p == '\n')
-                               break;
-               }
-               if (msg_level < console_loglevel && console_print_proc) {
-                       char tmp = p[1];
-                       p[1] = '\0';
-                       (*console_print_proc)(msg);
-                       p[1] = tmp;
-               }
-               if (*p == '\n')
-                       msg_level = -1;
-       }
-       restore_flags(flags);
-       wake_up_interruptible(&log_wait);
-       return i;
-}
-
-/*
- * The console driver calls this routine during kernel initialization
- * to register the console printing procedure with printk() and to
- * print any messages that were printed by the kernel before the
- * console driver was initialized.
- */
-void register_console(void (*proc)(const char *))
-{
-       int     i,j;
-       int     p = log_start;
-       char    buf[16];
-       char    msg_level = -1;
-       char    *q;
-
-       console_print_proc = proc;
-
-       for (i=0,j=0; i < log_size; i++) {
-               buf[j++] = log_buf[p];
-               p++; p &= LOG_BUF_LEN-1;
-               if (buf[j-1] != '\n' && i < log_size - 1 && j < sizeof(buf)-1)
-                       continue;
-               buf[j] = 0;
-               q = buf;
-               if (msg_level < 0) {
-                       msg_level = buf[1] - '0';
-                       q = buf + 3;
-               }
-               if (msg_level < console_loglevel)
-                       (*proc)(q);
-               if (buf[j-1] == '\n')
-                       msg_level = -1;
-               j = 0;
-       }
-}
-
-/*
- * Write a message to a certain tty, not just the console. This is used for
- * messages that need to be redirected to a specific tty.
- * We don't put it into the syslog queue right now maybe in the future if
- * really needed.
- */
-void tty_write_message(struct tty_struct *tty, char *msg)
-{
-       if (tty && tty->driver.write)
-               tty->driver.write(tty, 0, msg, strlen(msg));
-       return;
-}
diff --git a/linux/src/kernel/resource.c b/linux/src/kernel/resource.c
deleted file mode 100644
index 7d7a4ad..0000000
--- a/linux/src/kernel/resource.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- *     linux/kernel/resource.c
- *
- * Copyright (C) 1995  Linus Torvalds
- *                     David Hinds
- *
- * Kernel io-region resource management
- */
-
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/types.h>
-#include <linux/ioport.h>
-
-#define IOTABLE_SIZE 128
-
-typedef struct resource_entry_t {
-       u_long from, num;
-       const char *name;
-       struct resource_entry_t *next;
-} resource_entry_t;
-
-static resource_entry_t iolist = { 0, 0, "", NULL };
-
-static resource_entry_t iotable[IOTABLE_SIZE];
-
-/*
- * This generates the report for /proc/ioports
- */
-int get_ioport_list(char *buf)
-{
-       resource_entry_t *p;
-       int len = 0;
-
-       for (p = iolist.next; (p) && (len < 4000); p = p->next)
-               len += sprintf(buf+len, "%04lx-%04lx : %s\n",
-                          p->from, p->from+p->num-1, p->name);
-       if (p)
-               len += sprintf(buf+len, "4K limit reached!\n");
-       return len;
-}
-
-/*
- * The workhorse function: find where to put a new entry
- */
-static resource_entry_t *find_gap(resource_entry_t *root,
-                                 u_long from, u_long num)
-{
-       unsigned long flags;
-       resource_entry_t *p;
-       
-       if (from > from+num-1)
-               return NULL;
-       save_flags(flags);
-       cli();
-       for (p = root; ; p = p->next) {
-               if ((p != root) && (p->from+p->num-1 >= from)) {
-                       p = NULL;
-                       break;
-               }
-               if ((p->next == NULL) || (p->next->from > from+num-1))
-                       break;
-       }
-       restore_flags(flags);
-       return p;
-}
-
-/*
- * Call this from the device driver to register the ioport region.
- */
-void request_region(unsigned int from, unsigned int num, const char *name)
-{
-       resource_entry_t *p;
-       int i;
-
-       for (i = 0; i < IOTABLE_SIZE; i++)
-               if (iotable[i].num == 0)
-                       break;
-       if (i == IOTABLE_SIZE)
-               printk("warning: ioport table is full\n");
-       else {
-               p = find_gap(&iolist, from, num);
-               if (p == NULL)
-                       return;
-               iotable[i].name = name;
-               iotable[i].from = from;
-               iotable[i].num = num;
-               iotable[i].next = p->next;
-               p->next = &iotable[i];
-               return;
-       }
-}
-
-/* 
- * Call this when the device driver is unloaded
- */
-void release_region(unsigned int from, unsigned int num)
-{
-       resource_entry_t *p, *q;
-
-       for (p = &iolist; ; p = q) {
-               q = p->next;
-               if (q == NULL)
-                       break;
-               if ((q->from == from) && (q->num == num)) {
-                       q->num = 0;
-                       p->next = q->next;
-                       return;
-               }
-       }
-}
-
-/*
- * Call this to check the ioport region before probing
- */
-int check_region(unsigned int from, unsigned int num)
-{
-       return (find_gap(&iolist, from, num) == NULL) ? -EBUSY : 0;
-}
-
-/* Called from init/main.c to reserve IO ports. */
-void reserve_setup(char *str, int *ints)
-{
-       int i;
-
-       for (i = 1; i < ints[0]; i += 2)
-               request_region(ints[i], ints[i+1], "reserved");
-}
diff --git a/linux/src/kernel/sched.c b/linux/src/kernel/sched.c
deleted file mode 100644
index 0904f59..0000000
--- a/linux/src/kernel/sched.c
+++ /dev/null
@@ -1,1747 +0,0 @@
-/*
- *  linux/kernel/sched.c
- *
- *  Copyright (C) 1991, 1992  Linus Torvalds
- *
- *  1996-04-21 Modified by Ulrich Windl to make NTP work
- *  1996-12-23  Modified by Dave Grothe to fix bugs in semaphores and
- *              make semaphores SMP safe
- *  1997-01-28  Modified by Finn Arne Gangstad to make timers scale better.
- *  1997-09-10 Updated NTP code according to technical memorandum Jan '96
- *             "A Kernel Model for Precision Timekeeping" by Dave Mills
- */
-
-/*
- * 'sched.c' is the main kernel file. It contains scheduling primitives
- * (sleep_on, wakeup, schedule etc) as well as a number of simple system
- * call functions (type getpid()), which just extract a field from
- * current-task
- */
-
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/timer.h>
-#include <linux/kernel.h>
-#include <linux/kernel_stat.h>
-#include <linux/fdreg.h>
-#include <linux/errno.h>
-#include <linux/time.h>
-#include <linux/ptrace.h>
-#include <linux/delay.h>
-#include <linux/interrupt.h>
-#include <linux/tqueue.h>
-#include <linux/resource.h>
-#include <linux/mm.h>
-#include <linux/smp.h>
-
-#include <asm/system.h>
-#include <asm/io.h>
-#include <asm/segment.h>
-#include <asm/pgtable.h>
-#include <asm/mmu_context.h>
-
-#include <linux/timex.h>
-
-/*
- * kernel variables
- */
-
-int securelevel = 0;                   /* system security level */
-
-long tick = (1000000 + HZ/2) / HZ;     /* timer interrupt period */
-volatile struct timeval xtime;         /* The current time */
-int tickadj = 500/HZ ? 500/HZ : 1;     /* microsecs */
-
-DECLARE_TASK_QUEUE(tq_timer);
-DECLARE_TASK_QUEUE(tq_immediate);
-DECLARE_TASK_QUEUE(tq_scheduler);
-
-/*
- * phase-lock loop variables
- */
-/* TIME_ERROR prevents overwriting the CMOS clock */
-int time_state = TIME_ERROR;   /* clock synchronization status */
-int time_status = STA_UNSYNC;  /* clock status bits */
-long time_offset = 0;          /* time adjustment (us) */
-long time_constant = 2;                /* pll time constant */
-long time_tolerance = MAXFREQ; /* frequency tolerance (ppm) */
-long time_precision = 1;       /* clock precision (us) */
-long time_maxerror = NTP_PHASE_LIMIT;  /* maximum error (us) */
-long time_esterror = NTP_PHASE_LIMIT;  /* estimated error (us) */
-long time_phase = 0;           /* phase offset (scaled us) */
-long time_freq = ((1000000 + HZ/2) % HZ - HZ/2) << SHIFT_USEC; /* frequency 
offset (scaled ppm) */
-long time_adj = 0;             /* tick adjust (scaled 1 / HZ) */
-long time_reftime = 0;         /* time at last adjustment (s) */
-
-long time_adjust = 0;
-long time_adjust_step = 0;
-
-int need_resched = 0;
-unsigned long event = 0;
-
-extern int _setitimer(int, struct itimerval *, struct itimerval *);
-unsigned int * prof_buffer = NULL;
-unsigned long prof_len = 0;
-unsigned long prof_shift = 0;
-
-#define _S(nr) (1<<((nr)-1))
-
-extern void mem_use(void);
-extern unsigned long get_wchan(struct task_struct *);
-
-static unsigned long init_kernel_stack[1024] = { STACK_MAGIC, };
-unsigned long init_user_stack[1024] = { STACK_MAGIC, };
-static struct vm_area_struct init_mmap = INIT_MMAP;
-static struct fs_struct init_fs = INIT_FS;
-static struct files_struct init_files = INIT_FILES;
-static struct signal_struct init_signals = INIT_SIGNALS;
-
-struct mm_struct init_mm = INIT_MM;
-struct task_struct init_task = INIT_TASK;
-
-unsigned long volatile jiffies=0;
-
-struct task_struct *current_set[NR_CPUS];
-struct task_struct *last_task_used_math = NULL;
-
-struct task_struct * task[NR_TASKS] = {&init_task, };
-
-struct kernel_stat kstat = { 0 };
-
-static inline void add_to_runqueue(struct task_struct * p)
-{
-#ifdef __SMP__
-       int cpu=smp_processor_id();
-#endif 
-#if 1  /* sanity tests */
-       if (p->next_run || p->prev_run) {
-               printk("task already on run-queue\n");
-               return;
-       }
-#endif
-       if (p->policy != SCHED_OTHER || p->counter > current->counter + 3)
-               need_resched = 1;
-       nr_running++;
-       (p->prev_run = init_task.prev_run)->next_run = p;
-       p->next_run = &init_task;
-       init_task.prev_run = p;
-#ifdef __SMP__
-       /* this is safe only if called with cli()*/
-       while(set_bit(31,&smp_process_available))
-       {
-               while(test_bit(31,&smp_process_available))
-               {
-                       if(clear_bit(cpu,&smp_invalidate_needed))
-                       {
-                               local_flush_tlb();
-                               set_bit(cpu,&cpu_callin_map[0]);
-                       }
-               }
-       }
-       smp_process_available++;
-       clear_bit(31,&smp_process_available);
-       if ((0!=p->pid) && smp_threads_ready)
-       {
-               int i;
-               for (i=0;i<smp_num_cpus;i++)
-               {
-                       if (0==current_set[cpu_logical_map[i]]->pid) 
-                       {
-                               smp_message_pass(cpu_logical_map[i], 
MSG_RESCHEDULE, 0L, 0);
-                               break;
-                       }
-               }
-       }
-#endif
-}
-
-static inline void del_from_runqueue(struct task_struct * p)
-{
-       struct task_struct *next = p->next_run;
-       struct task_struct *prev = p->prev_run;
-
-#if 1  /* sanity tests */
-       if (!next || !prev) {
-               printk("task not on run-queue\n");
-               return;
-       }
-#endif
-       if (p == &init_task) {
-               static int nr = 0;
-               if (nr < 5) {
-                       nr++;
-                       printk("idle task may not sleep\n");
-               }
-               return;
-       }
-       nr_running--;
-       next->prev_run = prev;
-       prev->next_run = next;
-       p->next_run = NULL;
-       p->prev_run = NULL;
-}
-
-static inline void move_last_runqueue(struct task_struct * p)
-{
-       struct task_struct *next = p->next_run;
-       struct task_struct *prev = p->prev_run;
-
-       /* remove from list */
-       next->prev_run = prev;
-       prev->next_run = next;
-       /* add back to list */
-       p->next_run = &init_task;
-       prev = init_task.prev_run;
-       init_task.prev_run = p;
-       p->prev_run = prev;
-       prev->next_run = p;
-}
-
-/*
- * Wake up a process. Put it on the run-queue if it's not
- * already there.  The "current" process is always on the
- * run-queue (except when the actual re-schedule is in
- * progress), and as such you're allowed to do the simpler
- * "current->state = TASK_RUNNING" to mark yourself runnable
- * without the overhead of this.
- */
-inline void wake_up_process(struct task_struct * p)
-{
-       unsigned long flags;
-
-       save_flags(flags);
-       cli();
-       p->state = TASK_RUNNING;
-       if (!p->next_run)
-               add_to_runqueue(p);
-       restore_flags(flags);
-}
-
-static void process_timeout(unsigned long __data)
-{
-       struct task_struct * p = (struct task_struct *) __data;
-
-       p->timeout = 0;
-       wake_up_process(p);
-}
-
-/*
- * This is the function that decides how desirable a process is..
- * You can weigh different processes against each other depending
- * on what CPU they've run on lately etc to try to handle cache
- * and TLB miss penalties.
- *
- * Return values:
- *      -1000: never select this
- *          0: out of time, recalculate counters (but it might still be
- *             selected)
- *        +ve: "goodness" value (the larger, the better)
- *      +1000: realtime process, select this.
- */
-static inline int goodness(struct task_struct * p, struct task_struct * prev, 
int this_cpu)
-{
-       int weight;
-
-#ifdef __SMP__ 
-       /* We are not permitted to run a task someone else is running */
-       if (p->processor != NO_PROC_ID)
-               return -1000;
-#ifdef PAST_2_0                
-       /* This process is locked to a processor group */
-       if (p->processor_mask && !(p->processor_mask & (1<<this_cpu))
-               return -1000;
-#endif         
-#endif
-
-       /*
-        * Realtime process, select the first one on the
-        * runqueue (taking priorities within processes
-        * into account).
-        */
-       if (p->policy != SCHED_OTHER)
-               return 1000 + p->rt_priority;
-
-       /*
-        * Give the process a first-approximation goodness value
-        * according to the number of clock-ticks it has left.
-        *
-        * Don't do any other calculations if the time slice is
-        * over..
-        */
-       weight = p->counter;
-       if (weight) {
-                       
-#ifdef __SMP__
-               /* Give a largish advantage to the same processor...   */
-               /* (this is equivalent to penalizing other processors) */
-               if (p->last_processor == this_cpu)
-                       weight += PROC_CHANGE_PENALTY;
-#endif
-
-               /* .. and a slight advantage to the current process */
-               if (p == prev)
-                       weight += 1;
-       }
-
-       return weight;
-}
-
-
-/*
-  The following allow_interrupts function is used to workaround a rare but
-  nasty deadlock situation that is possible for 2.0.x Intel SMP because it uses
-  a single kernel lock and interrupts are only routed to the boot CPU.  There
-  are two deadlock scenarios this code protects against.
-
-  The first scenario is that if a CPU other than the boot CPU holds the kernel
-  lock and needs to wait for an operation to complete that itself requires an
-  interrupt, there is a deadlock since the boot CPU may be able to accept the
-  interrupt but will not be able to acquire the kernel lock to process it.
-
-  The workaround for this deadlock requires adding calls to allow_interrupts to
-  places where this deadlock is possible.  These places are known to be present
-  in buffer.c and keyboard.c.  It is also possible that there are other such
-  places which have not been identified yet.  In order to break the deadlock,
-  the code in allow_interrupts temporarily yields the kernel lock directly to
-  the boot CPU to allow the interrupt to be processed.  The boot CPU interrupt
-  entry code indicates that it is spinning waiting for the kernel lock by
-  setting the smp_blocked_interrupt_pending variable.  This code notices that
-  and manipulates the active_kernel_processor variable to yield the kernel lock
-  without ever clearing it.  When the interrupt has been processed, the
-  saved_active_kernel_processor variable contains the value for the interrupt
-  exit code to restore, either the APICID of the CPU that granted it the kernel
-  lock, or NO_PROC_ID in the normal case where no yielding occurred.  Restoring
-  active_kernel_processor from saved_active_kernel_processor returns the kernel
-  lock back to the CPU that yielded it.
-
-  The second form of deadlock is even more insidious.  Suppose the boot CPU
-  takes a page fault and then the previous scenario ensues.  In this case, the
-  boot CPU would spin with interrupts disabled waiting to acquire the kernel
-  lock.  To resolve this deadlock, the kernel lock acquisition code must enable
-  interrupts briefly so that the pending interrupt can be handled as in the
-  case above.
-
-  An additional form of deadlock is where kernel code running on a non-boot CPU
-  waits for the jiffies variable to be incremented.  This deadlock is avoided
-  by having the spin loops in ENTER_KERNEL increment jiffies approximately
-  every 10 milliseconds.  Finally, if approximately 60 seconds elapse waiting
-  for the kernel lock, a message will be printed if possible to indicate that a
-  deadlock has been detected.
-
-               Leonard N. Zubkoff
-                  4 August 1997
-*/
-
-#if defined(__SMP__) && defined(__i386__)
-
-volatile unsigned char smp_blocked_interrupt_pending = 0;
-
-volatile unsigned char saved_active_kernel_processor = NO_PROC_ID;
-
-void allow_interrupts(void)
-{
-  if (smp_processor_id() == boot_cpu_id) return;
-  if (smp_blocked_interrupt_pending)
-    {
-      unsigned long saved_kernel_counter;
-      long timeout_counter;
-      saved_active_kernel_processor = active_kernel_processor;
-      saved_kernel_counter = kernel_counter;
-      kernel_counter = 0;
-      active_kernel_processor = boot_cpu_id;
-      timeout_counter = 6000000;
-      while (active_kernel_processor != saved_active_kernel_processor &&
-            --timeout_counter >= 0)
-       {
-         udelay(10);
-         barrier();
-       }
-      if (timeout_counter < 0)
-       panic("FORWARDED INTERRUPT TIMEOUT (AKP = %d, Saved AKP = %d)\n",
-             active_kernel_processor, saved_active_kernel_processor);
-      kernel_counter = saved_kernel_counter;
-      saved_active_kernel_processor = NO_PROC_ID;
-    }
-}
-
-#else
-
-void allow_interrupts(void) {}
-
-#endif
-
-
-/*
- *  'schedule()' is the scheduler function. It's a very simple and nice
- * scheduler: it's not perfect, but certainly works for most things.
- *
- * The goto is "interesting".
- *
- *   NOTE!!  Task 0 is the 'idle' task, which gets called when no other
- * tasks can run. It can not be killed, and it cannot sleep. The 'state'
- * information in task[0] is never used.
- */
-asmlinkage void schedule(void)
-{
-       int c;
-       struct task_struct * p;
-       struct task_struct * prev, * next;
-       unsigned long timeout = 0;
-       int this_cpu=smp_processor_id();
-
-/* check alarm, wake up any interruptible tasks that have got a signal */
-
-       allow_interrupts();
-
-       if (intr_count)
-               goto scheduling_in_interrupt;
-
-       if (bh_active & bh_mask) {
-               intr_count = 1;
-               do_bottom_half();
-               intr_count = 0;
-       }
-
-       run_task_queue(&tq_scheduler);
-
-       need_resched = 0;
-       prev = current;
-       cli();
-       /* move an exhausted RR process to be last.. */
-       if (!prev->counter && prev->policy == SCHED_RR) {
-               prev->counter = prev->priority;
-               move_last_runqueue(prev);
-       }
-       switch (prev->state) {
-               case TASK_INTERRUPTIBLE:
-                       if (prev->signal & ~prev->blocked)
-                               goto makerunnable;
-                       timeout = prev->timeout;
-                       if (timeout && (timeout <= jiffies)) {
-                               prev->timeout = 0;
-                               timeout = 0;
-               makerunnable:
-                               prev->state = TASK_RUNNING;
-                               break;
-                       }
-               default:
-                       del_from_runqueue(prev);
-               case TASK_RUNNING:
-       }
-       p = init_task.next_run;
-       sti();
-       
-#ifdef __SMP__
-       /*
-        *      This is safe as we do not permit re-entry of schedule()
-        */
-       prev->processor = NO_PROC_ID;
-#define idle_task (task[cpu_number_map[this_cpu]])
-#else
-#define idle_task (&init_task)
-#endif 
-
-/*
- * Note! there may appear new tasks on the run-queue during this, as
- * interrupts are enabled. However, they will be put on front of the
- * list, so our list starting at "p" is essentially fixed.
- */
-/* this is the scheduler proper: */
-       c = -1000;
-       next = idle_task;
-       while (p != &init_task) {
-               int weight = goodness(p, prev, this_cpu);
-               if (weight > c)
-                       c = weight, next = p;
-               p = p->next_run;
-       }
-
-       /* if all runnable processes have "counter == 0", re-calculate counters 
*/
-       if (!c) {
-               for_each_task(p)
-                       p->counter = (p->counter >> 1) + p->priority;
-       }
-#ifdef __SMP__
-       /*
-        *      Allocate process to CPU
-        */
-        
-        next->processor = this_cpu;
-        next->last_processor = this_cpu;
-#endif  
-#ifdef __SMP_PROF__ 
-       /* mark processor running an idle thread */
-       if (0==next->pid)
-               set_bit(this_cpu,&smp_idle_map);
-       else
-               clear_bit(this_cpu,&smp_idle_map);
-#endif
-       if (prev != next) {
-               struct timer_list timer;
-
-               kstat.context_swtch++;
-               if (timeout) {
-                       init_timer(&timer);
-                       timer.expires = timeout;
-                       timer.data = (unsigned long) prev;
-                       timer.function = process_timeout;
-                       add_timer(&timer);
-               }
-               get_mmu_context(next);
-               switch_to(prev,next);
-               if (timeout)
-                       del_timer(&timer);
-       }
-       return;
-
-scheduling_in_interrupt:
-       printk("Aiee: scheduling in interrupt %p\n",
-               __builtin_return_address(0));
-}
-
-#ifndef __alpha__
-
-/*
- * For backwards compatibility?  This can be done in libc so Alpha
- * and all newer ports shouldn't need it.
- */
-asmlinkage int sys_pause(void)
-{
-       current->state = TASK_INTERRUPTIBLE;
-       schedule();
-       return -ERESTARTNOHAND;
-}
-
-#endif
-
-/*
- * wake_up doesn't wake up stopped processes - they have to be awakened
- * with signals or similar.
- *
- * Note that this doesn't need cli-sti pairs: interrupts may not change
- * the wait-queue structures directly, but only call wake_up() to wake
- * a process. The process itself must remove the queue once it has woken.
- */
-void wake_up(struct wait_queue **q)
-{
-       struct wait_queue *next;
-       struct wait_queue *head;
-
-       if (!q || !(next = *q))
-               return;
-       head = WAIT_QUEUE_HEAD(q);
-       while (next != head) {
-               struct task_struct *p = next->task;
-               next = next->next;
-               if (p != NULL) {
-                       if ((p->state == TASK_UNINTERRUPTIBLE) ||
-                           (p->state == TASK_INTERRUPTIBLE))
-                               wake_up_process(p);
-               }
-               if (!next)
-                       goto bad;
-       }
-       return;
-bad:
-       printk("wait_queue is bad (eip = %p)\n",
-               __builtin_return_address(0));
-       printk("        q = %p\n",q);
-       printk("       *q = %p\n",*q);
-}
-
-void wake_up_interruptible(struct wait_queue **q)
-{
-       struct wait_queue *next;
-       struct wait_queue *head;
-
-       if (!q || !(next = *q))
-               return;
-       head = WAIT_QUEUE_HEAD(q);
-       while (next != head) {
-               struct task_struct *p = next->task;
-               next = next->next;
-               if (p != NULL) {
-                       if (p->state == TASK_INTERRUPTIBLE)
-                               wake_up_process(p);
-               }
-               if (!next)
-                       goto bad;
-       }
-       return;
-bad:
-       printk("wait_queue is bad (eip = %p)\n",
-               __builtin_return_address(0));
-       printk("        q = %p\n",q);
-       printk("       *q = %p\n",*q);
-}
-
-
-/*
- * Semaphores are implemented using a two-way counter:
- * The "count" variable is decremented for each process
- * that tries to sleep, while the "waking" variable is
- * incremented when the "up()" code goes to wake up waiting
- * processes.
- *
- * Notably, the inline "up()" and "down()" functions can
- * efficiently test if they need to do any extra work (up
- * needs to do something only if count was negative before
- * the increment operation.
- *
- * This routine must execute atomically.
- */
-static inline int waking_non_zero(struct semaphore *sem)
-{
-       int     ret ;
-       long    flags ;
-
-       get_buzz_lock(&sem->lock) ;
-       save_flags(flags) ;
-       cli() ;
-
-       if ((ret = (sem->waking > 0)))
-               sem->waking-- ;
-
-       restore_flags(flags) ;
-       give_buzz_lock(&sem->lock) ;
-       return(ret) ;
-}
-
-/*
- * When __up() is called, the count was negative before
- * incrementing it, and we need to wake up somebody.
- *
- * This routine adds one to the count of processes that need to
- * wake up and exit.  ALL waiting processes actually wake up but
- * only the one that gets to the "waking" field first will gate
- * through and acquire the semaphore.  The others will go back
- * to sleep.
- *
- * Note that these functions are only called when there is
- * contention on the lock, and as such all this is the
- * "non-critical" part of the whole semaphore business. The
- * critical part is the inline stuff in <asm/semaphore.h>
- * where we want to avoid any extra jumps and calls.
- */
-void __up(struct semaphore *sem)
-{
-       atomic_inc(&sem->waking) ;
-       wake_up(&sem->wait);
-}
-
-/*
- * Perform the "down" function.  Return zero for semaphore acquired,
- * return negative for signalled out of the function.
- *
- * If called from __down, the return is ignored and the wait loop is
- * not interruptible.  This means that a task waiting on a semaphore
- * using "down()" cannot be killed until someone does an "up()" on
- * the semaphore.
- *
- * If called from __down_interruptible, the return value gets checked
- * upon return.  If the return value is negative then the task continues
- * with the negative value in the return register (it can be tested by
- * the caller).
- *
- * Either form may be used in conjunction with "up()".
- *
- */
-int __do_down(struct semaphore * sem, int task_state)
-{
-       struct task_struct *tsk = current;
-       struct wait_queue wait = { tsk, NULL };
-       int               ret = 0 ;
-
-       tsk->state = task_state;
-       add_wait_queue(&sem->wait, &wait);
-
-       /*
-        * Ok, we're set up.  sem->count is known to be less than zero
-        * so we must wait.
-        *
-        * We can let go the lock for purposes of waiting.
-        * We re-acquire it after awaking so as to protect
-        * all semaphore operations.
-        *
-        * If "up()" is called before we call waking_non_zero() then
-        * we will catch it right away.  If it is called later then
-        * we will have to go through a wakeup cycle to catch it.
-        *
-        * Multiple waiters contend for the semaphore lock to see
-        * who gets to gate through and who has to wait some more.
-        */
-       for (;;)
-       {
-               if (waking_non_zero(sem))       /* are we waking up?  */
-                   break ;                     /* yes, exit loop */
-
-               if (   task_state == TASK_INTERRUPTIBLE
-                   && (tsk->signal & ~tsk->blocked)    /* signalled */
-                  )
-               {
-                   ret = -EINTR ;              /* interrupted */
-                   atomic_inc(&sem->count) ;   /* give up on down operation */
-                   break ;
-               }
-
-               schedule();
-               tsk->state = task_state;
-       }
-
-       tsk->state = TASK_RUNNING;
-       remove_wait_queue(&sem->wait, &wait);
-       return(ret) ;
-
-} /* __do_down */
-
-void __down(struct semaphore * sem)
-{
-       __do_down(sem,TASK_UNINTERRUPTIBLE) ; 
-}
-
-int __down_interruptible(struct semaphore * sem)
-{
-       return(__do_down(sem,TASK_INTERRUPTIBLE)) ; 
-}
-
-
-static inline void __sleep_on(struct wait_queue **p, int state)
-{
-       unsigned long flags;
-       struct wait_queue wait = { current, NULL };
-
-       if (!p)
-               return;
-       if (current == task[0])
-               panic("task[0] trying to sleep");
-       current->state = state;
-       save_flags(flags);
-       cli();
-       __add_wait_queue(p, &wait);
-       sti();
-       schedule();
-       cli();
-       __remove_wait_queue(p, &wait);
-       restore_flags(flags);
-}
-
-void interruptible_sleep_on(struct wait_queue **p)
-{
-       __sleep_on(p,TASK_INTERRUPTIBLE);
-}
-
-void sleep_on(struct wait_queue **p)
-{
-       __sleep_on(p,TASK_UNINTERRUPTIBLE);
-}
-
-#define TVN_BITS 6
-#define TVR_BITS 8
-#define TVN_SIZE (1 << TVN_BITS)
-#define TVR_SIZE (1 << TVR_BITS)
-#define TVN_MASK (TVN_SIZE - 1)
-#define TVR_MASK (TVR_SIZE - 1)
-
-#define SLOW_BUT_DEBUGGING_TIMERS 0
-
-struct timer_vec {
-        int index;
-        struct timer_list *vec[TVN_SIZE];
-};
-
-struct timer_vec_root {
-        int index;
-        struct timer_list *vec[TVR_SIZE];
-};
-
-static struct timer_vec tv5 = { 0 };
-static struct timer_vec tv4 = { 0 };
-static struct timer_vec tv3 = { 0 };
-static struct timer_vec tv2 = { 0 };
-static struct timer_vec_root tv1 = { 0 };
-
-static struct timer_vec * const tvecs[] = {
-       (struct timer_vec *)&tv1, &tv2, &tv3, &tv4, &tv5
-};
-
-#define NOOF_TVECS (sizeof(tvecs) / sizeof(tvecs[0]))
-
-static unsigned long timer_jiffies = 0;
-
-static inline void insert_timer(struct timer_list *timer,
-                               struct timer_list **vec, int idx)
-{
-       if ((timer->next = vec[idx]))
-               vec[idx]->prev = timer;
-       vec[idx] = timer;
-       timer->prev = (struct timer_list *)&vec[idx];
-}
-
-static inline void internal_add_timer(struct timer_list *timer)
-{
-       /*
-        * must be cli-ed when calling this
-        */
-       unsigned long expires = timer->expires;
-       unsigned long idx = expires - timer_jiffies;
-
-       if (idx < TVR_SIZE) {
-               int i = expires & TVR_MASK;
-               insert_timer(timer, tv1.vec, i);
-       } else if (idx < 1 << (TVR_BITS + TVN_BITS)) {
-               int i = (expires >> TVR_BITS) & TVN_MASK;
-               insert_timer(timer, tv2.vec, i);
-       } else if (idx < 1 << (TVR_BITS + 2 * TVN_BITS)) {
-               int i = (expires >> (TVR_BITS + TVN_BITS)) & TVN_MASK;
-               insert_timer(timer, tv3.vec, i);
-       } else if (idx < 1 << (TVR_BITS + 3 * TVN_BITS)) {
-               int i = (expires >> (TVR_BITS + 2 * TVN_BITS)) & TVN_MASK;
-               insert_timer(timer, tv4.vec, i);
-       } else if (expires < timer_jiffies) {
-               /* can happen if you add a timer with expires == jiffies,
-                * or you set a timer to go off in the past
-                */
-               insert_timer(timer, tv1.vec, tv1.index);
-       } else if (idx < 0xffffffffUL) {
-               int i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK;
-               insert_timer(timer, tv5.vec, i);
-       } else {
-               /* Can only get here on architectures with 64-bit jiffies */
-               timer->next = timer->prev = timer;
-       }
-}
-
-void add_timer(struct timer_list *timer)
-{
-       unsigned long flags;
-       save_flags(flags);
-       cli();
-#if SLOW_BUT_DEBUGGING_TIMERS
-        if (timer->next || timer->prev) {
-                printk("add_timer() called with non-zero list from %p\n",
-                      __builtin_return_address(0));
-               goto out;
-        }
-#endif
-       internal_add_timer(timer);
-#if SLOW_BUT_DEBUGGING_TIMERS
-out:
-#endif
-       restore_flags(flags);
-}
-
-static inline int detach_timer(struct timer_list *timer)
-{
-       int ret = 0;
-       struct timer_list *next, *prev;
-       next = timer->next;
-       prev = timer->prev;
-       if (next) {
-               next->prev = prev;
-       }
-       if (prev) {
-               ret = 1;
-               prev->next = next;
-       }
-       return ret;
-}
-
-
-int del_timer(struct timer_list * timer)
-{
-       int ret;
-       unsigned long flags;
-       save_flags(flags);
-       cli();
-       ret = detach_timer(timer);
-       timer->next = timer->prev = 0;
-       restore_flags(flags);
-       return ret;
-}
-
-static inline void cascade_timers(struct timer_vec *tv)
-{
-        /* cascade all the timers from tv up one level */
-        struct timer_list *timer;
-        timer = tv->vec[tv->index];
-        /*
-         * We are removing _all_ timers from the list, so we don't  have to
-         * detach them individually, just clear the list afterwards.
-         */
-        while (timer) {
-                struct timer_list *tmp = timer;
-                timer = timer->next;
-                internal_add_timer(tmp);
-        }
-        tv->vec[tv->index] = NULL;
-        tv->index = (tv->index + 1) & TVN_MASK;
-}
-
-static inline void run_timer_list(void)
-{
-       cli();
-       while ((long)(jiffies - timer_jiffies) >= 0) {
-               struct timer_list *timer;
-               if (!tv1.index) {
-                       int n = 1;
-                       do {
-                               cascade_timers(tvecs[n]);
-                       } while (tvecs[n]->index == 1 && ++n < NOOF_TVECS);
-               }
-               while ((timer = tv1.vec[tv1.index])) {
-                       void (*fn)(unsigned long) = timer->function;
-                       unsigned long data = timer->data;
-                       detach_timer(timer);
-                       timer->next = timer->prev = NULL;
-                       sti();
-                       fn(data);
-                       cli();
-               }
-               ++timer_jiffies; 
-               tv1.index = (tv1.index + 1) & TVR_MASK;
-       }
-       sti();
-}
-
-static inline void run_old_timers(void)
-{
-       struct timer_struct *tp;
-       unsigned long mask;
-
-       for (mask = 1, tp = timer_table+0 ; mask ; tp++,mask += mask) {
-               if (mask > timer_active)
-                       break;
-               if (!(mask & timer_active))
-                       continue;
-               if (tp->expires > jiffies)
-                       continue;
-               timer_active &= ~mask;
-               tp->fn();
-               sti();
-       }
-}
-
-void tqueue_bh(void)
-{
-       run_task_queue(&tq_timer);
-}
-
-void immediate_bh(void)
-{
-       run_task_queue(&tq_immediate);
-}
-
-unsigned long timer_active = 0;
-struct timer_struct timer_table[32];
-
-/*
- * Hmm.. Changed this, as the GNU make sources (load.c) seems to
- * imply that avenrun[] is the standard name for this kind of thing.
- * Nothing else seems to be standardized: the fractional size etc
- * all seem to differ on different machines.
- */
-unsigned long avenrun[3] = { 0,0,0 };
-
-/*
- * Nr of active tasks - counted in fixed-point numbers
- */
-static unsigned long count_active_tasks(void)
-{
-       struct task_struct **p;
-       unsigned long nr = 0;
-
-       for(p = &LAST_TASK; p > &FIRST_TASK; --p)
-               if (*p && ((*p)->state == TASK_RUNNING ||
-                          (*p)->state == TASK_UNINTERRUPTIBLE ||
-                          (*p)->state == TASK_SWAPPING))
-                       nr += FIXED_1;
-#ifdef __SMP__
-       nr-=(smp_num_cpus-1)*FIXED_1;
-#endif                 
-       return nr;
-}
-
-static inline void calc_load(unsigned long ticks)
-{
-       unsigned long active_tasks; /* fixed-point */
-       static int count = LOAD_FREQ;
-
-       count -= ticks;
-       if (count < 0) {
-               count += LOAD_FREQ;
-               active_tasks = count_active_tasks();
-               CALC_LOAD(avenrun[0], EXP_1, active_tasks);
-               CALC_LOAD(avenrun[1], EXP_5, active_tasks);
-               CALC_LOAD(avenrun[2], EXP_15, active_tasks);
-       }
-}
-
-/*
- * this routine handles the overflow of the microsecond field
- *
- * The tricky bits of code to handle the accurate clock support
- * were provided by Dave Mills (address@hidden) of NTP fame.
- * They were originally developed for SUN and DEC kernels.
- * All the kudos should go to Dave for this stuff.
- *
- */
-static void second_overflow(void)
-{
-    long ltemp;
-
-    /* Bump the maxerror field */
-    time_maxerror += time_tolerance >> SHIFT_USEC;
-    if ( time_maxerror > NTP_PHASE_LIMIT ) {
-        time_maxerror = NTP_PHASE_LIMIT;
-       time_state = TIME_ERROR;        /* p. 17, sect. 4.3, (b) */
-       time_status |= STA_UNSYNC;
-    }
-
-    /*
-     * Leap second processing. If in leap-insert state at
-     * the end of the day, the system clock is set back one
-     * second; if in leap-delete state, the system clock is
-     * set ahead one second. The microtime() routine or
-     * external clock driver will insure that reported time
-     * is always monotonic. The ugly divides should be
-     * replaced.
-     */
-    switch (time_state) {
-
-    case TIME_OK:
-       if (time_status & STA_INS)
-           time_state = TIME_INS;
-       else if (time_status & STA_DEL)
-           time_state = TIME_DEL;
-       break;
-
-    case TIME_INS:
-       if (xtime.tv_sec % 86400 == 0) {
-           xtime.tv_sec--;
-           time_state = TIME_OOP;
-           printk(KERN_NOTICE "Clock: inserting leap second 23:59:60 UTC\n");
-       }
-       break;
-
-    case TIME_DEL:
-       if ((xtime.tv_sec + 1) % 86400 == 0) {
-           xtime.tv_sec++;
-           time_state = TIME_WAIT;
-           printk(KERN_NOTICE "Clock: deleting leap second 23:59:59 UTC\n");
-       }
-       break;
-
-    case TIME_OOP:
-       time_state = TIME_WAIT;
-       break;
-
-    case TIME_WAIT:
-       if (!(time_status & (STA_INS | STA_DEL)))
-           time_state = TIME_OK;
-    }
-
-    /*
-     * Compute the phase adjustment for the next second. In
-     * PLL mode, the offset is reduced by a fixed factor
-     * times the time constant. In FLL mode the offset is
-     * used directly. In either mode, the maximum phase
-     * adjustment for each second is clamped so as to spread
-     * the adjustment over not more than the number of
-     * seconds between updates.
-     */
-    if (time_offset < 0) {
-       ltemp = -time_offset;
-       if (!(time_status & STA_FLL))
-           ltemp >>= SHIFT_KG + time_constant;
-       if (ltemp > (MAXPHASE / MINSEC) << SHIFT_UPDATE)
-           ltemp = (MAXPHASE / MINSEC) << SHIFT_UPDATE;
-       time_offset += ltemp;
-       time_adj = -ltemp << (SHIFT_SCALE - SHIFT_HZ - SHIFT_UPDATE);
-    } else {
-       ltemp = time_offset;
-       if (!(time_status & STA_FLL))
-           ltemp >>= SHIFT_KG + time_constant;
-       if (ltemp > (MAXPHASE / MINSEC) << SHIFT_UPDATE)
-           ltemp = (MAXPHASE / MINSEC) << SHIFT_UPDATE;
-       time_offset -= ltemp;
-       time_adj = ltemp << (SHIFT_SCALE - SHIFT_HZ - SHIFT_UPDATE);
-    }
-
-    /*
-     * Compute the frequency estimate and additional phase
-     * adjustment due to frequency error for the next
-     * second. When the PPS signal is engaged, gnaw on the
-     * watchdog counter and update the frequency computed by
-     * the pll and the PPS signal.
-     */
-    pps_valid++;
-    if (pps_valid == PPS_VALID) {      /* PPS signal lost */
-       pps_jitter = MAXTIME;
-       pps_stabil = MAXFREQ;
-       time_status &= ~(STA_PPSSIGNAL | STA_PPSJITTER |
-                        STA_PPSWANDER | STA_PPSERROR);
-    }
-    ltemp = time_freq + pps_freq;
-    if (ltemp < 0)
-       time_adj -= -ltemp >> (SHIFT_USEC + SHIFT_HZ - SHIFT_SCALE);
-    else
-       time_adj +=  ltemp >> (SHIFT_USEC + SHIFT_HZ - SHIFT_SCALE);
-
-#if HZ == 100
-    /* Compensate for (HZ==100) != (1 << SHIFT_HZ).
-     * Add 25% and 3.125% to get 128.125; => only 0.125% error (p. 14)
-     */
-    if (time_adj < 0)
-       time_adj -= (-time_adj >> 2) + (-time_adj >> 5);
-    else
-       time_adj += (time_adj >> 2) + (time_adj >> 5);
-#endif
-}
-
-/* in the NTP reference this is called "hardclock()" */
-static void update_wall_time_one_tick(void)
-{
-       if ( (time_adjust_step = time_adjust) != 0 ) {
-           /* We are doing an adjtime thing. 
-            *
-            * Prepare time_adjust_step to be within bounds.
-            * Note that a positive time_adjust means we want the clock
-            * to run faster.
-            *
-            * Limit the amount of the step to be in the range
-            * -tickadj .. +tickadj
-            */
-            if (time_adjust > tickadj)
-               time_adjust_step = tickadj;
-            else if (time_adjust < -tickadj)
-               time_adjust_step = -tickadj;
-            
-           /* Reduce by this step the amount of time left  */
-           time_adjust -= time_adjust_step;
-       }
-       xtime.tv_usec += tick + time_adjust_step;
-       /*
-        * Advance the phase, once it gets to one microsecond, then
-        * advance the tick more.
-        */
-       time_phase += time_adj;
-       if (time_phase <= -FINEUSEC) {
-               long ltemp = -time_phase >> SHIFT_SCALE;
-               time_phase += ltemp << SHIFT_SCALE;
-               xtime.tv_usec -= ltemp;
-       }
-       else if (time_phase >= FINEUSEC) {
-               long ltemp = time_phase >> SHIFT_SCALE;
-               time_phase -= ltemp << SHIFT_SCALE;
-               xtime.tv_usec += ltemp;
-       }
-}
-
-/*
- * Using a loop looks inefficient, but "ticks" is
- * usually just one (we shouldn't be losing ticks,
- * we're doing this this way mainly for interrupt
- * latency reasons, not because we think we'll
- * have lots of lost timer ticks
- */
-static void update_wall_time(unsigned long ticks)
-{
-       do {
-               ticks--;
-               update_wall_time_one_tick();
-       } while (ticks);
-
-       if (xtime.tv_usec >= 1000000) {
-           xtime.tv_usec -= 1000000;
-           xtime.tv_sec++;
-           second_overflow();
-       }
-}
-
-static inline void do_process_times(struct task_struct *p,
-       unsigned long user, unsigned long system)
-{
-       long psecs;
-
-       p->utime += user;
-       p->stime += system;
-
-       psecs = (p->stime + p->utime) / HZ;
-       if (psecs > p->rlim[RLIMIT_CPU].rlim_cur) {
-               /* Send SIGXCPU every second.. */
-               if (psecs * HZ == p->stime + p->utime)
-                       send_sig(SIGXCPU, p, 1);
-               /* and SIGKILL when we go over max.. */
-               if (psecs > p->rlim[RLIMIT_CPU].rlim_max)
-                       send_sig(SIGKILL, p, 1);
-       }
-}
-
-static inline void do_it_virt(struct task_struct * p, unsigned long ticks)
-{
-       unsigned long it_virt = p->it_virt_value;
-
-       if (it_virt) {
-               if (it_virt <= ticks) {
-                       it_virt = ticks + p->it_virt_incr;
-                       send_sig(SIGVTALRM, p, 1);
-               }
-               p->it_virt_value = it_virt - ticks;
-       }
-}
-
-static inline void do_it_prof(struct task_struct * p, unsigned long ticks)
-{
-       unsigned long it_prof = p->it_prof_value;
-
-       if (it_prof) {
-               if (it_prof <= ticks) {
-                       it_prof = ticks + p->it_prof_incr;
-                       send_sig(SIGPROF, p, 1);
-               }
-               p->it_prof_value = it_prof - ticks;
-       }
-}
-
-static __inline__ void update_one_process(struct task_struct *p,
-       unsigned long ticks, unsigned long user, unsigned long system)
-{
-       do_process_times(p, user, system);
-       do_it_virt(p, user);
-       do_it_prof(p, ticks);
-}      
-
-static void update_process_times(unsigned long ticks, unsigned long system)
-{
-#ifndef  __SMP__
-       struct task_struct * p = current;
-       unsigned long user = ticks - system;
-       if (p->pid) {
-               p->counter -= ticks;
-               if (p->counter < 0) {
-                       p->counter = 0;
-                       need_resched = 1;
-               }
-               if (p->priority < DEF_PRIORITY)
-                       kstat.cpu_nice += user;
-               else
-                       kstat.cpu_user += user;
-               kstat.cpu_system += system;
-       }
-       update_one_process(p, ticks, user, system);
-#else
-       int cpu,j;
-       cpu = smp_processor_id();
-       for (j=0;j<smp_num_cpus;j++)
-       {
-               int i = cpu_logical_map[j];
-               struct task_struct *p;
-               
-#ifdef __SMP_PROF__
-               if (test_bit(i,&smp_idle_map)) 
-                       smp_idle_count[i]++;
-#endif
-               p = current_set[i];
-               /*
-                * Do we have a real process?
-                */
-               if (p->pid) {
-                       /* assume user-mode process */
-                       unsigned long utime = ticks;
-                       unsigned long stime = 0;
-                       if (cpu == i) {
-                               utime = ticks-system;
-                               stime = system;
-                       } else if (smp_proc_in_lock[j]) {
-                               utime = 0;
-                               stime = ticks;
-                       }
-                       update_one_process(p, ticks, utime, stime);
-
-                       if (p->priority < DEF_PRIORITY)
-                               kstat.cpu_nice += utime;
-                       else
-                               kstat.cpu_user += utime;
-                       kstat.cpu_system += stime;
-
-                       p->counter -= ticks;
-                       if (p->counter >= 0)
-                               continue;
-                       p->counter = 0;
-               } else {
-                       /*
-                        * Idle processor found, do we have anything
-                        * we could run?
-                        */
-                       if (!(0x7fffffff & smp_process_available))
-                               continue;
-               }
-               /* Ok, we should reschedule, do the magic */
-               if (i==cpu)
-                       need_resched = 1;
-               else
-                       smp_message_pass(i, MSG_RESCHEDULE, 0L, 0);
-       }
-#endif
-}
-
-static unsigned long lost_ticks = 0;
-static unsigned long lost_ticks_system = 0;
-
-static inline void update_times(void)
-{
-       unsigned long ticks;
-
-       ticks = xchg(&lost_ticks, 0);
-
-       if (ticks) {
-               unsigned long system;
-
-               system = xchg(&lost_ticks_system, 0);
-               calc_load(ticks);
-               update_wall_time(ticks);
-               update_process_times(ticks, system);
-       }
-}
-
-static void timer_bh(void)
-{
-       update_times();
-       run_old_timers();
-       run_timer_list();
-}
-
-void do_timer(struct pt_regs * regs)
-{
-       (*(unsigned long *)&jiffies)++;
-       lost_ticks++;
-       mark_bh(TIMER_BH);
-       if (!user_mode(regs)) {
-               lost_ticks_system++;
-               if (prof_buffer && current->pid) {
-                       extern int _stext;
-                       unsigned long ip = instruction_pointer(regs);
-                       ip -= (unsigned long) &_stext;
-                       ip >>= prof_shift;
-                       if (ip < prof_len)
-                               prof_buffer[ip]++;
-               }
-       }
-       if (tq_timer)
-               mark_bh(TQUEUE_BH);
-}
-
-#ifndef __alpha__
-
-/*
- * For backwards compatibility?  This can be done in libc so Alpha
- * and all newer ports shouldn't need it.
- */
-asmlinkage unsigned int sys_alarm(unsigned int seconds)
-{
-       struct itimerval it_new, it_old;
-       unsigned int oldalarm;
-
-       it_new.it_interval.tv_sec = it_new.it_interval.tv_usec = 0;
-       it_new.it_value.tv_sec = seconds;
-       it_new.it_value.tv_usec = 0;
-       _setitimer(ITIMER_REAL, &it_new, &it_old);
-       oldalarm = it_old.it_value.tv_sec;
-       /* ehhh.. We can't return 0 if we have an alarm pending.. */
-       /* And we'd better return too much than too little anyway */
-       if (it_old.it_value.tv_usec)
-               oldalarm++;
-       return oldalarm;
-}
-
-/*
- * The Alpha uses getxpid, getxuid, and getxgid instead.  Maybe this
- * should be moved into arch/i386 instead?
- */
-asmlinkage int sys_getpid(void)
-{
-       return current->pid;
-}
-
-asmlinkage int sys_getppid(void)
-{
-       return current->p_opptr->pid;
-}
-
-asmlinkage int sys_getuid(void)
-{
-       return current->uid;
-}
-
-asmlinkage int sys_geteuid(void)
-{
-       return current->euid;
-}
-
-asmlinkage int sys_getgid(void)
-{
-       return current->gid;
-}
-
-asmlinkage int sys_getegid(void)
-{
-       return current->egid;
-}
-
-/*
- * This has been replaced by sys_setpriority.  Maybe it should be
- * moved into the arch dependent tree for those ports that require
- * it for backward compatibility?
- */
-asmlinkage int sys_nice(int increment)
-{
-       unsigned long newprio;
-       int increase = 0;
-
-       newprio = increment;
-       if (increment < 0) {
-               if (!suser())
-                       return -EPERM;
-               newprio = -increment;
-               increase = 1;
-       }
-       if (newprio > 40)
-               newprio = 40;
-       /*
-        * do a "normalization" of the priority (traditionally
-        * unix nice values are -20..20, linux doesn't really
-        * use that kind of thing, but uses the length of the
-        * timeslice instead (default 150 msec). The rounding is
-        * why we want to avoid negative values.
-        */
-       newprio = (newprio * DEF_PRIORITY + 10) / 20;
-       increment = newprio;
-       if (increase)
-               increment = -increment;
-       newprio = current->priority - increment;
-       if ((signed) newprio < 1)
-               newprio = 1;
-       if (newprio > DEF_PRIORITY*2)
-               newprio = DEF_PRIORITY*2;
-       current->priority = newprio;
-       return 0;
-}
-
-#endif
-
-static struct task_struct *find_process_by_pid(pid_t pid) {
-       struct task_struct *p, *q;
-
-       if (pid == 0)
-               p = current;
-       else {
-               p = 0;
-               for_each_task(q) {
-                       if (q && q->pid == pid) {
-                               p = q;
-                               break;
-                       }
-               }
-       }
-       return p;
-}
-
-static int setscheduler(pid_t pid, int policy, 
-                       struct sched_param *param)
-{
-       int error;
-       struct sched_param lp;
-       struct task_struct *p;
-
-       if (!param || pid < 0)
-               return -EINVAL;
-
-       error = verify_area(VERIFY_READ, param, sizeof(struct sched_param));
-       if (error)
-               return error;
-       memcpy_fromfs(&lp, param, sizeof(struct sched_param));
-
-       p = find_process_by_pid(pid);
-       if (!p)
-               return -ESRCH;
-                       
-       if (policy < 0)
-               policy = p->policy;
-       else if (policy != SCHED_FIFO && policy != SCHED_RR &&
-                policy != SCHED_OTHER)
-               return -EINVAL;
-       
-       /*
-        * Valid priorities for SCHED_FIFO and SCHED_RR are 1..99, valid
-        * priority for SCHED_OTHER is 0.
-        */
-       if (lp.sched_priority < 0 || lp.sched_priority > 99)
-               return -EINVAL;
-       if ((policy == SCHED_OTHER) != (lp.sched_priority == 0))
-               return -EINVAL;
-
-       if ((policy == SCHED_FIFO || policy == SCHED_RR) && !suser())
-               return -EPERM;
-       if ((current->euid != p->euid) && (current->euid != p->uid) &&
-           !suser())
-               return -EPERM;
-
-       p->policy = policy;
-       p->rt_priority = lp.sched_priority;
-       cli();
-       if (p->next_run)
-               move_last_runqueue(p);
-       sti();
-       need_resched = 1;
-       return 0;
-}
-
-asmlinkage int sys_sched_setscheduler(pid_t pid, int policy, 
-                                     struct sched_param *param)
-{
-       return setscheduler(pid, policy, param);
-}
-
-asmlinkage int sys_sched_setparam(pid_t pid, struct sched_param *param)
-{
-       return setscheduler(pid, -1, param);
-}
-
-asmlinkage int sys_sched_getscheduler(pid_t pid)
-{
-       struct task_struct *p;
-
-       if (pid < 0)
-               return -EINVAL;
-
-       p = find_process_by_pid(pid);
-       if (!p)
-               return -ESRCH;
-                       
-       return p->policy;
-}
-
-asmlinkage int sys_sched_getparam(pid_t pid, struct sched_param *param)
-{
-       int error;
-       struct task_struct *p;
-       struct sched_param lp;
-
-       if (!param || pid < 0)
-               return -EINVAL;
-
-       error = verify_area(VERIFY_WRITE, param, sizeof(struct sched_param));
-       if (error)
-               return error;
-
-       p = find_process_by_pid(pid);
-       if (!p)
-               return -ESRCH;
-
-       lp.sched_priority = p->rt_priority;
-       memcpy_tofs(param, &lp, sizeof(struct sched_param));
-
-       return 0;
-}
-
-asmlinkage int sys_sched_yield(void)
-{
-       cli();
-       move_last_runqueue(current);
-       current->counter = 0;
-       need_resched = 1;
-       sti();
-       return 0;
-}
-
-asmlinkage int sys_sched_get_priority_max(int policy)
-{
-       switch (policy) {
-             case SCHED_FIFO:
-             case SCHED_RR:
-               return 99;
-             case SCHED_OTHER:
-               return 0;
-       }
-
-       return -EINVAL;
-}
-
-asmlinkage int sys_sched_get_priority_min(int policy)
-{
-       switch (policy) {
-             case SCHED_FIFO:
-             case SCHED_RR:
-               return 1;
-             case SCHED_OTHER:
-               return 0;
-       }
-
-       return -EINVAL;
-}
-
-asmlinkage int sys_sched_rr_get_interval(pid_t pid, struct timespec *interval)
-{
-       int error;
-       struct timespec t;
-
-       error = verify_area(VERIFY_WRITE, interval, sizeof(struct timespec));
-       if (error)
-               return error;
-
-       /* Values taken from 2.1.38 */  
-       t.tv_sec = 0;
-       t.tv_nsec = 150000;   /* is this right for non-intel architecture too?*/
-       memcpy_tofs(interval, &t, sizeof(struct timespec));
-
-       return 0;
-}
-
-/*
- * change timeval to jiffies, trying to avoid the 
- * most obvious overflows..
- */
-static unsigned long timespectojiffies(struct timespec *value)
-{
-       unsigned long sec = (unsigned) value->tv_sec;
-       long nsec = value->tv_nsec;
-
-       if (sec > (LONG_MAX / HZ))
-               return LONG_MAX;
-       nsec += 1000000000L / HZ - 1;
-       nsec /= 1000000000L / HZ;
-       return HZ * sec + nsec;
-}
-
-static void jiffiestotimespec(unsigned long jiffies, struct timespec *value)
-{
-       value->tv_nsec = (jiffies % HZ) * (1000000000L / HZ);
-       value->tv_sec = jiffies / HZ;
-       return;
-}
-
-asmlinkage int sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp)
-{
-       int error;
-       struct timespec t;
-       unsigned long expire;
-
-       error = verify_area(VERIFY_READ, rqtp, sizeof(struct timespec));
-       if (error)
-               return error;
-       memcpy_fromfs(&t, rqtp, sizeof(struct timespec));
-       if (rmtp) {
-               error = verify_area(VERIFY_WRITE, rmtp,
-                                   sizeof(struct timespec));
-               if (error)
-                       return error;
-       }
-
-       if (t.tv_nsec >= 1000000000L || t.tv_nsec < 0 || t.tv_sec < 0)
-               return -EINVAL;
-
-       if (t.tv_sec == 0 && t.tv_nsec <= 2000000L &&
-           current->policy != SCHED_OTHER) {
-               /*
-                * Short delay requests up to 2 ms will be handled with
-                * high precision by a busy wait for all real-time processes.
-                */
-               udelay((t.tv_nsec + 999) / 1000);
-               return 0;
-       }
-
-       expire = timespectojiffies(&t) + (t.tv_sec || t.tv_nsec) + jiffies;
-       current->timeout = expire;
-       current->state = TASK_INTERRUPTIBLE;
-       schedule();
-
-       if (expire > jiffies) {
-               if (rmtp) {
-                       jiffiestotimespec(expire - jiffies -
-                                         (expire > jiffies + 1), &t);
-                       memcpy_tofs(rmtp, &t, sizeof(struct timespec));
-               }
-               return -EINTR;
-       }
-
-       return 0;
-}
-
-static void show_task(int nr,struct task_struct * p)
-{
-       unsigned long free;
-       static const char * stat_nam[] = { "R", "S", "D", "Z", "T", "W" };
-
-       printk("%-8s %3d ", p->comm, (p == current) ? -nr : nr);
-       if (((unsigned) p->state) < sizeof(stat_nam)/sizeof(char *))
-               printk(stat_nam[p->state]);
-       else
-               printk(" ");
-#if ((~0UL) == 0xffffffff)
-       if (p == current)
-               printk(" current  ");
-       else
-               printk(" %08lX ", thread_saved_pc(&p->tss));
-       printk("%08lX ", get_wchan(p));
-#else
-       if (p == current)
-               printk("   current task   ");
-       else
-               printk(" %016lx ", thread_saved_pc(&p->tss));
-       printk("%08lX ", get_wchan(p) & 0xffffffffL);
-#endif
-       for (free = 1; free < PAGE_SIZE/sizeof(long) ; free++) {
-               if (((unsigned long *)p->kernel_stack_page)[free])
-                       break;
-       }
-       printk("%5lu %5d %6d ", free*sizeof(long), p->pid, p->p_pptr->pid);
-       if (p->p_cptr)
-               printk("%5d ", p->p_cptr->pid);
-       else
-               printk("      ");
-       if (p->p_ysptr)
-               printk("%7d", p->p_ysptr->pid);
-       else
-               printk("       ");
-       if (p->p_osptr)
-               printk(" %5d\n", p->p_osptr->pid);
-       else
-               printk("\n");
-}
-
-void show_state(void)
-{
-       int i;
-
-#if ((~0UL) == 0xffffffff)
-       printk("\n"
-              "                                  free                        
sibling\n");
-       printk("  task             PC     wchan   stack   pid father child 
younger older\n");
-#else
-       printk("\n"
-              "                                           free                 
       sibling\n");
-       printk("  task                 PC         wchan    stack   pid father 
child younger older\n");
-#endif
-       for (i=0 ; i<NR_TASKS ; i++)
-               if (task[i])
-                       show_task(i,task[i]);
-}
-
-void sched_init(void)
-{
-       /*
-        *      We have to do a little magic to get the first
-        *      process right in SMP mode.
-        */
-       int cpu=smp_processor_id();
-#ifndef __SMP__        
-       current_set[cpu]=&init_task;
-#else
-       init_task.processor=cpu;
-       for(cpu = 0; cpu < NR_CPUS; cpu++)
-               current_set[cpu] = &init_task;
-#endif
-       init_bh(TIMER_BH, timer_bh);
-       init_bh(TQUEUE_BH, tqueue_bh);
-       init_bh(IMMEDIATE_BH, immediate_bh);
-}
diff --git a/linux/src/kernel/softirq.c b/linux/src/kernel/softirq.c
deleted file mode 100644
index 32038b1..0000000
--- a/linux/src/kernel/softirq.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *     linux/kernel/softirq.c
- *
- *     Copyright (C) 1992 Linus Torvalds
- *
- * do_bottom_half() runs at normal kernel priority: all interrupts
- * enabled.  do_bottom_half() is atomic with respect to itself: a
- * bottom_half handler need not be re-entrant.
- */
-
-#include <linux/ptrace.h>
-#include <linux/errno.h>
-#include <linux/kernel_stat.h>
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/mm.h>
-
-#include <asm/system.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/bitops.h>
-
-unsigned int intr_count = 0;
-
-int bh_mask_count[32];
-unsigned int bh_active = 0;
-unsigned int bh_mask = 0;
-void (*bh_base[32])(void);
-
-
-asmlinkage void do_bottom_half(void)
-{
-       unsigned int active;
-       unsigned int mask, left;
-       void (**bh)(void);
-
-       sti();
-       bh = bh_base;
-       active = bh_active & bh_mask;
-       for (mask = 1, left = ~0 ; left & active ; bh++,mask += mask,left += 
left) {
-               if (mask & active) {
-                       void (*fn)(void);
-                       bh_active &= ~mask;
-                       fn = *bh;
-                       if (!fn)
-                               goto bad_bh;
-                       fn();
-               }
-       }
-       return;
-bad_bh:
-       printk ("irq.c:bad bottom half entry %08lx\n", mask);
-}
diff --git a/linux/src/lib/vsprintf.c b/linux/src/lib/vsprintf.c
deleted file mode 100644
index 8f813c6..0000000
--- a/linux/src/lib/vsprintf.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- *  linux/lib/vsprintf.c
- *
- *  Copyright (C) 1991, 1992  Linus Torvalds
- */
-
-/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
-/*
- * Wirzenius wrote this portably, Torvalds fucked it up :-)
- */
-
-#include <stdarg.h>
-#include <linux/types.h>
-#include <linux/string.h>
-#include <linux/ctype.h>
-
-unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base)
-{
-       unsigned long result = 0,value;
-
-       if (!base) {
-               base = 10;
-               if (*cp == '0') {
-                       base = 8;
-                       cp++;
-                       if ((*cp == 'x') && isxdigit(cp[1])) {
-                               cp++;
-                               base = 16;
-                       }
-               }
-       }
-       while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
-           ? toupper(*cp) : *cp)-'A'+10) < base) {
-               result = result*base + value;
-               cp++;
-       }
-       if (endp)
-               *endp = (char *)cp;
-       return result;
-}
-
-/* we use this so that we can do without the ctype library */
-#define is_digit(c)    ((c) >= '0' && (c) <= '9')
-
-static int skip_atoi(const char **s)
-{
-       int i=0;
-
-       while (is_digit(**s))
-               i = i*10 + *((*s)++) - '0';
-       return i;
-}
-
-#define ZEROPAD        1               /* pad with zero */
-#define SIGN   2               /* unsigned/signed long */
-#define PLUS   4               /* show plus */
-#define SPACE  8               /* space if plus */
-#define LEFT   16              /* left justified */
-#define SPECIAL        32              /* 0x */
-#define LARGE  64              /* use 'ABCDEF' instead of 'abcdef' */
-
-#define do_div(n,base) ({ \
-int __res; \
-__res = ((unsigned long) n) % (unsigned) base; \
-n = ((unsigned long) n) / (unsigned) base; \
-__res; })
-
-static char * number(char * str, long num, int base, int size, int precision
-       ,int type)
-{
-       char c,sign,tmp[66];
-       const char *digits="0123456789abcdefghijklmnopqrstuvwxyz";
-       int i;
-
-       if (type & LARGE)
-               digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-       if (type & LEFT)
-               type &= ~ZEROPAD;
-       if (base < 2 || base > 36)
-               return 0;
-       c = (type & ZEROPAD) ? '0' : ' ';
-       sign = 0;
-       if (type & SIGN) {
-               if (num < 0) {
-                       sign = '-';
-                       num = -num;
-                       size--;
-               } else if (type & PLUS) {
-                       sign = '+';
-                       size--;
-               } else if (type & SPACE) {
-                       sign = ' ';
-                       size--;
-               }
-       }
-       if (type & SPECIAL) {
-               if (base == 16)
-                       size -= 2;
-               else if (base == 8)
-                       size--;
-       }
-       i = 0;
-       if (num == 0)
-               tmp[i++]='0';
-       else while (num != 0)
-               tmp[i++] = digits[do_div(num,base)];
-       if (i > precision)
-               precision = i;
-       size -= precision;
-       if (!(type&(ZEROPAD+LEFT)))
-               while(size-->0)
-                       *str++ = ' ';
-       if (sign)
-               *str++ = sign;
-       if (type & SPECIAL)
-               if (base==8)
-                       *str++ = '0';
-               else if (base==16) {
-                       *str++ = '0';
-                       *str++ = digits[33];
-               }
-       if (!(type & LEFT))
-               while (size-- > 0)
-                       *str++ = c;
-       while (i < precision--)
-               *str++ = '0';
-       while (i-- > 0)
-               *str++ = tmp[i];
-       while (size-- > 0)
-               *str++ = ' ';
-       return str;
-}
-
-int vsprintf(char *buf, const char *fmt, va_list args)
-{
-       int len;
-       unsigned long num;
-       int i, base;
-       char * str;
-       const char *s;
-
-       int flags;              /* flags to number() */
-
-       int field_width;        /* width of output field */
-       int precision;          /* min. # of digits for integers; max
-                                  number of chars for from string */
-       int qualifier;          /* 'h', 'l', or 'L' for integer fields */
-
-       for (str=buf ; *fmt ; ++fmt) {
-               if (*fmt != '%') {
-                       *str++ = *fmt;
-                       continue;
-               }
-                       
-               /* process flags */
-               flags = 0;
-               repeat:
-                       ++fmt;          /* this also skips first '%' */
-                       switch (*fmt) {
-                               case '-': flags |= LEFT; goto repeat;
-                               case '+': flags |= PLUS; goto repeat;
-                               case ' ': flags |= SPACE; goto repeat;
-                               case '#': flags |= SPECIAL; goto repeat;
-                               case '0': flags |= ZEROPAD; goto repeat;
-                               }
-               
-               /* get field width */
-               field_width = -1;
-               if (is_digit(*fmt))
-                       field_width = skip_atoi(&fmt);
-               else if (*fmt == '*') {
-                       ++fmt;
-                       /* it's the next argument */
-                       field_width = va_arg(args, int);
-                       if (field_width < 0) {
-                               field_width = -field_width;
-                               flags |= LEFT;
-                       }
-               }
-
-               /* get the precision */
-               precision = -1;
-               if (*fmt == '.') {
-                       ++fmt;  
-                       if (is_digit(*fmt))
-                               precision = skip_atoi(&fmt);
-                       else if (*fmt == '*') {
-                               ++fmt;
-                               /* it's the next argument */
-                               precision = va_arg(args, int);
-                       }
-                       if (precision < 0)
-                               precision = 0;
-               }
-
-               /* get the conversion qualifier */
-               qualifier = -1;
-               if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L') {
-                       qualifier = *fmt;
-                       ++fmt;
-               }
-
-               /* default base */
-               base = 10;
-
-               switch (*fmt) {
-               case 'c':
-                       if (!(flags & LEFT))
-                               while (--field_width > 0)
-                                       *str++ = ' ';
-                       *str++ = (unsigned char) va_arg(args, int);
-                       while (--field_width > 0)
-                               *str++ = ' ';
-                       continue;
-
-               case 's':
-                       s = va_arg(args, char *);
-                       if (!s)
-                               s = "<NULL>";
-
-                       len = strnlen(s, precision);
-
-                       if (!(flags & LEFT))
-                               while (len < field_width--)
-                                       *str++ = ' ';
-                       for (i = 0; i < len; ++i)
-                               *str++ = *s++;
-                       while (len < field_width--)
-                               *str++ = ' ';
-                       continue;
-
-               case 'p':
-                       if (field_width == -1) {
-                               field_width = 2*sizeof(void *);
-                               flags |= ZEROPAD;
-                       }
-                       str = number(str,
-                               (unsigned long) va_arg(args, void *), 16,
-                               field_width, precision, flags);
-                       continue;
-
-
-               case 'n':
-                       if (qualifier == 'l') {
-                               long * ip = va_arg(args, long *);
-                               *ip = (str - buf);
-                       } else {
-                               int * ip = va_arg(args, int *);
-                               *ip = (str - buf);
-                       }
-                       continue;
-
-               /* integer number formats - set up the flags and "break" */
-               case 'o':
-                       base = 8;
-                       break;
-
-               case 'X':
-                       flags |= LARGE;
-               case 'x':
-                       base = 16;
-                       break;
-
-               case 'd':
-               case 'i':
-                       flags |= SIGN;
-               case 'u':
-                       break;
-
-               default:
-                       if (*fmt != '%')
-                               *str++ = '%';
-                       if (*fmt)
-                               *str++ = *fmt;
-                       else
-                               --fmt;
-                       continue;
-               }
-               if (qualifier == 'l')
-                       num = va_arg(args, unsigned long);
-               else if (qualifier == 'h')
-                       if (flags & SIGN)
-                               num = va_arg(args, short);
-                       else
-                               num = va_arg(args, unsigned short);
-               else if (flags & SIGN)
-                       num = va_arg(args, int);
-               else
-                       num = va_arg(args, unsigned int);
-               str = number(str, num, base, field_width, precision, flags);
-       }
-       *str = '\0';
-       return str-buf;
-}
-
-int sprintf(char * buf, const char *fmt, ...)
-{
-       va_list args;
-       int i;
-
-       va_start(args, fmt);
-       i=vsprintf(buf,fmt,args);
-       va_end(args);
-       return i;
-}
-
diff --git a/linux/src/net/core/dev.c b/linux/src/net/core/dev.c
deleted file mode 100644
index 4e46f9f..0000000
--- a/linux/src/net/core/dev.c
+++ /dev/null
@@ -1,1629 +0,0 @@
-/*
- *     NET3    Protocol independent device support routines.
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- *     Derived from the non IP parts of dev.c 1.0.19
- *             Authors:        Ross Biro, <address@hidden>
- *                             Fred N. van Kempen, <address@hidden>
- *                             Mark Evans, <address@hidden>
- *
- *     Additional Authors:
- *             Florian la Roche <address@hidden>
- *             Alan Cox <address@hidden>
- *             David Hinds <address@hidden>
- *
- *     Changes:
- *             Alan Cox        :       device private ioctl copies fields back.
- *             Alan Cox        :       Transmit queue code does relevant 
stunts to
- *                                     keep the queue safe.
- *             Alan Cox        :       Fixed double lock.
- *             Alan Cox        :       Fixed promisc NULL pointer trap
- *             ????????        :       Support the full private ioctl range
- *             Alan Cox        :       Moved ioctl permission check into 
drivers
- *             Tim Kordas      :       SIOCADDMULTI/SIOCDELMULTI
- *             Alan Cox        :       100 backlog just doesn't cut it when
- *                                     you start doing multicast video 8)
- *             Alan Cox        :       Rewrote net_bh and list manager.
- *             Alan Cox        :       Fix ETH_P_ALL echoback lengths.
- *             Alan Cox        :       Took out transmit every packet pass
- *                                     Saved a few bytes in the ioctl handler
- *             Alan Cox        :       Network driver sets packet type before 
calling netif_rx. Saves
- *                                     a function call a packet.
- *             Alan Cox        :       Hashed net_bh()
- *             Richard Kooijman:       Timestamp fixes.
- *             Alan Cox        :       Wrong field in SIOCGIFDSTADDR
- *             Alan Cox        :       Device lock protection.
- *             Alan Cox        :       Fixed nasty side effect of device close 
changes.
- *             Rudi Cilibrasi  :       Pass the right thing to 
set_mac_address()
- *             Dave Miller     :       32bit quantity for the device lock to 
make it work out
- *                                     on a Sparc.
- *             Bjorn Ekwall    :       Added KERNELD hack.
- *             Alan Cox        :       Cleaned up the backlog initialise.
- *             Craig Metz      :       SIOCGIFCONF fix if space for under
- *                                     1 device.
- *         Thomas Bogendoerfer :       Return ENODEV for dev_open, if there
- *                                     is no device open function.
- *         Lawrence V. Stefani :       Changed set MTU ioctl to not assume
- *                                     min MTU of 68 bytes for devices
- *                                     that have change MTU functions.
- *
- */
-
-#include <asm/segment.h>
-#include <asm/system.h>
-#include <asm/bitops.h>
-#include <linux/config.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/string.h>
-#include <linux/mm.h>
-#include <linux/socket.h>
-#include <linux/sockios.h>
-#include <linux/in.h>
-#include <linux/errno.h>
-#include <linux/interrupt.h>
-#include <linux/if_ether.h>
-#include <linux/inet.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/notifier.h>
-#include <net/ip.h>
-#include <net/route.h>
-#include <linux/skbuff.h>
-#include <net/sock.h>
-#include <net/arp.h>
-#include <net/slhc.h>
-#include <linux/proc_fs.h>
-#include <linux/stat.h>
-#include <net/br.h>
-#ifdef CONFIG_NET_ALIAS
-#include <linux/net_alias.h>
-#endif
-#ifdef CONFIG_KERNELD
-#include <linux/kerneld.h>
-#endif
-#ifdef CONFIG_NET_RADIO
-#include <linux/wireless.h>
-#endif /* CONFIG_NET_RADIO */
-
-/*
- *     The list of packet types we will receive (as opposed to discard)
- *     and the routines to invoke.
- */
-
-struct packet_type *ptype_base[16];
-struct packet_type *ptype_all = NULL;          /* Taps */
-
-/*
- *     Device list lock
- */
- 
-int dev_lockct=0;
- 
-/*
- *     Our notifier list
- */
- 
-struct notifier_block *netdev_chain=NULL;
-
-/*
- *     Device drivers call our routines to queue packets here. We empty the
- *     queue in the bottom half handler.
- */
-
-static struct sk_buff_head backlog;
-
-/* 
- *     We don't overdo the queue or we will thrash memory badly.
- */
- 
-static int backlog_size = 0;
-
-/*
- *     Return the lesser of the two values. 
- */
- 
-static __inline__ unsigned long min(unsigned long a, unsigned long b)
-{
-       return (a < b)? a : b;
-}
-
-
-/******************************************************************************************
-
-               Protocol management and registration routines
-
-*******************************************************************************************/
-
-/*
- *     For efficiency
- */
-
-static int dev_nit=0;
-
-/*
- *     Add a protocol ID to the list. Now that the input handler is
- *     smarter we can dispense with all the messy stuff that used to be
- *     here.
- */
- 
-void dev_add_pack(struct packet_type *pt)
-{
-       int hash;
-       if(pt->type==htons(ETH_P_ALL))
-       {
-               dev_nit++;
-               pt->next=ptype_all;
-               ptype_all=pt;
-       }
-       else
-       {       
-               hash=ntohs(pt->type)&15;
-               pt->next = ptype_base[hash];
-               ptype_base[hash] = pt;
-       }
-}
-
-
-/*
- *     Remove a protocol ID from the list.
- */
- 
-void dev_remove_pack(struct packet_type *pt)
-{
-       struct packet_type **pt1;
-       if(pt->type==htons(ETH_P_ALL))
-       {
-               dev_nit--;
-               pt1=&ptype_all;
-       }
-       else
-               pt1=&ptype_base[ntohs(pt->type)&15];
-       for(; (*pt1)!=NULL; pt1=&((*pt1)->next))
-       {
-               if(pt==(*pt1))
-               {
-                       *pt1=pt->next;
-                       return;
-               }
-       }
-       printk(KERN_WARNING "dev_remove_pack: %p not found.\n", pt);
-}
-
-/*****************************************************************************************
-
-                           Device Interface Subroutines
-
-******************************************************************************************/
-
-/* 
- *     Find an interface by name.
- */
- 
-struct device *dev_get(const char *name)
-{
-       struct device *dev;
-
-       for (dev = dev_base; dev != NULL; dev = dev->next) 
-       {
-               if (strcmp(dev->name, name) == 0)
-                       return(dev);
-       }
-       return NULL;
-}
-       
-/*
- *     Find and possibly load an interface.
- */
- 
-#ifdef CONFIG_KERNELD
-
-extern __inline__ void dev_load(const char *name)
-{
-       if(!dev_get(name) && suser()) {
-#ifdef CONFIG_NET_ALIAS
-               const char *sptr;
- 
-               for (sptr=name ; *sptr ; sptr++) if(*sptr==':') break;
-               if (!(*sptr && *(sptr+1)))
-#endif
-               request_module(name);
-       }
-}
-
-#endif
- 
-/*
- *     Prepare an interface for use. 
- */
- 
-int dev_open(struct device *dev)
-{
-       int ret = -ENODEV;
-
-       /*
-        *      Call device private open method
-        */
-       if (dev->open) 
-               ret = dev->open(dev);
-
-       /*
-        *      If it went open OK then set the flags
-        */
-        
-       if (ret == 0) 
-       {
-               dev->flags |= (IFF_UP | IFF_RUNNING);
-               /*
-                *      Initialise multicasting status 
-                */
-               dev_mc_upload(dev);
-               notifier_call_chain(&netdev_chain, NETDEV_UP, dev);
-       }
-       return(ret);
-}
-
-
-/*
- *     Completely shutdown an interface.
- */
- 
-int dev_close(struct device *dev)
-{
-       int ct=0;
-
-       /*
-        *      Call the device specific close. This cannot fail.
-        *      Only if device is UP
-        */
-        
-       if ((dev->flags & IFF_UP) && dev->stop)
-               dev->stop(dev);
-
-       /*
-        *      Device is now down.
-        */
-        
-       dev->flags&=~(IFF_UP|IFF_RUNNING);
-
-       /*
-        *      Tell people we are going down
-        */
-       notifier_call_chain(&netdev_chain, NETDEV_DOWN, dev);
-       /*
-        *      Flush the multicast chain
-        */
-       dev_mc_discard(dev);
-
-       /*
-        *      Purge any queued packets when we down the link 
-        */
-       while(ct<DEV_NUMBUFFS)
-       {
-               struct sk_buff *skb;
-               while((skb=skb_dequeue(&dev->buffs[ct]))!=NULL)
-                       if(skb->free)
-                               kfree_skb(skb,FREE_WRITE);
-               ct++;
-       }
-       return(0);
-}
-
-
-/*
- *     Device change register/unregister. These are not inline or static
- *     as we export them to the world.
- */
-
-int register_netdevice_notifier(struct notifier_block *nb)
-{
-       return notifier_chain_register(&netdev_chain, nb);
-}
-
-int unregister_netdevice_notifier(struct notifier_block *nb)
-{
-       return notifier_chain_unregister(&netdev_chain,nb);
-}
-
-/*
- *     Send (or queue for sending) a packet. 
- *
- *     IMPORTANT: When this is called to resend frames. The caller MUST
- *     already have locked the sk_buff. Apart from that we do the
- *     rest of the magic.
- */
-
-static void do_dev_queue_xmit(struct sk_buff *skb, struct device *dev, int pri)
-{
-       unsigned long flags;
-       struct sk_buff_head *list;
-       int retransmission = 0; /* used to say if the packet should go  */
-                               /* at the front or the back of the      */
-                               /* queue - front is a retransmit try    */
-
-       if(pri>=0 && !skb_device_locked(skb))
-               skb_device_lock(skb);   /* Shove a lock on the frame */
-#if CONFIG_SKB_CHECK 
-       IS_SKB(skb);
-#endif    
-       skb->dev = dev;
-
-       /*
-        *      Negative priority is used to flag a frame that is being pulled 
from the
-        *      queue front as a retransmit attempt. It therefore goes back on 
the queue
-        *      start on a failure.
-        */
-        
-       if (pri < 0) 
-       {
-               pri = -pri-1;
-               retransmission = 1;
-       }
-
-#ifdef CONFIG_NET_DEBUG
-       if (pri >= DEV_NUMBUFFS) 
-       {
-               printk(KERN_WARNING "bad priority in dev_queue_xmit.\n");
-               pri = 1;
-       }
-#endif
-
-       /*
-        *      If the address has not been resolved. Call the device header 
rebuilder.
-        *      This can cover all protocols and technically not just ARP 
either.
-        */
-        
-       if (!skb->arp && dev->rebuild_header(skb->data, dev, skb->raddr, skb)) {
-               return;
-       }
-
-       /*
-        *
-        *      If dev is an alias, switch to its main device.
-        *      "arp" resolution has been made with alias device, so
-        *      arp entries refer to alias, not main.
-        *
-        */
-
-#ifdef CONFIG_NET_ALIAS
-       if (net_alias_is(dev))
-               skb->dev = dev = net_alias_dev_tx(dev);
-#endif
-
-       /*
-        *      If we are bridging and this is directly generated output
-        *      pass the frame via the bridge.
-        */
-
-#ifdef CONFIG_BRIDGE
-       if(skb->pkt_bridged!=IS_BRIDGED && br_stats.flags & BR_UP)
-       {
-               if(br_tx_frame(skb))
-                       return;
-       }
-#endif
-
-       list = dev->buffs + pri;
-
-       save_flags(flags);
-       /* if this isn't a retransmission, use the first packet instead... */
-       if (!retransmission) {
-               if (skb_queue_len(list)) {
-                       /* avoid overrunning the device queue.. */
-                       if (skb_queue_len(list) > dev->tx_queue_len) {
-                               dev_kfree_skb(skb, FREE_WRITE);
-                               return;
-                       }
-               }
-
-               /* copy outgoing packets to any sniffer packet handlers */
-               if (dev_nit) {
-                       struct packet_type *ptype;
-                       skb->stamp=xtime;
-                       for (ptype = ptype_all; ptype!=NULL; ptype = 
ptype->next) 
-                       {
-                               /* Never send packets back to the socket
-                                * they originated from - MvS (address@hidden)
-                                */
-                               if ((ptype->dev == dev || !ptype->dev) &&
-                                  ((struct sock *)ptype->data != skb->sk))
-                               {
-                                       struct sk_buff *skb2;
-                                       if ((skb2 = skb_clone(skb, GFP_ATOMIC)) 
== NULL)
-                                               break;
-                                       /* FIXME?: Wrong when the 
hard_header_len
-                                        * is an upper bound. Is this even
-                                        * used anywhere?
-                                        */
-                                       skb2->h.raw = skb2->data + 
dev->hard_header_len;
-                                       /* On soft header devices we
-                                        * yank the header before mac.raw
-                                        * back off. This is set by
-                                        * dev->hard_header().
-                                        */
-                                       if (dev->flags&IFF_SOFTHEADERS)
-                                               
skb_pull(skb2,skb2->mac.raw-skb2->data);
-                                       skb2->mac.raw = skb2->data;
-                                       ptype->func(skb2, skb->dev, ptype);
-                               }
-                       }
-               }
-
-               if (skb_queue_len(list)) {
-                       cli();
-                       skb_device_unlock(skb);         /* Buffer is on the 
device queue and can be freed safely */
-                       __skb_queue_tail(list, skb);
-                       skb = __skb_dequeue(list);
-                       skb_device_lock(skb);           /* New buffer needs 
locking down */
-                       restore_flags(flags);
-               }
-       }
-       if (dev->hard_start_xmit(skb, dev) == 0) {
-               /*
-                *      Packet is now solely the responsibility of the driver
-                */
-               return;
-       }
-
-       /*
-        *      Transmission failed, put skb back into a list. Once on the list 
it's safe and
-        *      no longer device locked (it can be freed safely from the device 
queue)
-        */
-       cli();
-       skb_device_unlock(skb);
-       __skb_queue_head(list,skb);
-       restore_flags(flags);
-}
-
-void dev_queue_xmit(struct sk_buff *skb, struct device *dev, int pri)
-{
-       start_bh_atomic();
-       do_dev_queue_xmit(skb, dev, pri);
-       end_bh_atomic();
-}
-
-/*
- *     Receive a packet from a device driver and queue it for the upper
- *     (protocol) levels.  It always succeeds. This is the recommended 
- *     interface to use.
- */
-
-void netif_rx(struct sk_buff *skb)
-{
-       static int dropping = 0;
-
-       /*
-        *      Any received buffers are un-owned and should be discarded
-        *      when freed. These will be updated later as the frames get
-        *      owners.
-        */
-
-       skb->sk = NULL;
-       skb->free = 1;
-       if(skb->stamp.tv_sec==0)
-               skb->stamp = xtime;
-
-       /*
-        *      Check that we aren't overdoing things.
-        */
-
-       if (!backlog_size)
-               dropping = 0;
-       else if (backlog_size > 300)
-               dropping = 1;
-
-       if (dropping) 
-       {
-               kfree_skb(skb, FREE_READ);
-               return;
-       }
-
-       /*
-        *      Add it to the "backlog" queue. 
-        */
-#if CONFIG_SKB_CHECK
-       IS_SKB(skb);
-#endif 
-       skb_queue_tail(&backlog,skb);
-       backlog_size++;
-  
-       /*
-        *      If any packet arrived, mark it for processing after the
-        *      hardware interrupt returns.
-        */
-
-       mark_bh(NET_BH);
-       return;
-}
-
-/*
- *     This routine causes all interfaces to try to send some data. 
- */
- 
-static void dev_transmit(void)
-{
-       struct device *dev;
-
-       for (dev = dev_base; dev != NULL; dev = dev->next)
-       {
-               if (dev->flags != 0 && !dev->tbusy) {
-                       /*
-                        *      Kick the device
-                        */
-                       dev_tint(dev);
-               }
-       }
-}
-
-
-/**********************************************************************************
-
-                       Receive Queue Processor
-                       
-***********************************************************************************/
-
-/*
- *     When we are called the queue is ready to grab, the interrupts are
- *     on and hardware can interrupt and queue to the receive queue as we
- *     run with no problems.
- *     This is run as a bottom half after an interrupt handler that does
- *     mark_bh(NET_BH);
- */
- 
-void net_bh(void)
-{
-       struct packet_type *ptype;
-       struct packet_type *pt_prev;
-       unsigned short type;
-
-       /*
-        *      Can we send anything now? We want to clear the
-        *      decks for any more sends that get done as we
-        *      process the input. This also minimises the
-        *      latency on a transmit interrupt bh.
-        */
-
-       dev_transmit();
-  
-       /*
-        *      Any data left to process. This may occur because a
-        *      mark_bh() is done after we empty the queue including
-        *      that from the device which does a mark_bh() just after
-        */
-
-       /*
-        *      While the queue is not empty..
-        *
-        *      Note that the queue never shrinks due to
-        *      an interrupt, so we can do this test without
-        *      disabling interrupts.
-        */
-
-       while (!skb_queue_empty(&backlog)) {
-               struct sk_buff * skb = backlog.next;
-
-               /*
-                *      We have a packet. Therefore the queue has shrunk
-                */
-               cli();
-               __skb_unlink(skb, &backlog);
-               backlog_size--;
-               sti();
-               
-
-#ifdef CONFIG_BRIDGE
-
-               /*
-                *      If we are bridging then pass the frame up to the
-                *      bridging code. If it is bridged then move on
-                */
-                
-               if (br_stats.flags & BR_UP)
-               {
-                       /*
-                        *      We pass the bridge a complete frame. This means
-                        *      recovering the MAC header first.
-                        */
-                        
-                       int offset=skb->data-skb->mac.raw;
-                       cli();
-                       skb_push(skb,offset);   /* Put header back on for 
bridge */
-                       if(br_receive_frame(skb))
-                       {
-                               sti();
-                               continue;
-                       }
-                       /*
-                        *      Pull the MAC header off for the copy going to
-                        *      the upper layers.
-                        */
-                       skb_pull(skb,offset);
-                       sti();
-               }
-#endif
-               
-               /*
-                *      Bump the pointer to the next structure.
-                * 
-                *      On entry to the protocol layer. skb->data and
-                *      skb->h.raw point to the MAC and encapsulated data
-                */
-
-               skb->h.raw = skb->data;
-
-               /*
-                *      Fetch the packet protocol ID. 
-                */
-               
-               type = skb->protocol;
-
-               /*
-                *      We got a packet ID.  Now loop over the "known protocols"
-                *      list. There are two lists. The ptype_all list of taps 
(normally empty)
-                *      and the main protocol list which is hashed perfectly 
for normal protocols.
-                */
-               
-               pt_prev = NULL;
-               for (ptype = ptype_all; ptype!=NULL; ptype=ptype->next)
-               {
-                       if(!ptype->dev || ptype->dev == skb->dev) {
-                               if(pt_prev) {
-                                       struct sk_buff *skb2=skb_clone(skb, 
GFP_ATOMIC);
-                                       if(skb2)
-                                               pt_prev->func(skb2,skb->dev, 
pt_prev);
-                               }
-                               pt_prev=ptype;
-                       }
-               }
-               
-               for (ptype = ptype_base[ntohs(type)&15]; ptype != NULL; ptype = 
ptype->next) 
-               {
-                       if (ptype->type == type && (!ptype->dev || 
ptype->dev==skb->dev))
-                       {
-                               /*
-                                *      We already have a match queued. Deliver
-                                *      to it and then remember the new match
-                                */
-                               if(pt_prev)
-                               {
-                                       struct sk_buff *skb2;
-
-                                       skb2=skb_clone(skb, GFP_ATOMIC);
-
-                                       /*
-                                        *      Kick the protocol handler. This 
should be fast
-                                        *      and efficient code.
-                                        */
-
-                                       if(skb2)
-                                               pt_prev->func(skb2, skb->dev, 
pt_prev);
-                               }
-                               /* Remember the current last to do */
-                               pt_prev=ptype;
-                       }
-               } /* End of protocol list loop */
-               
-               /*
-                *      Is there a last item to send to ?
-                */
-
-               if(pt_prev)
-                       pt_prev->func(skb, skb->dev, pt_prev);
-               /*
-                *      Has an unknown packet has been received ?
-                */
-        
-               else
-                       kfree_skb(skb, FREE_WRITE);
-               /*
-                *      Again, see if we can transmit anything now. 
-                *      [Ought to take this out judging by tests it slows
-                *       us down not speeds us up]
-                */
-#ifdef XMIT_EVERY
-               dev_transmit();
-#endif         
-       }       /* End of queue loop */
-       
-       /*
-        *      We have emptied the queue
-        */
-       
-       /*
-        *      One last output flush.
-        */
-
-#ifdef XMIT_AFTER       
-       dev_transmit();
-#endif
-}
-
-
-/*
- *     This routine is called when an device driver (i.e. an
- *     interface) is ready to transmit a packet.
- */
- 
-void dev_tint(struct device *dev)
-{
-       int i;
-       unsigned long flags;
-       struct sk_buff_head * head;
-       
-       /*
-        * aliases do not transmit (for now :) )
-        */
-
-#ifdef CONFIG_NET_ALIAS
-       if (net_alias_is(dev)) return;
-#endif
-       head = dev->buffs;
-       save_flags(flags);
-       cli();
-
-       /*
-        *      Work the queues in priority order
-        */      
-       for(i = 0;i < DEV_NUMBUFFS; i++,head++)
-       {
-
-               while (!skb_queue_empty(head)) {
-                       struct sk_buff *skb;
-
-                       skb = head->next;
-                       __skb_unlink(skb, head);
-                       /*
-                        *      Stop anyone freeing the buffer while we 
retransmit it
-                        */
-                       skb_device_lock(skb);
-                       restore_flags(flags);
-                       /*
-                        *      Feed them to the output stage and if it fails
-                        *      indicate they re-queue at the front.
-                        */
-                       do_dev_queue_xmit(skb,dev,-i - 1);
-                       /*
-                        *      If we can take no more then stop here.
-                        */
-                       if (dev->tbusy)
-                               return;
-                       cli();
-               }
-       }
-       restore_flags(flags);
-}
-
-
-/*
- *     Perform a SIOCGIFCONF call. This structure will change
- *     size shortly, and there is nothing I can do about it.
- *     Thus we will need a 'compatibility mode'.
- */
-
-static int dev_ifconf(char *arg)
-{
-       struct ifconf ifc;
-       struct ifreq ifr;
-       struct device *dev;
-       char *pos;
-       int len;
-       int err;
-
-       /*
-        *      Fetch the caller's info block. 
-        */
-        
-       err=verify_area(VERIFY_WRITE, arg, sizeof(struct ifconf));
-       if(err)
-               return err;
-       memcpy_fromfs(&ifc, arg, sizeof(struct ifconf));
-       len = ifc.ifc_len;
-       pos = ifc.ifc_buf;
-
-       /*
-        *      We now walk the device list filling each active device
-        *      into the array.
-        */
-        
-       err=verify_area(VERIFY_WRITE,pos,len);
-       if(err)
-               return err;
-       
-       /*
-        *      Loop over the interfaces, and write an info block for each. 
-        */
-
-       for (dev = dev_base; dev != NULL; dev = dev->next) 
-       {
-               if(!(dev->flags & IFF_UP))      /* Downed devices don't count */
-                       continue;
-               /*
-                *      Have we run out of space here ?
-                */
-       
-               if (len < sizeof(struct ifreq)) 
-                       break;
-
-               memset(&ifr, 0, sizeof(struct ifreq));
-               strcpy(ifr.ifr_name, dev->name);
-               (*(struct sockaddr_in *) &ifr.ifr_addr).sin_family = 
dev->family;
-               (*(struct sockaddr_in *) &ifr.ifr_addr).sin_addr.s_addr = 
dev->pa_addr;
-
-
-               /*
-                *      Write this block to the caller's space. 
-                */
-                
-               memcpy_tofs(pos, &ifr, sizeof(struct ifreq));
-               pos += sizeof(struct ifreq);
-               len -= sizeof(struct ifreq);            
-       }
-
-       /*
-        *      All done.  Write the updated control block back to the caller. 
-        */
-        
-       ifc.ifc_len = (pos - ifc.ifc_buf);
-       ifc.ifc_req = (struct ifreq *) ifc.ifc_buf;
-       memcpy_tofs(arg, &ifc, sizeof(struct ifconf));
-       
-       /*
-        *      Report how much was filled in
-        */
-        
-       return(pos - arg);
-}
-
-
-/*
- *     This is invoked by the /proc filesystem handler to display a device
- *     in detail.
- */
-
-#ifdef CONFIG_PROC_FS
-static int sprintf_stats(char *buffer, struct device *dev)
-{
-       struct enet_statistics *stats = (dev->get_stats ? dev->get_stats(dev): 
NULL);
-       int size;
-       
-       if (stats)
-               size = sprintf(buffer, "%6s:%7d %4d %4d %4d %4d %8d %4d %4d %4d 
%5d %4d\n",
-                  dev->name,
-                  stats->rx_packets, stats->rx_errors,
-                  stats->rx_dropped + stats->rx_missed_errors,
-                  stats->rx_fifo_errors,
-                  stats->rx_length_errors + stats->rx_over_errors
-                  + stats->rx_crc_errors + stats->rx_frame_errors,
-                  stats->tx_packets, stats->tx_errors, stats->tx_dropped,
-                  stats->tx_fifo_errors, stats->collisions,
-                  stats->tx_carrier_errors + stats->tx_aborted_errors
-                  + stats->tx_window_errors + stats->tx_heartbeat_errors);
-       else
-               size = sprintf(buffer, "%6s: No statistics available.\n", 
dev->name);
-
-       return size;
-}
-
-/*
- *     Called from the PROCfs module. This now uses the new arbitrary sized 
/proc/net interface
- *     to create /proc/net/dev
- */
- 
-int dev_get_info(char *buffer, char **start, off_t offset, int length, int 
dummy)
-{
-       int len=0;
-       off_t begin=0;
-       off_t pos=0;
-       int size;
-       
-       struct device *dev;
-
-
-       size = sprintf(buffer, "Inter-|   Receive                  |  
Transmit\n"
-                           " face |packets errs drop fifo frame|packets errs 
drop fifo colls carrier\n");
-       
-       pos+=size;
-       len+=size;
-       
-
-       for (dev = dev_base; dev != NULL; dev = dev->next) 
-       {
-               size = sprintf_stats(buffer+len, dev);
-               len+=size;
-               pos=begin+len;
-                               
-               if(pos<offset)
-               {
-                       len=0;
-                       begin=pos;
-               }
-               if(pos>offset+length)
-                       break;
-       }
-       
-       *start=buffer+(offset-begin);   /* Start of wanted data */
-       len-=(offset-begin);            /* Start slop */
-       if(len>length)
-               len=length;             /* Ending slop */
-       return len;
-}
-#endif /* CONFIG_PROC_FS */
-
-
-#ifdef CONFIG_NET_RADIO
-#ifdef CONFIG_PROC_FS
-
-/*
- * Print one entry of /proc/net/wireless
- * This is a clone of /proc/net/dev (just above)
- */
-static int
-sprintf_wireless_stats(char *          buffer,
-                      struct device *  dev)
-{
-       /* Get stats from the driver */
-       struct iw_statistics *stats = (dev->get_wireless_stats ?
-                                      dev->get_wireless_stats(dev) :
-                                      (struct iw_statistics *) NULL);
-       int size;
-       
-       if(stats != (struct iw_statistics *) NULL)
-               size = sprintf(buffer,
-                              "%6s: %02x  %3d%c %3d%c  %3d%c %5d %5d %5d\n",
-                              dev->name,
-                              stats->status,
-                              stats->qual.qual,
-                              stats->qual.updated & 1 ? '.' : ' ',
-                              stats->qual.level,
-                              stats->qual.updated & 2 ? '.' : ' ',
-                              stats->qual.noise,
-                              stats->qual.updated & 3 ? '.' : ' ',
-                              stats->discard.nwid,
-                              stats->discard.code,
-                              stats->discard.misc);
-       else
-               size = 0;
-
-       return size;
-}
-
-/*
- * Print info for /proc/net/wireless (print all entries)
- * This is a clone of /proc/net/dev (just above)
- */
-int
-dev_get_wireless_info(char *   buffer,
-                     char **   start,
-                     off_t     offset,
-                     int       length,
-                     int       dummy)
-{
-       int             len = 0;
-       off_t           begin = 0;
-       off_t           pos = 0;
-       int             size;
-
-       struct device * dev;
-
-       size = sprintf(buffer,
-                      "Inter-|sta|  Quality       |  Discarded packets\n"
-                      " face |tus|link level noise| nwid crypt  misc\n");
-       
-       pos+=size;
-       len+=size;
-
-
-       for(dev = dev_base; dev != NULL; dev = dev->next) 
-       {
-               size = sprintf_wireless_stats(buffer+len, dev);
-               len+=size;
-               pos=begin+len;
-
-               if(pos < offset)
-               {
-                       len=0;
-                       begin=pos;
-               }
-               if(pos > offset + length)
-                       break;
-       }
-
-       *start = buffer + (offset - begin);     /* Start of wanted data */
-       len -= (offset - begin);                /* Start slop */
-       if(len > length)
-               len = length;           /* Ending slop */
-
-       return len;
-}
-#endif /* CONFIG_PROC_FS */
-#endif /* CONFIG_NET_RADIO */
-
-
-/*
- *     This checks bitmasks for the ioctl calls for devices.
- */
- 
-static inline int bad_mask(unsigned long mask, unsigned long addr)
-{
-       if (addr & (mask = ~mask))
-               return 1;
-       mask = ntohl(mask);
-       if (mask & (mask+1))
-               return 1;
-       return 0;
-}
-
-/*
- *     Perform the SIOCxIFxxx calls. 
- *
- *     The socket layer has seen an ioctl the address family thinks is
- *     for the device. At this point we get invoked to make a decision
- */
- 
-static int dev_ifsioc(void *arg, unsigned int getset)
-{
-       struct ifreq ifr;
-       struct device *dev;
-       int ret;
-
-       /*
-        *      Fetch the caller's info block into kernel space
-        */
-
-       int err=verify_area(VERIFY_WRITE, arg, sizeof(struct ifreq));
-       if(err)
-               return err;
-       
-       memcpy_fromfs(&ifr, arg, sizeof(struct ifreq));
-
-       /*
-        *      See which interface the caller is talking about. 
-        */
-        
-       /*
-        *
-        *      net_alias_dev_get(): dev_get() with added alias naming magic.
-        *      only allow alias creation/deletion if (getset==SIOCSIFADDR)
-        *
-        */
-        
-#ifdef CONFIG_KERNELD
-       dev_load(ifr.ifr_name);
-#endif 
-
-#ifdef CONFIG_NET_ALIAS
-       if ((dev = net_alias_dev_get(ifr.ifr_name, getset == SIOCSIFADDR, &err, 
NULL, NULL)) == NULL)
-               return(err);
-#else
-       if ((dev = dev_get(ifr.ifr_name)) == NULL)      
-               return(-ENODEV);
-#endif
-       switch(getset) 
-       {
-               case SIOCGIFFLAGS:      /* Get interface flags */
-                       ifr.ifr_flags = (dev->flags & ~IFF_SOFTHEADERS);
-                       goto rarok;
-
-               case SIOCSIFFLAGS:      /* Set interface flags */
-                       {
-                               int old_flags = dev->flags;
-                               
-                               if(securelevel>0)
-                                       ifr.ifr_flags&=~IFF_PROMISC;
-                               /*
-                                *      We are not allowed to potentially 
close/unload
-                                *      a device until we get this lock.
-                                */
-                               
-                               dev_lock_wait();
-                               
-                               /*
-                                *      Set the flags on our device.
-                                */
-                                
-                               dev->flags = (ifr.ifr_flags & (
-                                       IFF_BROADCAST | IFF_DEBUG | 
IFF_LOOPBACK |
-                                       IFF_POINTOPOINT | IFF_NOTRAILERS | 
IFF_RUNNING |
-                                       IFF_NOARP | IFF_PROMISC | IFF_ALLMULTI 
| IFF_SLAVE | IFF_MASTER
-                                       | IFF_MULTICAST)) | (dev->flags & 
(IFF_SOFTHEADERS|IFF_UP));
-                               /*
-                                *      Load in the correct multicast list now 
the flags have changed.
-                                */                             
-
-                               dev_mc_upload(dev);
-
-                               /*
-                                *      Have we downed the interface. We handle 
IFF_UP ourselves
-                                *      according to user attempts to set it, 
rather than blindly
-                                *      setting it.
-                                */
-                                
-                               if ((old_flags^ifr.ifr_flags)&IFF_UP)   /* Bit 
is different  ? */
-                               {
-                                       if(old_flags&IFF_UP)            /* Gone 
down */
-                                               ret=dev_close(dev);             
-                                       else                            /* Come 
up */
-                                       {
-                                               ret=dev_open(dev);
-                                               if(ret<0)
-                                                       dev->flags&=~IFF_UP;    
/* Open failed */
-                                       }       
-                               }
-                               else
-                                       ret=0;
-                               /*
-                                *      Load in the correct multicast list now 
the flags have changed.
-                                */                             
-
-                               dev_mc_upload(dev);
-                       }
-                       break;
-               
-               case SIOCGIFADDR:       /* Get interface address (and family) */
-                       if(ifr.ifr_addr.sa_family==AF_UNSPEC)
-                       {
-                               memcpy(ifr.ifr_hwaddr.sa_data,dev->dev_addr, 
MAX_ADDR_LEN);
-                               ifr.ifr_hwaddr.sa_family=dev->type;             
        
-                               goto rarok;
-                       }
-                       else
-                       {
-                               (*(struct sockaddr_in *)
-                                         &ifr.ifr_addr).sin_addr.s_addr = 
dev->pa_addr;
-                               (*(struct sockaddr_in *)
-                                         &ifr.ifr_addr).sin_family = 
dev->family;
-                               (*(struct sockaddr_in *)
-                                         &ifr.ifr_addr).sin_port = 0;
-                       }
-                       goto rarok;
-       
-               case SIOCSIFADDR:       /* Set interface address (and family) */
-               
-                       /*
-                        *      BSDism. SIOCSIFADDR family=AF_UNSPEC sets the
-                        *      physical address. We can cope with this now.
-                        */
-                       
-                       if(ifr.ifr_addr.sa_family==AF_UNSPEC)
-                       {
-                               if(dev->set_mac_address==NULL)
-                                       return -EOPNOTSUPP;
-                               if(securelevel>0)
-                                       return -EPERM;
-                               ret=dev->set_mac_address(dev,&ifr.ifr_addr);
-                       }
-                       else
-                       {
-                               u32 new_pa_addr = (*(struct sockaddr_in *)
-                                        &ifr.ifr_addr).sin_addr.s_addr;
-                               u16 new_family = ifr.ifr_addr.sa_family;
-
-                               if (new_family == dev->family &&
-                                   new_pa_addr == dev->pa_addr) {
-                                       ret =0;
-                                       break;
-                               }
-                               if (dev->flags & IFF_UP)
-                                       notifier_call_chain(&netdev_chain, 
NETDEV_DOWN, dev);
-
-                               /*
-                                *      if dev is an alias, must rehash to 
update
-                                *      address change
-                                */
-
-#ifdef CONFIG_NET_ALIAS
-                               if (net_alias_is(dev))
-                                       net_alias_dev_rehash(dev 
,&ifr.ifr_addr);
-#endif
-                               dev->pa_addr = new_pa_addr;
-                               dev->family = new_family;
-                       
-#ifdef CONFIG_INET     
-                               /* This is naughty. When net-032e comes out It 
wants moving into the net032
-                                  code not the kernel. Till then it can sit 
here (SIGH) */             
-                               if (!dev->pa_mask)
-                                       dev->pa_mask = 
ip_get_mask(dev->pa_addr);
-#endif                 
-                               if (!dev->pa_brdaddr)
-                                       dev->pa_brdaddr = dev->pa_addr | 
~dev->pa_mask;
-                               if (dev->flags & IFF_UP)
-                                       notifier_call_chain(&netdev_chain, 
NETDEV_UP, dev);
-                               ret = 0;
-                       }
-                       break;
-                       
-               case SIOCGIFBRDADDR:    /* Get the broadcast address */
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_broadaddr).sin_addr.s_addr = 
dev->pa_brdaddr;
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_broadaddr).sin_family = dev->family;
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_broadaddr).sin_port = 0;
-                       goto rarok;
-
-               case SIOCSIFBRDADDR:    /* Set the broadcast address */
-                       dev->pa_brdaddr = (*(struct sockaddr_in *)
-                               &ifr.ifr_broadaddr).sin_addr.s_addr;
-                       ret = 0;
-                       break;
-                       
-               case SIOCGIFDSTADDR:    /* Get the destination address (for 
point-to-point links) */
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_dstaddr).sin_addr.s_addr = 
dev->pa_dstaddr;
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_dstaddr).sin_family = dev->family;
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_dstaddr).sin_port = 0;
-                       goto rarok;
-       
-               case SIOCSIFDSTADDR:    /* Set the destination address (for 
point-to-point links) */
-                       dev->pa_dstaddr = (*(struct sockaddr_in *)
-                               &ifr.ifr_dstaddr).sin_addr.s_addr;
-                       ret = 0;
-                       break;
-                       
-               case SIOCGIFNETMASK:    /* Get the netmask for the interface */
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_netmask).sin_addr.s_addr = 
dev->pa_mask;
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_netmask).sin_family = dev->family;
-                       (*(struct sockaddr_in *)
-                               &ifr.ifr_netmask).sin_port = 0;
-                       goto rarok;
-
-               case SIOCSIFNETMASK:    /* Set the netmask for the interface */
-                       {
-                               unsigned long mask = (*(struct sockaddr_in *)
-                                       &ifr.ifr_netmask).sin_addr.s_addr;
-                               ret = -EINVAL;
-                               /*
-                                *      The mask we set must be legal.
-                                */
-                               if (bad_mask(mask,0))
-                                       break;
-                               dev->pa_mask = mask;
-                               ret = 0;
-                       }
-                       break;
-                       
-               case SIOCGIFMETRIC:     /* Get the metric on the interface 
(currently unused) */
-                       
-                       ifr.ifr_metric = dev->metric;
-                       goto  rarok;
-                       
-               case SIOCSIFMETRIC:     /* Set the metric on the interface 
(currently unused) */
-                       dev->metric = ifr.ifr_metric;
-                       ret=0;
-                       break;
-       
-               case SIOCGIFMTU:        /* Get the MTU of a device */
-                       ifr.ifr_mtu = dev->mtu;
-                       goto rarok;
-       
-               case SIOCSIFMTU:        /* Set the MTU of a device */
-               
-                       if (dev->change_mtu)
-                               ret = dev->change_mtu(dev, ifr.ifr_mtu);
-                       else
-                       {
-                               /*
-                                *      MTU must be positive.
-                                */
-                        
-                               if(ifr.ifr_mtu<68)
-                                       return -EINVAL;
-
-                               dev->mtu = ifr.ifr_mtu;
-                               ret = 0;
-                       }
-                       break;
-       
-               case SIOCGIFMEM:        /* Get the per device memory space. We 
can add this but currently
-                                          do not support it */
-                       ret = -EINVAL;
-                       break;
-               
-               case SIOCSIFMEM:        /* Set the per device memory buffer 
space. Not applicable in our case */
-                       ret = -EINVAL;
-                       break;
-
-               case SIOCGIFHWADDR:
-                       memcpy(ifr.ifr_hwaddr.sa_data,dev->dev_addr, 
MAX_ADDR_LEN);
-                       ifr.ifr_hwaddr.sa_family=dev->type;                     
-                       goto rarok;
-                               
-               case SIOCSIFHWADDR:
-                       if(dev->set_mac_address==NULL)
-                               return -EOPNOTSUPP;
-                       if(securelevel > 0)
-                               return -EPERM;
-                       if(ifr.ifr_hwaddr.sa_family!=dev->type)
-                               return -EINVAL;
-                       ret=dev->set_mac_address(dev,&ifr.ifr_hwaddr);
-                       break;
-                       
-               case SIOCGIFMAP:
-                       ifr.ifr_map.mem_start=dev->mem_start;
-                       ifr.ifr_map.mem_end=dev->mem_end;
-                       ifr.ifr_map.base_addr=dev->base_addr;
-                       ifr.ifr_map.irq=dev->irq;
-                       ifr.ifr_map.dma=dev->dma;
-                       ifr.ifr_map.port=dev->if_port;
-                       goto rarok;
-                       
-               case SIOCSIFMAP:
-                       if(dev->set_config==NULL)
-                               return -EOPNOTSUPP;
-                       return dev->set_config(dev,&ifr.ifr_map);
-                       
-               case SIOCADDMULTI:
-                       if(dev->set_multicast_list==NULL)
-                               return -EINVAL;
-                       if(ifr.ifr_hwaddr.sa_family!=AF_UNSPEC)
-                               return -EINVAL;
-                       dev_mc_add(dev,ifr.ifr_hwaddr.sa_data, dev->addr_len, 
1);
-                       return 0;
-
-               case SIOCDELMULTI:
-                       if(dev->set_multicast_list==NULL)
-                               return -EINVAL;
-                       if(ifr.ifr_hwaddr.sa_family!=AF_UNSPEC)
-                               return -EINVAL;
-                       dev_mc_delete(dev,ifr.ifr_hwaddr.sa_data,dev->addr_len, 
1);
-                       return 0;
-               /*
-                *      Unknown or private ioctl
-                */
-
-               default:
-                       if((getset >= SIOCDEVPRIVATE) &&
-                          (getset <= (SIOCDEVPRIVATE + 15))) {
-                               if(dev->do_ioctl==NULL)
-                                       return -EOPNOTSUPP;
-                               ret=dev->do_ioctl(dev, &ifr, getset);
-                               memcpy_tofs(arg,&ifr,sizeof(struct ifreq));
-                               break;
-                       }
-
-#ifdef CONFIG_NET_RADIO
-                       if((getset >= SIOCIWFIRST) &&
-                          (getset <= SIOCIWLAST))
-                       {
-                               if(dev->do_ioctl==NULL)
-                                       return -EOPNOTSUPP;
-                               /* Perform the ioctl */
-                               ret=dev->do_ioctl(dev, &ifr, getset);
-                               /* If return args... */
-                               if(IW_IS_GET(getset))
-                                       memcpy_tofs(arg, &ifr,
-                                                   sizeof(struct ifreq));
-                               break;
-                       }
-#endif /* CONFIG_NET_RADIO */
-
-                       ret = -EINVAL;
-       }
-       return(ret);
-/*
- *     The load of calls that return an ifreq and ok (saves memory).
- */
-rarok:
-       memcpy_tofs(arg, &ifr, sizeof(struct ifreq));
-       return 0;
-}
-
-
-/*
- *     This function handles all "interface"-type I/O control requests. The 
actual
- *     'doing' part of this is dev_ifsioc above.
- */
-
-int dev_ioctl(unsigned int cmd, void *arg)
-{
-       switch(cmd) 
-       {
-               case SIOCGIFCONF:
-                       (void) dev_ifconf((char *) arg);
-                       return 0;
-
-               /*
-                *      Ioctl calls that can be done by all.
-                */
-                
-               case SIOCGIFFLAGS:
-               case SIOCGIFADDR:
-               case SIOCGIFDSTADDR:
-               case SIOCGIFBRDADDR:
-               case SIOCGIFNETMASK:
-               case SIOCGIFMETRIC:
-               case SIOCGIFMTU:
-               case SIOCGIFMEM:
-               case SIOCGIFHWADDR:
-               case SIOCGIFSLAVE:
-               case SIOCGIFMAP:
-                       return dev_ifsioc(arg, cmd);
-
-               /*
-                *      Ioctl calls requiring the power of a superuser
-                */
-                
-               case SIOCSIFFLAGS:
-               case SIOCSIFADDR:
-               case SIOCSIFDSTADDR:
-               case SIOCSIFBRDADDR:
-               case SIOCSIFNETMASK:
-               case SIOCSIFMETRIC:
-               case SIOCSIFMTU:
-               case SIOCSIFMEM:
-               case SIOCSIFHWADDR:
-               case SIOCSIFMAP:
-               case SIOCSIFSLAVE:
-               case SIOCADDMULTI:
-               case SIOCDELMULTI:
-                       if (!suser())
-                               return -EPERM;
-                       return dev_ifsioc(arg, cmd);
-       
-               case SIOCSIFLINK:
-                       return -EINVAL;
-
-               /*
-                *      Unknown or private ioctl.
-                */     
-                
-               default:
-                       if((cmd >= SIOCDEVPRIVATE) &&
-                          (cmd <= (SIOCDEVPRIVATE + 15))) {
-                               return dev_ifsioc(arg, cmd);
-                       }
-#ifdef CONFIG_NET_RADIO
-                       if((cmd >= SIOCIWFIRST) &&
-                          (cmd <= SIOCIWLAST))
-                       {
-                               if((IW_IS_SET(cmd)) && (!suser()))
-                                       return -EPERM;
-                               return dev_ifsioc(arg, cmd);
-                       }
-#endif /* CONFIG_NET_RADIO */
-                       return -EINVAL;
-       }
-}
-
-
-/*
- *     Initialize the DEV module. At boot time this walks the device list and
- *     unhooks any devices that fail to initialise (normally hardware not 
- *     present) and leaves us with a valid list of present and active devices.
- *
- */
-extern int lance_init(void);
-extern int pi_init(void);
-extern int pt_init(void);
-extern int bpq_init(void);
-extern void sdla_setup(void);
-extern int dlci_setup(void);
-extern int sm_init(void);
-extern int baycom_init(void);
-
-int net_dev_init(void)
-{
-       struct device *dev, **dp;
-
-       /*
-        *      Initialise the packet receive queue.
-        */
-        
-       skb_queue_head_init(&backlog);
-       
-       /*
-        *      The bridge has to be up before the devices
-        */
-
-#ifdef CONFIG_BRIDGE    
-       br_init();
-#endif 
-       
-       /*
-        * This is Very Ugly(tm).
-        *
-        * Some devices want to be initialized early..
-        */
-#if defined(CONFIG_PI)
-       pi_init();
-#endif 
-#if defined(CONFIG_PT)
-       pt_init();
-#endif
-#if defined(CONFIG_BPQETHER)
-       bpq_init();
-#endif
-#if defined(CONFIG_DLCI)
-       dlci_setup();
-#endif
-#if defined(CONFIG_SDLA)
-       sdla_setup();
-#endif
-#if defined(CONFIG_BAYCOM)
-        baycom_init();
-#endif
-#if defined(CONFIG_SOUNDMODEM)
-        sm_init();
-#endif
-       /*
-        *      SLHC if present needs attaching so other people see it
-        *      even if not opened.
-        */
-#if (defined(CONFIG_SLIP) && defined(CONFIG_SLIP_COMPRESSED)) \
-        || defined(CONFIG_PPP) \
-    || (defined(CONFIG_ISDN) && defined(CONFIG_ISDN_PPP))
-       slhc_install();
-#endif 
-
-       /*
-        *      Add the devices.
-        *      If the call to dev->init fails, the dev is removed
-        *      from the chain disconnecting the device until the
-        *      next reboot.
-        */
-
-       dp = &dev_base;
-       while ((dev = *dp) != NULL)
-       {
-               int i;
-               for (i = 0; i < DEV_NUMBUFFS; i++)  {
-                       skb_queue_head_init(dev->buffs + i);
-               }
-
-               if (dev->init && dev->init(dev)) 
-               {
-                       /*
-                        *      It failed to come up. Unhook it.
-                        */
-                       *dp = dev->next;
-               } 
-               else
-               {
-                       dp = &dev->next;
-               }
-       }
-
-#ifdef CONFIG_PROC_FS
-       proc_net_register(&(struct proc_dir_entry) {
-               PROC_NET_DEV, 3, "dev",
-               S_IFREG | S_IRUGO, 1, 0, 0,
-               0, &proc_net_inode_operations,
-               dev_get_info
-       });
-#endif
-
-#ifdef CONFIG_NET_RADIO
-#ifdef CONFIG_PROC_FS
-       proc_net_register(&(struct proc_dir_entry) {
-               PROC_NET_WIRELESS, 8, "wireless",
-               S_IFREG | S_IRUGO, 1, 0, 0,
-               0, &proc_net_inode_operations,
-               dev_get_wireless_info
-       });
-#endif /* CONFIG_PROC_FS */
-#endif /* CONFIG_NET_RADIO */
-
-       /*      
-        *      Initialise net_alias engine 
-        *
-        *              - register net_alias device notifier
-        *              - register proc entries:        /proc/net/alias_types
-        *                                                                      
/proc/net/aliases
-        */
-
-#ifdef CONFIG_NET_ALIAS
-       net_alias_init();
-#endif
-
-       init_bh(NET_BH, net_bh);
-       return 0;
-}
diff --git a/tests/.gitignore b/tests/.gitignore
deleted file mode 100644
index 6e86af1..0000000
--- a/tests/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/test-mbchk
diff --git a/vm/vm_print.h b/vm/vm_print.h
deleted file mode 100644
index 69a20ba..0000000
--- a/vm/vm_print.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef VM_PRINT_H
-#define        VM_PRINT_H
-
-#include <vm/vm_map.h>
-#include <machine/db_machdep.h>
-
-/* Debugging: print a map */
-extern void vm_map_print(vm_map_t);
-
-/* Pretty-print a copy object for ddb. */
-extern void vm_map_copy_print(vm_map_copy_t);
-
-#include <vm/vm_object.h>
-
-extern void vm_object_print(vm_object_t);
-
-#include <vm/vm_page.h>
-
-extern void vm_page_print(vm_page_t);
-
-#endif /* VM_PRINT_H */
-

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/gnumach.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]