Commit Graph

1219 Commits

Author SHA1 Message Date
thorpej 1ea93eea1c Define one page free list, and put all pages on it. 1998-07-08 04:35:23 +00:00
thorpej 4220ffab81 Loop until all netisrs are consumed; netisrs processed down the list might
cause additional netisrs to be scheduled.
1998-07-07 18:27:13 +00:00
jonathan 3472ba67bb * defopt COMPAT_{09,10,11,12,13} and COMPAT_NOMID (from unsaved buffers).
TODO: revisit interaction between native compat and emul compat usage.
1998-07-05 18:27:18 +00:00
jonathan 011f2bda08 defopt NS, NSIP. 1998-07-05 06:49:00 +00:00
jonathan 5c0c5dd0b4 defopt ISO TPIP. 1998-07-05 04:37:35 +00:00
jonathan 8db0fcdbf7 defopt CCITT. 1998-07-05 02:12:22 +00:00
jonathan 3751946b97 defopt INET, NETATALK. 1998-07-05 00:51:04 +00:00
jonathan 466e784ee1 defopt DDB. 1998-07-04 22:18:13 +00:00
thorpej e9b40e3d85 Dont' check sysflags here... just look for NHPIB or IHPIB device IDs. 1998-07-01 22:47:12 +00:00
thorpej a1e53914d7 If sysflags tells us we have an internal HP-IB interface, don't bother
reading the DIO device ID at select code 7, but rather hard-wire the ID
to the IHPIB ID.  This prevents us reading what might look like a valid
ID to another device when IHPIB is present.  (IHPIB doesn't always return
a correct device ID, grumble.)
1998-07-01 22:46:29 +00:00
thorpej b6d050ef0f Make use the `end' consistent. 1998-07-01 06:05:18 +00:00
lukem bd8d501f7e remove options FIFO; it's now the default 1998-06-26 01:53:43 +00:00
thorpej 37b378d836 defopt COMPAT_HPUX 1998-06-25 23:56:39 +00:00
thorpej 8aee7782f5 defopt COMPAT_SUNOS 1998-06-25 23:40:33 +00:00
thorpej 971b8956ef defopt KTRACE 1998-06-25 21:18:11 +00:00
kleink 10370475a3 In device_register(), explicitly initialize a static local variable
(seen_netdevice) with 0.
1998-06-17 13:08:47 +00:00
cgd 651b44e211 Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install.  (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.)  The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change.  Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
1998-06-12 23:22:30 +00:00
tv 00ede2160e Change ddb_init() for a.out to provision for kernels which are not booted by
the current 'bootblock' method, like the Shark, which preloads and preformats
the symbol table right in the boot code.
1998-06-09 01:57:41 +00:00
thorpej c1ca72eaf8 Build pmap_boostrap.o without profiling; we can't call mcount before the
mmu is enabled!
1998-05-31 23:18:57 +00:00
thorpej 92d8ae0ee3 Specify a non-profiling C rule. 1998-05-31 23:18:05 +00:00
thorpej 019443d82c Profiling version of the BASALT kernel. 1998-05-30 17:56:08 +00:00
scottr 47391e90cb Sync with mac68k: correct some errors if building a kernel with DEBUG. 1998-05-27 05:58:40 +00:00
is 7a0f63f982 Back out the defopt for M680?0. As pointed out to me, this breaks ports which
dont use the M680?0 the way Amiga, Atari, Mac68k, and X68k do. I must have
missed this in the past discussion about this project.
1998-05-24 19:32:34 +00:00
is 6a6812fd92 Move M680[2346]0 to opt_m68kcpu.h.
XXX Some explicit dependencies could be removed now from the individual
arch/$ARCH/conf/Makefile.$ARCH files, but this is still to be done.
1998-05-23 20:51:06 +00:00
thorpej 6626878e7b It is no longer necessary for pmap_pinit() and pmap_release() to be
pmap interface functions, as NetBSD no longer uses statically allocated
pmaps (except for the kernel pmap, which is special-cased anyhow).
1998-05-19 19:00:11 +00:00
hpeyerl a0872a3916 duh. need SYSV* stuff. 1998-05-19 15:20:40 +00:00
kleink 3e08a4a027 Spell `interrupt' correctly. 1998-05-18 17:37:38 +00:00
hpeyerl 96ee790741 Add the HP35470A DAT drive. 1998-05-17 17:09:55 +00:00
kleink 687ea7404c Fix some arithmetics lossage on typeless pointers. 1998-05-08 16:55:15 +00:00
kleink aa36ad1f55 Fix some arithmetics lossage on typeless pointers. 1998-05-07 21:01:41 +00:00
thorpej 09175fe9f8 options UVM no longer needed; it's standard 1998-05-04 05:01:55 +00:00
thorpej d1f4011d1d Switch to UVM. 1998-05-04 05:01:30 +00:00
thorpej 61665b7bc6 TCP_CWM option doesn't exist anymore; it's all run-time. 1998-05-01 05:24:34 +00:00
thorpej 80c08c1784 Turn off TCP_COMPAT_42, turn on TCP_CWM. 1998-04-29 04:57:49 +00:00
scottr 4804060a6b GC the old MACHINE_NONCONTIG code. 1998-04-26 21:24:27 +00:00
frueauf 863ece9212 egcs warning: don't use a char for array index, cast it to int. 1998-04-20 20:41:05 +00:00
tv b21bfbde11 Add -Wno-main conditional on compiler being gcc 2.8 or egcs. (This adds
a HAVE_GCC28 check-variable that can now be used to add other gcc-2.8
flags in cases where they may be useful, or to remove gcc 2.7.2 "bug
workaround" flags.)
1998-04-12 23:47:41 +00:00
thorpej f1821c7811 Adjust for recent ttyopen() and dialout device changes. 1998-03-28 23:49:06 +00:00
scottr 2f2b4dae56 Optimize some cycles out of the clock interrupt handler when
USE_LEDS is defined.
1998-03-21 08:05:37 +00:00
scottr 727b8bc7ac Charles Hannum pointed out that if a clock interrupt was posted while
we were in ledcontrol(), the heartbeat twinkler would just punt on
updating the LED even though it had already updated the status.  (This
was broken in v1.73 of locore.s).

Rather than resurrect the old code, simplify ledcontrol() and don't
bother with mutual exclusion.  As mentioned by the comments describing
this function, we really don't need to be that precise.  We do, however,
want to guarantee instructions that modify the status variable directly,
so the function is now primarily inline assembly.
1998-03-21 07:45:59 +00:00
bouyer 9f50fca1fd Add commented out "options FFS_EI" 1998-03-18 16:34:41 +00:00
cgd 7ff7b02fac allow LDSTATIC definition to be overridden by bsd.own.mk/mk.conf 1998-03-02 20:01:05 +00:00
thorpej 5ec2d93c1e Fix a typo. 1998-02-27 19:13:04 +00:00
perry 1ed8ea9966 note second parm of sysarch() is now void *, + trivial KNF, etc. 1998-02-25 21:41:55 +00:00
thorpej 89d112dd92 Switch this kernel to UVM. 1998-02-24 11:05:37 +00:00
thorpej 7027d87a18 Duh! Use uvm_km_valloc_wait(), NOT uvm_km_zalloc() to allocate user page
tables.  (Thanks for pointing that out, Chuck!)
1998-02-24 07:42:05 +00:00
thorpej 772da350d4 Disable the message buffer during crash dumps by clearing msgbufenabled,
not msgbufmapped.
1998-02-19 04:18:30 +00:00
cgd 3bbb7f7d45 Move pmap_map() function definition to MD headers, as appropriate. It's
an internal function, and the VM system shouldn't try to prototype it.
(Note that some ports _don't_ prototype it.)
1998-02-18 02:05:32 +00:00
thorpej 8354e68508 Remove "class" declarations, and add "devclass" declarations where
appropriate.  Fix several inconsistencies between device class and
attributes.  Mostly from Chris Demetriou.
1998-02-16 22:12:45 +00:00
thorpej 65e20aa9a8 Add first-cut support for UVM. NOTE! User page table allocation does not
currently work with UVM in this pmap!  This is due to a bug in the interaction
between kernel_object and submaps which will be addressed shortly.
1998-02-16 21:01:39 +00:00
thorpej d8f3ddff17 Add support for UVM. 1998-02-16 20:54:51 +00:00
scottr f49dd3ef30 Avoid declaring the "astpending" and "want_resched" globals in cpu.h,
as this breaks C++ code that happens to indirectly include this header.
Both Matthias Scheler and I noticed this, independently.

This problem notably does not affect the atari and sun3/sun3x ports,
which have already implemented a similar solution.
1998-02-13 07:41:45 +00:00
thorpej 223caea788 pmap_page_index() is not used in the MACHINE_NEW_NONCONTIG case. 1998-02-08 18:47:06 +00:00
thorpej 2f55a48f5c Implement MACHINE_NEW_NONCONTIG and switch the hp300 port to use it. 1998-02-08 18:37:55 +00:00
mycroft b5c132e4d2 Prototype __flt_rounds() consistently. 1998-02-03 01:26:20 +00:00
is b3fa451227 Amiga uses the common m68k/sig_machdep.c now. Also moved its definition from
the other 68k ports' files.${port} to arch/m68k/conf/files.m68k.
1998-02-01 21:23:24 +00:00
ross 3a83745247 In some hp300-derived pmaps, in pmap_page_protect(), don't walk off the
end of the list of physical->virtual entires into NULL space if the last
entry is (mysteriously) wired in the pmap. Add a DEBUG printf on alpha.
1998-01-31 01:32:55 +00:00
mycroft 15ae963bea When dumping, print out the device number as major,minor. 1998-01-24 16:46:23 +00:00
thorpej 871cf5e7ce Update for changes to config. 1998-01-12 18:30:41 +00:00
thorpej 1ac3d5db35 Put SPU options in opt_spuconf.h, add device classes. 1998-01-12 18:29:48 +00:00
thorpej 1ef77e68aa Oops, fix a printf format. 1998-01-11 23:16:04 +00:00
thorpej f522bda243 Convert the hp300 LANCE driver to use bus.h 1998-01-11 21:57:02 +00:00
thorpej 5021043b13 ia->ia_addr is of type `bus_addr_t'. 1998-01-11 21:56:13 +00:00
thorpej 582d47fcf0 ia->ia_addr is a physical address, not a kernel virtual address. 1998-01-11 21:55:08 +00:00
thorpej 1687835b3e Pass down bus space tags to children, and use types appropriate for
bus.h.
1998-01-11 21:53:04 +00:00
thorpej 774d66001e Add bus_space.c 1998-01-11 21:42:44 +00:00
thorpej 77706becd7 Initial implementation of bus_space functions for hp300. Some cleanup
of this will be possible once some pmap changes are made.
1998-01-11 21:40:52 +00:00
thorpej b69358e4ca bus.h for the hp300 port. Only supports bus_space for now. 1998-01-11 21:26:04 +00:00
perry 6f57e5c573 multiple include protect machine/limits.h, fixes pr 4473 (from Mika Nystrom) 1998-01-09 22:23:44 +00:00
thorpej 4deb927ee6 Regen. 1998-01-09 06:59:27 +00:00
thorpej 2f3e61a54a Put RCS IDs into generated files, in the correct place. 1998-01-09 06:59:10 +00:00
thorpej c4a3ed1697 Regen: Back out RCS ID related changes. 1998-01-08 01:02:05 +00:00
thorpej ddb3a0e478 Back out RCS ID related changes. 1998-01-08 01:01:27 +00:00
thorpej 6ac24f05df Garbage-collect VM_PMAP. 1998-01-06 08:46:11 +00:00
thorpej 2317f9064e Garbage-collect pm_stchanged. 1998-01-06 08:40:50 +00:00
thorpej 07f835de1f Garbage-collect PMAP_ACTIVATE() call here; it's no longer necessary. 1998-01-06 07:49:36 +00:00
thorpej 61567b54de Garbage-collect pm_stchanged; it's not used by anything. 1998-01-06 07:02:58 +00:00
thorpej d11b109f2b Garbage-collect use of the PCB's copy of the user segment table pointer. 1998-01-06 06:51:40 +00:00
thorpej a8f80ad4fd Fix a bogosity apparently inherited from when the Utah 4.3BSD code base
was converted to use Mach VM for Net2/4.4BSD.  The user segment table
pointer was originally stored in the PCB.  When Mach VM came along,
however, it was also stored in the pmap, and loaded into the PCB in
pmap_activate().  pmap_activate() would then note that the PCB's USTP
was now in sync with the pmap's USTP, and the low-level context switch
code would use the value from the PCB.

However, pmap_activate() would also load the hardware MMU context if
the pmap was the current pmap (or, in the case where pmaps can be shared,
such as in NetBSD, if the proc was the current proc).  The low-level
context switch code would then reload the hardware _again_ using the
USTP from the PCB.

However, the optimization of not calling pmap_activate() if "stchanged"
was false ended up causing some processes to use stale USTP values from
the PCB when the low-level context switch code reloaded the hardware!
This was noticed by using a real vfork(2) (which worked for some time
before failing, surprisingly!)

Since I'm hard pressed to find any real optimization here (since the
hardware was always reloaded once, sometimes twice!), the code now always
calls pmap_activate(), which uses the correct USTP value (the one in the
pmap).  The PCB's USTP is now ignored, and should eventually be g/c'd.

Another optimization can actually be performed, and I have added a comment
describing what it is, but have not yet implemented it.

Also note that most of the loadustp() functions where actually incomplete.
This has been corrected.  These functions should probably be split up into
MMU-specific operations, and called indirectly, rather than doing constant
run-time decision making based on values that will never change during the
course of a boot's lifetime.
1998-01-05 23:16:21 +00:00
perry 086015d681 RCSID Police. 1998-01-05 21:13:51 +00:00
perry e464358f5f make script insert RCS ids into generated files 1998-01-05 21:12:34 +00:00
perry 3e0fad1868 RCSID Police. 1998-01-05 06:28:44 +00:00
thorpej b9f1b716f3 Now that all ports have pmap_activate(), and it has an identical interface,
prototype it in <vm/pmap.h>
1998-01-03 01:12:59 +00:00
thorpej dd966fca05 Change an argument name to PMAP_ACTIVATE() to more accurately describe the
semantics of the argument.
1998-01-01 20:05:23 +00:00
thorpej 9c20093835 Make pmap_activate() and pmap_deactivate() take a struct proc *. 1997-12-31 10:12:55 +00:00
scottr fa1347ed5b Prompt for total sectors, and calculate sane defaults for sectors per
cylinder and total sectors.
1997-12-29 07:15:10 +00:00
scottr 89b10b928f Do better reporting of transmit errors. 1997-12-26 22:37:05 +00:00
thorpej ff7a4d0472 Add COMPAT_13. 1997-12-22 05:31:23 +00:00
hpeyerl 6563f769af update for correct SPU type and COMPAT_13. 1997-12-21 17:15:01 +00:00
thorpej a5252fc287 Fill out more file system information, from Havard Eidnes, and hacked a bit
by me.
1997-12-15 23:17:19 +00:00
tv 0a558b3f1f Standardize COMPAT_SUNOS -- remove all references to
sunos_exec_aout_makecmds() in machdep.c for various architectures and put
it in exec_conf.c like the other emulations; rename exec.h to
sunos_exec.h.
1997-12-04 15:33:17 +00:00
kleink c87631771e Add COMPAT_13. 1997-12-01 14:52:51 +00:00
fair 315f8de9c2 add pseudo-device rnd, commented out 1997-11-20 08:11:14 +00:00
lukem 6c986561ee * add commented out DDB_HISTORY_SIZE=100 if DDB exists in config file
* fix up use of 'options<SPACE><TAB>'
1997-11-17 01:57:23 +00:00
veego 8b485c5962 Add a missing #if NARP > 0 around arpintr(); and add a #include "arp.h"
for NARP. This is for the 'new' arp system.
1997-11-13 10:43:06 +00:00
thorpej ce4c770f88 Make sure CPP, AR, AS, and RANLIB are defined. 1997-11-12 23:11:50 +00:00
thorpej a421995756 Define LORDER, NM, and TSORT here, like we do the rest of the tools. 1997-11-12 22:25:31 +00:00
carrel ff83727926 All hail HAYDON! 1997-11-02 21:01:28 +00:00
is a16fd7d74e Make these compile after m68k/m68k.h 1.4->1.5. 1997-10-26 21:41:34 +00:00
scottr d383eb0134 Make this compile again. From Dave Carrel. 1997-10-17 18:45:55 +00:00
carrel 254067068a include vm/vm.h
move include of sysctl.h after vm.h
1997-10-16 18:16:08 +00:00
carrel a1e0fcf246 Remove unneeded and incomplete includes of vm/vm_*.h 1997-10-16 18:02:19 +00:00
explorer 80513cb5ae o Make usage of /dev/random dependant on
pseudo-device   rnd                     # /dev/random and in-kernel generator
  in config files.

o Add declaration to all architectures.

o Clean up copyright message in rnd.c, rnd.h, and rndpool.c to include
  that this code is derived in part from Ted Tyso's linux code.
1997-10-13 00:46:08 +00:00
thorpej 4dd0bf9d01 - Consolidate some pre-main initialization into an hp300_init() function.
- Initialize the message buffer earlier, in hp300_init(), rather than in
  cpu_startup(), so that it's initialized before main() is called.
1997-10-12 18:47:51 +00:00
thorpej c3637caf77 Consolidate some pre-main initialization into an hp300_init() function. 1997-10-12 18:45:48 +00:00
thorpej f53f16dd2e Move the prototype of hp300_calibrate_delay() to cpu.h 1997-10-12 18:37:56 +00:00
thorpej 116fe63c4e Remove extern declaration of devioc[]. 1997-10-12 17:53:46 +00:00
mycroft a7aef46287 Use m68k/Makefile.inc. 1997-10-11 09:11:17 +00:00
mycroft 5c8d588138 Nuke NOOBJ. 1997-10-11 08:44:42 +00:00
mycroft acf0e569a5 Update all the tags goo, and use bsd.subdir.mk. 1997-10-11 08:42:02 +00:00
scottr 017e6c7f10 Address PR 4120 by synchronizing v{,un}mapbuf() with the i386 vm_machdep.c,
v 1.27, pulling in changes made there by Charles Hannum.  Also, incorporate
a few tweaks made by Gordon W. Ross in the sun3 version of this change.
1997-10-11 06:38:45 +00:00
jtc 4c9d6e4d9c Fix tipo inherited from old version of TNF copyright template. 1997-10-09 08:58:45 +00:00
jtc 1bcecdd613 Fix tipo inherited from old version of TNF copyright template. 1997-10-09 08:48:33 +00:00
carrel 6d72f0f99f Recognize sunos binaries 1997-10-05 02:15:48 +00:00
carrel 3f5b21562b Add missing definition needed for COMPAT_SUNOS 1997-10-05 02:12:52 +00:00
carrel cb48a4a7e4 Bring sunos compat files in when COMPAT_SUNOS defined 1997-10-05 02:11:21 +00:00
thorpej 030188061e Copyright assigned to The NetBSD Foundation. 1997-10-04 17:36:56 +00:00
thorpej 608283bedd Copyright assigned to The NetBSD Foundation. 1997-10-04 17:22:49 +00:00
thorpej 9e6a3b705f Copyright assigned to The NetBSD Foundation. 1997-10-04 17:20:15 +00:00
thorpej bb0b21705d Copyright assigned to The NetBSD Foundation. 1997-10-04 17:03:09 +00:00
thorpej 2d397943d4 Copyright assigned to The NetBSD Foundation. 1997-10-04 09:59:35 +00:00
lukem 7d508b124f define SIZE?=size, and use ${SIZE} instead of size. makes cross
compilation easier
1997-10-03 07:17:00 +00:00
kleink 6eb0c3077a Remove duplicate inclusion of <sys/device.h>. 1997-10-01 16:28:22 +00:00
christos 3996b53189 PR/4162: Chris Jones: make cleandir does not work properly; it does not
remove the object files and the .depend file in the kernel build directory.
1997-09-30 22:39:49 +00:00
thorpej 376e3e6e34 Glue in memory_disk_hooks. 1997-09-21 22:53:03 +00:00
thorpej 585f46558e Add support for mounting a memory disk as the root device. 1997-09-21 22:51:29 +00:00
thorpej c6ff44d7a1 Add support for the memory disk device. 1997-09-21 22:44:46 +00:00
leo c5ba7a3102 Move the definition of MSGBUFSIZE up to the machine-arch level if
possible. Pointed out by Bernd Ernesti.
1997-09-20 12:06:37 +00:00
leo d4713d24c2 Implement the kernel part of pr-1891. This allows for a more flexible sized
msgbuf. Note that old 'dmesg' and 'syslogd' binaries will continue running,
though old 'dmesg' binaries will output a few bytes of junk at the start of
the buffer, and will miss a few bytes at the end of the buffer.
1997-09-19 13:52:37 +00:00
mycroft a9155c5057 Set the status word as well, and remove a bogus comment. 1997-09-12 10:29:20 +00:00
mycroft cd9a968cb7 Fix a test that should be on fputype rather than cputype. 1997-09-12 08:41:55 +00:00
mycroft 8a42aeac7b GC old comment. 1997-09-12 08:35:15 +00:00
mycroft 55582e5bc2 The FPCOPROC option no longer exists. 1997-09-12 08:04:12 +00:00
mycroft 895a1eced4 Fix an error from when Locore.c was removed. 1997-09-12 07:56:37 +00:00
mycroft 982f24e698 Always initialize all registers in setregs(). 1997-09-12 07:00:30 +00:00
mycroft 42c101eb00 Fix execve(2) and *setregs() interfaces so emulations can set registers in a
more correct way.  (See tech-kern.)
1997-09-12 05:48:08 +00:00
mycroft 16a8787248 Fix execve(2) and *setregs() interfaces so emulations can set registers in a
more correct way.  (See tech-kern.)
1997-09-11 23:01:44 +00:00
mjacob 6ac7f6248f add a before tab to SCSIVERBOSE 1997-08-23 19:16:06 +00:00
scottr 4cb1ba2dac Make this compile again when we only specify a machine with the
HP MMU (320, 350).
1997-08-21 18:12:34 +00:00
mjacob 1a7afa3853 add commented out reference SCSIVERBOSE option 1997-08-20 18:38:13 +00:00
scottr af6b181686 Fix typo in getting the 040 access fault address, noticed by
Allen Briggs in the mac68k locore.s
1997-08-18 17:52:48 +00:00
scottr 0755be1f84 Use optimized _splraise() implementation, from mac68k/intr.h 1997-07-24 05:43:08 +00:00
drochner bdb232d2b6 Don't use <lib/libsa/if_ether.h> anymore. This was a copy of the
old (before ARP changes) <netinet/if_ether.h>, intended for
temporary use.
1997-07-22 17:41:01 +00:00
kleink ac7da90b83 Remove old *_UNK style default defines, use standard names from locators.h.
Missed in "locators.h" cleanup; reported by Thorsten Frueauf in PR 3906.
1997-07-22 15:20:20 +00:00
kleink 73997cc33d Add missing `#include "locators.h"' from last commit. 1997-07-19 11:19:05 +00:00
jtk 7be59a897b remove old *_UNK style default defines, use standard names from locators.h 1997-07-18 03:38:33 +00:00
jtk ca1bba150a use locator defines in "locators.h" to index cf_loc[] 1997-07-17 03:16:39 +00:00
jtk 9ed3ea9ab3 use locator defines in "locators.h" to index cf_loc[]
still to be done and/or decided not to be done: replace all *UNK uses in
hpib code with the native names from locators.h
1997-07-17 01:59:12 +00:00
thorpej e296b3b344 New bus error/address error trap handlers, code lifted from mac68k
port, which is lifted from amiga port, plus some changes from me:
- Add support for the HP MMU to the 020/030 bus/address error handler
  (mostly lifted wholesale from the old code).
- Rename addrerr and buserr to busaddrerr2030.  The new name reflects that
  these functions are specific to the 68020 and 68030, and that the same
  handler function is used for both vectors.

The vector table is patched once we know our CPU type, before the MMU
is enabled.  In the event that we're running on a CPU that we're not
configured for, simply invoke the PROM's "reboot request"; we have no
hope of running in the event of a config botch, since we need working
a working bus error handler for console initialization.

These new functions optimze for common-case page faults, eliminate
many run-time checks, and are sharable.
1997-07-14 19:18:31 +00:00
leo 198bd713f2 Generate assym.h dependencies when making 'depend'. 1997-07-12 22:07:36 +00:00