Commit Graph

486 Commits

Author SHA1 Message Date
Peter Wemm
6182fdbda8 Bring the 'new-bus' to the i386. This extensively changes the way the
i386 platform boots, it is no longer ISA-centric, and is fully dynamic.
Most old drivers compile and run without modification via 'compatability
shims' to enable a smoother transition.  eisa, isapnp and pccard* are
not yet using the new resource manager.  Once fully converted, all drivers
will be loadable, including PCI and ISA.

(Some other changes appear to have snuck in, including a port of Soren's
 ATA driver to the Alpha.  Soren, back this out if you need to.)

This is a checkpoint of work-in-progress, but is quite functional.

The bulk of the work was done over the last few years by Doug Rabson and
Garrett Wollman.

Approved by:	core
1999-04-16 21:22:55 +00:00
Andrew Gallatin
22fae70741 zero out switchtime.tv_sec. This fixes a fairly serious problem where
processes were being charged for time when the system was idle.
1999-04-16 13:57:38 +00:00
Hidetoshi Shimokawa
4940ba38d3 - Add another adhoc frame_size detection for stack trace.
egcs manupilates stack pointer with 'subq/addq' rather than 'lha'.
- Surpress warnings
1999-04-16 12:04:39 +00:00
Hidetoshi Shimokawa
76fcfc1aba Initialize alpha_unaligned_* as I intended.
I misunderstood SYSCTL_INT in previous revision.
1999-04-13 15:42:34 +00:00
Hidetoshi Shimokawa
05f1861b84 Control unaligned access handling via sysctl. 1999-04-11 12:48:15 +00:00
Andrew Gallatin
61ddd9cc3c A quick fix to get kernels building again under EGCS 1999-04-08 20:32:51 +00:00
Mike Smith
2beb6ea1c9 Remove unused/unimplemented pmap_setdevram() 1999-04-07 03:34:32 +00:00
Julian Elischer
8d17e69460 Catch a case spotted by Tor where files mmapped could leave garbage in the
unallocated parts of the last page when the file ended on a frag
but not a page boundary.
Delimitted by tags PRE_MATT_MMAP_EOF and POST_MATT_MMAP_EOF,
in files alpha/alpha/pmap.c i386/i386/pmap.c nfs/nfs_bio.c vm/pmap.h
    vm/vm_page.c vm/vm_page.h vm/vnode_pager.c miscfs/specfs/spec_vnops.c
    ufs/ufs/ufs_readwrite.c kern/vfs_bio.c

Submitted by: Matt Dillon <dillon@freebsd.org>
Reviewed by: Alan Cox <alc@freebsd.org>
1999-04-05 19:38:30 +00:00
John Polstra
4fe88fe637 Restore support for executing BSD/OS binaries on the i386 by passing
the address of the ps_strings structure to the process via %ebx.
For other kinds of binaries, %ebx is still zeroed as before.

Submitted by:	Thomas Stephens <tas@stephens.org>
Reviewed by:	jdp
1999-04-03 22:20:03 +00:00
Doug Rabson
e8d4dc28dc Fix a few warnings. 1999-03-28 17:33:38 +00:00
Doug Rabson
1a94f2a6e8 Don't lower the ipl for splsoftcam, splsoftvm and splsoftnet. 1999-03-19 10:56:28 +00:00
Andrew Gallatin
19fa470d92 Enable crashdumps on alphas.
Reviewed by: Doug Rabson <dfr@nlsystems.com>
1999-03-12 14:44:46 +00:00
Garrett Wollman
acc8326d0c Expose a slightly-lower-level interface to timeouts which allows callers
to manage their own memory.  Tested on my machine (make buildworld).
I've made analogous changes on the alpha, but don't have a machine
to test.

Not-objected-to by:	dg, gibbs
1999-03-06 04:46:20 +00:00
Bruce Evans
e7ba67f274 Removed all traces of `p_switchtime'. The relevant timestamp is per-cpu,
not per-process.  Keep it in `switchtime' consistently.

It is now clear that the timestamp is always valid in fork_trampoline()
except when the child is running on a previously idle cpu, which
can only happen if there are multiple cpus, so don't check or set
the timestamp in fork_trampoline except in the (i386) SMP case.
Just remove the alpha code for setting it unconditionally, since
there is no SMP case for alpha and the code had rotted.

