1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-29 12:03:03 +00:00
Commit Graph

1056 Commits

Author SHA1 Message Date
Bruce Evans
0f99c703ec i386/machdep.c
include/clock.h
isa/clock.c
1996-05-01 08:31:21 +00:00
Bruce Evans
eabe0f9f57 Don't return unused values in cpu_switch() or savectx().
Don't preserve unused registers in the NPX case in savectx().
1996-05-01 03:47:04 +00:00
Bruce Evans
2c703b3e86 Only disable sio3 by default. 1996-05-01 03:26:58 +00:00
Stefan Eßer
e20df7fc31 Make pcibus_check() ignore Device/Vendor IDs of all 0. 1996-04-30 21:37:21 +00:00
Poul-Henning Kamp
68c1eb1215 pte.h: Add the VADDR(pdi,pti) macro to construct virtual address from
page dir+table index.
pmap.h: remove NUPDE, it was wrong and not used.  Sanitize KSTKPTEOFF.
vmparam.h: Calculate virtual addr from PDI+PTI from pmap.h rather than
using magic math.  Remove UPDT, not used.
1996-04-30 12:02:12 +00:00
Poul-Henning Kamp
d783aa7bc3 Remove a spurious mapping that was introduced earlier. 1996-04-30 11:58:56 +00:00
Jordan K. Hubbard
9773398d95 Add ATAPI_STATIC so that the ATAPI cdroms work correctly again
under -current.
Submitted-By: Serge Vakulenko <vak@cronyx.ru>
1996-04-29 20:03:41 +00:00
Poul-Henning Kamp
3e86a2edb8 Fix some bugs I introduced and some old ones as well.
Add BDE_DEBUGGER back.
Improve quality of comments.
Thanks Bruce!

Reviewed by:	phk
Submitted by:	bde
1996-04-28 07:14:05 +00:00
Bruce Evans
f4c626074b Fixed a bug introoduced in the previous change. ISA device memory was
mapped to semi-random place(s) depending on the content(s) of physical
address 0xA0000.  This was fatal at least on my system with a some
memory-mapped devices.  Console syscons somehow wasn't affected.  It
bogusly hardcodes the address.  Sigh.
1996-04-26 22:26:45 +00:00
Poul-Henning Kamp
1a0e8e31c6 A significant debogofication of locore.s. I havn't found any actualy
bugs, but it is a lot easier to navigate this twisted code now.
1996-04-26 13:47:39 +00:00
Poul-Henning Kamp
68832d3037 Fix cpu_fork for real.
Suggested by:	 bde
1996-04-25 06:20:19 +00:00
Nate Williams
e597b4972e - add apm to the GENERIC kernel (disabled by default), and add some comments
regarding apm to LINT
- Disabled the statistics clock on machines which have an APM BIOS and
  have the options "APM_BROKEN_STATCLOCK" enabled (which is default
  in GENERIC now)
- move around some of the code in clock.c dealing with the rtc to make
  it more obvios the effects of disabling the statistics clock

Reviewed by:	bde
1996-04-22 19:40:28 +00:00
John Dyson
7847cec1b7 This fixes a troubling oversight in some of the pmap code enhancements.
One of the manifiestations of the problem includes the -4 RSS problem
in ps.

Reviewed by: dyson
Submitted by: Stephen McKay <syssgm@devetir.qld.gov.au>
1996-04-22 05:23:08 +00:00
Justin T. Gibbs
1d7ded8adf Change the devconf description from "ISA or EISA bus" to "ISA bus" now
that we have eisaconf.
1996-04-20 21:22:32 +00:00
Poul-Henning Kamp
6f1e6c97de savectx returns through cpu_switch in case of the child, so it must
return void just like cpu_switch.  Fix prototype and usage from machdep.c
1996-04-19 07:28:04 +00:00
Poul-Henning Kamp
7d2392141d Fix a bogon. cpu_fork & savectx ecpected cpu_switch to restore %eax,
they shouldn't.
1996-04-18 21:34:53 +00:00
Nate Williams
6bb76283e0 Added a disabled psm0 (PS/2) mouse device, using the new 'disable'
keyword.
1996-04-18 04:02:30 +00:00
Bruce Evans
0513ce7f75 Use PCB_SAVEFPU_SIZE instead of a too-small size in savectx(). This
bug only affected FPU emulators.  It might have caused bogus FPU states
in core dumps and in the child pcb after a fork.  Emulated FPU states
in core dumps don't work for other reasons, and the child FPU state
is reinitialized by exec, so the problem might not have caused any
noticeable affects.

Cleaned up #includes.
1996-04-13 11:24:13 +00:00
Bruce Evans
5b5220556d Generate #define of PCB_SAVEFPU_SIZE for use in savectx(). 1996-04-13 11:22:57 +00:00
Poul-Henning Kamp
22a31706dc Make alltraps a .globl so that DDB doesn't make people belive they have
an ALIGNFLT on their hands all the time.
1996-04-12 12:22:14 +00:00
Bruce Evans
3745f80a48 Moved AUTO_EOI_[12] and most sio and pcvt options out of the makefile. 1996-04-11 21:18:49 +00:00
Jordan K. Hubbard
7506b46e07 Disable sio3 in GENERIC - it messes with ATI cards. 1996-04-10 23:03:36 +00:00
Nate Williams
9368fc2012 hp300 -> i386 1996-04-10 05:27:11 +00:00
Jordan K. Hubbard
dbb315cb8e Gag! Somebody removed the bus mouse from GENERIC for reasons unknown.
That certainly explains why I noticed it suddenly missing from the
2.2 SNAPSHOT! :-)
1996-04-09 09:00:41 +00:00
Sujal Patel
1dce4e5d60 Add a lock for DMA Channels to prevent two devices from using the same DMA
channel at the same time.  The functions isa_dma_acquire() and
isa_dma_release() should be used in all ISA drivers which call isa_dmastart().
This can be used more generally to register the usage of DMA channels in
any driver, but it is required for drivers using isa_dmastart() and friends.

Clean up sanity checks, error messages, etc.
Remove isa_dmadone_nobounce(), it is no longer needed

Reviewed by:	bde
1996-04-08 19:38:57 +00:00
Garrett Wollman
dadd5f3a95 Added a $Id$ keyword. Bruce still needs to put a copyright notice
on this file.
1996-04-08 16:41:06 +00:00
Bruce Evans
3fd674e22b Use breakpoint() function instead of inline assembler. 1996-04-07 18:34:59 +00:00
Bruce Evans
5dbd168e2e Changed bdb() to breakpoint() and always enable it.
Made the style more consistent, especially for the new Pentium functions.
1996-04-07 18:30:56 +00:00
Bruce Evans
6ffde942bf Removed never-used #includes of <machine/cpu.h>. Many were apparently
copied from bad examples.
1996-04-07 17:39:28 +00:00
Bruce Evans
3157adc8af Removed now-unused #includes of <machine/cpu.h>. They were for bootverbose
being declared in the wrong place.
1996-04-07 17:32:42 +00:00
Bruce Evans
73dc05d67c Moved declaration of bootverbose to a better place. It isn't
machine-dependent.

Moved declaration of cpu_fork() to a better place.  Only its
implementation is machine-dependent.
1996-04-07 16:44:28 +00:00
Bruce Evans
5e0f6c4338 Fixed the ownership and permissions of /dev/io. Rev.1.32 broke rev.1.29. 1996-04-07 14:59:26 +00:00
John Dyson
07b1059113 Major cleanups for the pmap code. 1996-04-07 02:23:05 +00:00
David Greenman
baddaf9480 Switch 586/686 back to generic_bzero and #if 0'd the "optimized" code. It
turns out that it actually reduces performance in real-world cases.

