Commit Graph

2831 Commits

Author SHA1 Message Date
simonb 5847ff0480 *int_fast64_t should be "long", not "long long".
From Klaus Klein.
2001-09-22 18:03:10 +00:00
tv ab11c169b5 objcopy -> ${OBJCOPY}; remove redundant definitions of OBJCOPY?= (it is
now in bsd.own.mk).
2001-09-22 03:34:17 +00:00
thorpej 681df63b07 Remove alpha/include/fbio.h -- it hasn't been used for a Long Time. 2001-09-19 16:32:04 +00:00
simonb a2c1c5c8eb Fix typo in PRId64. 2001-09-19 01:49:47 +00:00
ad d29ceae643 Hook in the `stic' device. With any luck this should be temporary. 2001-09-18 19:54:10 +00:00
jdolecek ef8abe0767 Make the setregs hook emulation-specific, rather than executable
format specific.
Struct emul has a e_setregs hook back, which points to emulation-specific
setregs function. es_setregs of struct execsw now only points to
optional executable-specific setup function (this is only used for
ECOFF).
2001-09-18 19:36:32 +00:00
wiz 9fa0b17629 Give initiali[sz]e all the "i"s it deserves. 2001-09-18 18:15:49 +00:00
jdolecek 884d9e7866 g/c superfluous cpu_exec_ecoff_setregs() prototype
only define the cpu_exec_ecoff_*() stuff #ifdef EXEC_ECOFF
2001-09-17 17:40:40 +00:00
thorpej e9d1fccd30 BWX-addressable space is aways linear, so always allow BUS_SPACE_MAP_LINEAR
requests to succeed (and ignore BUS_SPACE_MAP_PREFETCHABLE, since it makes
no difference in BWX-addressable space).
2001-09-16 03:50:01 +00:00
thorpej 79ae830243 Add AGP support (oops, forgot to commit this file with the last batch). 2001-09-16 02:09:47 +00:00
chs 64c6d1d2dc a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps.  this is
   required now, since I've removed the globals that expose the address range.
   pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
   no longer any need to special-case it.
 - eliminate struct uvm_vnode by moving its fields into struct vnode.
 - rewrite the pageout path.  the pager is now responsible for handling the
   high-level requests instead of only getting control after a bunch of work
   has already been done on its behalf.  this will allow us to UBCify LFS,
   which needs tighter control over its pages than other filesystems do.
   writing a page to disk no longer requires making it read-only, which
   allows us to write wired pages without causing all kinds of havoc.
 - use a new PG_PAGEOUT flag to indicate that a page should be freed
   on behalf of the pagedaemon when it's unlocked.  this flag is very similar
   to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
   pageout fails due to eg. an indirect-block buffer being locked.
   this allows us to remove the "version" field from struct vm_page,
   and together with shrinking "loan_count" from 32 bits to 16,
   struct vm_page is now 4 bytes smaller.
 - no longer use PG_RELEASED for swap-backed pages.  if the page is busy
   because it's being paged out, we can't release the swap slot to be
   reallocated until that write is complete, but unlike with vnodes we
   don't keep a count of in-progress writes so there's no good way to
   know when the write is done.  instead, when we need to free a busy
   swap-backed page, just sleep until we can get it busy ourselves.
 - implement a fast-path for extending writes which allows us to avoid
   zeroing new pages.  this substantially reduces cpu usage.
 - encapsulate the data used by the genfs code in a struct genfs_node,
   which must be the first element of the filesystem-specific vnode data
   for filesystems which use genfs_{get,put}pages().
 - eliminate many of the UVM pagerops, since they aren't needed anymore
   now that the pager "put" operation is a higher-level operation.
 - enhance the genfs code to allow NFS to use the genfs_{get,put}pages
   instead of a modified copy.
 - clean up struct vnode by removing all the fields that used to be used by
   the vfs_cluster.c code (which we don't use anymore with UBC).
 - remove kmem_object and mb_object since they were useless.
   instead of allocating pages to these objects, we now just allocate
   pages with no object.  such pages are mapped in the kernel until they
   are freed, so we can use the mapping to find the page to free it.
   this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.
2001-09-15 20:36:31 +00:00
thorpej 17d975073d Oops, don't need to fill in pcibus_attach_args twice. 2001-09-15 04:50:59 +00:00
thorpej fe5ada1fcc Add PCI and AGP devices. 2001-09-15 04:40:21 +00:00
thorpej 927debe92b Attach "agp" to the AMD-751 PCI host controller (Alpha UP1000/UP1100). 2001-09-15 04:33:37 +00:00
thorpej 6658cbc629 Only filter out the PCI_ID_REG in irongate_conf_read(). 2001-09-15 04:31:40 +00:00
chris 0e7661f023 Update pmap_update to now take the updated pmap as an argument.
This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.

Currently this is a no-op on most platforms, so they should see no difference.

Reviewed by Jason.
2001-09-10 21:19:08 +00:00
nathanw 78d8966e59 Remove the infamous "DANGER WILL ROBINSON: FEN SET in cpu_fork!"
diagnostic. It's not indicative of an error condition.

The code sequence in question calls fpusave_proc(), which ultimately
calls alpha_pal_wrfen(0), which clears the FEN bit in the current
PCB. However, the diagnostic message is based on reading that bit from
the PCB representation in memory, which is not guaranteed to be kept
up-to-date with respect to the real PCB contents. According to the
AARM, third edition, II-B 4.2:

"If the PCB is read while ownership resides with the processor, it is
UNPREDICTABLE whether the original or an updated value of a field is
read."

The Alpha architecture does not provide a way to read the true value
of the FEN bit of the current PCB, so the test is simply removed.
2001-09-06 21:20:43 +00:00
thorpej b6783070d6 Don't require tp->t_dev to be filled in in cold_sccparam(). 2001-09-06 06:18:40 +00:00
thorpej 6203b547a5 Garbage-collect all the (outdated and totally useless) pmax stuff
in this code.
2001-09-06 05:31:49 +00:00
nathanw 2b5671fb41 The return address register ($ra) is callee-saved, not caller-saved. 2001-09-05 20:12:53 +00:00
thorpej 4ce0b90ae3 Typos, pointed out by Luke Mewburn (gee, I guess I built a kernel
other than GENERIC).
2001-09-04 16:14:49 +00:00
thorpej 102190b8fe Implement bus_space_mmap(). 2001-09-04 05:31:27 +00:00
atatat 97c67a9bae Add bridge pseudo devices to GENERIC configs 2001-09-01 21:52:23 +00:00
simonb 023bdd2bf2 Use comments around the token after a #endif. 2001-08-31 04:44:54 +00:00
nathanw 4666070137 Correct a comment: The address of the signal handler is passed to the
sigcode trampoline in pv (t12), not a3, and has been since the
beginning of time.
2001-08-29 20:17:08 +00:00
itohy a0f0f74348 Print extra information on machine check (AS500, AS600). 2001-08-29 14:14:33 +00:00
simonb 9d7facdb6e Yanking a pmax-specific header should not have broken Alpha
compiles!  Remove all pmax include files, copying 'struct pdma'
from <pmax/dev/pdma.h> into sccvar.h.

XXX: diffs between current pmax and alpha scc.c are almost as large
     as the files themselves.  Should clean this up...
2001-08-26 16:39:56 +00:00
nisimura 4d28b238b5 Add MX (PMAG-A) and TX (PMAG-RO/PMAG[B]-J) supports and replace CX
(PMAG-B) code with one found in dev/tc/ directory.
2001-08-23 01:29:31 +00:00
nisimura 9a409cff3e Add MX (PMAG-A), CX (PMAG-B), TX (PMAG-RO/PMAG[B]-J) TC framebuffer
supports.  None of them has any acceleration capability.
2001-08-23 01:16:52 +00:00
hubertf 5366e197e2 More comment changes: 90x[B] -> 90x[BC] 2001-08-22 15:39:04 +00:00
wiz c52d355d71 "wierd" is weird. 2001-08-20 12:20:01 +00:00
mrg dc4e692845 add a commented "options NETATALK" 2001-08-20 04:49:17 +00:00
chs 3f98593d27 in vunmapbuf(), call pmap_*remove() explicitly since uvm_km_free_wakeup()
will soon no longer do it for us.
2001-08-19 17:34:01 +00:00
mjacob 7a43c0e46b Fixed the one minor buglet that kept 8200s from working
(SCB_VECTOIDX(vec) - SCB_IOVECBASE] -> SCB_VECTOIDX(vec - SCB_IOVECBASE))

Sigh. This is all very good work- this new interrupt stuff. Yet like the
last time my good friend Jason 'simplified' things, we lost information.
It used to be you could tell which specific slot an interrupt was frame
based upon the vector. Now you can't because they're allocated dynamically.
Oh well- it's not all that important.
2001-08-13 23:36:30 +00:00
chs 610af327b3 add an unlock missing from previous revision. 2001-08-13 01:12:15 +00:00
jdolecek c495131fe3 Move _insque()/_remque() to libkern. Once remaining uses would
be converted to <sys/queue.h> macros, _insque()/_remque() would be eliminated
altogether.
2001-08-12 08:35:31 +00:00
bjh21 ad2c12a28d Bump version numbers of all bootloaders that use loadfile/ELF, to account for
my changes to symbol loading.  I should probably have done this at the time,
but it's better late than never.
2001-08-02 12:24:05 +00:00
thorpej 0fb6b9a8f8 Rework the interrupt code, shaving some cycles off in the process.
Rather than an "iointr" routine that decomposes a vector into an
IRQ, we maintain a vector table directly, hooking up each "iointr"
routine at the correct vector.  This also allows us to hook device
interrupts up to specific vectors (c.f. Jensen).

We can shave even more cycles off, here, and I will, but it requires
some changes to the alpha_shared_intr stuff.
2001-07-27 00:25:18 +00:00
wiz 684d06bac8 bcopy -> memcpy, bzero -> memset 2001-07-22 15:17:30 +00:00
wiz a9356936b4 seperate -> separate 2001-07-22 13:33:58 +00:00
thorpej 030941bc0d Only match the "gbus" on the primary CPU's CPU module. 2001-07-19 20:34:08 +00:00
thorpej 13e63c6a43 Take a guess and initialize the prefetch threshold to 256 bytes. Haven't
found this one in the manual yet.
2001-07-19 19:09:22 +00:00
thorpej b0256ef005 DWLPx has a 256-byte DMA prefetch threshold. 2001-07-19 18:59:41 +00:00
thorpej 1e21ada1d9 MCPCIA has a 256 byte DMA prefetch threshold. 2001-07-19 18:55:40 +00:00
thorpej c563df226b The T2 has a 256 byte DMA prefetch threshold. 2001-07-19 18:50:25 +00:00
thorpej e6ab362da0 The LCA isn't supposed to have a DMA prefetch threshold, but experience
has shown is that if we don't allocate a spill page, we get a machine
check.  So, initialize the threshold to 256 bytes.
2001-07-19 18:47:38 +00:00
thorpej 4c4c88dbb7 ALCOR/ALCOR2/PYXIS have a 256-byte DMA prefetch threshold. 2001-07-19 18:42:42 +00:00
thorpej 908464bef9 APECS has a 256 byte DMA prefetch threshold. 2001-07-19 18:39:29 +00:00
thorpej 63bc6c1370 Since the SGMAP buffer load subroutine doesn't need to modify
the segment index, don't pass it by reference.
2001-07-19 18:20:20 +00:00
thorpej 77e1f86ad4 Implement dmamap_load_uio for SGMAPs. 2001-07-19 18:08:54 +00:00