Commit Graph

27486 Commits

Author SHA1 Message Date
matthias 88b2c1662d Protect all defines in this file with #ifdef _KERNEL. At least the
definition of T_SLAVE will cause the bind build to fail. Thank's
to Phil Budne for noting this.
1999-01-15 07:42:48 +00:00
castor 4720afb463 Avoid introducing new prefix '__JB' -- '_JB' is fine. 1999-01-15 03:43:56 +00:00
castor e20f6d6203 * Elimination of UADDR/KERNELSTACK
Affected files:
	include/mips_param.h, include/pcb.h,
	mips/locore_mips1.S, mips/locore_mips3.S,
	mips/mips_machdep.c, mips/vm_machdep.c

   Issue:

So far, NetBSD/mips has not successfully got rid of fixed-address
kernel stack.  USPACE (two 4KB pages) of each process has two distinct
KSEG2 addresses, both refer to a single physical storage; one address
for fixed range [ UADDR .. KERNELSTACK ), and another for "normal" KSEG2
address which was allocated by kernel memory manager and unique to each
others of processes.

"Doubly mapped" USPACE complicates context switch.  Both address ranges
have to be managed with a special care of "wired" TLB entries which
are never replaced until next context switch to ensure no TLB miss for
USPACE access.  It's equally crumbersome that MIPS processor's cache
machinary gets be confused about USPACE contents because there are two
distinct KSEG2 addresses to manipulate one physical storage.

   Solution:

Purge KERNELSTACK constant for kernel stack pointer and replace
it with process unique values.  Kernel stack bottom is located at
'curproc->p_addr + USPACE'.  Context switch is simplified as it unloads
half of TLB hardwiring burden.  It just manages the unique KSEG2 address
of each USPACE to be wired.  As the side effect, switch_exit() has no
MIPS processor ISA dependent code anymore.  It switchs kernel stack to
proc0's USPACE which has KSEG0 address and no need of TLB entry.

* Extensive use of 'genassym.cf'

To hide target port dependent and/or processor register size dependent
constants from assembler routines, 'genassym.cf' now has an extentive
set of definitions for various constants and offset values of
structural objects.  This change will contribute possible NetBSD/mips64
portability too.

* Separation and rename of locore_r2000/_r4000.S

Those files are now indepedent standalones from locore.S to ease
maintainance works, and renamed to match MIPS processor ISA version.

* Changes in kernel mode exception handlers

Kernel mode exception handlers hold exception contexts by pushing a
certain set of register values on stack for resuming kernel mode
processing.  This context is now represented with 'struct trapframe',
which is smaller than full scale (user mode) exception context 'struct
frame'.  Stack consumption of kernel mode exception services is now
similar to 4.4BSD/mips.

* Relocation of exception frame

User mode context 'struct frame' is moved to the very bottom of kernel
stack at 'curproc->p_addr + USPACE - sizeof(struct frame)'  This change
saves a bit of instructions on every return to user processes as it
eliminates reference to global variable 'curpcb' each time.

* Refurblished DDB backtrace routine

It's a growing concern to maintain stacktrace() code correctly.  It
could be simplified by enforcing special arrangements for some of
obscure locore routines which violate usual coding conventions.

New backtrace code searchs for certain instructions peculiar to any of
function tails.  Specifically, "jr ra" for normal function returns, "jr
k0" for MIPS1 exception handlers and "eret" for MIPS3 handlers.