Noticed by:	bde
1996-04-06 01:06:06 +00:00
Andrey A. Chernov
2cb9219c5d Fix adjkerntz expression priority 1996-04-05 18:56:10 +00:00
Andrey A. Chernov
fe0d5f43c5 Add wall_cmos_clock sysctl variable, needed to manage adjkerntz even for
UTC cmos clocks (needed for Local Timezone FSes)
1996-04-05 03:36:31 +00:00
John Dyson
030ad08012 Fixed a problem that the UPAGES of a process were being run down
in a suboptimal manner.  I had also noticed some panics that appeared
to be at least superficially caused by this problem.  Also, included
are some minor mods to support more general handling of page table page
faulting.  More details in a future commit.
1996-04-03 05:23:44 +00:00
Marc G. Fournier
f28213ad1d Convert from using devfs_add_devsw() to devfs_add_devswf()
Fixed Permissions/Ownership in DEVFS to reflect /dev
1996-04-01 21:02:14 +00:00
David Greenman
909e5e0e77 Change if/goto into a while loop. 1996-03-31 23:00:32 +00:00
Bruce Evans
048cd610ad Finished removing NOP macros. 1996-03-31 04:17:25 +00:00
Bruce Evans
ef9805a3c8 Moved rtcin() to clock.c.
Always delay using one inb(0x84) after each i/o in rtcin() - don't
do this conditional on the bogus option DUMMY_NOPS not being defined.
If you want an optionally slightly faster rtcin() again, then inline
it and use a better named option or sysctl variable.  It only needs
to be fast in rtcintr().
1996-03-31 04:05:36 +00:00
Bruce Evans
5d170d7eb8 Killed religous FASTER_NOP again. 1996-03-31 03:31:29 +00:00
Bruce Evans
a680ab7537 Count PCI irqs in up to 4 ISAish counters named `pci irqnn' instead of
in the clk0 counter.

Reviewed by:	s
1996-03-29 15:01:51 +00:00
Bruce Evans
78966e20d9 Parenthesized macros.
Fixed munged tabs.
1996-03-29 14:14:07 +00:00
Garrett Wollman
28dc3d2757 >Blush<. Use the correct opcode for the WRMSR instruction. 1996-03-28 20:39:45 +00:00
Garrett Wollman
f7ff248201 Teach the disassembler about the 0f,3x family of instructions
(RDMSR, RDTSC, WRMSR, and RDPMC).
1996-03-28 20:35:03 +00:00
John Dyson
4e489ec421 Remove a now unnecessary prototype from pmap.c. Also remove now
unnecessary vm_fault's of page table pages in trap.c.
1996-03-28 05:40:58 +00:00
John Dyson
208bfdc98b Significant code cleanup, and some performance improvement. Also,
mlock will now work properly without killing the system.
1996-03-28 04:59:34 +00:00
Bruce Evans
3dffe3c5f6 Fixed permissions of /devfs/*random.
Fixed group and permissions of /devfs/perfmon.
1996-03-27 19:04:55 +00:00
Bruce Evans
ba00d77a82 Print stack pointer and frame pointer in trap messages.
Fixed "trace/trap" message.

Reviewed by:	davidg
1996-03-27 17:33:39 +00:00
Bruce Evans
8102fcda9b Eliminated dependency on opt_sysvipc.h. 1996-03-27 17:21:57 +00:00
Bruce Evans
6d72aad8a7 Removed vestiges of dummy frame at top of tmpstk.
Use alignment macros where appropriate.

Cleaned up #includes.
1996-03-27 17:16:29 +00:00
Bruce Evans
6003d411e1 Fixed traceback for the following cases:
- legitimate null frames from idle() (traceback was aborted after a null
  pointer trap)
- second instruction of normal function prologue, and last instruction of
  a function (caller wasn't reported).

Reviewed by:	davidg
1996-03-27 17:06:03 +00:00
Garrett Wollman
d69e850255 Add support for Pentium and Pentium Pro performance counters.
(This code is as yet untested; to come after man page is written.)
This also adds inlines to cpufunc.h for the RDTSC, RDMSR, WRMSR, and RDPMC
instructions.  The user-mode interface is via a subdevice of mem.c;
there is also a kernel-size interface which might be used to aid
profiling.
1996-03-26 19:57:56 +00:00
Nate Williams
cdf642d171 Whoops, back out the last commit, which was accidentally committed at
the same time as the if_zp cleanup patch.

The commit that occurred was an incomplete patch for APM on my laptop
and needs more work.
1996-03-23 21:36:03 +00:00
Nate Williams
ada00a4447 Now that ac->ac_ipaddr and arpwhohas() no longer exist, remove the
ifdef'd out code that used it.
1996-03-23 21:32:39 +00:00
Jordan K. Hubbard
51fa90c524 Add vx0 device to GENERIC. Yes, I know that this bloats GENERIC, but
what can we do?
1996-03-20 10:42:56 +00:00
Nate Williams
8371872e22 Always enable interrupts before calling the APM idle/busy routines.
Suggested by:	phk@FreeBSD.org
1996-03-19 04:40:03 +00:00
Jordan K. Hubbard
a732b754b4 Add fe0 to the LINT and GENERIC files (hmmm - looks like my rcvs setup't
isn't supplying all the proper header info here!  Last commit of fe0
entry should have had the following Submitted by line also).
Submitted-by: Masahiro SEKIGUCHI <seki@sysrap.cs.fujitsu.co.jp>
1996-03-17 08:39:51 +00:00
John Dyson
3ce8e60f5b Make sure that we pmap_update AFTER modifying the page table entries.
The P6 can do a serious job of reordering code, and our stuff could
execute incorrectly.
1996-03-13 00:39:45 +00:00
David Greenman
dc92971788 Killed some historical #define cruft that we've never used in FreeBSD:
UDOT_SZ
SYSPTSIZE
USRPTSIZE
MSGBUFPTECNT
DMMIN
DMMAX
DMTEXT
USRIOSIZE
VM_PHYS_SIZE
1996-03-12 15:37:58 +00:00
Nate Williams
44f0e01b25 Removed undocumented an unused APM_SLOWSTART code. 1996-03-12 05:44:25 +00:00
Jordan K. Hubbard
25cf9d99fb Add FAILSAFE option for selecting extra conservativeness when such
is more practical (like during installation).  Correspondingly, set the
option by default in GENERIC now.
1996-03-11 18:47:39 +00:00
Jeffrey Hsu
6ad138306c For Lite2: proc LIST changes.
Reviewed by:	david & bde
1996-03-11 05:55:56 +00:00
Jeffrey Hsu
375c803b36 Change type of code argument to sendsig from unsigned to u_long to make it
consistent w/ signalvar.h and kern_sig.c.
Reviewed by:	davidg & bde
1996-03-11 02:21:42 +00:00
John Dyson
874308f7c2 Improved efficiency in pmap_remove, and also remove some of the pmap_update
optimizations that were probably incorrect.
1996-03-10 23:06:00 +00:00
Justin T. Gibbs
58a8ca6a4d Cleanse the SCSI subsystem of its internally defined types
u_int32, u_int16, u_int8, int32, int16, int8.
	Use the system defined *_t types instead.
1996-03-10 07:04:48 +00:00
Jordan K. Hubbard
3873c27840 Don't print DMA busy messages - the sound code apparently runs
afoul of this without actually providing useful information and
works nonetheless.
Submitted by:	Jim Lowe <james@miller.cs.uwm.edu>
1996-03-10 02:10:27 +00:00
John Dyson
9212ebc656 Correct some new and older lurking bugs. Hold count wasn't being
handled correctly.  Fix some incorrect code that was included
to improve performance. Significantly simplify the pmap_use_pt and
pmap_unuse_pt subroutines.  Add some more diagnostic code.
1996-03-09 07:01:21 +00:00
Jordan K. Hubbard
0dbf6d736f USER_LDT changes for the Willows TwinXPDK toolkit. Only tested with WINE
since that's the only other USER_LDT using code that I know of.
Submitted by:	Gary Jennejohn <Gary.Jennejohn@munich.netsurf.de>
Obtained from: {Origin of diffs may be someone else - I only rec'd them from
Gary}
1996-03-03 01:57:45 +00:00
Peter Wemm
d66a506616 Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff.  The scrollbars are now
working, at least on my machine. (whew! :-)

I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.

The main changes:

COMPAT_LINUX is *GONE*.  Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself.  The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code.  All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first.  Like IBCS2, you can statically compile it in with "options LINUX".

A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality().  The Linux-ELF libraries want
to use some of these.

linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.

Quite a few bugs removed, including incorrect arguments being used in
syscalls..  eg:  mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.

The build for the code has changed.  i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.

Supporting changes elsewhere in the kernel:

The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS).  This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.

The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only.  This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.

makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code.  It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)

At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area.  This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
Peter Wemm
4bd4912865 Add more options into the conf/options and i386/conf/options.i386 files
and the #include hooks so that 'make depend' is more useful.  This
covers most of the options I regularly use (but not all) and some other
easy ones.
1996-03-02 18:24:13 +00:00
John Dyson
d6673cba8a Re-insert a missing pmap_remove operation. 1996-02-25 05:08:57 +00:00
John Dyson
3eb77c8302 Fix a problem with tracking the modified bit. Eliminate the
ugly inline-asm code, and speed up the page-table-page tracking.
1996-02-25 03:02:53 +00:00
Poul-Henning Kamp
d0cb65474e Correct & Update the printing of CPU features. We have printed rubbish
since version 1.117 when Garrett made the switch to %b.  Updated to
reflect Intel AP-485 (241618-004).
1996-02-13 10:30:36 +00:00
David Greenman
f83a01b63f Unspam my changes in rev 1.54 that John spammed in rev 1.55. 1996-02-05 14:23:19 +00:00
John Dyson
dca5129987 Changed vm_fault_quick in vm_machdep.c to be global. Needed for
new pipe code.
1996-02-04 22:09:12 +00:00
David Greenman
267173e72d Rewrote cpu_fork so that it doesn't use pmap_activate, and removed
pmap_activate since it's not used anymore. Changed cpu_fork so that
it uses one line of inline assembly rather than calling mvesp() to
get the current stack pointer. Removed mvesp() since it is no longer
being used.
1996-02-04 21:20:53 +00:00
David Greenman
ac474627f4 Killed last change - it was bogus. cpu_switch() already assumes that
return address is on the stack.
1996-02-02 18:30:06 +00:00
Mike Pritchard
6c5e9bbdf5 Fix a bunch of spelling errors in the comment fields of
a bunch of system include files.
1996-01-30 23:02:38 +00:00
Garrett Wollman
3addba4f55 No longer use the cyclecounter to attempt to correct for late or missed
clock interrupts.

Keep a 1-in-16 smoothed average of the length of each tick.  If the
CPU speed is correctly diagnosed, this should give experienced users
enough information to figure out a more suitable value for `tick'.
1996-01-30 18:56:47 +00:00
David Greenman
b09fb6432d savectx() strikes again: the saved stack pointer wasn't properly adjusted
to remove the return address. It's only the frame pointer and luck that
allowed the code to work at all.
1996-01-30 12:54:21 +00:00
David Greenman
3dd78b2bcd Increase tmpstk size to 8K and make certain it is longword aligned. 1996-01-30 07:59:02 +00:00
Bruce Evans
dd87702a51 Allocate DMA bounce buffers only when requested by drivers. Only the
fd and wt drivers need bounce buffers, so this normally saves 32K-1K
of kernel memory.

Keep track of which DMA channels are busy.  isa_dmadone() must now be
called when DMA has finished or been aborted.

Panic for unallocated and too-small (required) bounce buffers.

fd.c:
There will be new warnings about isa_dmadone() not being called after
DMA has been aborted.

sound/dmabuf.c:
isa_dmadone() needs more parameters than are available, so temporarily
use a new interface isa_dmadone_nobounce() to avoid having to worry
about panics for fake parameters.  Untested.
1996-01-27 02:33:48 +00:00
Bruce Evans
227b8bf258 Cleaned up unused #includes and some other historical cruft.
Sorted and KNFised declarations.
1996-01-27 01:56:30 +00:00
Peter Wemm
bf6024ee3a Add commands for ptrace get/set registers.. (Same numbers as NetBSD) 1996-01-24 18:51:48 +00:00
David Greenman
2924d49169 Simplified savectx() a little and fixed a bug that caused it to return
garbage in the child process rather than "1" like it is supposed to.

Reviewed by:	bde
1996-01-23 02:39:24 +00:00
Joerg Wunsch
e66e939ed6 Initialize the cpu_class variable. This prevents i386 machines from
panicing with a privileged instruction fault early at boot time.
Submitted by:	rock@wurzelausix.CS.Uni-SB.DE (D. Rock)
1996-01-21 20:57:03 +00:00
Nate Williams
4e5935064c Added a comment above the npx0 device line
# Mandatory, don't remove
1996-01-20 06:14:33 +00:00
Poul-Henning Kamp
c92a064d21 Reinstate AUTO_EOI_1. This did break suspend/resume on some portables.
In particular mine.  We may want to make it a negative option to
keep GENERIC sane, ie NO_AUTO_EOI_1.
1996-01-19 23:38:07 +00:00
Peter Wemm
1a46737f84 Some trivial fixes to get it to compile again, plus some new lint:
- cpuclass should be cpu_class
- CPUCLASS_I386 should be CPUCLASS_386
(^^ those only show up if you compile for i386)
- two missing prototypes on new functions
- one missing static
1996-01-19 14:19:56 +00:00
John Dyson
bd7e5f992e Eliminated many redundant vm_map_lookup operations for vm_mmap.
Speed up for vfs_bio -- addition of a routine bqrelse to greatly diminish
	overhead for merged cache.
Efficiency improvement for vfs_cluster.  It used to do alot of redundant
	calls to cluster_rbuild.
