machines with old firmware which doesn't pass it in the boot device
can work. Assume that if the ethernet address isn't passed in, it
uses the old (dain-bramaged) 'read' interface works on my 3000/300LX.
structure to allow netboot information to be hard-coded in network
boot blocks, so that they can be made to work even on systems with
firmware which doesn't support the new "ethernet address in boot device"
convention.
Eliminate obsolete global kernel variable "struct timezone tz"
Add RTC_OFFSET option
Add global kernel variable rtc_offset, which is initialized by
RTC_OFFSET at kernel compile time.
on i386, x68k, mac68k, pc532 and arm32, RTC_OFFSET indicates how many
minutes west (east) of GMT the hardware RTC runs. Defaults to 0.
Places where tz variable was used to indicate this in the past have
been replaced with rtc_offset.
Add sysctl interface to rtc_offset.
Kill obsolete DST_* macros in sys/time.h
gettimeofday now always returns zeroed timezone if zone is requested.
settimeofday now ignores and logs attempts to set non-existant kernel
timezone.
add SysV Shared Memory support, since it can be used by the X server.
add 'ppp' to the list of pseudo-devices, and sort the list to recover
from the renaming of 'rd' to 'md'.
other slight cleanups.
__builtin_classify_type() into harmless values, so that lint doesn't
get confused, think they're real functions, and that they're being
invoked in the wrong ways.
using __weak_alias in libc, __indr_reference should probably be defined
to do nothing (but defined, so that duplicate functions/variables aren't
compiled). However, when not using __weak_alias, __indr_reference causes
them to be omitted completely, which is a lose. So, until weak aliases
are going to be used, don't define __weak_alias or __indr_reference.
for by crt0. Actually clear a1 and a2, because unless a shared loader (i.e.
_not_ the kernel) set them when invoking crt0, they should be zero, and
the kernel DEBUG code wouldn't necessarily have them be. Pass a pointer
to the proc's ps_strings structure in a3.
on indirect-config busses a (permanent) softc that they could share
between 'match' and 'attach' routines:
Define __BROKEN_INDIRECT_CONFIG so that old autoconfiguration
interfaces are used, until drivers are converted to use the new
interfaces (actually, converted back to use the _older_ interfaces)
which prohibit indirect configuration devices from receiving a softc
in their match routine that they can share with their attach routine.
Lets users over-ride with makeoptions COPTS="..." in kernel config files.
Leave `mandatory' flags (like -msoft-float which on m68k enforces no
FP in kernel) in CFLAGS.
>Pay attention to DMA errors as reported by DMAINTR() returning -1. If this
>happens reset everything.
>
>Re-schedule a timeout when first attempting to abort an operation.
>Cancel any queued timer events before re-scheduling a timeout, so esp_abort()
>can be called from other places besides the timeout handler.
the chipset space init functions multiple times, since that would clobber
extent allocations made between the two calls. Also, deal with the
fact that the APECS and LCA no longer shared common chipset functions.
the same things, but the extent maps have to be managed differently,
since the two chipsets provide different memory and I/O region mapping
possibilities.
and PC-ish keyboard controller. (Actually, on alphas, the built-in PPI
(in the SIO) appears to be a lobotomized version of the original, but
i'd not call that a bad thing.) This driver should eventually handle all
speaker tone requests and keyboard commands, but for now it just maps
the relevant ports and passes them on to the keyboard and mouse drivers,
which are now its children (rather than children of ISA).
>One control block per target is insufficient if you have a full complement
>of targets attached and access those simultaneously (like in a ccd(4) array).
>We (now) allocate (somewhat arbitrarily) three per target.
>Noticed by Marshall Midden.
don't machine check when a PCI Master Abort is signalled. This can
happen, for instance, when configuration space for a device that isn't
present is examined. When this is detected, act like we normally would
when machine checks are posted while examining nonexistant devices.
enabled (from the attach routine), and add comments as to why.
Some PALcode apparently 'saves' a clock interrupt for the kernel,
and if the clock interrupt handler is enabled at attach time, it
will be run when that interrupt hits, i.e. right after the spl0()
at the end of autoconfiguration. That would cause hardclock to be
run, but proc0's p_stats isn't set up by then, which would cause
hardclock to crash.
rather than and-ing 16G-1. That just strips the k0seg bits, rather
than making the false assumption that the physical address is going
to be in the lower 16G. That doesn't apply for CIA device-space
addresses, for instance.
even if PCI and the IDs are right), just for sanity, before declaring
success. Split the single 0x3b0 -> 0x3df allocation into three seperate
ones: 0x3b0 -> 0x3bc (leaving the 4 ports available for lpt),
0x3c0 -> 0x3cf, and 0x3d0 -> 0x3df. The former chunk has to be split
off if the lpt can exist there, and it's sort-of pretty to have each
group (based on second hex digit) have its own handle.
ioctl and mmap routines take a void *, rather than a struct device *,
so that they can be set up to work more easily when using a 'struct device *'
isn't appropriate. Add a cookie (void *) to be passed to the mmap and
ioctl routines. Rename a few struct members, and shuffle them into
a more sensible order.
front-ends. Unfortunately, because of the way ISA and PCI are currently
probed, if you have a PCI VGA board in your machine and both drivers
in your kernel, the ISA VGA driver may accidentally match the PCI board.
For now, the only solution to this is to not put both drivers in
the GENERIC kernels.
the Digital Semiconductor AlphaPC 164 Motherboard Technical Reference
Manual. This may not work, but it's the best i can do with the
documentation I have.
is set in the RPB's rpb_variation field. This fixes a bug where machines
(e.g. the 3000/900) would see that they could touch memory where a built-in
PMAGB-BA, assume that it was there, and panic later because the memory they
were accessing didn't look like PMAGB-BA registers (because it wasn't).
-Werror -Wall -Wstrict-prototypes -Wmissing-prototypes
-Wcast-qual -Wno-format
(if not already set). -Wno-format is necessary because of the few
bits of code in the tree that use NetBSD's special kernel printf()
formats, and because there are a few bits of code that try to use the 'q'
modifier to print int64_t's (but int64_t's are only 'long' on the
alpha, not 'long long').
deleting (and cleaning up) N pages of #ifdefs in machdep.c. While we're
at it, make the cpu type options generate flags, and check them instead of
kernel Makefile defines.
21164 + 21172 box, with Yet Another Way of doing interrupts. The
interrupt mapping and handling code hasn't been written yet, and none
of this code has been tested. (Checkpoint of work in progress.)
create an assembly label, and SYSCALLNUM to convert a syscall name into
the macro that's defined to be its number. Add a CALLSYS_NOERROR macro
which invokes the named system call. (CALLSYS_NOERROR is here since
it's used in locore, for sigcode.)
autoconfiguration. It clears the RPB's per-cpu-slot BIP flag and
sets up the RPB's restore_term and restart vectors, etc. add a
console_restart() function, which causes a panic and system dump,
that is invoked (indirectly) via those vectors.
eventually, the restart HWRPB vector), which calls console_restart. This
is invoked when the console halt switch is used and the user enters 'c'
at the console prompt, and eventually causes a system crash dump to be
generated.
to signal that the build is happening on a machine with an ELF
toolchain. This is temporary, until a better toolchain-recognition
scheme is worked out.
* Handle message retransmissions and partially sent messages correctly.
* Make sure we clear ATN after the last message is sent.
* Do the right thing if the target initiates negotiation for async mode
after having negotiated sync mode.
* Fix some cases where we set ATN with no message queued, or schedule a
message without setting ATN.
* Issue a REQUEST SENSE after an unexpected disconnect, per SCSI spec.
* Fix abort handling in a number of cases.
* Recognize selection timeouts better (to speed up probing).
ELF-outputting version of the assembler. (It was dying when it saw
some CPP line number markers.) This is temporary. (Workaround suggested
by Matt Thomas.)
consistency with the way machdep headers for other things are done.
(the creation of the ecoff_machdep.h files was done on the CVS server, to
keep the RCS logs intact.)
macros to use to remove #ifdefs from the machine ID case check.
Eventually, these headers will contain other information, e.g.
machine-dependent relocation information, etc.
(1) the if_prom code needs to be cleaned up quite a bit
(right now it hard-codes client's ethernet address), and
(2) much of this code (esp: getsecs.c, netboot.c, newvers.sh,
rpcc.S) should be shared with other Alpha boot blocks,
and dev_net.[ch] should maybe go in libsa proper.
boot block, since it will be shared with the network boot block.
(2) Kill a.out support, since it never worked was never used, and will
never be.
(3) Add support for booting of ELF kernels, from Matt Thomas. (Currently
untested, but it compiles.)
multi-channel driver), or to SCSI_CHANNEL_ONLY_ONE if a
single-channel driver.
(2) use scsiprint() rather than a locally-defined autoconfig print
function, and kill any locally-defined print function.
a char *, because that's what was really intended, and because
if the print function modifies the string, various things could become
unhappy (so the string should _not_ be modified).
profiling enabled. (named the same as what GENERIC kernel
would be named if configured with config -p, which would end up
generating the same kernel as this.)
figure out the correct IRQ for the ethernet on the AlphaStation 500.
That code is enabled via KN20AA_BOGUS_IRQ_FROB (but hopefully won't be
needed any time soon, and won't link w/o slight changes to other code).
Basically, when establishing an interrupt that we don't know what to
do with, prompt the user for what interrupt line to enable. If you
get stray interrupts when you try to use the device (but not before),
then you've got the right line.
found on the AlphaStation 600), and interrupts on interrupt line 13.
Thanks to Andrew Gallatin for booting a test kernel 32 times (trying
each interrupt line, looking for the right one) to find this.
* Make S expand to an absolute path at compile time.
* Use `-S' rather than `-x' to remove debugging symbols.
* Garbage collect unused variables.
* Reverse a handful of port-specific changes that do not correspond to
the common build model and are not needed.
a boot string for firmware that can do this, such as the SPARC and
the sun3 models. It is currently silently ignored on all other
hardware now, however. The MD function "boot()" has been changed to
also take a char *.
mapping code. (instead of using a "slot" and multiplying by 4 and adding the
pin number later to get the IRQ, just use base IRQ value and add the pin
number.)
start adding back in tracing printfs. add support for the virtual page
table. Now it gets to user-land code, but fails because i've not
added support to the context switch code to activate and deactivate pmaps.
more naturally in terms of way the OSF/1 PALcode delivers traps and
interrupts. Clean up fault/exception handling code and system entry
points. Seperate ASTs into a seperate C function.
(2) Add unaligned access fixup code to fix unaligned quad, long,
and IEEE S and T floating datum loads and stores. VAX floating data
types not yet supported, and in the future will only be supported if
FIX_UNALIGNED_VAX_FP is defined. (No point in wasting the space when
most of the time there will never be VAX FP loads and stores.) Right
now, these features can be controlled only by sysctl. The (boolean)
integer sysctls machdep.unaligned_print, machdep.unaligned_fix, and
machdep.unaligned_sigbus control printing about unaligned accesses
(defaults on), fixing up of unaligned accesses (defaults on), and
forcing a SIGBUS on unaligned accesses (defaults off). If an access
is not fixed up (for lack of method or explicit decision), a SIGBUS is
always generated to keep programs from using bogus data. At some point,
these three choices should be controlled by per-process flags, as well.
more naturally in terms of way the OSF/1 PALcode delivers traps and
interrupts. Clean up fault/exception handling code and system entry
points. Seperate ASTs into a seperate C function.
(2) Add a boot flag ('H' and 'h') to make sure the kernel never
reboots after panic. Useful for debugging kernels which panic early
on after user processes have started, to fend off infinite reboot cycles.
Sort boot flag switch.
(3) Add unaligned access fixup code to fix unaligned quad, long,
and IEEE S and T floating datum loads and stores. VAX floating data
types not yet supported, and in the future will only be supported if
FIX_UNALIGNED_VAX_FP is defined. (No point in wasting the space when
most of the time there will never be VAX FP loads and stores.) Right
now, these features can be controlled only by sysctl. The (boolean)
integer sysctls machdep.unaligned_print, machdep.unaligned_fix, and
machdep.unaligned_sigbus control printing about unaligned accesses
(defaults on), fixing up of unaligned accesses (defaults on), and
forcing a SIGBUS on unaligned accesses (defaults off). If an access
is not fixed up (for lack of method or explicit decision), a SIGBUS is
always generated to keep programs from using bogus data. At some point,
these three choices should be controlled by per-process flags, as well.
more naturally in terms of way the OSF/1 PALcode delivers traps and
interrupts. Clean up fault/exception handling code and system entry
points. Seperate ASTs into a seperate C function.
(2) Clean up interrupt handling slightly.
(3) Add machinery to make [fs]uswintr be a bit more careful when
determining if a fault was actually their fault. (Unfortunately, they're
not actually implemented now, anyway.)
(4) Minor cleanup.
handling based on information in the 2nd Ed. of the Alpha Architecture
Reference Manual.
(2) Clean up interrupt handling slightly.
(3) Clean up badaddr().
more naturally in terms of way the OSF/1 PALcode delivers traps and
interrupts. Clean up fault/exception handling code and system entry
points. Seperate ASTs into a seperate C function.
(2) Add machinery to make [fs]uswintr be a bit more careful when
determining if a fault was actually their fault. (Unfortunately, they're
not actually implemented now, anyway.)
and IEEE S and T floating datum loads and stores. VAX floating data
types not yet supported, and in the future will only be supported if
FIX_UNALIGNED_VAX_FP is defined. (No point in wasting the space when
most of the time there will never be VAX FP loads and stores.) Right
now, these features can be controlled only by sysctl. The (boolean)
integer sysctls machdep.unaligned_print, machdep.unaligned_fix, and
machdep.unaligned_sigbus control printing about unaligned accesses
(defaults on), fixing up of unaligned accesses (defaults on), and
forcing a SIGBUS on unaligned accesses (defaults off). If an access
is not fixed up (for lack of method or explicit decision), a SIGBUS is
always generated to keep programs from using bogus data. At some point,
these three choices should be controlled by per-process flags, as well.
more naturally in terms of way the OSF/1 PALcode delivers traps and
interrupts. Clean up fault/exception handling code and system entry
points. Seperate ASTs into a seperate C function.
(2) Restructure and improve machine check and correctable error
handling based on information in the 2nd Ed. of the Alpha Architecture
Reference Manual.
(3) Removed unused (and not likely useful) PALcode assembly stubs.
more naturally in terms of way the OSF/1 PALcode delivers traps and
interrupts. Clean up fault/exception handling code and system entry
points. Seperate ASTs into a seperate C function.
unnecessary, and given that there's no reason to waste time and
add complexity in trap handlers. This means that code which sets and
uses the USP has to be a bit more careful, but that doesn't happen much.
containing a substruct (the hardware frame) and an array of registers,
treat it like one big array of registers, for easier and prettier
access. Update everything to deal with that.
Process Control Block
Interrupt/Exception/Syscall Stack Frame
Machine Check Error Summary Register
Machine Check Logout Area
clean up some, and add prototypes for all of the CPU instruction and
PALcode function stubs.
alpha_cpu.h, and this file is no longer necessary for the
Alpha. However, some machine-independent code (e.g.
/sys/compat/common/kern_exit_43.c) still wants a file with
this name to be around.
from the mach3 versions only as much as necessary to allow the old
NetBSD/Alpha pmap code to compile. THESE WILL NOT WORK AS-IS, and at
minimum will require code to implement reference- and modified-bit
emulation.
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.
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.
(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!)
>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.
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.
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.
documentation I have calls them, and update for new definitions in
sys/exec_ecoff.h. Also, fix ECOFF_SEGMENT_ALIGNMENT macro so that it
actually returns the right alignment.
handling code so that if a given interrupt is disabled (and therefore
can't have caused the actual I/O interrupt), its handler won't be
called even if its bit is set in the interrupt register.
reasons: it won't attach as console, and there's currently no way to do
keyboard input on TC machines), and has no real RAMDAC (colormap, cursor,
etc.) support. Digital UNIX does not support CFB frame buffers in the
Alpha, but they appear to work OK (with an appropriate monitor) in my
3000/300.
reasons: it won't attach as console, and there's currently no way to do
keyboard input on TC machines), and has no real RAMDAC (colormap,
cursor, etc.) support.
ioasic), and use those attributes to pull in appropriate files.
le_ioasic now has needs-flag, but le doesn't; the flag is only necessary
on systems configured with IOASIC-attached LANCE chips.
chip-independent clock code. 'clock' has been renamed 'mcclock' 'clock'
has been renamed 'mcclock' (since it's a driver for that particular
clock, and since eventually there may be another clock chip driver),
and now attaches via seperate match/attach functions to both TC and ISA.
This removes a whole lot of #ifdefs...
from the current apecs_pci.c. This new version hopefully works for
the same sets of devices that that previous one did, and hopefully
will work for multi-function devices and for secondary PCI busses as
well. (looking at the code, there was no way the old one could have!)