* Support for 64-bit safe user code
    Affected Files:
	${ARCH}/include/pubassym.cf lib/libc/arch/mips/gen/*setjmp*
	include/setjmp.h mips/include/[lots] mips/mips/[lots]

    Solution:

	We define macros REG_L/REG_S and SZREG for loading and storing
	registers and for the size of registers.  The exact meaning
	of these is controlled by a macro (currently _MIPS64) which
	allows one to treat the registers as either 32-bit or 64-bit.
	There are data types mips_reg_t and mips_fpreg_t which represent
	the true register sizes, and avoid confusing register_t.

	We needed a way to dynamically gen the structure sizes of things
	like sigcontext for setjmp.h, so we defined a pubassym.cf for
	libc routines like setjmp and longjmp.

	NetBSD/mips allows ${ARCH}'s to be defined which preserve
	all 64-bits of registers across user context switches.  There
	are still a few niceties to clean up for kernel mode context
	switches.

* Support for QED 52xx processors
    Affected Files:
	mips/locore_mips3.S mips/pmap.c include/locore.h

    Issue:
	The QED 52xx family of processors are targeted at low cost
	embedded systems, (i.e. CPUs ~$30) for systems like routers, printers,
	etc.  We have added preliminary support for some of the idiosyncrasies
	of this processor, e.g. no L2 cache, etc.  More work needs to be
	done here because with a modest 2-way  L1 cache, some of the rampant
	flushing has significant performance implications.  However,
	it doesn't crash, which is a start.

    Solution:
	A routine for flushing the cache based on virtual addresses was added;
	a routine which deals with the two-way set associativity of the
	5230 L1 cache was added, accomodations to 5230's instruction hazards
	were added.


* TLB Miss code for mips3/mips4 processors cleaned up significantly.
    Affected Files:
	mips/locore_mips3.S mips/vm_machdep.c include/locore.h mips_machdep.c
    Issue:
	The TLB Miss handler exceeded the allowed size, which wasn't
	a problem because there was no handler for when the processor
	was in 64-bit mode.  The handler for invalid TLB exceptions
	also appears to have much vestigial code, which made it
	difficult to understand.

    Solution:
	Use the XCONTEXT register to store a pointer to the segment
	map table, this coupled with removing some dead code allows
	the handlers to fit.
1999-01-15 01:23:12 +00:00
mrg bb4584ec40 look for /^Version:/ to find the boot block version, rather than using
the "version" file's RCS id (which is useless for branches).
1999-01-15 00:48:03 +00:00
pk 6a8119ff1d Sanity check from Matthias Drochner. 1999-01-15 00:26:24 +00:00
thorpej d8f3aefec7 Use M_RAIDFRAME. 1999-01-14 22:49:05 +00:00
thorpej 71242ada70 Add M_RAIDFRAME. 1999-01-14 22:38:41 +00:00
oster 4128f9df1e Duh... check that malloc() hasn't returned a NULL *before* we zero the buffer,
not after. Pointed out by Michael Graff.
1999-01-14 20:29:38 +00:00
castor a6f7b8ff0e Add defopt opt_mips_cache.h and allow 'clock' device to not require the mc6xx files 1999-01-14 18:51:31 +00:00
castor a84ec5a3c1 * Create mips_reg_t data type to allow register size to be
decoupled from long or int or long long.  Define macros in asm.h to facilitate
  choosing these on a port by port basis.

* Create <machine/pubassym.h> mechanism to allow jmp_buf structure size
  to be calculated at system build time.

* Define _MIPS_BSD_SIM macro which specifies what calling style is appropritae
  for the architecture.  For 64-bit oriented systems set the Status Register
  to allow 64-bit instructions.

* Remove UADDR related macros because kernel U structure is now mapped
  normally.
* Separate cpu.h into cpu.h and cpuarch.h to keep things neat.
* Add support for QED 52xx processors
1999-01-14 18:45:45 +00:00
jtk 77b1ebc172 fix gcc complaint about assignment in truth value 1999-01-14 15:00:38 +00:00
pk 0372e36e3f device_register: recognize `lebuffer' and `isp' as controllers. 1999-01-14 13:08:24 +00:00
drochner 5c38fcea53 map the new "reset emulator" function to CTL-ALT-Backspace
(what somehow matches the effect on X11)
1999-01-14 11:57:48 +00:00
drochner d90442b612 add a "reset terminal emulator" command pseudo-keysym and call the
corresponding callback if one is hit
1999-01-14 11:44:54 +00:00
drochner 624d9f505f -actually reset the terminal emulator on close()
-add a callback to reset the terminal emulator by keyboard command
1999-01-14 11:40:58 +00:00
ross 5709f532d1 Random compile nits in BHADEBUG code. 1999-01-14 04:47:18 +00:00
cgd ba831d2c43 update for present reality 1999-01-14 04:44:23 +00:00
cgd f3c3f37dc8 update for ed split 1999-01-14 04:26:46 +00:00
thorpej b29e386709 Domains are associated with protocol families, not address families. 1999-01-14 01:28:23 +00:00
thorpej 4b0e6bb4dc Domains are associated with protocol families, not address families. 1999-01-14 01:16:55 +00:00
thorpej 54cabada51 Garbage-collect some straggling netimp stuff. 1999-01-14 01:14:01 +00:00
sommerfe 465d57ee26 Commit fix from PR1623 1999-01-13 23:41:29 +00:00
sommerfe 114c430bbb Allow lkm's to include symbols for use by DDB. 1999-01-13 23:06:28 +00:00
thorpej 8f2d1414aa Pull in ip_ipip.c if ipip | mrouting, and use needs-flags instead of
needs-count.

XXX This generates an NMROUTING in ipip.h, too, but that's harmless.
1999-01-13 23:02:48 +00:00
thorpej 98d3903da8 Use the count supplied to the pseudo-device attach routine to dynamically
allocate (once) the ipip_softc array; don't assume NIPIP contains the count.
1999-01-13 23:01:20 +00:00
pk de7b3f5492 Add `bus_space_subregion()' which was curiously missing. 1999-01-13 20:48:40 +00:00
pk 53c6ccd94d Add `eccmemctl' entry. 1999-01-13 20:35:30 +00:00
augustss 14dff70fa3 Fix transpostion in translation table for XT scan codes. 1999-01-13 18:38:26 +00:00
drochner 23cfea8327 -implement new wscons font handling with separate download and selection
calls
-support use of 2 fonts simultanously; this costs the ability to
"highlight", ie to use the upper 8 colours
-define screen types "80x25bf" and "80x50bf" which use this ability
-add conditional code to deal with the weird mapping of pcvt's
supplemental fonts
1999-01-13 16:48:58 +00:00
drochner 58095dfd3b change the way fonts are handled: now we have a display-global ioctl
to download fonts and a per-screen call to select a font
allows easier sharing of ressources in the display driver
change the parameters to the load_font driver vector to pass all
available font information
1999-01-13 16:21:02 +00:00
drochner b50830062b export functions to reset the emulator and the character mappings 1999-01-13 15:38:30 +00:00
drochner 2bfadc6a8d add a hook for resetting the terminal emulator completely or partially 1999-01-13 15:30:59 +00:00
leo 7b74d44255 As Ignatios suggested:
Use CCB when dealing with a 68040 type MMU (for cache consistency).
1999-01-13 12:17:15 +00:00
christos e79b8222a6 Put back modem control ioctl's 1999-01-13 11:55:20 +00:00
augustss 79f94410b1 Back out previous fix and apply the patch from Nick Hibma the right way. 1999-01-13 10:33:53 +00:00
itohy cd16d23d21 Make it compile again.
Use err(3) functions.
KNF
1999-01-13 10:23:40 +00:00
augustss 8d6f121902 Fixes from Nick Hibma. 1999-01-13 10:08:59 +00:00
abs 1e21e1233b Change 'from from' to 'from' in some comments 1999-01-13 09:25:59 +00:00
tsubai 12d2afa11a Use KS_KEYCODE macro. 1999-01-13 08:13:41 +00:00
abs 4b0a936711 fix void arithmetic 1999-01-13 04:19:08 +00:00
wrstuden 872d72e705 In nullfs_mount, we need to check if error before VOP_UNLOCK(vp,0) as
vp is initialized iff error==0 in null_node_create.
1999-01-13 01:51:37 +00:00
augustss d0a7575025 More things to do. 1999-01-12 22:07:45 +00:00
augustss b8f2118f7c Fix Z axis buglet. 1999-01-12 22:06:48 +00:00
tsubai 3bc029b332 Add ``#include "akbd.h"''. 1999-01-12 15:12:44 +00:00
christos b62b5bc092 Make this compile again with -DDEBUG 1999-01-12 12:49:53 +00:00
tsubai 5998caa414 Support irq > 31.
XXX dirty hack...
1999-01-12 12:06:46 +00:00
tsubai c2bb308ef9 Use (fast!) dcbz asm instruction in pmap_zero_page(). 1999-01-12 11:03:04 +00:00
tsubai bb426487a5 Move MSGBUFSIZE from machdep.c to param.h
Use the last page for msgbuf instead of fixed MSGBUFADDR.
1999-01-12 10:51:40 +00:00
tsubai 90a73bba2c Always use polling when poweroff/restart. 1999-01-12 10:38:00 +00:00
tsubai 4293e4ff3c Use the last available page(s) for msgbuf. 1999-01-12 10:26:18 +00:00
kleink 22fc60a59a Separate the userland and libsa errno declarations from <sys/errno.h> into
their canonical places.
1999-01-12 03:08:14 +00:00
kleink a9b05361c1 Avoid arithmetic on void *. 1999-01-12 02:28:55 +00:00
kleink 4ff7b1f346 Add symbolic names for the sys_context() subcodes. 1999-01-12 02:09:18 +00:00
thorpej 0272b2ab8e Whole lotta cleanup wrt. how configuration data is stored internally, and
just lockmgr(), not our home-grown locking functions.
1999-01-12 00:21:47 +00:00
kleink bb6c814341 If a null pointer argument is passed to setcontext(), exit the process; it
would appear that overloading the argument this way is used by SVR4 to `fall
off' the main context (uc_link being NULL) after a function set up using
makecontext() returns.
1999-01-12 00:16:40 +00:00
augustss 76b8bd8961 Add a (partial) list of what's left to do. 1999-01-11 22:46:51 +00:00
tron edd69ba694 Because memory mapped access doesn't fail only with the docking station
for the TI TravelMate 5000 but also with at least one Compaq NIC we
prefer I/O mapped access again. Fixes PR kern/6690.
1999-01-11 22:45:41 +00:00
thorpej 555784ccd5 Fix byte order and ip_len inconsistencies in ICMP reply code. Also, fix
some formatting and HTONS(foo) vs. foo = htons(foo) inconsistencies.

PR #6602, Darren Reed.
1999-01-11 22:35:06 +00:00
kleink 657d577aeb Pull in <errno.h> instead of <sys/errno.h> for declaration of errno. 1999-01-11 22:21:30 +00:00
thorpej 67e9d2a3bf Fix a few glitches in the nwscons tga driver, PR #6655, Brett Slager. 1999-01-11 22:11:36 +00:00
thorpej ae8a556ce5 Add missing XS_SELTIMEOUT case in user command completion path, returning
SCCMD_TIMEOUT.  Based on PR #6720, Andreas Wrede.
1999-01-11 22:07:08 +00:00
drochner 35eeb3f1cd remove dummy "load_font" entries 1999-01-11 21:54:22 +00:00
drochner 1eba733d91 remove dummy "load_font" entries 1999-01-11 21:35:54 +00:00
thorpej e6d404b372 Add declarations for the `ipip' network pesudo-device, which implements
IP-in-IP tunnels.
1999-01-11 21:33:02 +00:00
thorpej 6ae68b4feb Pull the IP-in-IP tunneling support out of the GRE code. It's not handled
by a separate IP-IP input path.

XXX Should eventually do the same thing for IPPROTO_MOBILE.
1999-01-11 21:32:13 +00:00
thorpej 9508f259bf Adjust for the new IP-IP input path. mrt_ipip_input() is called from
ipip_input(), and returns non-zero if mrt_ipip_input() handled the
packet.

XXX Eventually, the multicast code should probably use regular IP-IP
XXX `interfaces', but mrouted knows about the VIF table, etc.
1999-01-11 21:31:03 +00:00
thorpej 9d996b9e4e Adjust for the new IP-IP input path. 1999-01-11 21:28:28 +00:00
thorpej 9f9be750f6 Separate out the IP-in-IP implementation from the GRE code. This cleans
up the interface to ip_mroute.c somewhat, and properly separates IP-IP
from GRE.  (They are similar, but they are different protocols, and should
not be implemented in the same place.)
1999-01-11 21:26:53 +00:00
thorpej 8406f65cbf Use a pool for pmap structures. 1999-01-11 20:58:46 +00:00
drochner 33b1cd5328 Oops, "square root" is Unicode 221a, not 211a! 1999-01-11 20:48:10 +00:00
drochner 2379551296 add 2bpp support, for sake of NeXT monochrome displays, from
matt debergalis <deberg@mit.edu> KB1CTH per PR kern/6741 and kern/6786,
minimally corrected
1999-01-11 11:08:14 +00:00
christos e0c19ac888 We cannot relocate our interpreter (yet). 1999-01-11 11:02:50 +00:00
christos e293d1bc34 Add ELF crap. 1999-01-11 11:02:16 +00:00
tsubai c91ac313c1 Count clock interrupts. 1999-01-11 09:44:51 +00:00
tsubai 477add6bea Add irq32 - irq63 to intrnames. 1999-01-11 08:49:58 +00:00
eeh 39553be254 Finally fixed 64-bit signal trampoline. 1999-01-11 06:43:51 +00:00
eeh 1609884456 Handle the symbol table properly in a 32-bit kernel that was booted from a
64-bit bootloader.
1999-01-10 23:35:08 +00:00
eeh 9c06e4a454 Need to put IGN in SBUS slot interrupt vectors as well. (From Kapil Chowksey) 1999-01-10 23:32:57 +00:00
scottr c6be16c55a Parenthesize a few expressions uncovered by -Wpointer-arith. 1999-01-10 22:52:55 +00:00
nathanw d2f4d39a08 wskbd, not wskbs. 1999-01-10 22:51:46 +00:00
augustss 5c5590465e Avoid `void *' arithmetic. Fixes PR 6783. 1999-01-10 21:57:19 +00:00
tron 3fbb44a7bb Make MTIOCRDSPOS, MTIOCSLOCATE, etc. work with write protected tapes.
Patch supplied by Dave Huang in PR kern/5305.
1999-01-10 21:46:39 +00:00
eeh b5932bbc0a Support little-endian bus mappings. 1999-01-10 19:37:47 +00:00
is 4d5a26ba82 Make this compile again. 1.5 was committed from the wrong directory.
We apologize for any inconvenience caused.
1999-01-10 19:19:57 +00:00
augustss f963dc8ddb Some minor updates from FreeBSD. 1999-01-10 19:13:15 +00:00
augustss af7f630631 Some patches from FreeBSD. 1999-01-10 18:42:10 +00:00
augustss ebd59cb48c Make sure to check the modifier map for the windows keys. 1999-01-10 18:36:57 +00:00
augustss c437dc4229 Remove redundant test if the unit numbers is in range. 1999-01-10 18:22:14 +00:00
augustss d47a7fb7e0 Rename the "windows" keys and add the new keys to the keyboard maps. 1999-01-10 16:56:35 +00:00
augustss 17570494a7 Add back a line that was lost somehow. 1999-01-10 16:38:54 +00:00
tron f7f56f986f Revert last changes:
Because "linux_ipccall.h" cannot be included before "sys/shm.h" and
"sys/shm.h" needs to be included after "opt_sysv.h" include "opt_sysv.h"
in "linux_ipccall.c" again.
1999-01-10 15:05:36 +00:00
mrg 7054d69a2a KNF nits i have sat on for too long. 1999-01-10 15:01:32 +00:00
mrg 17823d385b KNF nits i have sat on for too long. 1999-01-10 14:41:45 +00:00
drochner 9b1eddc4f1 - Set up the interface watchdog timer on sends. This fixes the hangups
reported by Matthias Scheler <tron@lyssa.owl.de> in PR kern/6772.
- After receiving, check whether the receive DMA pointer became 0
  what obviously happens if the list runs out of entries. Simply reinit
  in this case. This fixes receive lockups after DDB use observed
  by myself.
  Unstall the receive engine if the ELINK_UPPKTSTATUS indicates that it
  was stalled. (Don't know when this might happen. FreeBSD does so.)
1999-01-10 14:19:46 +00:00
mrg d1f3239be8 bump size of miniroot 1999-01-10 13:40:30 +00:00
tron 560ed63047 Don't use void pointer for arithmetic. 1999-01-10 13:35:39 +00:00
tron 738cd778b3 Don't use void pointer for arithmetic. 1999-01-10 13:24:11 +00:00
tron 72a366c304 Don't use void pointer for arithmetic. 1999-01-10 13:22:05 +00:00
augustss 851c51418d Add definitions for Pause and Print_Screen keys.
(Why were these keys missing?  Or am I missing something obvious here?)
1999-01-10 13:20:41 +00:00
drochner a15a03eff2 Since ukbd has an own map, this file is not needed anymore. 1999-01-10 13:20:21 +00:00