Correct the ordering for vrele of .text and release of credentials.
Use the selective tlb update for 486/586/P6.
Numerous fixes to the size of objects allocated for files.  Additionally,
	fixes in the various pagers.
Fixes for proper positioning of vnode_pager_setsize in msdosfs and ext2fs.
Fixes in the swap pager for exhausted resources.  The pageout code
	will not as readily thrash.
Change the page queue flags (PG_ACTIVE, PG_INACTIVE, PG_FREE, PG_CACHE) into
	page queue indices (PQ_ACTIVE, PQ_INACTIVE, PQ_FREE, PQ_CACHE),
	thereby improving efficiency of several routines.
Eliminate even more unnecessary vm_page_protect operations.
Significantly speed up process forks.
Make vm_object_page_clean more efficient, thereby eliminating the pause
	that happens every 30seconds.
Make sequential clustered writes B_ASYNC instead of B_DELWRI even in the
	case of filesystems mounted async.
Fix a panic with busy pages when write clustering is done for non-VMIO
	buffers.
1996-01-19 04:00:31 +00:00
Bruce Evans
e65a471221 Removed declarations of nonexistent functions. 1996-01-16 07:42:08 +00:00
Andrey A. Chernov
d85314fa5f Since new bcd* macros not argument range overflow resistant,
fix argument overflow for years >= 2000
1996-01-16 06:35:40 +00:00
Poul-Henning Kamp
791d77e0dd Get rid of two and a half printf in the kernel.
Add more features to the one remaining to handle the job:
	+	signed quantity.
	#	alternate format
	-	left padding
	*	read width as next arg.
	n	numeric in (argument specified) default radix.

Fix the DDB debugger to use these.
Use vprintf in debug routine in pcvt.

The warnings from gcc may become more wrong and  intolerable because
of this.

Warning:  I have not checked the entire source for unsupported or
changed constructs, but generally belive that there are only a few.

Suggested by: bde
1996-01-15 22:41:03 +00:00
Poul-Henning Kamp
3eb50b2edd My wife is busy making me a new conical hat, so you don't need to
send any to me this time.  Commited an old copy of this files where
the tables were swapped.  Duh!.
1996-01-15 21:26:43 +00:00
Poul-Henning Kamp
e95fbcfeb4 Soren called an said that I screwed up badly, so I backup until
I find out how... Sorry.
1996-01-15 21:12:50 +00:00
Poul-Henning Kamp
2898c294f4 Make bin2bcd and bcd2bin global macroes instead of having local
implementations all over the place.
1996-01-15 10:28:44 +00:00
Bruce Evans
f668341de4 Fixed handling of Feb 29 in resettodr(). 1996-01-12 17:33:12 +00:00
Andrey A. Chernov
dc3f9062ca Replace ugly year/month calculations in resettodr to more clean
variants, idea taken from NetBSD clock.c.
At least year calculation was wrong, pointed by Bruce.
Use different strategy to store year for BIOS without RTC_CENTURY
1996-01-08 18:50:14 +00:00
Justin T. Gibbs
a8ce2e68d7 Add comment about only needing on of either ahc, ncr, or ahb type
controllers to handle any number of devices.
Remove unnecessary extra units for these controllers.
1996-01-07 19:19:38 +00:00
Peter Wemm
d92566062f Choose a different name to hold the option definition.. The original one
was overlapping with another file, and making some undesirable behavior a
little worse - it's triggering a bug in config that appears to have been
there for some time (before the options files, anyway.)
1996-01-06 23:10:57 +00:00
Garrett Wollman
8890984dc9 Convert BOUNCE_BUFFERS and BOUNCEPAGES to new option scheme. 1996-01-05 20:12:53 +00:00
Garrett Wollman
0e41ee3037 Convert DDB to new-style option. 1996-01-04 21:13:23 +00:00
Garrett Wollman
50c73f3620 Convert SYSV IPC to new-style options. (I hope I got everything...)
The LKMs will need an extra file, to come later.
1996-01-04 20:29:06 +00:00
Garrett Wollman
a73af3a214 convert the math emulation to use the new-style options. 1996-01-04 19:51:50 +00:00
Garrett Wollman
db6a20e23e Converted two options over to the new scheme: USER_LDT and KTRACE. 1996-01-03 21:42:35 +00:00
Bruce Evans
e5171bbec0 Fixed user-mode mcount which I broke in the previous revision.
Do it the old way for now.

Moved recent additions around a lot to minimise ifdefs.

Added prototypes.
1996-01-01 17:11:21 +00:00
Joerg Wunsch
cfaaf1594e Restrict /devfs/io perms to 0600.
Nobody in our regular source tree, or in the non-distfile part of the
ports tree does use /dev/io anyway, so this might be replaced by
another scenario some day.
1995-12-31 09:32:16 +00:00
David Greenman
b2b1f785bc In memory test, cast pointer as "volatile int *", not "int *" to make sure
that gcc doesn't cache the value used in the test. Pointed out by Erich
Boleyn <erich@uruk.org>.
1995-12-30 23:13:32 +00:00
Bruce Evans
912e603778 Implemented non-statistical kernel profiling. This is based on
looking at a high resolution clock for each of the following events:
function call, function return, interrupt entry, interrupt exit,
and interesting branches.  The differences between the times of
these events are added at appropriate places in a ordinary histogram
(as if very fast statistical profiling sampled the pc at those
places) so that ordinary gprof can be used to analyze the times.

gmon.h:
Histogram counters need to be 4 bytes for microsecond resolutions.
They will need to be larger for the 586 clock.
The comments were vax-centric and wrong even on vaxes.  Does anyone
disagree?

gprof4.c:
The standard gprof should support counters of all integral sizes
and the size of the counter should be in the gmon header.  This
hack will do until then.  (Use gprof4 -u to examine the results
of non-statistical profiling.)