Parts reviewed by:	dfr, phk
1999-02-28 10:53:29 +00:00
Doug Rabson
b49f17156f * Add support for hw.physmem and hw.usermem sysctls (this allows sysinstall
to calculate a reasonable size for the swap partition).
* Fix a typo in remrq() where a process with idle priority would not be
  correctly removed from the relavent queue.  Note that realtime and idle
  priorities are still not supported since the assembler code in
  cpu_switch() does not check the realtime and idle queues.
1999-02-27 18:41:40 +00:00
Bruce Evans
025a06fd58 Added a per-cpu variable `switchticks' for use in scheduling. 1999-02-22 15:13:34 +00:00
Luoqi Chen
b1028ad122 Hide access to vmspace:vm_pmap with inline function vmspace_pmap(). This
is the preparation step for moving pmap storage out of vmspace proper.

Reviewed by:	Alan Cox	<alc@cs.rice.edu>
		Matthew Dillion	<dillon@apollo.backplane.com>
1999-02-19 14:25:37 +00:00
Matt Jacob
8f5381965d add now required queue.h include 1999-02-16 20:34:56 +00:00
Matthew Dillon
dd2f9956e2 Adjust idle zero-page fill hysteresis based on tests. Use 2/3 and 4/5
zero-fill levels.

    Adjust comment for ozfod in vmmeter.h - this counter represents
    non-optimal ( on the fly ) zero fills, not prefills.
1999-02-08 02:42:13 +00:00
Matthew Dillon
d718be7be7 Add hysteresis to alpha version of vm_page_zero_idle(). 1999-02-08 00:47:32 +00:00
Matthew Dillon
faa273d5c2 Rip out PQ_ZERO queue. PQ_ZERO functionality is now combined in with
PQ_FREE.  There is little operational difference other then the kernel
    being a few kilobytes smaller and the code being more readable.

    * vm_page_select_free() has been *greatly* simplified.
    * The PQ_ZERO page queue and supporting structures have been removed
    * vm_page_zero_idle() revamped (see below)

    PG_ZERO setting and clearing has been migrated from vm_page_alloc()
    to vm_page_free[_zero]() and will eventually be guarenteed to remain
    tracked throughout a page's life ( if it isn't already ).

    When a page is freed, PG_ZERO pages are appended to the appropriate
    tailq in the PQ_FREE queue while non-PG_ZERO pages are prepended.
    When locating a new free page, PG_ZERO selection operates from within
    vm_page_list_find() ( get page from end of queue instead of beginning
    of queue ) and then only occurs in the nominal critical path case.  If
    the nominal case misses, both normal and zero-page allocation devolves
    into the same _vm_page_list_find() select code without any specific
    zero-page optimizations.

    Additionally, vm_page_zero_idle() has been revamped.  Hysteresis has been
    added and zero-page tracking adjusted to conform with the other changes.
    Currently hysteresis is set at 1/3 (lo) and 1/2 (hi) the number of free
    pages.  We may wish to increase both parameters as time permits.  The
    hysteresis is designed to avoid silly zeroing in borderline allocation/free
    situations.
1999-02-08 00:37:36 +00:00
Poul-Henning Kamp
4e2d2aa1cd Use suser() to check for super user rather than examining cr_uid directly.
Use TTYDEF_SPEED rather than 9600 a couple of places.

Reviewed by:	bde, with a few grumbles.
1999-01-30 12:17:38 +00:00
Julian Elischer
2907af2a96 Mostly remove the VM_STACK OPTION.
This changes the definitions of a few items so that structures are the
same whether or not the option itself is enabled. This allows
people to enable and disable the option without recompilng the world.

As the author says:

|I ran into a problem pulling out the VM_STACK option.  I was aware of this
|when I first did the work, but then forgot about it.  The VM_STACK stuff
|has some code changes in the i386 branch.  There need to be corresponding
|changes in the alpha branch before it can come out completely.

what is done:
|
|1) Pull the VM_STACK option out of the header files it appears in.  This
|really shouldn't affect anything that executes with or without the rest
|of the VM_STACK patches.  The vm_map_entry will then always have one
|extra element (avail_ssize).  It just won't be used if the VM_STACK
|option is not turned on.
|
|I've also pulled the option out of vm_map.c.  This shouldn't harm anything,
|since the routines that are enabled as a result are not called unless
|the VM_STACK option is enabled elsewhere.
|
|2) Add what appears to be appropriate code the the alpha branch, still
|protected behind the VM_STACK switch.  I don't have an alpha machine,
|so we would need to get some testers with alpha machines to try it out.
|
|Once there is some testing, we can consider making the change permanent
|for both i386 and alpha.
|
[..]
|
|Once the alpha code is adequately tested, we can pull VM_STACK out
|everywhere.
|

Submitted by:	"Richard Seaman, Jr." <dick@tar.com>
1999-01-26 02:49:52 +00:00
Matthew Dillon
7dbf82dc13 Change all manual settings of vm_page_t->dirty = VM_PAGE_BITS_ALL
to use the vm_page_dirty() inline.

    The inline can thus do sanity checks ( or not ) over all cases.
1999-01-24 06:04:52 +00:00
Matthew Dillon
1c7c3c6a86 This is a rather large commit that encompasses the new swapper,
changes to the VM system to support the new swapper, VM bug
    fixes, several VM optimizations, and some additional revamping of the
    VM code.  The specific bug fixes will be documented with additional
    forced commits.  This commit is somewhat rough in regards to code
    cleanup issues.

Reviewed by:	"John S. Dyson" <root@dyson.iquest.net>, "David Greenman" <dg@root.com>
1999-01-21 08:29:12 +00:00
Andrew Gallatin
b8b442b5ab Fix some mildly annoying compiler warnings about unused variables
and incorrect types in printf() format strings.
1999-01-20 20:51:39 +00:00
Peter Wemm
f75ccec2a1 *blush*. As a quick fix, move configure()'s SYSINIT back a little to allow
CAM's xpt_init() to get in first.  I hope this will fix the build again,
sorry guys. :-(
XXX configure_start() and configure_end() seem to be a bit excessive.. both
here and in the i386 code.
1999-01-20 19:22:24 +00:00
Andrew Gallatin
5a51b2f3b6 Added support for the DEC EB64PLUS systype. (part II)
The DEC EB64PLUS support code.  Based on NetBSD's dec_eb64plus.c,v 1.15

Submitted by: Wilko Bulte <wilko@yedi.iaf.nl>
1999-01-18 20:18:49 +00:00
Mike Smith
a07089226d Oops, add the NMBCLUSTERS initialiser for the Alpha as well. 1999-01-15 18:00:19 +00:00
Doug Rabson
88835c656b A couple more osf/1 compat tweaks.
Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>
1999-01-12 10:54:14 +00:00
Doug Rabson
784521ae53 Add hooks for the Iprobe kernel profiler.
Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>
1999-01-10 12:35:39 +00:00
Doug Rabson
d1fd776a79 Fix fubyte to actually return the correct value (it was always returning
zero).  This caused device reads to corrupt the first byte of the page
being read into (the cause of frozen keyboards in sysinstall).
1999-01-05 18:39:02 +00:00
Doug Rabson
9c0fed3dcf Various changes to support OSF1 emulation:
* Move the user stack from VM_MAXUSER_ADDRESS to a place below the 32bit
  boundary (needed to support 32bit OSF programs).  This should also save
  one pagetable per process.
* Add cvtqlsv to the set of instructions handled by the floating point
  software completion code.
* Disable all floating point exceptions by default.
* A minor change to execve to allow the OSF1 image activator to support
  dynamic loading.
1998-12-30 10:38:59 +00:00
Matt Jacob
803ee29602 Not quite right for the goal of using swi_register, but on the way there. 1998-12-24 06:05:48 +00:00
Doug Rabson
b7f762137a Implement fpsetmask() and other fp*() functions. Programs should use
#include <ieeefp.h>

to access these functions instead of the i386 specific

	#include <machine/floatingpoint.h>

Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
1998-12-23 11:50:52 +00:00
Doug Rabson
20982dfb10 Add LDGP(pv) to suword, subyte, fuword, fubyte so that they can be called
from kernel modules.
1998-12-20 13:21:55 +00:00
Bruce Evans
4c56fcdead Removed the cast to a pointer in the definition of PS_STRINGS and
adjusted related casts to match (only in the kernel in this commit).
The pointer was only wanted in one place in kern_exec.c.  Applications
should use the kern.ps_strings sysctl instead of PS_STRINGS, so they
shouldn't notice this change.
1998-12-16 16:28:58 +00:00
Bruce Evans
4f2129fa86 Removed bogus casts of USRSTACK and/or the other operand in binary
expressions involving USRSTACK.
1998-12-16 15:21:51 +00:00
Eivind Eklund
d51523c6c9 Get rid of CTLTYPE_OPAQUE in a SYSCTL_OPAQUE - it is added my the
SYSCTL_OPAQUE macro.
1998-12-09 02:26:45 +00:00
Matt Jacob
0a194dfe3f fix warning messages from previous delta 1998-12-06 00:10:52 +00:00
Matt Jacob
80592d5b75 Fix it so that it works on an eb164 when you have a serial console on com1.
Obtained from:gallatin@freebsd.org
1998-12-05 22:36:31 +00:00
Archie Cobbs
2127f26023 Examine all occurrences of sprintf(), strcat(), and str[n]cpy()
for possible buffer overflow problems. Replaced most sprintf()'s
with snprintf(); for others cases, added terminating NUL bytes where
appropriate, replaced constants like "16" with sizeof(), etc.

These changes include several bug fixes, but most changes are for
maintainability's sake. Any instance where it wasn't "immediately
obvious" that a buffer overflow could not occur was made safer.

Reviewed by:	Bruce Evans <bde@zeta.org.au>
Reviewed by:	Matthew Dillon <dillon@apollo.backplane.com>
Reviewed by:	Mike Spengler <mks@networkcs.com>
1998-12-04 22:54:57 +00:00
Doug Rabson
5b38fe900d Implement 'software completion' for floating point arithmetic. On the
alpha, operations involving non-finite numbers or denormalised numbers
or operations which should generate such numbers will cause an arithmetic
exception.  For programs which follow some strict code generation rules,
the kernel trap handler can then 'complete' the operation by emulating
the faulting instruction.

To use software completion, a program must be compiled with the arguments
'-mtrap-precision=i' and '-mfp-trap-mode=su' or '-mfp-trap-mode=sui'.
Programs compiled in this way can use non-finite and denormalised numbers
at the expense of slightly less efficient code generation of floating
point instructions.  Programs not compiled with these options will receive
a SIGFPE signal when non-finite or denormalised numbers are used or
generated.

Reviewed by: John Polstra <jdp@polstra.com>
1998-12-04 10:52:48 +00:00
Doug Rabson
28ae06aad0 Restore the user HAE all the time, not just when returning to usermode.
This closes a very small window where the use HAE might not be restored
at all.  This only happens when switching to a process which has used the
HAE.
1998-12-02 10:24:56 +00:00
Doug Rabson
e63149c330 Add support for 'vmstat -i'.
Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
Obtained from: NetBSD
1998-11-28 09:55:16 +00:00
Doug Rabson
d24b518319 Port top to the alpha.
Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
1998-11-25 09:45:28 +00:00
Doug Rabson
eae8e50443 Add sc_traparg_a0, sc_traparg_a1 and sc_traparg_a2 to the sigcontext
structure for the alpha.  These give extra information about some
signals (such as SIGSEGV) and should be compatible with Digital Unix.

Submitted by: jdp
1998-11-18 23:51:40 +00:00
Doug Rabson
08b6a4cbee * Add hooks to allow the X server to access I/O ports and memory.
* Update drivers to the latest version of the bus interface.

The ISA drivers' use of the new resource api is minimal.  Garrett has
some much cleaner drivers which should be more easily shared between
i386 and alpha.  This has only been tested on cia based machines.  It
should work on lca and apecs but I might have broken something.
1998-11-15 18:25:17 +00:00
Dima Ruban
9ffad24346 indent 1998-11-15 00:50:59 +00:00
Mike Smith
2831f40f0b Use an at_shutdown hook to drop back to the SRM in the case where the system
is being halted, rather than hanging waiting for a keypress.

Submitted by:	Andrew Gallatin <gallatin@freebsd.org>
1998-11-11 00:02:25 +00:00
Dima Ruban
46e79a3c0e Add some bogus stuff to make systat/vmstat happy.
Reviewed by:	dfr
1998-11-09 10:47:19 +00:00
Poul-Henning Kamp
5adee71e55 Update interface to timecounter to last change to the generic code. 1998-11-08 19:26:23 +00:00
Nicolas Souchu
7a8ecb9e64 Add semicolon to INTERFACE declarations 1998-11-08 18:35:53 +00:00
Doug Rabson
7095ee912b * Fix a couple of places in the device pager where an address was
truncated to 32 bits.
* Change the calling convention of the device mmap entry point to
  pass a vm_offset_t instead of an int for the offset allowing
  devices with a larger memory map than (1<<32) to be supported
  on the alpha (/dev/mem is one such).

These changes are required to allow the X server to mmap the various
I/O regions used for device port and memory access on the alpha.
1998-11-08 12:39:07 +00:00
Alexander Langer
9184fb847b Optimize bzero() by unrolling the aligned quadword loop and moving the length
manipulation away from the length comparison.  Measurements on beast.cdrom.com
show >3X improvement over the original code on large block sizes, putting the
performance on par with the optimized assembly code in libc.
1998-11-02 00:14:50 +00:00
Doug Rabson
57250ffb42 * Fix vga_probe() so that it doesn't report a non-vga display adapter as
a vga.
* Fix broken logic in syscons for a failed probe.
* Fix AlphaStation 500/600 so that non-serial consoles are supported.

Submitted by: Thomas Valentino Crimi <tcrimi+@andrew.cmu.edu> (vga bits),
	      Andrew Gallatin <gallatin@cs.duke.edu> (AS500/AS600)
1998-10-31 10:35:24 +00:00
Mike Smith
35d27a0f39 Add the ability to specify where on the at_shutdown queue a handler is
installed.

Remove cpu_power_down, and replace it with an entry at the end of the
SHUTDOWN_FINAL queue in the only place it's used (APM).

Submitted by:	Some ideas from Bruce Walter <walter@fortean.com>
1998-10-30 05:41:15 +00:00
Jordan K. Hubbard
522bda27ae Fix this correctly - check if mfs_getimage() succeeds before settings
the MFS root unconditionally, just as on the x86.
Prompted by:	msmith
1998-10-30 01:36:40 +00:00
David Greenman
730075613a Added a second argument, "activate" to the vm_page_unwire() call so that
the caller can select either inactive or active queue to put the page on.
1998-10-28 13:37:02 +00:00
David Greenman
9b827155f8 Decrement the now unused page table page's wire_count prior to freeing it.
It will soon be required that pages have a zero wire_count when being
freed.
1998-10-21 11:38:14 +00:00
Doug Rabson
0c942a8eef R_ALPHA_RELATIVE relocations need to add the value to the existing memory
contents.
1998-10-18 19:04:13 +00:00
Jordan K. Hubbard
2f40a12b31 fixup for the alpha. tag slid forward, since it's benign for the x86. 1998-10-16 10:13:09 +00:00
Peter Wemm
aa855a598d *gulp*. Jordan specifically OK'ed this..
This is the bulk of the support for doing kld modules.  Two linker_sets
were replaced by SYSINIT()'s.  VFS's and exec handlers are self registered.
kld is now a superset of lkm.  I have converted most of them, they will
follow as a seperate commit as samples.
This all still works as a static a.out kernel using LKM's.
1998-10-16 03:55:01 +00:00
Doug Rabson
43c6fba4f6 Fix a typo preventing the correct value of kernend from being picked up
from the bootstrap.  Also change some debug printfs from #if 0 to
#ifdef DEBUG_CLUSTER to make it easier to debug startup memory problems.
1998-10-15 22:00:54 +00:00
Doug Rabson
e4b0567b9b Change a bogus cast to the correct one. 1998-10-15 09:53:27 +00:00
Peter Wemm
9fd9f49c01 Fix a warning I missed before. 1998-10-14 10:08:35 +00:00
Peter Wemm
da6c15d597 Initial attempt to update the Alpha loader and kernel to use the machine
independent elf loader and have access to kld modules.  Jordan and I were
not sure how to create boot floppies, and the things we tried just made
SRM laugh in our faces - but it was upset at boot1 which was not touched
by these changes.  Essentially this has been untested. :-(

What this does is to steal the last three slots from the nine spare longs
in the bootinfo_v1 struct to pass the module base pointer through.

The startup code now to set up and fills in the module and environment
structures, hopefully close enough to the i386 layout to be able to use
the same kernel code.  We now pass though the updated end of the kernel
space used, rather than _end. (like the i386).

If this does not work, it needs to be beaten into shape pronto.  Otherwise
it should be backed out before 3.0.

Pre-approved in principle by: dfr
1998-10-14 09:53:25 +00:00
Doug Rabson
ac43c74df8 Add support for adjkerntz (largely untested). 1998-10-06 08:40:18 +00:00
Doug Rabson
0f222cb034 Fix unaligned accesses when checking DOS MBRs. 1998-10-06 08:38:58 +00:00
Doug Rabson
6516e08825 Add MFS_ROOT support. 1998-10-06 08:38:04 +00:00
Doug Rabson
6ecd6bbf9b Don't try to attach an isa bus if there isn't one. 1998-09-26 14:48:19 +00:00
Doug Rabson
da653c6148 Start using the new SWI registration system instead of hardwiring everything. 1998-09-26 14:25:32 +00:00
Doug Rabson
b1a0cced61 Automatically detect which disk was booted and change the root to that disk. 1998-09-26 12:22:53 +00:00
Doug Rabson
4e6823805e Add splsoftvm().
Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>
1998-09-19 09:29:40 +00:00
Doug Rabson
888aeaaa72 Fix printf format errors. 1998-09-17 09:35:31 +00:00
Doug Rabson
657d6e769c Change to cam. 1998-09-16 08:22:09 +00:00
Doug Rabson
bbe7f35658 Add cam software interrupts. 1998-09-16 08:21:12 +00:00
Doug Rabson
3bb8652fa7 Port the i386 bus_dma implementation to alpha. 1998-09-16 08:20:45 +00:00
John Polstra
1a291e0cd4 Add new functions fill_fpregs() and set_fpregs(), like fill_regs()
and set_regs() but for the floating point register state.  The code
is stolen from procfs_machdep.c, and moved out of there into
machdep.c.

These functions are needed for generating ELF core dumps.
1998-09-14 22:43:40 +00:00
Doug Rabson
a6ee6725b1 Machine dependant relocations for KLD. 1998-09-11 08:47:02 +00:00
Doug Rabson
26cdc317be Cosmetic changes to the PAGE_XXX macros to make them consistent with
the other objects in vm.
1998-09-04 18:49:35 +00:00
Doug Rabson
9872f76253 Make this build even if sio is not in the kernel. 1998-09-04 07:58:33 +00:00
Doug Rabson
069e9bc1b4 Change various syscalls to use size_t arguments instead of u_int.
Add some overflow checks to read/write (from bde).

Change all modifications to vm_page::flags, vm_page::busy, vm_object::flags
and vm_object::paging_in_progress to use operations which are not
interruptable.

Reviewed by: Bruce Evans <bde@zeta.org.au>
1998-08-24 08:39:39 +00:00
Doug Rabson
2386a98ddd Use address space numbers to reduce TLB flushes. 1998-08-23 16:05:55 +00:00
Doug Rabson
b687821494 Remove bogus unused code. 1998-08-22 10:32:38 +00:00
Doug Rabson
19df33b637 Add support for TurboChannel alphas (DEC 3000/300 and 3000/500).
Obtained from: NetBSD
Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>
1998-08-20 08:27:11 +00:00
Doug Rabson
e99a8ba0c4 Disable some unnecessary debugging code. 1998-08-17 08:04:42 +00:00
Doug Rabson
c2d9f943e0 Sync with i386/isa/diskslice_machdep.c 1.31. 1998-08-11 07:17:36 +00:00
Doug Rabson
8a7b91802a Lots of changes, including:
* Support for AlphaStation 200, 250, 255, 400
* Untested support for UDB, Multia, AXPpci33 (Noname)
* Support for Personal Workstation 433a/433au, 500a/500au, 600a/600au (Miata)
* Some minor fixes and improvements to interrupt handling.

Submitted by: Andrew Gallatin <gallatin@cs.duke.edu> (AS200, Miata)
Obtained from: NetBSD (some code for AS200, Miata, Noname)
1998-08-10 07:53:59 +00:00
Doug Rabson
29a8d2fd7e Tweaks to console support.
Fixes for AS 600.
1998-08-07 08:15:16 +00:00
Doug Rabson
df317c7516 Merge with i386/isa/diskslice_machdep.c 1.30 1998-07-31 09:13:25 +00:00
Doug Rabson
25729629a2 Remove spurious printf. 1998-07-30 08:10:26 +00:00
Doug Rabson
ab1fdd6291 Fix msgbuf so that it actually works properly. 1998-07-29 18:36:29 +00:00
Doug Rabson
51f14853fd Record the new physical address of the pcb in pmap_swapin_proc.
Third attempt at pmap_remove().  This one actually works properly :-).
1998-07-28 09:34:50 +00:00
Doug Rabson
976a1a2b57 Fix a stupid bug preventing gdb from seeing the right value of 'v0'. 1998-07-26 18:47:47 +00:00
Doug Rabson
c99399cccd Fix a stupid bug in the new pmap_remove().
Arrange for soft modified/referenced flags to be cleared when a page is freed.
1998-07-26 18:13:28 +00:00
Doug Rabson
72c36e1413 Fix pmap_enter_quick() to stop it hanging when the level 2 pte exists
but isn't valid.

Reimplement pmap_remove() to be much more efficient at removing large
stretches of addresses.

As part of reimplementing pmap_remove() fix pmap_protect() so that it stands
a hope of working.
1998-07-24 09:43:27 +00:00
Doug Rabson
b9ca15f807 Add ISA support.
Remove mcclock hack which was only needed because ISA wasn't done yet.
1998-07-22 08:34:19 +00:00
Doug Rabson
eb7262ea39 Support header for sysbeep() implementation. 1998-07-22 08:21:36 +00:00
Doug Rabson
e0fbfbb576 Make ptrace single steps over branches work as intended. 1998-07-22 08:20:57 +00:00
Doug Rabson
cbda18ce6e Add support for sio's soft interrupts. 1998-07-22 08:20:15 +00:00
Doug Rabson
e17e8bbe72 Support the DEC_KN20AA platform (AlphaStation 500 or 600).
Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>
1998-07-22 08:19:39 +00:00
Doug Rabson
bba326e18d Merge changes from Andrew Gallatin to support different CIA based platforms.
Add code to identify and attach either serial or VGA console as appropriate.
1998-07-22 08:18:34 +00:00
Doug Rabson
b50b3bda1d Add code from i386 to support sysbeep(). Doesn't work quite right but it
makes a noise.
1998-07-22 08:16:34 +00:00
Doug Rabson
e344c90c80 Change siocn{put,get}c to siogdb{put,get}c to allow a serial console on one
line with serial debugging on another line.
1998-07-22 08:15:34 +00:00
Doug Rabson
a22401deb1 Make ptrace work. 1998-07-15 20:16:28 +00:00
Doug Rabson
718c0cbefb Add some debug code. 1998-07-15 20:07:33 +00:00
Doug Rabson
52c008e810 Overhaul the spl system so that it actually works properly. 1998-07-12 16:32:10 +00:00
Doug Rabson
8e8c234f4d Don't bother calling pmap_emulate_reference() from cpu_fork(). It isn't
needed and it panics a DIAGNOSTIC kernel.
1998-07-12 16:30:58 +00:00
Doug Rabson
2895b128c7 Implement promcncheckc. 1998-07-12 16:15:06 +00:00
Doug Rabson
a85c203100 Add some debug code.
Always clear TLB in pmap_activate, even if activating curproc's pmap.
1998-07-12 16:13:54 +00:00
Doug Rabson
78e3c75746 Add a couple of sysctls and implement sendsig/sigreturn.
Obtained from: signal code from NetBSD
1998-07-12 16:10:52 +00:00
Doug Rabson
56abfaf4eb Add some generic interrupt dispatch code. 1998-07-12 16:09:30 +00:00
Doug Rabson
cefd88ce75 Add definition of p_switchtime. 1998-07-12 16:08:15 +00:00
Doug Rabson
3b7389bd33 Include opt_ddb.h. 1998-07-12 16:07:43 +00:00
Doug Rabson
323df54807 Hardwire the root disk of my test box for now. 1998-07-12 16:07:05 +00:00
Doug Rabson
be90e52a12 Add support for kernel gdb. 1998-07-05 12:24:18 +00:00
Doug Rabson
638ccebd00 Use byte/word access in badaddr if relevant. 1998-07-05 12:22:56 +00:00
Doug Rabson
b3cfa43c24 First steps at supporting EB164 (AlphaPC 164, 164LX, 164SX). 1998-07-05 12:10:10 +00:00
Doug Rabson
5aade7d9d3 Define bio_imask to allow the ncr driver to compile. The idea of passing
mask address around when registering interrupts is wrong IMHO.  We should
use a priority level like IPL_BIO and the lower levels can then translate
it into a mask if they want.
1998-07-05 12:08:59 +00:00
Doug Rabson
43ab2043e9 Make the prom console work as a real device as well as a console. 1998-07-05 11:59:44 +00:00
Doug Rabson
86cabe47cb Make sure hold_count for level 2 maps is maintained properly.
Simplify pmap_mapdev (its still totally wrong for the alpha).
1998-07-05 11:58:35 +00:00
Doug Rabson
812e7ee3e3 Allow gentrap. 1998-06-28 00:47:50 +00:00
Doug Rabson
eb9fc51b1d Call ddb_trap() for gentrap on SimOS since I am using gentrap for DDB
breakpoints (SimOS uses bpt itself for external debuggers).
1998-06-28 00:47:20 +00:00
Doug Rabson
454157c1d3 Add a hack to get the ELF symbols from where SIMOS leaves them. 1998-06-28 00:45:50 +00:00
Doug Rabson
1b7d1a7357 machine/conf.h no longer exists. 1998-06-28 00:44:51 +00:00
Doug Rabson
44dc956d24 Add some stack backtrace support. Pretty fragile but its a start. 1998-06-27 15:37:43 +00:00
Doug Rabson
eb74dcc872 Use %lx for printing register contents. 1998-06-27 15:35:57 +00:00
Doug Rabson
b1bf661000 [Add missing files from previous commit]
Major changes to the generic device framework for FreeBSD/alpha:

* Eliminate bus_t and make it possible for all devices to have
  attached children.

* Support dynamically extendable interfaces for drivers to replace
  both the function pointers in driver_t and bus_ops_t (which has been
  removed entirely.  Two system defined interfaces have been defined,
  'device' which is mandatory for all devices and 'bus' which is
  recommended for all devices which support attached children.

* In addition, the alpha port defines two simple interfaces 'clock'
  for attaching various real time clocks to the system and 'mcclock'
  for the many different variations of mc146818 clocks which can be
  attached to different alpha platforms.  This eliminates two more
  function pointer tables in favour of the generic method dispatch
  system provided by the device framework.

Future device interfaces may include:

* cdev and bdev interfaces for devfs to use in replacement for specfs
  and the fixed interfaces bdevsw and cdevsw.

* scsi interface to replace struct scsi_adapter (not sure how this
  works in CAM but I imagine there is something similar there).

* various tailored interfaces for different bus types such as pci,
  isa, pccard etc.
1998-06-14 13:53:12 +00:00
Doug Rabson
99d11cde56 Major changes to the generic device framework for FreeBSD/alpha:
* Eliminate bus_t and make it possible for all devices to have
  attached children.

* Support dynamically extendable interfaces for drivers to replace
  both the function pointers in driver_t and bus_ops_t (which has been
  removed entirely.  Two system defined interfaces have been defined,
  'device' which is mandatory for all devices and 'bus' which is
  recommended for all devices which support attached children.

* In addition, the alpha port defines two simple interfaces 'clock'
  for attaching various real time clocks to the system and 'mcclock'
  for the many different variations of mc146818 clocks which can be
  attached to different alpha platforms.  This eliminates two more
  function pointer tables in favour of the generic method dispatch
  system provided by the device framework.

Future device interfaces may include:

* cdev and bdev interfaces for devfs to use in replacement for specfs
  and the fixed interfaces bdevsw and cdevsw.

* scsi interface to replace struct scsi_adapter (not sure how this
  works in CAM but I imagine there is something similar there).

* various tailored interfaces for different bus types such as pci,
  isa, pccard etc.
1998-06-14 13:46:10 +00:00
Doug Rabson
c48c13cb5a Reimplement spl*() as function calls. Implement software interrupts. 1998-06-11 11:51:27 +00:00
Doug Rabson
ecf6bca146 Add yet another copyright. If some CVS wizard feels like nuking the versions
that so offend Jason Thorpe then they can.
1998-06-10 20:35:10 +00:00
Doug Rabson
64f14464e5 Fix mangled Id keyword. 1998-06-10 20:13:32 +00:00
Doug Rabson
f7491b1657 Add Id keyword. 1998-06-10 20:11:16 +00:00
Doug Rabson
5c09fbfe64 Add missing copyrights. Thanks to Jason Thorpe for politely noting the
mistake...
1998-06-10 19:59:41 +00:00
Doug Rabson
897cd717a5 Add initial support for the FreeBSD/alpha kernel. This is very much a
work in progress and has never booted a real machine.  Initial
development and testing was done using SimOS (see
http://simos.stanford.edu for details).  On the SimOS simulator, this
port successfully reaches single-user mode and has been tested with
loads as high as one copy of /bin/ls :-).

Obtained from: partly from NetBSD/alpha
1998-06-10 10:57:29 +00:00