where the console is, because that is correct if, for example, you
boot with the diag/norm switch set for diagnostics and the EEPROM
is set for keyboard/display.
* Update arch/mips/mips/cpu_exec.c to include MI exec_elf.h header,
and to use the MI interface exec_elf_makecmds().
* Replace arch/mips/mips/elf.c (Ted Lemon's elf code) with
a version of Christos's MI elf exec code, munged to support demand paging
and mips shared libraries.
Show proper inquiry data when version >= 1, not <= 1 (SCSI-2 devices
now display their inquiry infor).
Correct transfer length passed to dk_unbusy (b_resid hasn't been
updated yet).
* Eliminate the #ifdef DS5000 and kernel config option DS5000 altogether.
option DS5000 was a hangover from 4.4bsd/pmax; it's never been clear
if it means "support for DS5000/200" or "support for any TC machine".
This implictly fixes pr 1828.
* Use the "tc.h" and NTC generated by config for a "tc? at mainbus"
where appropriate, intsead of #ifdef DS5000.
* Canonicalize the spelling of kernel options that enable support
for particular models. Use
DS5000_25 for the Personal Decstation aka MAXINE aka KN02-ca
DS5000_100 for the 5000/1xx series aka KMIN aka KN02-ba
DS5000_200 for the 5000/200 aka 3MAX aka KN02
DS500_240 for the 5000/240 aka 3MAXPLUS aka KN03
and change DS_5000_xxx to DS5000_xxx everywhere.
* Wrap the interrupt handlers for each model in the appropriate #ifdef,
instead of wrapping all of them with "#ifdef DS5000".
* Wrap the TC autoconfig for each model in the appropriate #ifdef.
* Eliminate the #ifdef DS5000 and kernel config option DS5000 altogether.
option DS5000 was a hangover from 4.4bsd/pmax; it's never been clear
if it means "support for DS5000/200" or "support for any TC machine".
This implictly fixes pr 1828.
* Use the "tc.h" and NTC generated by config for a "tc? at mainbus"
where appropriate, intsead of #ifdef DS5000.
* Canonicalize the spelling of kernel options that enable support
for particular models. Use
DS5000_25 for the Personal Decstation aka MAXINE aka KN02-ca
DS5000_100 for the 5000/1xx series aka KMIN aka KN02-ba
DS5000_200 for the 5000/200 aka 3MAX aka KN02
DS500_240 for the 5000/240 aka 3MAXPLUS aka KN03
and change DS_5000_xxx to DS5000_xxx everywhere.
* Wrap the interrupt handlers for each model in the appropriate #ifdef,
instead of wrapping all of them with "#ifdef DS5000".
#define so that ifr_mtu accesses that. MTU shouldn't be overloaded
with ifr_metric, if only for clarity. Adding an MTU field to the
union hurts nothing (in fact, does not actually _change_ generated
code), and does improve clarity.
works) for my machines and now-nonexistent test machines. Clean up
options in existing config files so that they're more consistent. Add
more units of various pseudo-devices to several.
For these CPU's, you have to use the ptest operation to search the mmu
tables in order to decide whether it is a real bus error or just a
page fault or write protection violation.
Our old code assumed user space always when calling ptest, and
erroneously assumed the BUSERR bit in the ptest output (mmusr
register) is the only indication for bus errors to check.
In fact, we have to follow a multistage decision tree to decide. 68060
CPUs are much easier to handle correctly.
Since linux binaries are (mostly) always compiled with gcc, look for
the gcc signature in the .comment section header: "\0 GCC: (GNU) ".
I've changed the probe order in kern/exec_elf.c to probe for linux ELF
binaries first and fall back to SVR4 binaries. This makes statically
linked binaries work for both linux and svr4. Note that gcc-compiled
svr4 binaries, still contain the operating system signature first and
then the GCC signature, so there is no conflict. Yes this is a hack.
and free some space by calling m_reclaim(). Also, log the "mb_map full"
error message (at most) every 60-seconds. The old code would log it
once over the lifetime of the system, but that's not a useful diagnostic.
(More useful is the new behaviour, which roughly indicates how often
periods of heavy load occur, without spamming the console and system
logs with messages.)
Right now, this code just panic()s (same as kmem_malloc() used to do
before, but different message), but in the future it should be modified
to try to reclaim wasted memory.
automatic array rather than an array allocated with alloca().
(This was the only use of alloca() in the kernel, and it wasn't
necessary or consistent with the way other functions in this file
work.)
This is a bit of a hack, as-is, since there's a lot of code that's
outright duplicated between the various files and because it doesn't
support detection of a network device as the root device. The
latter's not a problem yet, because NetBSD/Alpha can't load the kernel
from the network to begin with.
structure and 'aux', right before ca_attach is called for the
newly-attached device. This allows the alpha port to do root device
autodetection without modifying every bus and device driver which could
be in the 'boot path.' In the long run, it may make sense to make
this machine-independent.
an extended header is present i.e. don't assume an extended header as
however unlikely there could be a podule that doesn't have one.
Calculate an absolute address for the podule's interrupt mask rather
than leaving it relative to the base address of the podule.
If the interrupt status pointers are not present or are zero then
used the default bits as specified in the podule specification to
determine if the podule is interrupting.
chained podule interrupt handlers.
Fill out the ih_maskaddr and ih_maskbits fields in the interrupt handler
structure so that interrupt dispatcher knows where to look to determine
if the handler should be called.
General code tidy up and source code formatting.
chained podule interrupt handlers.
Fill out the ih_maskaddr and ih_maskbits fields in the interrupt handler
structure so that interrupt dispatcher knows where to look to determine
if the handler should be called.
back on timer 1 interrupts if none is specified.
Only set up timer 1 is the driver is using timer 1 interrupts.
Don't claim the interrupt but allow them to be passed on to other
handlers.
Fixed the handling of IPL_NONE.
Debugged support for interrupt chaining.
Fill out the intrnames array with the name of the interrupt handler
currently at the head of the chain.
Guarded several sanity checks with #ifdef DIAGNOSTIC.
Added interrupt chaining.
Removed some dead debugging code.
Guarded several sanity checks with #ifdef DIAGNOSTIC
Make sure interrupts are disable while updating the IOMD interrupt
masks.
Removed several old debugging functions that are no longer needed.
Block interrupts while updating the soft interrupt masks.
Fixed softclock interrupts and added IRQ_SOFTPLIP to the SPL_SOFT mask.
Rename the currently unused irq handler structure fields for podule
interrupts so they make more sense.
Define IPL_NONE as a positive value instead of -1 and increase the
number of IPL levels.
from from the corresponding `ic_*' and `dc_*' values. This is not perfect,
but it makes SS4s and SS5s run until we have proper per-cpu cache handling.
Use the `cache-physical?' property to determine the value of `vactype'
on sun4m's. If absent, set vactype to VAC_WRITETHROUGH (XXX) else VAC_NONE.
Print simpler sun4m CPU identifier on attach.
>use p->hashfraction when doing non-time-critical calculations, rather than
>using HASHFRACTION directly. in time-critical calculations, if HASHFRACTION
>is a power of two, check that p->hashfraction == HASHFRACTION and if so do
>the calculation with the compiled-in value so that the compiler can optimize
>out (potentially) expensive divisions. if p->hashfraction != HASHFRACTION,
>actually do the division. This has the result that on machines with slow
>division, the division can be optimized out of the common case, but that
>if HASHFRACTION changes from the compiled-in value (for whatever reason),
>profiling will still work. Changes suggested by Chris Torek.
(1) right now GENERIC can boot via NFS, and
(2) in the long run, GENERIC should autodetect network booting
and pick the correct root device.
Because of (1), GENERIC_NFS is no longer _needed_ in the short term.
Because of (2), GENERIC_NFS is not _wanted_ in the long term.
and whacking a bit here and there where appropriate. Does not yet do
automatic root device detection, but that's much easier to add now.
RB_ASKNAME now supports specification of network devices, for diskless
booting. Also, RB_ASKNAME is now supported on _all_ kernels.
a (was ~RB_SINGLE, redundant with 'A') -> askname
n (was RB_ASKNAME) -> no meaning
d (was RB_DFLTROOT) -> no meaning (unnecessary with new setroot() code)
m (was RB_MINIROOT) -> no meaning (miniroots currently unsupported;
#ifdef'd out)
N (was ~RB_ASKNAME) -> no meaning (unnecessary; just don't specify RB_ASKNAME!)
Enable reselections as soon as possible after a disconnect - prevents
losing a reselecting device.
Check for and ignore a spurious interrupt during a DMA input (from the
Mach driver).
>Update for present reality (function names), clean up a bit (printfs,
>"panic: foo XXX"), and fix a couple of printf format specified bugs
>(which were normally #if 0'd out). Inspired by Multia/UDB support
>changes sent by Matt Thomas.
and:
>changes from Matt Thomas so that the Multia/UDB can attach its
>'com' interrupts, cleaned up some. Basically: if sharing type of
>new interrupt is different than what the hardware is currently set up
>for (e.g. requesting edge-triggered and the hardware is set up by
>the PROM for level triggered) and there are no interrupt handlers on
>that line already, warn about it and use the hardware type that the
>line was already set for (to avoid making the console blow up on
>reboot). If same circumstances but there is already a handler, panic
>as before.
Turbochannel as well as the IOASIC. It should now work on the 5000/200.
Removed the "aborts" which could leave the disk trashed when the abort
rebooted the system. Fix the data corruption problem by clearing the
FIFO before starting a data transfer.
common back-ends that live on multiple very-different busses (e.g. PCI and
TC), which need bus-specific DMA mapping support. As a nice side effect,
this will allow the especially nasty (vtophys(va) | 0x40000000) expressions
to go away in favor of less nasty bus-specific function calls.
clear which switches the video signal on and which off.
Make all grf_??.c (which supported it) use the same polarity of the test.
While being here, use a > test instead of implicit != to make it extensible
to darker than dark values for power managment systems.
as the Fastlane Z3, but is different enough to let the kernel crash.
Closes PR #2492 by Matthias Scheler. [thanks also to Ralph Schmidt for
confirmation of the patch]
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01 would be checksummed
incorrectly: rather than adding two 32-bit quantities together to
sum a quadword (which was losing a carry bit), add as four 16-bit
quantities.
Add some casts so that we're not bitten by type promotions on 64-bit
systems. Not a great concern since the only 64-bit system currently
supported by NetBSD (Alpha) uses assembly versions of these routines.
1. when reading the referenced/modified bits the TLB entry must be flushed
before reading the in-core version.
2. when wrapping up an entire segment in pmap_page_protect(), flush the PTPs
from the TLB to prevent a table-walking operation to pick up stale - or
possibly bogus - PTEs.
(hopefully I'll get a few of my hairs back now..)
- When finished writing, if the SCSI bus has BSY asserted, write another
byte to the SBC to ensure we get an interrupt.
- Unflag SCSI interrupts on the VIA whenever we clear the interrupts
on the SBC itself.
the IOASIC attached devices. The DS3100 will now configure properly.
Fix the DS5000/25 IOASIC table entry for the RTC so the RTC interrupts
get enabled.
Fix up a moved include file.
configure properly. Also fix devices with TurboChannel and mainbus
attachments so they will work if no TurboChannel was configured.
Fix clock.c for a missing variable if not including NTP support.
Also remove some extraneous includes files or use the right ones.
configure properly. Also fix devices with TurboChannel and mainbus
attachments so they will work if no TurboChannel was configured.
Fix a panic when the dtop keyboard handler receieves a character
before the device has been opened.