config/*:
Non-statistical profiling is configured with `config -pp'.
`config -p' still gives ordinary profiling.

kgmon/*:
Non-statistical profiling is enabled with `kgmon -B'.  `kgmon -b'
still enables ordinary profiling (and distables non-statistical
profiling) if non-statistical profiling is configured.
1995-12-29 15:30:05 +00:00
Jordan K. Hubbard
56c7a48c93 Make a couple of options that hurt when they're removed more
carefully noted.
1995-12-29 02:04:20 +00:00
David Greenman
d079690c14 Made bzero a function vector and added a 586/686 optimized version of
bzero.
Deprecated blkclr (removed it).
Removed some old cruft from cpufunc.h.

The optimized bzero was submitted by Torbjorn Granlund <tege@matematik.su.se>
The kernel adaption and other changes by me.
1995-12-28 23:34:30 +00:00
David Greenman
83e33b0197 Made bzero a function vector and added a 586/686 optimized version of
bzero.
Deprecated blkclr (removed it).
Removed some old cruft from cpufunc.h.

The optimized bzero was submitted by Torbjorn Granlund <tege@matematik.su.se>
The kernel adaption and other changes by me.
1995-12-28 23:14:40 +00:00
David Greenman
99beca17d7 Fix one more label that I overlooked with the P6 support. Sigh. 1995-12-28 21:01:54 +00:00
David Greenman
014374187c Update bcopyb & bcopy to reflect changes I made in the libc version of
bcopy:

Be smarter about handling overlapped copies and only go backwards if it
is really necessary. Going backwards on a P6 is much slower than forwards
and it's a little slower on a P5. Also moved the count mask and 'std'
down a few lines - it's a couple percent faster this way on a P5.
1995-12-27 18:54:51 +00:00
Mark Murray
0738b16169 random_machdep.c: New version, also includes revectored interrupts, rather
than hooking permanently.
vector.s:       : Remove the interrupt hook. This is done dynamically, now.
1995-12-27 11:22:05 +00:00
Mark Murray
e85ceed0ff Modify the ioctl to handle revectored interrupts for the entropy gatherers. 1995-12-27 11:18:29 +00:00
Bruce Evans
62394a63c8 Removed almost all traces of libkern.a. The objects that were in
libkern.a are now specified by listing their source files in
files.${MACHINE}.  The list is machine-dependent to save space.
All the necessary object for each machine must be linked into the
kernel in case an lkm wants one.
1995-12-26 13:58:31 +00:00
David Greenman
d7b1079903 Fix a lable goofup I made in the previous P6 support changes. 1995-12-25 14:40:49 +00:00
David Greenman
5493045648 Fix typo in CPUCLASS. 1995-12-25 01:02:32 +00:00
David Greenman
17acc2b264 Added device fxp0 (device driver for Intel EtherExpress Pro/100). 1995-12-24 08:13:23 +00:00
David Greenman
7059cdf2d3 Added I686_CPU. 1995-12-24 08:11:46 +00:00
David Greenman
6410f76727 Add Pentium Pro CPU detection and special handling. For now, all the
optimizations we have for 586s also apply to 686s...this will be fine-
tuned in the future as appropriate.
1995-12-24 08:10:52 +00:00
David Greenman
e8636c6c19 Made "AUTO_EOI_1" standard. auto-EOI on the master ICU is a documented
feature of the ICU. auto-EOI on the slave is not safe, however, so it
remains an option. Killed religious FASTER_NOP when writing the ICU.

Reviewed by:	bde
1995-12-23 16:53:57 +00:00
David Greenman
44198d45b6 Use FASTER_NOP rather than NOP in rtcin() - only one inb delay was ever
needed.
Reviewed by:	bde
1995-12-23 16:46:31 +00:00
Bruce Evans
e390090674 Staticized code that was hidden by `#ifdef DEBUG'. 1995-12-22 18:21:26 +00:00
Bruce Evans
02f90f3b3c Increased the double fault stack size from 512 to PAGE_SIZE. This is
wasteful, but better than clobbering the variables below the stack.
About 300 bytes of variables were clobbered when I examined double
faults using ddb.  Perhaps a page that is known not to be accessed by
the double fault handler could be used.  Such pages are not easy to
find, since the double fault handler calls panic() which calls sync()
and possibly dumpsys().
1995-12-22 18:17:34 +00:00
David Greenman
b0aa8fc32f Fix a small logic bug that caused the arguments of the previous frame to
be used instead of the ones for the current frame if a breakpoint had been
set at the entry to a function.
1995-12-22 07:09:24 +00:00
Julian Elischer
ee0ef56952 Reviewed by: peter (verbally :)
Move functions specific to mem.c to mem.c from conf.c
1995-12-21 19:22:49 +00:00
David Greenman
328315528d Rewrote most of the ddb stack traceback code. These changes are smarter
about decoding trap/syscall/interrupt frames and generally works better
than the previous stuff.
Removed some special (incorrect) frobbing of the frame pointer that
was messing some things up with the new traceback code.
1995-12-21 19:20:58 +00:00
Garrett Wollman
a8178e4bb6 Increase Pentium cyclecounter calibration time to 131072 us. This
experimentally seems to give better results on my machine.
1995-12-20 20:57:33 +00:00
David Greenman
c96819306b Corrected a typo in a comment. 1995-12-19 14:47:41 +00:00
David Greenman
2838c9682a Implemented a (sorely needed for years) double fault handler to catch stack
overflows.
It sure would be nice if there was an unmapped page between the PCB and
the stack (and that the size of the stack was configurable!). With the
way things are now, the PCB will get clobbered before the double fault
handler gets control, making somewhat of a mess of things. Despite this,
it is still fairly easy to poke around in the overflowed stack to figure
out the cause.
1995-12-19 14:30:50 +00:00
Bruce Evans
927c0b1131 Cleaned up prototypes in pmap headers: removed ones for nonexistent
functions; moved misplaced ones; restored most of KNFish formatting
from 4.4lite version; removed bogus __BEGIN/END_DECLS.
1995-12-17 07:39:05 +00:00
Bruce Evans
f2c6b65bab Fixed 1TB filesize changes. Some pindexes had bogus names and types
but worked because vm_pindex_t is indistinuishable from vm_offset_t.
1995-12-17 07:19:58 +00:00
Peter Wemm
c33b06ba4f Catch a couple more null devsw dereferences... 1995-12-16 18:52:08 +00:00
Bruce Evans
6ea3e9d839 Completed function declarations and/or added prototypes and/or added
#includes to get prototypes.

pci now uses a different interrupt handler type for interrupts that it
dispatches and the isa interrupt handler type for the interrupts that
it handles.
1995-12-16 00:27:59 +00:00
Bruce Evans
c3741af960 Added a prototype. Merged prototype lists. 1995-12-14 23:59:04 +00:00
Bruce Evans
f3fcde035c Added a prototype. 1995-12-14 23:50:54 +00:00
Bruce Evans
cffba52f8b Moved some more prototypes outside of ifdefs and grouped them together. 1995-12-14 23:35:17 +00:00
Bruce Evans
d14122ea44 Fixed staticization of DDB functions. 1995-12-14 23:01:51 +00:00
Peter Wemm
b1529bda75 GENERIC/LINT: Remove redundant quoting on some option lines.
LINT: add a couple of new/missing/undocumented options
files.i386: add linux code so that you can compile a kernel with static
linux emulation ("options LINUX")
i386/*: use #if defined(COMPAT_LINUX) || defined(LINUX) to enable static
support of linux emulation (just like "IBCS2" makes ibcs2 static)

The main thing this is going to make obvious, is that the LINUX code
(when compiled from LINT) has a lot of warnings, some of which dont look
too pleasant..
1995-12-14 14:35:36 +00:00
Poul-Henning Kamp
87b6de2b76 A Major staticize sweep. Generates a couple of warnings that I'll deal
with later.
A number of unused vars removed.
A number of unused procs removed or #ifdefed.
1995-12-14 08:32:45 +00:00
Poul-Henning Kamp
5e46340891 Make math_emulators LKMable. 1995-12-14 08:21:33 +00:00
Julian Elischer
6ba9ebce28 devsw tables are now arrays of POINTERS to struct [cb]devsw
seems to work hre just fine though  I can't check every file
that changed due to limmited h/w, however I've checked enught to be petty
happy withe hte code..

WARNING... struct lkm[mumble] has changed
so it might be an idea to recompile any lkm related programs
1995-12-13 15:13:57 +00:00
Justin T. Gibbs
ab8f0fa54c Have Eisa and PCI probes occur before ISA probes. Buslogic EISA and PCI cards
can be found in ISA compatibility mode by the ISA driver, but since the
EISA and PCI probes are non-invasive, we prefer them to find the card first.
Since both EISA and PCI probes can rely on interrupts, enable them before
probing of any type is performed.  All ISA probes are still "protected" by
splhigh().
1995-12-12 08:50:15 +00:00
Justin T. Gibbs
a1d01daf77 Have bt0 entry specify "bt_isa_intr" for its vector. This one entry will
allow one EISA/ISA/PCI/VL Buslogic controller to be probed.  The driver
is almost fully dynamic.  It just needs some kdc work and for the SCSI code
to stop passing unit numbers up in the scsi_xfer struct.
1995-12-12 08:46:40 +00:00
John Dyson
a316d390bd Changes to support 1Tb filesizes. Pages are now named by an
(object,index) pair instead of (object,offset) pair.
1995-12-11 04:58:34 +00:00
Bruce Evans
174f8afaa3 Added pcvt option FAT_CURSOR.
Fixed comment about PCVT_VERSION=210.

Fixed tabs and trailing blanks.
1995-12-10 22:14:15 +00:00
Bruce Evans
c73feca0b7 Removed new alias d_size_t for d_psize_t.
Removed old aliases d_rdwr_t and d_ttycv_t for d_read_t/d_write_t and
d_devtotty_t.

Sorted declarations of switch functions into switch order.

Removed duplicated comments and declarations of nonexistent switch
functions.
1995-12-10 15:55:34 +00:00
Poul-Henning Kamp
6f4e0beb7e Staticize and cleanup. 1995-12-10 13:40:44 +00:00
Poul-Henning Kamp
87b9115751 Staticize and cleanup.
remove a TON of #includes from machdep.
1995-12-10 13:36:34 +00:00
Bruce Evans
965797322b Restored used function fusword() (used by GPL math emulator). 1995-12-10 03:11:32 +00:00
Poul-Henning Kamp
7dfe504fe2 Remove various unused symbols and procedures. 1995-12-09 20:40:43 +00:00
Poul-Henning Kamp
162a9e8732 Move sysctl machdep.consdev to cons.c 1995-12-09 20:39:47 +00:00
Poul-Henning Kamp
d2f265fab8 Julian forgot to make the *devsw structures static. 1995-12-08 23:23:00 +00:00
Julian Elischer
87f6c6625d Pass 3 of the great devsw changes
most devsw referenced functions are now static, as they are
in the same file as their devsw structure. I've also added DEVFS
support for nearly every device in the system, however
many of the devices have 'incorrect' names under DEVFS
because I couldn't quickly work out the correct naming conventions.
(but devfs won't be coming on line for a month or so anyhow so that doesn't
matter)

If you "OWN" a device which would normally have an entry in /dev
then search for the devfs_add_devsw() entries and munge to make them right..
check out similar devices to see what I might have done in them in you
can't see what's going on..
for a laugh compare conf.c conf.h defore and after... :)
I have not doen DEVFS entries for any DISKSLICE devices yet as that will be
a much more complicated job.. (pass 5 :)

pass 4 will be to make the devsw tables of type (cdevsw * )
rather than (cdevsw)
seems to work here..
complaints to the usual places.. :)
1995-12-08 11:19:42 +00:00
Peter Wemm
9470f03905 The static prototype for setroot() was apparently accidently moved
into a block of code that was #ifdef CD9660, meaning you got a compile
failure if you didn't have the CD9660 filesystem configured.
1995-12-07 20:31:02 +00:00
David Greenman
efeaf95a41 Untangled the vm.h include file spaghetti. 1995-12-07 12:48:31 +00:00
Peter Wemm
44036f9429 Moving the kern.dumpdev sysctl handler from kern_sysctl.c to swapgeneric.c
is not real helpful since swapgeneric.c doesn't seem to be used, except
perhaps on a GENERIC kernel. (Sorry Paul.. :-)

I've moved it from swapgeneric.c to autoconf.c, since autoconf.c also deals
with dumpdev things.  There may be a better place.....
1995-12-06 09:04:44 +00:00
Poul-Henning Kamp
946bb7a268 A major sweep over the sysctl stuff.
Move a lot of variables home to their own code (In good time before xmas :-)

Introduce the string descrition of format.

Add a couple more functions to poke into these marvels, while I try to
decide what the correct interface should look like.

Next is adding vars on the fly, and sysctl looking at them too.

Removed a tine bit of defunct and #ifdefed notused code in swapgeneric.
1995-12-04 16:48:58 +00:00
Bruce Evans
d71f232008 __purified pmap_pte(). This seems to make no difference. 1995-12-03 18:37:44 +00:00
Bruce Evans
8ae2aed25c Completed function declarations and/or added prototypes. 1995-12-03 18:35:28 +00:00
Bruce Evans
62621eb3be Staticized.
Completed function declarations and added prototypes.

Cleaned up prototypes.

Cleaned up #includes.

Removed unused variable `dkn'.
1995-12-03 17:51:36 +00:00
Bruce Evans
1630f073cf Moved inline functions for insque() and remque() to <sys/queue.h>.
Protected them with `#ifdef KERNEL' so that <sys/queue.h> is valid C++.
Added the necessary #includes of <sys/queue.h>.

These functions are bogus and should be replaced by the queue macros.
1995-12-03 13:45:34 +00:00
Bruce Evans
b667af1da9 Removed unused thread support (partly to get rid of its incomplete
function declarations).

Removed unused #includes (lots of vm ones).
1995-12-03 10:40:16 +00:00
Nate Williams
e9aaac99f2 GENERIC - Add a commented out line for adding support for IBM ThinkPad
keyboards

LINT - Add SCANSET=2 support to the LINT kernel and comments reflecting it's
       purpose.
1995-11-29 20:07:49 +00:00
Garrett Wollman
9350db19e7 Fix Pentium CPU rate diagnosis:
- Don't print out meaningless iCOMP numbers, those are for droids.
	- Use a shorter wait to determine clock rate to avoid deficiencies
	  in DELAY().
	- Use a fixed-point representation with 8 bits of fraction to store
	  the rate and rationalize the variable name.  It would be
	  possible to use even more fraction if it turns out to be
	  worthwhile (I rather doubt it).

The question of source code arrangement remains unaddressed.
1995-11-29 19:57:22 +00:00
Julian Elischer
7198bf4725 If you're going to mechanically replicate something in 50 files
it's best to not have a (compiles cleanly) typo in it! (sigh)
1995-11-29 14:41:20 +00:00
Julian Elischer
53ac6efbd8 OK, that's it..
That's EVERY SINGLE driver that has an entry in conf.c..
my next trick will be to define cdevsw[] and bdevsw[]
as empty arrays and remove all those DAMNED defines as well..

Each of these drivers has a SYSINIT linker set entry
that comes in very early.. and asks teh driver to add it's own
entry to the two devsw[] tables.

some slight reworking of the commits from yesterday (added the SYSINIT
stuff and some usually wrong but token DEVFS entries to all these
devices.

BTW does anyone know where the 'ata' entries in conf.c actually reside?
seems we don't actually have a 'ataopen() etc...

If you want to add a new device in conf.c
please  make sure I know
so I can keep it up to date too..

as before, this is all dependent on #if defined(JREMOD)
(and #ifdef DEVFS in parts)
1995-11-29 10:49:16 +00:00
Peter Wemm
018309ece7 After having put on my Asbestos suit, complete the MFS_ROOT part of Terry's
mountroot changes.  This means that the mfs_initminiroot functionality
into the root mfs_mount....
1995-11-28 03:15:58 +00:00
Bruce Evans
7f0e0625f6 Staticized. Moved some ero-initialized values to the bss.
Added prototypes.
1995-11-24 13:27:24 +00:00
Bruce Evans
512fef80a9 Completed function declarations and/or added prototypes. 1995-11-21 12:55:26 +00:00
Bruce Evans
bf7141134e Quick fix for stat_imask and intr_mask[8] not having the RTC interrupt
bit set.  I broke stat_imask in Dec 1994 and update_intr_masks() has
copied the breakage to intr_mask[8] since Mar 1995.  This can cause
the RTC to stop interrupting in rare cases (under loads heavy enough
for a new RTC interrupt to occur at a critical time just before Xintr8
finishes handling the previous one) and may have caused worse problems.
1995-11-20 13:24:18 +00:00
Poul-Henning Kamp
4b2af45f4b Mega commit for sysctl.
Convert the remaining sysctl stuff to the new way of doing things.
the devconf stuff is the reason for the large number of files.
Cleaned up some compiler warnings while I were there.
1995-11-20 12:42:39 +00:00
Poul-Henning Kamp
076585265f Remove unused vars. 1995-11-20 12:10:09 +00:00
Bruce Evans
6eeed24248 Updated comments. The comments about the unused addresses get broken
almost every time someone uses an address.  This file is probably not
the right place to keep track of the unused addresses (or used
addresses :->).

Fixed comments on #endif's to match code.

Added defines for ASC and GSC sizes.  This file is not the right place
to keep track of scanner addresses, but while there here and we
pretend to keep track of unused addresses, the sizes need to be here
too.

Sorted IO_*SIZE defines.
1995-11-18 09:29:39 +00:00
Bruce Evans
6c146e28a6 Fixed the type of vm_fault_quick() - don't convert types back and forth
through bogus immediate types.

Added prototypes.
1995-11-18 06:54:11 +00:00
Bruce Evans
29b2d3a9dc Fixed handling of trace traps when cons_unavail is set. Added comments
about handing of other cases.
1995-11-18 06:49:35 +00:00
Poul-Henning Kamp
8e9d1ba836 Fix a couple of printfs. 1995-11-14 09:52:25 +00:00
Poul-Henning Kamp
ae0eb976c5 The entire sysctl callback to read/write version. I havn't tested this as
much as I'd like to, but the malloc stunt I tried for an interim for
sure does worse.
Now we can read and write from any kind of address-space, not only
user and kernel, using callbacks.
This may be over-generalization for now, but it's actually simpler.
1995-11-12 19:52:09 +00:00
Bruce Evans
bc2799011f Oops, forgot the following log message in the previous commit:
Included <sys/sysproto.h> to get central declarations for syscall args
structs and prototypes for syscalls.

Ifdefed duplicated decentralized declarations of args structs.  It's
convenient to have this visible but they are hard to maintain.  Some
are already different from the central declarations.  4.4lite2 puts
them in comments in the function headers but I wanted to avoid the
large changes for that.
1995-11-12 07:10:47 +00:00
Bruce Evans
2f1ba63ba8 Reviewed by:
Submitted by:
Obtained from:
1995-11-12 06:42:10 +00:00
Poul-Henning Kamp
81c945d6ab convert more sysctl variables. 1995-11-10 09:53:50 +00:00
Justin T. Gibbs
e56e703606 Change ahb device line to eisaconf syntax. 1995-11-09 22:47:05 +00:00
Justin T. Gibbs
eeb706c070 Add eisa0 and remove ISA configuration line for ahc0. 1995-11-05 17:02:54 +00:00
Justin T. Gibbs
67e1bd423c Remove old eisaconf cruft from the eisa files. The old eisaconf kludged
in here to do some conflict detection.  The new code doesn't do conflict
detection yet, but it will be implemented in another way.

aic7770.c moved to i386/eisa
1995-11-05 04:45:16 +00:00
Justin T. Gibbs
869ed2435b Modifications for the new eisaconf. 1995-11-05 04:43:22 +00:00
Bruce Evans
4ff3de8e80 Added `#include "ioconf.h"' to <machine/conf.h> and cleaned up the
misplaced extern declarations (mostly prototypes of interrupt handlers)
that this exposed.  The prototypes should be moved back to the driver
sources when the functions are staticalized.

Added idempotency guards to <machine/conf.h>.  "ioconf.h" can't be
included when building LKMs so define a wart in bsd.kmod.mk to help
guard against including it.
1995-11-04 17:08:13 +00:00
Mark Murray
96441a8c38 Remove the #ifdev DEVRANDOM's, as promised.
/dev/random is now a part of the kernel! you will need to make
the device in /dev: sh MAKEDEV random
and take a look at some test code in src/tools/test/random.
1995-11-04 16:00:56 +00:00
Bruce Evans
33f538b9c9 Finished(?) moving prototypes for devswitch functions to <machine/conf.h>.
One was hidden in an ifdef.

Continued cleaning up not so new init stuff.

Removed some more /*ARGSUSED*/ for devswitch functions.
1995-11-04 13:52:30 +00:00
Peter Wemm
43732dbeda When the sync-on-shutdown fails to clear all buffers, this bit of code
can print them out.
I have seen that MFS can leave BUSY buffers, preventing a clean reboot...
1995-11-02 09:52:40 +00:00
Peter Wemm
7dbdd057a4 We no longer need the spltty() == splimp() hack if PPP is configured into
the kernel.  ppp_tty.c goes to some lengths to minimise the inter-layer
calling (including a soft ISR).  ppp_tty.c takes care of the soft masking
that was needed still.

