Commit Graph

12192 Commits

Author SHA1 Message Date
cgd
06c209646e handle the case where kmem_malloc() returns NULL in the 'can wait' case.
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.
1996-06-13 16:53:34 +00:00
cgd
62034405e6 allow kmem_malloc to return NULL if canwait is set and there's no map space
left, rather than panic()ing.  This allows callers to set their own policy
for how to handle the shortage.  Add a few comments.
1996-06-13 16:52:06 +00:00
jonathan
7adf57b6f5 Fix the reworked autoconfiguration to also boot on a 5000/200.
Check and avoid trying to configure (or dereference unknown arguments
to dcattach() and dcmatch() when called with busses the driver doesn't support.
1996-06-13 08:06:12 +00:00
cgd
f41d0a3d9b in select(), if it's a small number of file descriptors use a
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.)
1996-06-13 05:08:47 +00:00
cgd
d97900c6f4 boot device autodetection, using PROM's boot device environment variable.
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.
1996-06-13 04:53:47 +00:00
cgd
1e2b610d5a #ifdef __alpha__, call a machine-dependent function with new device
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.
1996-06-13 04:50:29 +00:00
cgd
3a7c6bd270 note that the DEC 21000 isn't supported in the same way as for the 2000/300 1996-06-13 00:28:59 +00:00
cgd
b26a6f1d3d We'd like to differentiate case for kernel boot flags, but the Alpha AXP
Architecture Reference Manual says that we shouldn't.  'a' is now back
to ~RB_SINGLE, and 'n' and 'N' now get RB_ASKNAME.
1996-06-13 00:24:52 +00:00
pk
fbc5fd1fca Bound the buffer cache to 1/2 of kernel virtual memory, so machines with
lots of core don't run out of core (takes care of PR#2506).
1996-06-12 23:48:51 +00:00
pk
5ce90889f0 Remove unneeded header file. 1996-06-12 23:40:29 +00:00
cgd
a59ba05045 don't pass "argc," "argv," and "envp" from boot blocks to kernel;
they're unnecessary and there's no reason to use them.  Have the
kernel get necessary values from the PROM directly.
1996-06-12 22:11:28 +00:00
cgd
3b3f71fb25 don't pass the firmware's console environment variable to the various console
initialization functions any more.  None of them used it, and they can
get the same data more easily via the RPB.
1996-06-12 22:06:40 +00:00
cgd
f6d4b1367d null-terminate strings returned by prom_getenv() 1996-06-12 21:59:52 +00:00
mark
31c4f7d574 Only read beyond the first byte of the podule header if we know that
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.
1996-06-12 21:09:55 +00:00
mark
857439698b Claim the interrupt when leaving the interrupt handler as there can
only ever be a owner of the netslot interrupt.
Don't declare ebintr() as static.
1996-06-12 21:01:56 +00:00
mark
27ab616466 Don't claim the podule interrupts but pass them on in case of
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.
1996-06-12 20:59:10 +00:00
mark
4dd0dabfca Don't claim the podule interrupts but pass them on in case of
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.
1996-06-12 20:46:58 +00:00
mark
e5aad86168 Allow the mouse interrupt to be specified in the config file. Fall
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.
1996-06-12 20:30:59 +00:00
mark
7d688793a8 Claim the interrupt if it has been dealt with otherwise pass it on. 1996-06-12 20:28:29 +00:00
mark
08ec43427f Added some sanity checks to irq_claim().
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.
1996-06-12 20:23:58 +00:00
is
51e832dc49 Fix a few off-by-one errors in bitnumbers used by print_fcode.
ptestX fc,<ea>,M used to be printed with the wrong semantics of the fc
field, and could panic the kernel if fc was interpreted as a register number.
1996-06-12 20:22:42 +00:00
mark
459cefbe67 Added support for the RC7500 interrupt registers
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.
1996-06-12 20:19:35 +00:00
mark
1fd9b6f37c Removed some dead code that could never get executed (followed a panic).
Updated several panic messages to indicate what part of the fault code
they came from.
1996-06-12 20:15:28 +00:00
mark
977f90bd3b Removed copyin()/copyout() stub code.
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.
1996-06-12 20:12:04 +00:00
mark
47c523fff0 Spilt the copyinout() function into two separate functions copyin()
and copyout() so that the address space checks are done here rather than
in a bit of stub code.
1996-06-12 20:06:00 +00:00
mark
7b05ce2841 Updated to match changes in the irq handler structure.
Define symbols for the address space limits that copyin() and copyout()
compare against.
1996-06-12 20:02:42 +00:00
mark
13ff05d513 Don't claim the interrupts in hardclock() and statclock() but allow
them to be passed on to other interrupt handlers attached to the
timer interrupts.
1996-06-12 20:00:21 +00:00
mark
b8dfbd8fe6 Don't use signed compares when determining the copy direction. 1996-06-12 19:58:43 +00:00
mark
120210258e Added a new machine command intrchain to dump the interupt handler
chains.
1996-06-12 19:57:06 +00:00
mark
8f541bdd1d Added a couple of comments.
Defined VM_MAXKERN_ADDRESS as the maximum address for the kernel address
argument to copyin() and copyout().
1996-06-12 19:55:04 +00:00
mark
78d05630aa Define insl() and outsl() as macros that currently just panic for the
moment.
1996-06-12 19:50:14 +00:00
mark
167d543662 Define several new macros for testing the processor mode. 1996-06-12 19:48:48 +00:00
mark
544631c0be Guard structures and prototypes with #ifndef _LOCORE
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.
1996-06-12 19:47:11 +00:00
mark
4d280731dd Updated comments.
Print the irq masks for IPL_NONE.
1996-06-12 19:42:23 +00:00
mark
1f81e394d6 Only check the proc pointer in userret() if DIAGNOSTIC is defined. 1996-06-12 19:40:48 +00:00
mark
d4a21812c0 Updated the arm_fpe_boot() prototype. 1996-06-12 19:37:37 +00:00
mark
bbf3f35a4c Pass the cpu structure to the FPE boot function so that the FPU class
and type can be updated if a FPA is detected.
1996-06-12 19:37:03 +00:00
mark
d9d6f7f246 RCS Id police. 1996-06-12 19:24:19 +00:00
mark
3ed835cae8 Only attach 1 VSYNC interrupt handler instead of a interrupt handler per
virtual console.
1996-06-12 19:12:57 +00:00
pk
2266b8dd57 Use the setting of the ESPCFG2_FE bit rather than revision number to decide
on the ESP chip's maximum transfer count.
1996-06-12 19:12:19 +00:00
cgd
5006cfa9ac remove old, unused, framework for boot device detection. It's going
to be replaced by something new and working.
1996-06-12 19:00:17 +00:00
pk
d16dcebba7 Add signature for the Fujitsu MB86904 processor. 1996-06-12 18:39:15 +00:00
pk
f87e51fb6b Turn on RB_ASKNAME if a `swap generic' kernel was not able to determine
the boot device. Also, call boot device hooks for all types of kernel
configurations.

Print "mainbus" name on sun4m machines.
1996-06-12 15:24:05 +00:00
pk
4dd7cb4f5c Use ic_*' cacheinfo fields, and in the split-I&D case, derive c_linesize[l2]'
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.
1996-06-12 14:57:03 +00:00
pk
52d6871979 Use ic_*' cacheinfo fields, and in the split-I&D case, derive c_linesize[l2]'
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.
1996-06-12 14:56:09 +00:00
pk
6281105c8f Introduce separate ic_* fields for instruction caches. 1996-06-12 14:47:45 +00:00
pk
6a4a26da0c Correct test for dmachild' which failed on esp at obio*' configs (PR#2541). 1996-06-12 12:46:21 +00:00
oki
add137e8e1 fixed sometimes hang up bug at boot time. 1996-06-12 12:09:30 +00:00
cgd
e1078396e5 copy down from libkern:
>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.
1996-06-12 04:16:53 +00:00
cgd
eef7b263f1 remove GENERIC_NFS, because:
(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.
1996-06-12 02:00:10 +00:00