(I've discovered that bugs in this area show up within an hour if the
masking was not correct.. :-}  This combination has proven stable on
specialix serial ports, although there was some concern about the softtty
parts of sio/cy and netisr colliding - but Bruce has fixed that now)
1995-10-31 21:03:57 +00:00
Peter Wemm
06cc185852 Add a simplistic netisr register routine - I need this now for ppp-2.2. 1995-10-31 19:07:53 +00:00
Joerg Wunsch
49bdb5b8e7 Include the "od" driver. 1995-10-31 17:00:03 +00:00
Mark Murray
a0135d7e95 Security fix - do not allow anyone but root to choose the interrupts used
in the the randomising process.
(This is a change to the /dev/random ioctl()))
1995-10-30 22:39:34 +00:00
Bruce Evans
c991e17051 Removed bogus statics in declarations that don't allocate storage.
Added prototypes.
1995-10-30 17:13:25 +00:00
Poul-Henning Kamp
a98ca4699e Second batch of cleanup changes.
This time mostly making a lot of things static and some unused
variables here and there.
1995-10-29 15:33:36 +00:00
Bruce Evans
00f7f6be8a Fix mmioctl() for !DEVRANDOM case. mmioctl() is a function, not a
pointer to a function.
1995-10-29 11:37:56 +00:00
Mark Murray
1bb2d3142b Theodore Ts'po's random number gernerator for Linux, ported by me.
This code will only be included in your kernel if you have
'options DEVRANDOM', but that will fall away in a couple of days.
Obtained from: Theodore Ts'o, Linux
1995-10-28 16:58:05 +00:00
Poul-Henning Kamp
4ccc87c594 Remove unused functions and variables, make things static, and other cleanups. 1995-10-28 15:39:31 +00:00
Poul-Henning Kamp
3a34a5c3b8 Sorry, the last commit screwed up for me, this is the right one (I hope!)
Please refer to the previous commit message about sysctl variables.
1995-10-28 13:07:28 +00:00
Jordan K. Hubbard
9720b0841f Stable matcd port to 0x230, as per request by Bruce and Frank.
Submitted by: Frank Durda IV <uhclem@fw.ast.com>
1995-10-25 16:43:01 +00:00
David Greenman
63017f04eb Remove PG_W bit setting in some cases where it should not be set.
Submitted by:	John Dyson <dyson>
1995-10-23 02:31:29 +00:00
David Greenman
b596ee8d4e More improvements to the logic for modify-bit checking. Removed
pmap_prefault() code as we don't plan to use it at this point in time.

Submitted by:	John Dyson <dyson>
1995-10-23 00:47:10 +00:00
Bruce Evans
f9dd61a448 Only allow `sensitive' devices for displays in find_display(). This is
a quick fix for syscons deciding not to become the console because it
thinks another tty device has priority.
1995-10-22 15:07:43 +00:00
David Greenman
6928ec3330 Simplified some expressions. 1995-10-22 02:59:48 +00:00
Poul-Henning Kamp
b59d7f4673 A mixed bag of changes, relating to getting the state in "lsdev" right,
and pccard support to work sensibly.  Better by far, but still not good.
1995-10-21 00:55:36 +00:00
Stefan Eßer
2e80ea0536 Make CONF1_ENABLE_MSK1 even less restriktive: Ignore slot ID ... 1995-10-17 23:30:11 +00:00
Stefan Eßer
0e2f699b9e At least the ASUS Triton motherboards don't disable the PCI bus configuration
accesses after the BIOS bus scan. The previous revision made the assumption,
that every PCI motherboard did ...

Change the test on the initial value of the CONF1_ADDR_PORT register in a way
that makes the probe succeed on triton based motherboards, without breaking
the EISA motherboard that has some non-PCI register at the same address.
1995-10-17 15:23:14 +00:00
Stefan Eßer
287911bd50 Go back to separate tests for configuration mechanism 1 and mechanism 2.
Require the state of the configuration enable bits to be OFF assuming
that the BIOS left them that way, as it should anyway to avoid bad things
to happen.

The tests themselves are copied from the previous release, with the
exception of CONF1_ENABLE_MSK1 having the LSB set. This bit should be
read back as '0', since only DWORD addresses are legal.
1995-10-15 23:43:08 +00:00
Poul-Henning Kamp
fa356aa0c0 Pull all of libkern.a in (though not mcount) so the LKM's don't come
out shorthanded.  Makes the idea of libkern pretty void now...
1995-10-15 18:03:42 +00:00
Garrett Wollman
e2d4b1f051 Reduce jitter of Pentium microtime() implementation by letting the counter
free-run and doing a subtract in microtime() rather than resetting the
counter to zero at every clock tick.  In combination with the changes to
kern_clock.c, this should eliminate all the immediately obvious sources
of systematic jitter in timekeeping on Pentium machines.
1995-10-12 20:39:49 +00:00
Bruce Evans
668bfdc286 Include <sys/sysproto.h> so that machdep.c compiles cleanly again
(the prototype for sync() moved).

KNFize and otherwise clean up printing of BIOS geometries.

Add prototypes.

Continue cleaning up new init stuff.
1995-10-10 05:05:28 +00:00
Stefan Eßer
c7483249e7 Fix bad typo: CONF1_ENABLE_RES1 was written CONF1_ENABLE_CHK1 ... 1995-10-09 21:56:24 +00:00
Bruce Evans
029b0fc88f Fix tracing of syscalls. The previous fix required the undocumented
option DDB_NO_LCALLS to stop ddb getting control and broke all ddb
tracing.  Now there is no option and no way for ddb to trace at
address _Xsyscall or to _Xsyscall, but tracing everywhere else
works.  The previous fix did unnecessary things for Linux syscalls.

Don't bother checking that syscall frames are for user mode.

Make debugger traps inside the kernel (except at addresses _Xsyscall
and _Xsyscall+1) fatal if ddb is not configured.  They "can't happen".

Add prototypes.

Remove stupid comments, e.g., /*ARGSUSED*/ for args that are used.
1995-10-09 04:36:01 +00:00
Poul-Henning Kamp
92a69bc337 remove GCC divsi3 routines which are never used. 1995-10-05 10:32:47 +00:00
Julian Elischer
00c6cadad3 Submitted by: Juergen Lock <nox@jelal.hb.north.de>
Obtained from: other people on the net ?

1. stepping over syscalls (gdb ni) sends you to DDB, and returned
to the wrong address afterwards, with or without DDB.  patch in
i386/i386/trap.c below.

2. the linux emulator (modload'ed) still causes panics with DIAGNOSTIC,
re-applied a patch posted to one of the lists...
1995-10-04 07:08:04 +00:00
David Greenman
23e56ee8d7 Insert zeroed pages at the head of the zero queue rather than at the tail.
A measurable performance improvement results from the potential for the
page to be partially cached when it is eventually used.
1995-10-01 20:10:20 +00:00
Stefan Eßer
77b573149a New approach to the PCI bus configuration mechanism probe problem:
- try to make sure there is any kind of PCI device
- if there is anything at port 0x0cf8, then check for mech. 1 or 2
1995-09-22 19:10:54 +00:00
David Greenman
0704324a55 Fix rounding bug in last commit that would have caused the problem to not
be completely fixed.
1995-09-20 13:01:17 +00:00
Bruce Evans
2e69f359d1 Fix benign type mismatches in isa interrupt handlers. Many returned int
instead of void.
1995-09-19 18:55:37 +00:00
Stefan Eßer
a3adc4f8c5 Revert most changes of previous commit.
Changes relative to 1.12:
- Put extra instruction between outl()/inl() sequence to prevent the
  old value being read back because of the bus capacitance.
- Additional check for existence of register at CONF2_ENABLE_PORT.
1995-09-18 21:48:39 +00:00
Paul Traina
0b4a1769be Our existing Cyrix cache-disable code was short-cutting the steps for
setting the control register.  Make the read and write operations two
completely separate steps.

While we're at it, pull in the whole set of Cyrix cache control options
from NetBSD-current,  since a few motherboards do the right thing with
the Cyrix chip.

There is no option to disable the internal cache completely (yet).

Reviewed by:	pst
Obtained from:	NetBSD
1995-09-16 21:31:55 +00:00
David Greenman
97e112628f Check for page being resident when doing I/O with /dev/kmem and return
EFAULT if it is not resident. This prevents the system from manufacturing
a zero-fill page for unused but allocated areas of the kernel's VM. This
should fix the "CMAP busy" panic that some people saw during system
startup.
1995-09-15 23:49:23 +00:00
Stefan Eßer
2d14418625 Another try to determine the PCI bus configuration mode (and whether
there is a PCI bus at all) ...

- Do not expect the chip sets to follow even very clearly expressed
  requirements of the PCI 2.0 spec.
- Do not read back the value just written to an I/O port without making
  sure that some other data have crossed the bus in between ...
1995-09-15 21:43:45 +00:00
David Greenman
0937c08c4e 1) Killed 'BSDVM_COMPAT'.
2) Killed i386pagesperpage as it is not used by anything.
3) Fixed benign miscalculations in pmap_bootstrap().
4) Moved allocation of ISA DMA memory to machdep.c.
5) Removed bogus vm_map_find()'s in pmap_init() - the entire range was
   already allocated kmem_init().
6) Added some comments.

virual_avail is still miscalculated NKPT*NBPG too large, but in order to
fix this properly requires moving the variable initialization into locore.s.
Some other day.
1995-09-15 08:31:19 +00:00
David Greenman
d69caef5ed Killed isa_allocphysmem() and isa_freephysmem(). They are completely used
functions. This file is disgusting; the isa DMA stuff is especially bad and
should be rewritten.
1995-09-15 03:10:06 +00:00
David Greenman
6ce5b54918 1) Don't double map the kernel page tables. The double mapping was never
used and went a long way toward confusing the code.
2) Fix proc0's initial stack to not be 48 bytes smaller than it needs to
   be.
3) Correct comment about 'first' arg to init386().
1995-09-15 02:13:18 +00:00
Stefan Eßer
d7ea35fc88 Improved verification of configuration space accesses working:
Scan for devices instead of assuming that device 0 is present on bus 0
of every PCI motherboard.
1995-09-14 20:27:31 +00:00
Stefan Eßer
cda6791190 Make the PCI host bridge probe code more robust when dealing with chip sets
that use configuration mode 1, but still violate the PCI 2.0 specs ...
(Required for the Compaq Proliant, for example.)
1995-09-13 17:03:47 +00:00
Bruce Evans
e7451974bb Make pcvt and syscons live in the same kernel. If both are enabled, then
the first one in the config has priority.  They can be switched using
userconfig().

i386/i386/conf.c:
Initialize the shared syscons/pcvt cdevsw entry to `nx'.

Add cdevsw registration functions.

Use devsw functions of the correct type if they exist.

i386/i386/cons.c:
Add renamed syscons entry points to constab.

i386/i386/cons.h:
Declare the renamed syscons entry points.

i386/i386/machdep.c:
Repeat console initialization after userconfig() in case the current
console has become wrong.  This depends on cn functions not wiring down
anything important.

sys/conf.h:
Declare new functions.

i386/isa/isa.[ch]:
Add a function to decide which display driver has priority.  Should be
done better.

i386/isa/syscons.c:
Rename pccn* -> sccn*.

Initialize CRTC start address in case the previous driver has moved it.

i386/isa/syscons.c, i386/isa/pcvt/*
Initialize the bogusly shared variable Crtat dynamically in case the
stored value was changed by the previous driver.

Initialize cdevsw table from a template.

Don't grab the console if another display driver has priority.

i386/isa/syscons.h, i386/isa/pcvt/pcvt_hdr.h:
Don't externally declare now-static cdevsw functions.

i386/isa/pcvt/pcvt_hdr.h:
Set the sensitive hardware flag so that pcvt doesn't always have lower
priority than syscons.  This also fixes the "stupid" detection of the
display after filling the display with text.

i386/isa/pcvt/pcvt_out.c:
Don't be confused the off-screen cursor offset 0xffff set by syscons.

kern/subr_xxx.c:
Add enough nxio/nodev/null devsw functions of the correct type for syscons
and pcvt.
1995-09-10 21:36:12 +00:00
Bruce Evans
f2cb5630d0 cons.c:
Split off cdevsw initialization in cninit() into a new function
cninit_finish() that isn't called until all hardware device drivers
have been attached.  The bdevsw entry of the driver for the physical
console needs to be hooked after the physical driver has been
attached in case the attachment modified the entry.

Rearrange cninit() to avoid changing cn_tab until the driver for the
physical console has been initialized, so that the previous driver
(if any) can be used for debugging.

Start removing half-baked lint support.  bdevsw functions usually have
unused args but /*ARGSUSED*/ was used for only about 5% of them.

cons.h:
Declare cn_init_finish().

autoconf.c:
Call cn_init_finish().

Start adding prototypes.  Functions with bogus linkage (extern where
static is probably should be static) are explicitly declared as extern
so that the can be found easily (extern in a non-header is usually
wrong).

All:
Continue cleaning up init stuff: init functions shall be static;
INITs should be at the start of files...
1995-09-10 18:57:26 +00:00
David Greenman
4590fd3a2a Fixed init functions argument type - caddr_t -> void *. Fixed a couple of
compiler warnings.
1995-09-09 18:10:37 +00:00
Bruce Evans
6003967057 Fix benign type mismatches in devsw functions. 82 out of 299 devsw
functions were wrong.
1995-09-08 11:09:15 +00:00
David Greenman
f6eca02d7a 1) Really print 'real' memory - use Maxmem, not physmem.
2) Output K bytes instead of pages as this means something to more people.
3) Moved printf of avail memory to after vm_bounce_init() call so that
   bounce buffers are included in the figure.
4) Killed initcpu(); it's an unused vestige from the VAX.
1995-09-08 03:19:47 +00:00
Julian Elischer
819fb11f5e Submitted by: Luigi Rizzo (luigi@iet.unipi.it)
Obtained from: Luigi Rizzo and Gunther Schadow
Kernel support for the asc scanner driver
1995-09-08 03:14:00 +00:00
David Greenman
0e1815bb54 Minor cleanup and (very) small micro optimization to Xsyscall (and the
linux one)..
1995-09-07 21:36:17 +00:00
Bill Paul
ee1d861fbe Put back the "real memory =" printf() that vanished when the code to
handle holes in memory was added.
1995-09-06 16:13:31 +00:00
John Dyson
a29b63cb73 Machine dependent routines to support pre-zeroed free pages. This
significantly improves demand zero performance.
1995-09-03 20:39:22 +00:00
Julian Elischer
8af5d536ff devfs changes..
changes to allow devices that don't probe (e.g. /dev/mem)
to create devfs entries
this required giving 'configure' its own SYSINIT entry
so we could duck in just before it with a DEVFS init
and some device inits..
my devfs now looks like:
./misc
./misc/speaker
./misc/mem
./misc/kmem
./misc/null
./misc/zero
./misc/io
./misc/console
./misc/pcaudio
./misc/pcaudioctl
./disks
./disks/rfloppy
./disks/rfloppy/fd0.1440
./disks/rfloppy/fd1.1200
./disks/floppy
./disks/floppy/fd0.1440
./disks/floppy/fd1.1200
also some sligt cleanups.. DEVFS needs a lot of work
but I'm getting back to it..
1995-09-03 05:43:50 +00:00
Bruce Evans
8d7459c596 Declare vfs_mountroot() in the right place. 1995-08-30 01:34:28 +00:00
Bruce Evans
154042d309 Remove relocation of Crtat. Drivers already relocate it (somewhat
bogusly).  We used to undo the driver relocation here before doing
a somewhat less bogus relocation.  The result was a null relocation
here.
1995-08-29 23:45:20 +00:00
Julian Elischer
2b14f991e6 Reviewed by: julian with quick glances by bruce and others
Submitted by:	terry (terry lambert)
This is  a composite of 3 patch sets submitted by terry.
they are:
New low-level init code that supports loadbal modules better
some cleanups in the namei code to help terry in 16-bit character support
some changes to the mount-root code to make it a little more
modular..

NOTE: mounting root off cdrom or NFS MIGHT be broken as I haven't been able
to test those cases..

certainly mounting root of disk still works just fine..
mfs should work but is untested. (tomorrows task)

The low level init stuff includes a total rewrite of init_main.c
to make it possible for new modules to have an init phase by simply
adding an entry to a TEXT_SET (or is it DATA_SET) list. thus a new module can
be added to the kernel without editing any other files other than the
'files' file.
1995-08-28 09:19:25 +00:00
Bruce Evans
fadc51bdc6 Remove "memory" clobber statement from enable_intr(). Enabling interrupts
doesn't invalidate loaded variables.

Fix formatting of recent changes.
1995-08-26 20:45:59 +00:00
Bruce Evans
b2c4393679 Remove extra args from the calls to getit(). The bug was benign with the
default function call convention.
1995-08-25 19:24:56 +00:00
David Greenman
4219d2b2ac A couple of micro optimizations to improve NULL syscall performance by
about 2%.
1995-08-21 18:06:48 +00:00
David Greenman
b131795bda Fixed a few bugs and annoyances with boot():
1) deal with cold flag better
2) check for key input more often
3) get rid of unused variables
4) minor formatting improvements
1995-08-20 04:41:02 +00:00
Jordan K. Hubbard
6788ce49a0 Bring in Serge Vakulenko's IDE CDROM (ATAPI) driver. A number of
people have now indicated to me that it's working more than well
enough to bring into -current.
Submitted by:	Serge Vakulenko <vak@cronyx.ru>
1995-08-18 11:26:35 +00:00
David Greenman
d0d1c65888 Killed some unused stuff inherited from Bill Jolitz. Note that since
this changes the size of the pcb struct, gdb will need to be rebuilt
or debugging won't work correctly.

Reviewed by:	Bruce Evans
1995-08-17 11:30:03 +00:00
Bruce Evans
a722b904d7 Fake a call frame for traps so that `gdb -k' can report where fatal
traps occurred.  This also helps ddb backtrace through trap frames.
Backtracing through syscall and interrupt frames still doesn't work
but it is relatively unimportant and more expensive to fix.
1995-08-15 19:23:33 +00:00
John Dyson
8966b85c8f Make the spl oriented inline functions less likely to allow
potentially volatile memory to be kept in registers during
the "call" (inline expansion.)  Do the same for pmap_update.
1995-08-08 04:50:52 +00:00
David Greenman
a705fd3e48 Fix a bug in my disabled version of trap_pfault()...curpcb may be NULL even
when curproc isn't. This condition occurs at system startup and perhaps
at other times.
1995-07-30 17:49:24 +00:00
Bruce Evans
28f8db1403 Eliminate sloppy common-style declarations. There should be none left for
the LINT configuation.
1995-07-29 11:44:31 +00:00
David Greenman
6b837e5dda Fixed bug I introduced with the memory-size code rewrite that broke
floppy DMA buffers...use avail_start not "first". Removed duplicate
(and wrong) declaration of phys_avail[].

Submitted by:	Bruce Evans, but fixed differently by me.
1995-07-28 11:21:06 +00:00
Bruce Evans
8089a0432e Fix bogus constraint "i" that only worked with -O. The cases where it
didn't work are somewhat bogusly optimized away before the constraint
is checked.  We still expect constants passed to inline functions to
remain constant, but if the compiler ever decides that they aren't
constant then it will just generate slightly slower code instead of
an error.
1995-07-25 21:28:47 +00:00
David Greenman
e9857eee2b Rewrote memory sizing code to generally deal with holes in extended memory.
This code change should allow certain Compaq machines with a 128K hole
at 16MB to work.
1995-07-19 06:37:12 +00:00
Peter Wemm
1174c7d121 This fixes a compiler warning, and a cosmetic problem with the linux
emul code when compiling with "options KTRACE".
ktrsyscall() was expecting an array of integers, this was passing the
address of a structure containing an array of integers..
The cosmetic problem was that it was calling the "enter syscall"
trace hook twice - this looks like a cut/paste error/typo.
1995-07-16 14:10:55 +00:00
Poul-Henning Kamp
8a7580c3fe Reviewed by: phk
Submitted by:	Andrew McRae <andrew@mega.com.au>

Some initial commits from the pcmcia stuff, to make life easier for the
testers.

We will use the name "pccard" since that is really the buzzword at present.
1995-07-16 10:45:06 +00:00
Poul-Henning Kamp
7a2dada545 Make the bootinfo structure visible from sysctl.
This can be used in libdisk to guess a better bios-geometry.
1995-07-16 10:33:38 +00:00
Joerg Wunsch
446cee6e6d Include ``options POWERFAIL_NMI'' for owners of older (non-apm)
notebooks where a powerfail condition (external power drop; battery
state low) is signalled by an NMI.  Makes it beep instead of panicing.

Reviewed by:	davidg
1995-07-16 10:31:26 +00:00
David Greenman
9e951f36f1 Truncate the fault address to a page boundry when calling vm_fault(). The
last change to fix the fault-twice bug with page tables wasn't quite
complete.
1995-07-16 05:39:22 +00:00
David Greenman
4a67eb7121 Fixed bug that caused page tables to be faulted twice instead of once.
Submitted by:	John Dyson
1995-07-14 09:25:51 +00:00
David Greenman
24a1cce34f NOTE: libkvm, w, ps, 'top', and any other utility which depends on struct
proc or any VM system structure will have to be rebuilt!!!

Much needed overhaul of the VM system. Included in this first round of
changes:

1) Improved pager interfaces: init, alloc, dealloc, getpages, putpages,
   haspage, and sync operations are supported. The haspage interface now
   provides information about clusterability. All pager routines now take
   struct vm_object's instead of "pagers".

2) Improved data structures. In the previous paradigm, there is constant
   confusion caused by pagers being both a data structure ("allocate a
   pager") and a collection of routines. The idea of a pager structure has
   escentially been eliminated. Objects now have types, and this type is
   used to index the appropriate pager. In most cases, items in the pager
   structure were duplicated in the object data structure and thus were
   unnecessary. In the few cases that remained, a un_pager structure union
   was created in the object to contain these items.

3) Because of the cleanup of #1 & #2, a lot of unnecessary layering can now
   be removed. For instance, vm_object_enter(), vm_object_lookup(),
   vm_object_remove(), and the associated object hash list were some of the
   things that were removed.

4) simple_lock's removed. Discussion with several people reveals that the
   SMP locking primitives used in the VM system aren't likely the mechanism
   that we'll be adopting. Even if it were, the locking that was in the code
   was very inadequate and would have to be mostly re-done anyway. The
   locking in a uni-processor kernel was a no-op but went a long way toward
   making the code difficult to read and debug.

5) Places that attempted to kludge-up the fact that we don't have kernel
   thread support have been fixed to reflect the reality that we are really
   dealing with processes, not threads. The VM system didn't have complete
   thread support, so the comments and mis-named routines were just wrong.
   We now use tsleep and wakeup directly in the lock routines, for instance.

6) Where appropriate, the pagers have been improved, especially in the
   pager_alloc routines. Most of the pager_allocs have been rewritten and
   are now faster and easier to maintain.

7) The pagedaemon pageout clustering algorithm has been rewritten and
   now tries harder to output an even number of pages before and after
   the requested page. This is sort of the reverse of the ideal pagein
   algorithm and should provide better overall performance.

8) Unnecessary (incorrect) casts to caddr_t in calls to tsleep & wakeup
   have been removed. Some other unnecessary casts have also been removed.

9) Some almost useless debugging code removed.

10) Terminology of shadow objects vs. backing objects straightened out.
    The fact that the vm_object data structure escentially had this
    backwards really confused things. The use of "shadow" and "backing
    object" throughout the code is now internally consistent and correct
    in the Mach terminology.

11) Several minor bug fixes, including one in the vm daemon that caused
    0 RSS objects to not get purged as intended.

12) A "default pager" has now been created which cleans up the transition
    of objects to the "swap" type. The previous checks throughout the code
    for swp->pg_data != NULL were really ugly. This change also provides
    the rudiments for future backing of "anonymous" memory by something
    other than the swap pager (via the vnode pager, for example), and it
    allows the decision about which of these pagers to use to be made
    dynamically (although will need some additional decision code to do
    this, of course).

13) (dyson) MAP_COPY has been deprecated and the corresponding "copy
    object" code has been removed. MAP_COPY was undocumented and non-
    standard. It was furthermore broken in several ways which caused its
    behavior to degrade to MAP_PRIVATE. Binaries that use MAP_COPY will
    continue to work correctly, but via the slightly different semantics
    of MAP_PRIVATE.

14) (dyson) Sharing maps have been removed. It's marginal usefulness in a
    threads design can be worked around in other ways. Both #12 and #13
    were done to simplify the code and improve readability and maintain-
    ability. (As were most all of these changes)

TODO:

1) Rewrite most of the vnode pager to use VOP_GETPAGES/PUTPAGES. Doing
   this will reduce the vnode pager to a mere fraction of its current size.

2) Rewrite vm_fault and the swap/vnode pagers to use the clustering
   information provided by the new haspage pager interface. This will
   substantially reduce the overhead by eliminating a large number of
   VOP_BMAP() calls. The VOP_BMAP() filesystem interface should be
   improved to provide both a "behind" and "ahead" indication of
   contiguousness.

3) Implement the extended features of pager_haspage in swap_pager_haspage().
   It currently just says 0 pages ahead/behind.

4) Re-implement the swap device (swstrategy) in a more elegant way, perhaps
   via a much more general mechanism that could also be used for disk
   striping of regular filesystems.

5) Do something to improve the architecture of vm_object_collapse(). The
   fact that it makes calls into the swap pager and knows too much about
   how the swap pager operates really bothers me. It also doesn't allow
   for collapsing of non-swap pager objects ("unnamed" objects backed by
   other pagers).
1995-07-13 08:48:48 +00:00
Stefan Eßer
d2a2d5ec41 The PCI config mechanism 1 test failed for the Intel Aries.
Make it less strict ...

Submitted by:	NIIMI Satoshi <sa2c@and.or.jp>
1995-06-30 16:11:42 +00:00
Stefan Eßer
0847c06d2e PCI configuration mechanism now determined by a method, that doesn't
fail on new hardware (Compaq Prolinea and Compaq Prosignea), and that
doesn't erroneously identify old mech. 2 chip sets as using mech. 1.
(See section 3.6.4.1.1 of the PCI bus specs rev. 2.0)
1995-06-28 15:54:57 +00:00
David Greenman
338cd8f6be Killed redundant vnode_pager_umount() call. This is already done at
FS unmount time.
1995-06-28 04:46:11 +00:00
David Greenman
53b5ed936e Make path to kernel absolute if it is passed in relative. This fixes
a related bug in some of the new 'foo'boot bootstrap code that has been
added over the past months. This change makes it no longer necessary
for the bootstrap to fix up the path (i.e. it can be removed).
1995-06-28 04:42:25 +00:00
Bruce Evans
943c18018b Fix standards conformance bugs in <signal.h>:
include/signal.h:
There was massive namespace pollution from including <sys/types.h>.
POSIX functions were declared even when _ANSI_SOURCE is defined.

sys.sys/signal.h:
NSIG was declared even if _ANSI_SOURCE or _POSIX_SOURCE is defined.
sig_atomic_t wasn't declared if _POSIX_SOURCE is defined.
Declare a typedef for signal handling functions and use it to
unobfuscate declarations and to avoid half-baked function types
that cause unwanted compiler warnings at certain warning levels.
Fix confusing comment about SA_RESTART.

sys/i386/include/signal.h:
This has to be included to get the declaration of sig_atomic_t even
when _ANSI_SOURCE is defined, so be more careful about polluting
the ANSI namespace.

Uniformize idempotency ifdefs.
1995-06-28 02:14:13 +00:00
Bruce Evans
4ebf8117df Partially fix `sysctl machdep.console_device'. The fix will be complete
when syscons stops mapping the console to minor MAXCONS.  There is
usually no corresponding device in /dev, and the correct device has
minor 0.

cons.c:
Initialize cn_tty properly, so that CPU_CONSDEV can work.
Comment about too many variants of the console tty pointer.

machdep.c:
Return device NODEV and not error EFAULT when there is no console device.
1995-06-26 07:39:52 +00:00
Bruce Evans
6f5014b462 Convert to ANSI C: change #endif THING to #endif /* THING */.
Fix one such THING in code to match comment.
Sort IO_GSC* into numeric order and update comments about the gaps.
Sort common SCSI addresses into alphabetical order.
Remove bogus comments about com ports having i/o size 4.
Uniformize whitespace.
Uniformize case in hex digits.

This file is very incomplete.  In particular, it doesn't mention any
network cards.  This doesn't matter much for the base addresses, but
it means that the comments about which addresses are free are mostly
bogus.  The i/o sizes are unreliable because of split address ranges
for many devices (VGA, wd).  The i/o sizes are incomplete.  In
particular, there are no sizes for SCSI controllers.  The bt driver
still returns a truth value instead of a size.
1995-06-14 07:38:31 +00:00
Rodney W. Grimes
d3628763db Merge RELENG_2_0_5 into HEAD 1995-06-11 19:33:05 +00:00
Rodney W. Grimes
9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
David Greenman
ac8d676972 Fix setdumpdev():
- the major number wasn't checked, so accesses beyond the end of bdevsw[]
  were possible.  Bogus major numbers are easy to get because `sysctl -w'
  doesn't handle dev_t's reasonably - it doesn't convert names to dev_t's
  and it converts the number 1025 to the dev_t 0x35323031.
- Driver d_psize() functions return -1 to indicate error ENXIO or ENODEV
  (the interface is too braindamaged to say which).  -1 was interpreted
  as a size and resulted in the bogus error ENOSPC.
- it was possible to set the dumpdev for devices without a d_psize()
  function.  This is equivalent to setting the dumpdev to NODEV except
  it confuses sysctl.
- change a 512 to DEV_BSIZE.  There is an official macro dtoc() for
  converting "pages" to disk blocks but it is never used in /usr/src/sys.
  There is much confusion between PAGE_SIZE sized pages and NBPG sized
  pages.  Maxmem consists of both.

Not fixed:
- there is nothing to invalidate the dumpdev if the media goes away.
  This reduces the benefits of the early calculation of dumplo.  Bounds
  checking in the dump routines is relied on to reduce the risk of
  damage and little would be lost by relying on the dump routines to
  calculate dumplo.
- no attempt is made to stay away from the start of the device to
  avoid clobbering labels.

Fix wrong && anachronistic comment about the type of bootdev.

Reviewed by:	davidg
Submitted by:	Bruce Evans
1995-05-29 04:08:13 +00:00
David Greenman
b64b660cd3 Made "NMBCLUSTERS" calculation dynamic and fixed bogus use of "NMBCLUSTERS"
in machdep.c (it should use the global nmbclusters). Moved the calculation
of nmbclusters into conf/param.c (same place where nmbclusters has always
been assigned), and made the calculation include an extra amount based
on "maxusers". NMBCLUSTERS can still be overrided in the kernel config
file as always, but this change will make that generally unnecessary. This
fixes the "bug" reports from people who have misconfigured kernels seeing
the network hang when the mbuf cluster pool runs out.

Reviewed by:	John Dyson
1995-05-25 07:41:28 +00:00
David Greenman
5eb46edfb0 Added "BROKEN_KEYBOARD_RESET" option to disable using the keyboard reset
in cpu_reset(). Some MBs don't deal with this properly.

Submitted by:	Rod Grimes
1995-05-18 09:17:07 +00:00
David Greenman
30fd0561cd Added apersand constraint to make sure that the source and destination
registers aren't combined.

Reviewed by:	Bruce Evans and David Greenman
Submitted by:	John Dyson
1995-05-14 22:25:11 +00:00
David Greenman
a401ebbe32 Changed swap partition handling/allocation so that it doesn't
require specific partitions be mentioned in the kernel config
file ("swap on foo" is now obsolete).

From Poul-Henning:

The visible effect is this:

As default, unless
        options "NSWAPDEV=23"
is in your config, you will have four swap-devices.
You can swapon(2) any block device you feel like, it doesn't have
to be in the kernel config.

There is a performance/resource win available by getting the NSWAPDEV right
(but only if you have just one swap-device ??), but using that as default
would be too restrictive.

The invisible effect is that:

Swap-handling disappears from the $arch part of the kernel.
It gets a lot simpler (-145 lines) and cleaner.

Reviewed by:	John Dyson, David Greenman
Submitted by:	Poul-Henning Kamp, with minor changes by me.
1995-05-14 03:00:10 +00:00
Jordan K. Hubbard
c25cfd0b0d "1 easy fix in 10 excrutiating steps"
A phone call from Manfred quickly pointed up the fact that I got the conflict
check backwards.  NOW we implement the conflict checking correctly!  Wheesh!
1995-05-13 00:09:38 +00:00
Garrett Wollman
5bb4f73817 The death of `options NODUMP'. Now the dump area can be dynamically
configured (and unconfigured) on the fly.  A sysctl(3) MIB variable is
provided to inspect and modify the dump device setting.
1995-05-12 19:17:31 +00:00
Rodney W. Grimes
b2b795f07c Fix -Wformat warnings from LINT kernel. 1995-05-11 19:26:53 +00:00
Bruce Evans
d81fba0cda Add variable `idelayed' and macros setdelayed() and schedsofttty()
to access it.  setdelayed() actually ORs the bits in `idelayed' into
`ipending' and clears `idelayed'.

Call setdelayed() every (normal) clock tick to convert delayed
interrupts into pending ones.

Drivers can set bits in `idelayed' at any time to schedule an interrupt
at the next clock tick.  This is more efficient than calling timeout().
Currently only software interrupts can be scheduled.
1995-05-11 07:44:40 +00:00
Bruce Evans
0ee893eb32 Add loadandclear(). It atomically loads a value from memory, clears the
value in memory and returns the original value.
1995-05-11 07:24:35 +00:00
Jordan K. Hubbard
da8d0268df Pass me the pointed chapeau - this typo somehow got through my testing. 1995-05-11 05:20:43 +00:00
Bill Paul
2c739e6439 If you config a kernel with 'config kernel swap generic' and try to
boot diskless with it, you get a panic because setconf() is only
called for mountroot == ffs_mountroot. It really needs to be called
no matter what manner of rootfs we have. I can't really say if
swapgeneric will work with a CD-ROM though. (I get the feeling I'm
the only one who uses swapgeneric these days anyway.)
1995-05-11 02:50:11 +00:00
Jordan K. Hubbard
9cc347481f Remove all vestiges of the ALLOW_CONFLICT_FOO evil and replace it with
something slightly less evil - a per device conflict flag.
1995-05-11 02:15:55 +00:00
Garrett Wollman
c9cd353a18 Delete two debugging printfs that mistakenly crept in. 1995-05-11 00:16:44 +00:00
Garrett Wollman
748e0b0acc Make networking domains drop-ins, through the magic of GNU ld. (Some day,
there may even be LKMs.)  Also, change the internal name of `unixdomain'
to `localdomain' since AF_LOCAL is now the preferred name of this family.
Declare netisr correctly and in the right place.
1995-05-11 00:13:26 +00:00
David Greenman
85eaa94715 Correct the definition for the (unused) cpu_setstack(). 1995-05-04 07:50:06 +00:00
David Greenman
6486b7f194 Added a memcpy() routine. 1995-05-02 05:20:26 +00:00
Poul-Henning Kamp
807afe4fa5 A missing 'and', probably my fault.
Submitted by:	Ed Hudson <elh@p5.spnet.com>
1995-05-02 04:40:06 +00:00
John Dyson
641a27e68b Fixed a problem that can cause left-over pv_entries and as
as side-effect, removed some legacy code that was necessary
when we called vm_fault inside of vm_fault_quick instead of using
the kernel/user space byte move routines.
1995-05-01 23:32:30 +00:00
Rodney W. Grimes
2320728f46 Add outb to keyboard controller to do a cpu_reset, this fixes 2 known
cases of motherboards that failed to reboot.
1995-04-26 07:38:35 +00:00
Poul-Henning Kamp
58e81aafbb Add support for MFS root filesystem. 1995-04-25 03:41:12 +00:00
Poul-Henning Kamp
d3f4d460f8 Added "bio" to matcd. 1995-04-24 05:33:59 +00:00
Julian Elischer
6944abf1d7 hmm spotted a difference resulting from a merge I didn't examine close enough 1995-04-23 09:17:24 +00:00
Julian Elischer
73bac981dd include hooks for EISA configuration (possibly wrong :) 1995-04-23 09:13:08 +00:00
Poul-Henning Kamp
94624c5572 Forgot this commit the other day. The receiving end of the "boot -C" option. 1995-04-23 04:14:41 +00:00
Bill Paul
31e0d8b925 Tiny printf formatting change: if we have no cpu_vendor or cpu_id info,
don't generate a newline. (Yeah, I'm picking nits, but that empty line
I get on my 386 just looks dumb, okay? :)
1995-04-22 03:58:46 +00:00