Commit Graph

919 Commits

Author SHA1 Message Date
castor a7c11f272e Copy previous fix for TLB miss routine to XTLB miss routine to avoid
processor-dependent behavior in 32-bit ops on 64-bit operands.
1999-01-29 16:10:06 +00:00
nisimura aa68b32c4f - Forgot to replace a stub of 'eret' instruction with correct value. 1999-01-29 02:18:42 +00:00
mhitch ae4fe46357 Fix the TLBMiss handler to not use an undefined operation (32 bit operation
on 64 bit register that's not correctly signed extended.  The R4x00 support
works again on DECstations.  A similar change to the XTLBMiss handler probably
needs to be made, but I have not done that since I am unable to test any
changes to that.
Also re-order a couple of instructions to allow for delay with mfc0.
1999-01-28 18:37:02 +00:00
nisimura 8c3b908f26 - Restore descriptive comments lost in the last commit.
- XXX Put a note that local DDB command 'trapdump' is not available. XXX
1999-01-28 05:52:06 +00:00
mycroft 897a8a7f29 Mark [hn]to[nh][ls]() with __const__, so they are subject to CSE. 1999-01-24 12:55:01 +00:00
nisimura 7766b60f7c - Add NEC Vr5400 processor ID. 1999-01-23 06:13:30 +00:00
mycroft 7497ccd364 Clean up. 1999-01-22 14:19:54 +00:00
mycroft ec253b6315 Use __builtin_next_arg(). Fixed PR 6862. 1999-01-22 14:14:32 +00:00
thorpej 2fb041ce0a No need for <sys/mtio.h> 1999-01-19 18:18:41 +00:00
castor de42f91db3 Forgot to also ship out regnum.h 1999-01-18 04:59:54 +00:00
nisimura 3478ed1de4 - Nuke 90 lines of dead code inherited from 4.4BSD. They were mostly for
VAX BSD VM.
1999-01-18 03:48:34 +00:00
castor 4e216f5744 Remove vestiges of cpuarch.h. Revert to using cpuregs.h instead. 1999-01-18 02:11:07 +00:00
chuck 417e5339f0 MNN is no longer optional 1999-01-16 20:31:50 +00:00
nisimura f3b48dd536 - Restore 'cpuregs.h'. 1999-01-16 09:25:18 +00:00
nisimura d9b9f639e6 - Update 'cpuregs.h' and decline 'cpuarch.h'. 1999-01-16 09:07:37 +00:00
nisimura 6119939f5a - Restore 'cpuregs.h'. 1999-01-16 08:51:04 +00:00
nisimura b6cc76ac91 - Never use an uninitialized variable. 1999-01-16 08:48:06 +00:00
nisimura 25806f2bf5 - Make cpu_switch() a normal call; formally it was splitted into halves.
- Fix an error in mips3_cpu_switch_resume(); ASID was not set correctly.
- Remove global variable 'curpcb' reference in mips1_proc_trampoline().
- Restore 'cpuregs.h'.
1999-01-16 08:45:53 +00:00
nisimura f163b5653f - Replace the stub value of 'eret' instruction with correct one. 1999-01-16 03:44:42 +00:00
nisimura f4b56d8060 - Clarify how inimplemented FP instruction traps are handled. 1999-01-16 03:31:49 +00:00
nisimura d077749e8f - Fix errors involving proc0's kernel stack usage. Fortunately it made
no error so far...
1999-01-16 03:17:06 +00:00
nisimura 7dce3ef311 - User mode context held with pcb_regs[38] in 'struct pcb' was relocated
at the very bottom of process kernel stack.   The address is pointed with
'curproc->p_md.md_regs'.
- Define 'struct md_coredump'.
1999-01-16 03:12:18 +00:00
thorpej f52ee598ae __pmax__ -> pmax, __arc__ -> arc, like other ports. 1999-01-15 23:35:54 +00:00
castor 48cbfb842a * Add prototype for mips1_clean_tlb
* Add the correct version of locore_mips1.S [ See previous revision for
	description of changes ]
* Use defopt'ed MIPS3_L2CACHE_ABSENT in mips_machdep.c and pmap.c
	to avoid generating extraneous code.
* GC pmap_set_referenced in pmap.c
1999-01-15 22:26:42 +00:00
bouyer dc306354b0 Move the bswap functions from libutil to libc (this bups the
minor of libc and the major of libutil). For little-endian architectures
merge the bnswap() assembly versions with nto* and hton* using symbols
aliasing. Use symbol renaming for the bswap function in this case to avoid
namespace pollution.
Declare bswap* in machine/bswap.h, not machine/endian.h. For little-endian
machines, common code for inline macros go in machine/byte_swap.h
Sync libkern with libc.
Adjust #include in kernel sources for machine/bswap.h.
1999-01-15 13:31:15 +00:00
castor 534c67a373 Protect defopt against -D_LKM 1999-01-15 10:07:12 +00:00
castor 84915f67d7 Fix typo in mips3_ConfigCache() -- mips3_L2CachePresent 1999-01-15 09:58:43 +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
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
nisimura 6ebba254e7 - Put comments on several DDB helper routines. 1999-01-07 00:36:09 +00:00
nisimura 858e67e157 - Complete vm_offset_t purge for mips processor.
- bzero() -> memset() and bcopy() -> memcpy().
- Garbage collection in trap.c and db_interface.c.
1999-01-06 04:11:25 +00:00
nisimura fe061a7ae4 - Eliminate dead code in TLB miss handler. Fortunately it has never been
executed.  Once execunted, the result would be castrophic because it has
addressing error.
1998-12-28 00:31:03 +00:00
msaitoh 7c25d335bf s/are are/are/ 1998-12-25 16:52:10 +00:00
nisimura 14b18ffcb5 - Remove improper casts mistakenly creeped in the last commit. 1998-12-07 04:21:57 +00:00
jonathan 340efce0ea Track PV_REFERENCED bit as for PV_MODIFIED, to make mdsetimage work correctly.
Compatiblity with Mach VM: clear pmap-private bits in pmap_remove() if !UVM.
1998-12-05 09:13:09 +00:00
jonathan aecf708ee3 Clean up kernel PTE allocation. Allocate space for maxproc kernel stacks.
Bump UVM swap-map to avoid panics on large swap machines.
1998-12-05 07:50:12 +00:00
jonathan ea1aa3511c #ifdef _KERNEL around cpu_exec_ecoff_setregs() prototype. 1998-12-05 07:26:11 +00:00
nisimura 75ff38a27d - Fix an error in primary cache line size detection logic; when IC and/or DC
bit is 1, then line size is 32.  Otherwise, 16.
1998-12-04 10:32:08 +00:00
nisimura 9f33638436 - Fix and improve confusing indentations inside trap().
- Don't make a reference of curproc when it has NULL value.  It causes
double fault upon a fatal panic ocation.
- Macro FETCH_INSTRUCTION() took a value of address 0.
-
1998-12-04 04:35:44 +00:00
nisimura 3c6a704193 - Use explicite structure member reference with 'struct frame' to alter
register values of exception frame pointed with p->p_md.md_regs.
- Local auto variable 'cpustate' in cpu_coredump() was never used correctly.
1998-12-03 06:28:45 +00:00
thorpej a6f7e0c05a Implement WARN_REFERENCES(). 1998-12-02 00:58:42 +00:00
jonathan 7d813b16c3 Add PV_REFERENCED and track as for PV_MODIFIED,.
UVM relies on pmap modules keeping track of modified/referenced bits
after a page has been removed from all mappings.  So *dont* clear
PV_REFERENCED or PV_MODIFIED flags in pmap_remove().
1998-11-29 03:18:32 +00:00
thorpej e3e5bd6220 Erg, fix the non-error code path, too. 1998-11-26 21:16:08 +00:00
thorpej e328e13450 Oops, in some delay slot confusion, I ended up clobbering s0 before it
restored pcb_onfault.  Make it the way I wrote it originally, which was
correct.  Pointed out by Michael Hitch and Charles Hannum.
1998-11-26 20:52:45 +00:00
nisimura 53ac67d9b1 - Fix two bugs; inst_call() is supposed to check OP_SPECIAL opcode with
either OP_JR function code or *OP_JALR* function code (not OP_JAL opcode).
insn_unconditional_flow_transfer() was to read an unintialized variable.
Those MD DDB routines seems not useful work so far.
1998-11-25 01:14:48 +00:00
mrg db3051d720 fix problems in many d_mmap routines:
- returned EOPNOTSUPP rather than -1.
	- no check for negative offset.
many of these fix potential security problems in these drivers.


XXX XXX XXX
the d_mmap cdev routine should be changed to have a prototype like:
	paddr_t (*d_mmap) __P((dev_t, off_t, int));

by someone!
1998-11-19 15:38:20 +00:00
mhitch 549407b634 Change page modification emulation: don't fiddle with VM flags directly.
Track page modification status in the PV entry like the alpha, and let
pmap_is_modified() return current status back to the VM system.  UVM now
works reliably.

Garbage collect the old pmap_attribute[] stuff.
1998-11-15 02:34:19 +00:00
thorpej 49c62c4336 Changes to support fork_kthread():
- cpu_set_kpc() now takes void *arg third argument, passed to the
  entry point.
- cpu_fork() allows parent to be non-curproc iff parent is proc0.
  When forking non-curproc, assume its state has already been saved.
- Adjust various pieces of machine-dependent code to account of all of this.
1998-11-11 06:41:23 +00:00
nisimura 8ed3c420dc - Withdraw a duplicated file. This has never been a part of distribution. 1998-11-11 05:00:42 +00:00
simonb 67f74ebee4 Implement the new BUFCACHE option. 1998-11-02 07:43:37 +00:00
jonathan 558bc32937 Add missing braces pointed out by egcs. 1998-10-28 04:28:32 +00:00
jonathan dd735283c1 Add `struct proc;' to keep egcs warnings happy in userland.
XXX why are kernel prototypes visible here at all?
1998-10-28 04:26:52 +00:00
jonathan 04062f718c Cleanup kdbpeek() definition as noted in PR port-mips/5252. 1998-10-24 01:36:09 +00:00
jonathan e68e8297d2 Fix stacktrace alignment, in case of 64-bit stores into stackframes.
From pr port-mips/5536 from Castor Fu <castor@geocast.com>
1998-10-24 01:14:26 +00:00
tron b296275bb4 Defopt SYSVMSG, SYSVSEM and SYSVSHM. 1998-10-19 22:09:13 +00:00
drochner eaafa2dbd1 Zero-initialize the initial u-area. This cures the "random process killed
by SIGPROF or SIGVTALRM" syndrome.
1998-10-18 22:00:17 +00:00
nisimura 8778509c45 * Make cpu_identify() routine table-driven.
* MIPS3 sanity check now allow MIPS1 models to boot.
1998-10-05 05:26:00 +00:00
drochner 18a5d4ffc6 set up old style sigmask on COMPAT_ULTRIX too 1998-10-02 18:59:56 +00:00
drochner 5bcf824ff0 change debugging output in compat_13_sigreturn to distinguish from native
sigreturn
1998-10-02 18:49:00 +00:00
drochner a366b483ec compat_13_sigreturn is needed for compat_ultrix too 1998-10-02 18:46:58 +00:00
drochner 4345019cc0 implement a separate ultrix_sigcode[] 1998-10-02 18:44:32 +00:00
jonathan 379c9be4a8 More patches for ARC from Noriyuki Soda:
* commit isapnpvar.h changes required for ARC to support plain isa.
  * fixup mistake over mips/include/cpuregs.h.
  * mips/mips_machdep.c:
     set L2 cache-size for arc, cleanup use of L2cache present
     vs L2 cache-size variables. check for no L2 cache on kernels
     configured to require one. misc cleanups.
  * mips/mpis/trap.c: more locore stack-traceback  label cleanup.
XXX  Locore callbacks for mips3, mips4, r4600 cacheflush need more work.
1998-10-01 00:42:37 +00:00
drochner 87fab23d68 make it compile with DEBUG 1998-09-26 10:07:36 +00:00
nisimura b356238b16 Add one more new MIPS processor PRid 0x30 for IDT RC64474/64475. These
are successors of RC4640/RC4650, but fully brewed MIPS, then capable of
running NetBSD/mips.
1998-09-26 08:16:38 +00:00
nisimura 3da75bb55d Update the list of MIPS processor revision ID. PRids of Toshiba TX3900
and QED R4650 comflict each other.
1998-09-26 03:29:37 +00:00
thorpej 3d4e54f11f Need 87 longs for a jmp_buf now (we use sigcontext, which grew). 1998-09-16 23:15:08 +00:00
jonathan 0b09668693 Fix typos in signal rework (sc.regs -> sc-regs, rege -> regs). 1998-09-14 07:04:06 +00:00
thorpej cbfc257eda sigset13_t -> int. 1998-09-14 02:48:33 +00:00
mycroft fa31b94af9 Fix omission in previous; remember to record that we're on the signal stack. 1998-09-13 11:57:58 +00:00
thorpej 4a797b8f45 Make signal delivery work again. 1998-09-13 10:29:02 +00:00
jonathan 008816ea4f Changes to sys/arch/mips from ARC port, from Noriyuki Soda <soda@sra.co.jp>.
Adds (most) support for ARC platform to port-independent mips code.

Some changes (e.g., clean up of overlapping CPU/FPU ids) inspired by
comparison to the OpenBSD 2.1 codebase of Soda's ARC port.

Open issues:
 * Still no support for r4600 or mipsIV CPUs with two-way L1 cache.
   Code derived from Per Fogelstrom's OpenBSD source  doesn't work
   on mips3 pmaxes with L2 cache.

 * Still some port-specific  #ifdefs, for interrupt enable and
   pmax L2 cache-size.  Needs more thought, but overlaps with
   work-in-progress by Tohru and Tsubai on spl()s and related stuff.
1998-09-11 16:46:31 +00:00
thorpej 70e641047c In cpu_coredump(), use MID_MACHINE rather than MID_* (whatever it expands
to).
1998-09-09 11:17:24 +00:00
thorpej 8abe0d6b1c Adjust for the new "reaper" kernel thread: do not free the vmspace and
u-area in machine-dependent code.  Instead, call exit2() to schedule
the reaper to free them for us, once it is safe to do so (i.e. we are
no longer running on the dead proc's vmspace and stack).
1998-09-09 00:07:48 +00:00
nisimura c6a0c2d34c Added more MIPS processor IDs. 1998-09-07 06:32:18 +00:00
christos 50909bd6d9 Assign copyright to TNF. 1998-09-05 15:28:08 +00:00
nisimura e71752d621 An include file describes MIPS processor hardware nature, which will
supercedes cpuregs.h eventually.
1998-09-03 05:09:37 +00:00
nisimura 78aedb2cd3 - kernel boot flag 'd' now means "enter DDB asap" like as other ports.
- bump cpu_model[] length as the longest name occupies over 30 characters.
- place machine_arch[] beside machine[] for clearity.
- nuke useless #include directives.
- small scale cleanup in vm_machdep.c
1998-09-02 06:41:22 +00:00
mrg ba1bba6844 register -> int (also fixes egcs warning). minor KNF nit. 1998-08-29 16:13:33 +00:00
nisimura e37ce1c5b6 Make spl(9) rountines target port dependent. delay() is also port
dependent anticipating a target with high resolution timer available
for on-the-fly re-programming.  Enum decstation_t was removed from MI
trap.c.
1998-08-25 01:55:38 +00:00
eeh a2dd74ed79 Merge paddr_t changes into the main branch. 1998-08-13 02:10:37 +00:00
kleink 546365a27e _POSIX_SOURCE -> _POSIX_C_SOURCE 1998-08-06 11:25:04 +00:00
mycroft a24dbc8065 (Always) (practice) (safe) (macro expansion). 1998-07-31 15:07:41 +00:00
thorpej 37b70b3064 Change the "aresid" argument of vn_rdwr() from an int * to a size_t *,
to match the new uio_resid type.
1998-07-28 21:39:54 +00:00
thorpej 3ff8e6493a Don't cast the null residual pointer passed to vn_rdwr(). 1998-07-28 18:34:52 +00:00
mycroft da2e61d160 Delint. 1998-07-27 13:55:32 +00:00
simonb a211774da1 Fix typo with new poolpage stuff 1998-07-26 10:15:36 +00:00
thorpej 260b2a20f2 Provide PMAP_{,UN}MAP_POOLPAGE(). 1998-07-24 22:03:33 +00:00
jonathan d2ddbe58a2 Add empty opt_cputype.h to satisfy changes committed during
defopt'ing of network options.
1998-07-15 23:57:04 +00:00
mhitch 1143e585fc PS -> SR: PS as alias to SR was removed due to conflict with other usage. 1998-07-14 03:19:17 +00:00
jonathan b37021c1a1 defopt NATM. 1998-07-05 22:48:05 +00:00
jonathan d275e56dee * defopt COMPAT_{09,10,11,12,13} and COMPAT_NOMID.
TODO: revisit interaction between native compat and emul compat usage.
1998-07-05 08:49:30 +00:00
jonathan 011f2bda08 defopt NS, NSIP. 1998-07-05 06:49:00 +00:00
jonathan 5c0c5dd0b4 defopt ISO TPIP. 1998-07-05 04:37:35 +00:00
jonathan 5b64a1fc00 "PS" alias for "SR" clashes with netccitt/pk.h. ifdef out. 1998-07-05 04:14:56 +00:00
jonathan 2670278a47 _inqsue and _remque are used by ccitt and iso networking code:
Add #ifdefs to enable them.  (compiles and links, but untested.)
1998-07-05 02:10:14 +00:00
jonathan 3751946b97 defopt INET, NETATALK. 1998-07-05 00:51:04 +00:00
jonathan 466e784ee1 defopt DDB. 1998-07-04 22:18:13 +00:00
thorpej 816e12eac2 defopt COMPAT_SVR4 1998-06-26 00:07:06 +00:00
thorpej 21592147a1 defopt COMPAT_ULTRIX 1998-06-25 23:27:56 +00:00
thorpej c466f11939 defopt COMPAT_LINUX 1998-06-25 23:18:23 +00:00
thorpej 971b8956ef defopt KTRACE 1998-06-25 21:18:11 +00:00
kleink 1fbd0b3749 GC the unused `physadr' type, which was not able to hold a complete physical
address on 2 architectures anyhow.  Also, move the definition of the `label_t'
type inside _KERNEL protection, since it is specific to the in-kernel
setjmp()/longjmp() implementations.
1998-06-14 20:09:22 +00:00
cgd 651b44e211 Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install.  (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.)  The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change.  Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
1998-06-12 23:22:30 +00:00
kleink 967614df34 Protect against multiple inclusions. 1998-05-25 21:00:32 +00:00
kleink a97fc2f180 If any of _ANSI_SOURCE, _POSIX_C_SOURCE or _XOPEN_SOURCE are defined, don't
provide any identifiers other than sig_atomic_t.
1998-05-25 20:59:01 +00:00
thorpej 6626878e7b It is no longer necessary for pmap_pinit() and pmap_release() to be
pmap interface functions, as NetBSD no longer uses statically allocated
pmaps (except for the kernel pmap, which is special-cased anyhow).
1998-05-19 19:00:11 +00:00
simonb 9b60278e42 Change external declaration of kdbpeek to match reality. 1998-05-19 04:11:50 +00:00
kleink 687ea7404c Fix some arithmetics lossage on typeless pointers. 1998-05-08 16:55:15 +00:00
kleink aa36ad1f55 Fix some arithmetics lossage on typeless pointers. 1998-05-07 21:01:41 +00:00
mhitch 8c45fef21f When changing the mapping on a page, remove the previous mapping if
there is one.  The Mach VM system seems to take care of this, so it
hasn't knowingly caused a problem.  UVM does change mappings without
removing the current mapping, and will pmap_page_protect() hangs
if pmap_enter() doesn't remove the previous mapping.
1998-05-06 21:53:53 +00:00
kleink a53c1863fe Provide definitions for intptr_t and uintptr_t, signed resp. unsigned integral
types large enough to hold any pointer.
1998-04-27 17:39:10 +00:00
jonathan e0a67e8aa8 Commit definition of mips_set_wbflush(). 1998-04-27 07:34:28 +00:00
jonathan b5798a80f0 define mips3 COUNT and COMPARE cp0 registers (onchip cycle counter) 1998-04-23 10:32:08 +00:00
jonathan 3d2cea267e Commit change missed during Decsystem 5100 chagnes:
prototype declearation for method to override wbflush() callback
vector with model-specific code. Used on DEC r2000a machines with
writebuffers which indicate writebuffer drain via cp0 usability bit.
1998-04-23 10:31:02 +00:00
jonathan 216daa4e5e Configure mips_mclock if "clock|mccclock".
All(?) ARC boxes use mcclock, but QBus decstations use the same
time-of-year clock architecturally mandated for VAXes.
1998-04-19 08:24:19 +00:00
jonathan 53c671e26c Add locore assembler functions to read mips3 cycle counter, and
read and write compare register (controls cycle-driven periodic interrupt).

Use cycle counter for microsecond time on mips3, but for now only on
3min motherboards (5000/150).  the MAXINE baseboard microsecond
counter is more stable and I don't ave no 5000/260 to test.

XXX clkread() is a mess, it should be rewritten.
XXX should add nanotime() to give inkernel nanosecond resolution,
    and then microtime() reworked to use nanotime().
1998-04-19 01:48:34 +00:00
jonathan 6b2d0fa8a0 * Create /sys/arch/mips/include/intr.h, with extern declaration of
interrupt-callout vector from mips locore dispatch code to port code.
* Move branch-emulation declaration to mips/include/trap.h.
* Garbage-collect pmax/pmax/trap.h.
  Not needed now pmax/pmax_trap.c is gone, and after above tidy-up.
1998-03-26 12:46:33 +00:00
jonathan 9376fa1a1b Commit MIPS_INT_MASK_FPU change: use MD symbol to check for pending FPU
interrupts.
1998-03-26 09:21:05 +00:00
mhitch 0fb478e609 Define ELF dynamic types for MIPS (some will be used by ld.elf_so). 1998-03-25 04:06:50 +00:00
thorpej afe0f98a85 Fix some obvious problems in my MIPS kcopy() implementation (a significant
typo, plus get delay slots right on the R3000).
1998-03-23 00:57:13 +00:00
thorpej 7819cad7ec Implement pmap_deactivate() (a noop in this pmap) and clean up
pmap_activate() a little.
1998-03-22 23:12:15 +00:00
mhitch a10657ae4f Set the PID before setting up the wired TLB entries for proc0. The
mips3_HitFlushDCache() fails with a TLB miss otherwise.
1998-03-22 06:31:40 +00:00
thorpej 7bb58d92ce Garbage-collect; vm_page_alloc1() and vm_page_free1() are now in MI code. 1998-03-12 06:26:26 +00:00
thorpej e3bda606eb Add support for UVM. 1998-03-12 05:45:04 +00:00
tsubai 2630ce2157 label 1: within #ifdef pmax is referenced from outside.
so it didn't work without -Dpmax.
1998-03-06 13:54:02 +00:00
thorpej 803f5aa188 Remove the memcpy() alternate entry point for bcopy(), a temporary measure
until the memcpy()/bcopy() thing is worked out.
1998-03-02 23:40:42 +00:00
thorpej da6458bfb4 Implement and switch to MACHINE_NEW_NONCONTIG. 1998-02-25 23:26:41 +00:00
thorpej 4673e0c339 Prototype allocsys(), mips_init_msgbuf(), and mips_init_proc0(). 1998-02-25 23:25:16 +00:00
thorpej 469520ccd4 Pull some code out of N mach_init() functions, and place it in a
common place:
- allocsys(), which computes space for and assigns addresses
  to kernel data structures at boot time.
- mips_init_msgbuf(), which initializes the error message
  buffer at the end of core.
- mips_init_proc0(), which initializes the U-area for proc0
  and nullproc.
1998-02-25 23:24:35 +00:00
perry 1ed8ea9966 note second parm of sysarch() is now void *, + trivial KNF, etc. 1998-02-25 21:41:55 +00:00
perry 56c01cbd82 change second parm of sysarch() from char * to void * 1998-02-25 21:24:56 +00:00
jonathan 78b939d4b5 Pull up duplicated CPP definitions from float.h rev 1.10:
>DBL_MIN and DBL_MAX were less precise than they should have been.
1998-02-21 23:50:24 +00:00
thorpej 2f74d0222a savectx() is prototyped in <mips/cpu.h> 1998-02-19 23:10:18 +00:00
thorpej 0743f83f64 Implement new style crash dumps for NetBSD/mips, lifted from NetBSD/alpha. 1998-02-19 23:09:30 +00:00
thorpej cf06aa7c03 Prototype dumpsys() and savectx(). 1998-02-19 23:07:14 +00:00
thorpej c5862712ae New crash dump format definition for NetBSD/mips. 1998-02-19 23:06:11 +00:00
thorpej c3a02725ea Use a reasonable default for NKMEMCLUSTERS. Previous default value wouldn't
run multi-user for very long at all, and every kernel configuration file
overrides it!
1998-02-19 06:40:09 +00:00
mycroft ec9c3ce899 DBL_MIN and DBL_MAX were less precise than they should have been.
Other minor changes to match other float.h files.
1998-02-18 10:37:04 +00:00
wrstuden 2d3036fc0e Add NETATALK support for mips machines. Somehow the NETISR_ATALK code
didn't make it in. Aproved by Jonathan and tested here at Stanford.

While I'm here, add conditional prototypes for clnlintr() and nsintr()
so that NS and ISO will compile correctly.
1998-02-05 21:48:23 +00:00
jonathan 8b8b6ca51d garbage-collect unused MMSEG. From PR# 3898. 1998-02-02 22:21:32 +00:00
jonathan adac7274cc Finish bi-endian support: add code to sum odd start/end bytes
correctly on both big and little endian systems.
From Tsubai Masanari <tsubai@iri.co.jp> in PR# 4434.
1998-02-02 21:27:17 +00:00
jonathan e50f17aab7 Delete incorrect private declaration of db_maxoff. 1998-02-02 12:49:15 +00:00
jonathan 696b21e65f Change VM_WAIT --> vm_wait() in mips pmap code, where waiting after
vm_page_alloc1() fails to return a page for use as a segtab.

XXX there must be a better way to do this.
1998-02-01 01:55:15 +00:00
thorpej 2ee3e0153d Generate dependencies on the exec format options EXEC_AOUT, EXEC_ECOFF,
EXEC_ELF32, EXEC_ELF64, and EXEC_SCRIPT.
1998-01-22 01:32:14 +00:00
perry 6f57e5c573 multiple include protect machine/limits.h, fixes pr 4473 (from Mika Nystrom) 1998-01-09 22:23:44 +00:00
perry b46484bb8a RCSID Police. 1998-01-05 20:51:25 +00:00
perry 015e898c02 RCSID Police. 1998-01-05 07:02:46 +00:00
thorpej b9f1b716f3 Now that all ports have pmap_activate(), and it has an identical interface,
prototype it in <vm/pmap.h>
1998-01-03 01:12:59 +00:00
mhitch cc997082a5 Someone forgot to update db_tlbdump_cmd() when adding the printf routine
to the TLB dump routines arguements.  Machines would die horibbly when
trying to dump the TLB entries in DDB.  Also don't explicitly "page" the
output, since db_printf takes care of that.
1997-12-06 19:19:07 +00:00
kleink 66c2794142 Add _BSD_SUSECONDS_T_ and _BSD_USECONDS_T_; do some space vs. tab formatting
cleanup
1997-11-23 20:20:53 +00:00
mhitch 44c123573b Define PC_ADVANCE() to advance the PC around the break instruction only
if the break instruction is still there.  This works around a problem with
the software single step in DDB not recognizing the temporary breakpoint
set to emulate the single step.
1997-11-18 21:13:17 +00:00
veego df6d37534b s/NETHER/NARP/ and s/ether.h/arp.h/ for the 'new' arp system. 1997-11-13 10:37:40 +00:00
mhitch c390c7a5e1 The address used by mips1_FlushICache() is a virtual address, not a physical
address.  This caused DDB to hang the machine hard when trying to set a
breakpoint.
1997-11-11 16:50:57 +00:00
thorpej 0b04d28454 Mark uses of long long with /* LONGLONG */ for lint. From
Chris Demetriou <cgd@pa.dec.com>.
1997-11-05 04:36:08 +00:00
thorpej a15938129d asm -> __asm__ 1997-11-05 04:02:26 +00:00
thorpej 4730a8cbec Bug fixes and cleanup from Chris Demetriou <cgd@pa.dec.com>:
- fix _C_LABEL so that it actually works.
- make __RENAME use _C_LABEL.
- fix __RENAME so that it expects an unquoted argument.
- fix __indr_reference and __warn_references so that they
  supply their own final semicolon.
- define __warn_references to nothing if not GNU C (required
  by the way it's used).

The __warn_references semicolon change has to be made
so that __warn_references can be defined into nothing.
(A ; all by itself isn't a great idea.)  The __indr_reference
change was made for consistency.
1997-11-04 23:09:23 +00:00
jonathan ba6431afae Incorporate a 4.4BSD-Lite workaround for a bug in cache invalidation.
From   /sys/news3400/news3400/locore.s, with id
	@(#)locore.s	8.3 (Berkeley) 9/23/93

Kazumasa Utashiro notes that the pmax cacheflush routines don't work:
    #ifndef NOTDEF /* I don't know why Ralph's code doesn't work. KU:XXX */

It's because pmax hardware wries the COP0 bit to external branch
logic.  news3400s don't, and so the bc0f loop fails.  It will also
fail on some other models of pmax, but we dont' support them.
Surround the relevant framgents in locore_r200.S with "#ifdef pmax".

Longer-term,  the cacheflush entry in the locore callback may have
to be a  CPU baseboard-specific entry, not just CPU-version specific.
1997-11-01 06:34:07 +00:00
jonathan 84dcba44e2 Add missing `(void)' cast to big-endian variant of {NTOH,HTON}{L,S}(). 1997-10-30 09:07:50 +00:00
thorpej 665f7d1a6e Implement __RENAME() in <machine/cdefs.h> 1997-10-22 05:20:32 +00:00
jonathan 4d29dd99dd Put back duplicate <XXX>_ENDIAN definitions. Defining them as _<XXX>_ENDIAN
loses on non-POSIX source that re-defines <XXX>_ENDIAN itself (e.g., gdb.)
1997-10-20 19:15:40 +00:00
jonathan a03a434f1b * Use ANSI-clean names for host-specific byte-order definition
(_BYTE_ORDER, _BIG_ENDIAN, _LITTLE_ENDIAN).
  Define old names from the ANSI ones if not _POSIX_SOURCE.
* Define _QUAD_HIGHWORD and _QUAD_LOWWORD properly when
  _BYTE_ORDER == _BIG_ENDIAN.
1997-10-20 09:57:05 +00:00
jonathan b29ce8697c Comment out PT_STEP for 1.3. Defining it causes gdb 4.16 to break.
(inferior debugee children die immediately with SIGTRAP.)
1997-10-20 07:29:23 +00:00
jonathan 04c45d466a Define PT_STEP. 1997-10-19 21:49:50 +00:00
jonathan ed413accab Add PT_GETFPREGS, PT_SETFPREGS and process_{read,write}_fpregs. 1997-10-19 21:02:00 +00:00
jonathan 92ed4b0f7f Make the __mcount entrypoint non-static for kernels, to avoid any
chance of gprof mis-report profile ticks in __mcount to  the following
function in libkern (currently _qdivrem).
1997-10-18 22:31:33 +00:00
jonathan 82526d56fd Prototype __flt_rounds(). 1997-10-18 02:43:06 +00:00
jonathan d385e0e57e Prototype ANSI-safe gcc trampoline entrypoint. 1997-10-18 02:25:14 +00:00
jonathan dd7290db41 Add explicit #include <vm/vm.h> before mips/pte.h is included. 1997-10-17 09:34:43 +00:00
jonathan 84d8ac7355 * Performance improvements from July 1997:
Avoid unecessary cache writebacks on mips3. 10% win on kernel builds.
* _KERNEL_RCSID.
1997-10-17 05:57:20 +00:00
jonathan 22b3f9ebd8 Add bi-endian support to mips locore, <mips/endian.h>, and mips_opcode.h.
Derived from a change request (PR port-mips/4277) from
Tsubai Masanari, (tsubai@iri.co.jp).
1997-10-17 04:43:57 +00:00
mhitch c7422c2d87 Fix typo - list/libc/gen/nlist_ecoff.c still wasn't compiling. 1997-10-15 00:59:01 +00:00
mycroft 7b89784c31 GC some bogus definitions. 1997-10-11 16:12:55 +00:00
jonathan 2ebcc702b9 Don't check the actual CPU type unless we're in the _KERNEL, or
src/lib/libc/gen/nlist_ecoff.c breaks.
1997-10-10 03:24:49 +00:00
bouyer 6ab3092b11 Add byte-swapping functions (bswap16, bswap32, bswap64) to libkern.
Only assembly version for i386 bswap16 and bswap32 for now (bswap64 uses
bswap32). Contribution of assembly versions of these are welcome.
Add byte-swapping of ext2fs metadata for big-endian systems.
Tested on i386 and sparc.
1997-10-09 15:42:19 +00:00
jonathan ac262c0c2f Allow mips3 ECOFF binaries if running on a mips3 CPU. 1997-10-08 07:36:58 +00:00
jonathan 1203ea77f9 GNU ld script for linking standalone MIPS code (e.g., bootblocks). 1997-10-05 22:17:56 +00:00
mhitch 9769ae9148 Fix error in msgbuf change: add missing '&&'. 1997-09-24 02:20:56 +00:00
mhitch 5bcefb5bc6 Fix another missed *setregs() change. 1997-09-24 02:15:51 +00:00
leo c5ba7a3102 Move the definition of MSGBUFSIZE up to the machine-arch level if
possible. Pointed out by Bernd Ernesti.
1997-09-20 12:06:37 +00:00
leo d4713d24c2 Implement the kernel part of pr-1891. This allows for a more flexible sized
msgbuf. Note that old 'dmesg' and 'syslogd' binaries will continue running,
though old 'dmesg' binaries will output a few bytes of junk at the start of
the buffer, and will miss a few bytes at the end of the buffer.
1997-09-19 13:52:37 +00:00
mycroft 16a8787248 Fix execve(2) and *setregs() interfaces so emulations can set registers in a
more correct way.  (See tech-kern.)
1997-09-11 23:01:44 +00:00
jonathan e14d1d4768 Move SSIZE and DELAY() definitions to sys/arch/mips/include/mips_param.h.
Update comment in pmax/include/param.h (pr 3988).
1997-08-20 03:47:17 +00:00
mhitch 4c88f43717 Get $ra contents from the proper location in the exception/interrupt frames.
Use DDB symbols if available for stack traceback.
1997-08-17 17:02:07 +00:00
mhitch 549e36420e Display jump and branch target with symbols if available.
Clean up indentation - seems to have gotten messed up when the mini-debug
routine was added.
1997-08-17 16:58:53 +00:00
jonathan bf61f3291a Add checks for DS 3100, 2100. Use more generous delay values, these
systems may be memory-bound.
1997-08-14 00:15:37 +00:00
jonathan a5266cdd64 Fix for mbufs that start on odd-byte-aligned boundaries, and use. 1997-08-12 06:05:28 +00:00
jonathan cfc1040a1f Revert syscall interrupt re-enable of previous revision:
introduces a race in trap logging.  Reported by Michael Hitch.
1997-08-10 01:14:49 +00:00
jonathan 85d2b918cd Definition of cpu_mhz. 1997-08-09 19:06:45 +00:00
jonathan baad4266be Fix printf() format strings for VMFAULT_TRACE (see PR port-pmax/3777).
Re-enable interrupts in syscall() before doing anything else; marginal
impprovment (2ms?) in NTP accuracy on 5000/240.
1997-08-09 06:06:37 +00:00
jonathan 95a12ee943 MIPS cpu-speed detection using mc146818 clock.
Compute CPU speed(MHz) and loop multiplier for DELAY() based on
counting empty loop between mcclock ticks.  New global: cpu_mhz.
Change pmax/pmax/machdep.c to build baseboard model names from cpu_mhz.
Set  'cpuspeed' for more realistic DELAY() on mips3 models.

Mips CPU constants, testing, and calibration from D. Sean Davidson
<davidson@zk3.dec.com> and Simon Burge <simonb@telstra.com.au>.
1997-08-09 05:51:56 +00:00
jonathan 003ccf3b1c mips pmap_activate:
* prototype and definition for pmap_activate(p). Updates the segtab,
   and changes the active ASID if p == curproc.
 * Make reserved fixed-address (UADDR) kernelstack PTEs global,
   so we still have a kernel stack after pmap_activate() on curproc.
 * make KSEG2 mappings for p_addr global (see above.)

Seems to detune contextswitch and NTP resolution (by 60 ms), but
thepmap_activate() interface is mandatory.  Needs more thought.
1997-08-09 03:41:02 +00:00
jonathan 1c7fa31659 Add mips_read_causereg() 1997-08-08 06:52:59 +00:00
mhitch b4af013102 Resident count in pmap is now valid. I can now see RSS in ps. 1997-07-29 01:43:26 +00:00
mhitch fd5f2fd062 Get rid of the MIPS3 mess I left in pmap_enter_pv(). The cache inhibit
of cache-index incompatible virtual mappings for a physical page may be
required for hardware without secondary (level 2) cache to detect and
correct virtual coherency problems.  I'm not sure this is really needed
anymore, since pmap_prefer() took care of of the cache-index
incompatible mappings that I have seen.  Count the times a page is
cache inhibited in enter_stats if DEBUG.

Wait for memory instead of panic() on failure to allocate a page for the
segtab or segmap [from OpenBSD arc port].  Also check for malloc()
failure on allocation of a new pv entry and panic().

Increment resident_count when adding a new page to a pmap [also from
OpenBSD].  Process resident size is now valid.
1997-07-29 01:41:46 +00:00
jonathan 98d9a419f8 Add comments to pmap_copy_page() and pmap_zero_page() describing the
cache flush operations required on a virtually-indexed, physically-tagged
mips3 with no L2 cache to provide cache-coherence exceptions.

(Similar to what's needed with a virtually-indexed, virtually-tagged cache.)
1997-07-28 20:41:58 +00:00
mhitch 8e145a319b Don't rely on curproc to access the current pcb when testing for kernel
faults.  Use curpcb, which always points to the current pcb.  If curproc
was NULL when the kernel faulted, the trap handling would fault recursively
and the kernel stack would overflow.
1997-07-26 19:46:40 +00:00
jonathan f9e3ce0f92 revert to MI in_cksum code. 1997-07-25 21:01:45 +00:00
jonathan 83ebfc3545 Unroll pmap_copy_page() and pmap_zero_page() inlined loops even further. 1997-07-23 05:41:17 +00:00
jonathan b1032ac9db Substitute Mach 3.0 MK84 mips kernel bcopy() for Sprite bcopy().
Has unrolled loop for aligned-to-aligned copy.

Notes:
  1. this code tuned for DEC 5000/200.  ioasic decstations do more unaligned
     copies.  Better than old non-unrolled loop, but could be improved.

  2. Undoes changes made for MIPS3 with comment implying an r4000 TLB bug.
     We can't reproduce this on 5000/150 (jonathan) or 5000/50 (mhitch).
     Calls to previous  bcopy with a bad address show similar symptoms,
     reporting a trap in bcopy() after bcopy() has returned.  Same thing??
     Needs re-checking on an r4000 with no L2 cache.
1997-07-23 05:36:40 +00:00
jonathan a6c118666a Fix for chains containing interior mbufs with odd length. 1997-07-22 07:36:18 +00:00
jonathan 592eeb7378 mips-tuned bcopy from Jon Kay (UCSD) released under BSD copyright,
with standard BSD in_cksum() interface by Jonathan Stone.
1997-07-20 22:42:33 +00:00
jonathan f43c13bff4 Add ddb to mips/conf/files.mips. Garbage-collect mdb. 1997-07-20 20:48:40 +00:00
jonathan 5ba85a4cf8 Kernel profiling. Don't profile the following:
sigcode():
      executed from user-space stack.

  mips1_cpu_switch_resume, mips3_cpu_switch_resume:
      arguments passed in via v0, t0, t1 (outlined from cpu_switch())

  mips3_VCED(), mips3_VCEI():
      called from exception-vector code without any register save,
      $at, $ra are live.
1997-07-20 19:48:03 +00:00
jonathan 01794f87e3 Conditionalize mips1-speciifc locore code on #ifdef MIPS1 1997-07-20 19:40:19 +00:00
jonathan fd7a6758c8 Don't emit ".set reorder ; .set noreorder" around mcount profiling
stubs if _LOCORE or _KERNEL are defined,.  _LOCORE means we're
compiling locore. Locore assumes ".set noreorder" for the whole file.
1997-07-20 09:47:03 +00:00
jonathan 9f89c0da89 Use __attribute__((unused). From Chris G. Demetriou <cgd@pa.dec.com>. 1997-07-20 03:47:29 +00:00
jonathan caea1075c9 * Do staktcraces back through traps from kernel mode.
* Don't take  stack adjustment inside procedures as frame size
  (e.g.,  8-byte stack adjustment for calling _mcount).
1997-07-20 03:46:20 +00:00
jonathan 06df97095c Add ecoff ``struct ext_ext'' header fields to ecoff_extsym.h.
Compatible with mips ECOFF nm from GNu binutils or MipsCo toolchain.
1997-07-20 02:38:02 +00:00
jonathan 39814d8abc Add pointer to _mcount to avoid bogus warnings about unused static function.
(calls from interpolated assembler are invisible to gcc.)

If _KERNEL, add prototypes for non-profiled entrypoints _splhigh(), _splx().
1997-07-19 21:30:25 +00:00
jonathan ccf3801c92 * Re-apply changes from rev 1.6 of sys/arch/mips/include/reg.h accidentally
undone by rev 1.7:
  >redo pmax/include/reg.h
  >so that the definitions needed by locore.S are in a separate file,
  >pmax/include/regnum.h.

* Add explicit `#include <mips/regnum.h>'  where symbolic offsets
  into a mips trapframe or struct reg are used..
1997-07-19 09:54:23 +00:00
perry ad1710ce1e update comment from 1981 on memory and disk prices -- pr-2754 from Curt Sampson 1997-07-12 16:18:36 +00:00
jonathan 1490cbcf7b Rewrite struct ecoff_symhdr using the same field ordering as GNU
binutils and the MipsCo toolchain, not the Alpha ordering (which has a
block of int32_t symbol counts and a block of long offsets) .
1997-07-07 19:37:33 +00:00
jonathan 65e2c70353 Force write-back of D-cache after doing DDB writes on mips3. Flushing
the Icache is not sufficient: a mips3 can write a new insn into
writeback L1 Dcache, leaving stale instructions in the mixed L2 cache.
1997-07-07 04:55:27 +00:00
jonathan 919bc0ce92 Typo in RCS id. 1997-07-07 03:57:55 +00:00
jonathan d1ec048977 DDB for mips.
Add DDB interface to /sys/arch/mips/mips..
  Rework heuristic stack traceback to work with DDB.
  Add hooks  to print exception log from DDB.
  Add hooks from pmax console drivers:   call Debugger()
  after break from serial console, or 'DO' key from LK-xxx.
1997-07-07 03:54:24 +00:00
jonathan da53d70f23 Move generic mips functions setregs(), sendsig(), sys_signal()
to sys/arch/mips/mips/mips_machdep.c.  Delete from pica, pmax machdep.c.

Delint pica machdep.c.
1997-07-01 09:32:13 +00:00
jonathan 8586e62e14 Enable stack tracebacks if MDB is configured. 1997-06-30 14:42:32 +00:00
mhitch d6b6efec34 Moved the mini-debug routines out of trap.c into their own file, like the
original pica port.
1997-06-28 03:59:46 +00:00
mhitch a503f4436c Mini-debuuger is now included by options MDB.
Move mini-debugger routines to separate file, minidebug.c.
1997-06-28 03:57:55 +00:00
mhitch 566b174c13 Mini-debugger now included by options MDB.
Cpu_regs() is included by options DEBUG, as are the stacktrace routines,
so move it inside the #ifdef DEBUG along with stacktrace().
1997-06-28 03:55:05 +00:00
mhitch 8c12914cdb Fix typo.
Include minidebug.c with options MDB.
1997-06-28 03:43:21 +00:00
mhitch 63f2f12797 Someday I'll learn how the MIPS cpu works; add some delay after the tlbp
when switching to a new process.  This was causing a ktlbmiss and stack
overflow panic on R3000 machines.
1997-06-25 05:06:01 +00:00
mhitch dc1ece0234 Move the mips*_dump_tlb() routines outside the #ifdef so they are always
available.  Used in the locore ktlbmiss/panic to display the TLB contents
that are mapping the kernel stack.
1997-06-23 21:48:28 +00:00
mhitch f200f89fe7 Remove an incorrect store of the SP when displaying information about a
ktlbmiss on the kernel stack.  It was showing the temporary SP, not the
original SP.

Add a display of the first few wired entries of the TLB so when the ktblmiss
occurs, the TLB entries mapping the kernel stack can be verified.
1997-06-23 21:45:05 +00:00
jonathan 0d95f6f43d Align to 8-byte boundary after ASMSTR(), for mips3. 1997-06-23 06:15:28 +00:00
jonathan d2faa7a82b Set kernel text start address in port-specific Makefile, not ldscript. 1997-06-23 02:40:28 +00:00
jonathan 1eba6a6cc9 Disambiguate cache-size message, as suggested by cgd. 1997-06-22 12:22:37 +00:00
jonathan 1f44934407 * Change Sprite MACH_xxx prefix to MIPS_xxx.
* Use standard mips terminology (xxx_KSEG0, xxx_KSEG1) instead of the
  (more meaningful) Sprite names (xxx_CACHED, xxx_UNCACHED).
1997-06-22 07:42:25 +00:00
jonathan b86aa7f311 Fix typo mips3_mips_switch_exit. 1997-06-22 04:30:01 +00:00
jonathan 4692a37162 Final changes for configuring MIPS1 and MIPS3 in a single kernel.
* cpuregs.h:
    rename remaining VMMACH_xxx TLB macros to MIPS_TLB_xxx.
    Add compile-time MIPS3-only, compile-time  MIPS1-only, and
    runtime (both) definitions  for number of TLB ASIDs (tlb pids)
    and shift count to extract a TLB pid.

  * locore.h:
    Delete unused vector slot for indexed TLB writes.
    mips1 and mips3 TLBs are different enough that we have
    to break them out at the caller anyway.

  * Add compile-time MIPS3-only andcompile-time  MIPS1-only
    macros to call locore functions directly by name.
    Use the  existing method table only if

  * mips/mips_machdep.c, mips/trap.c, mips/pmap.c, pmax/machdep.c:
    Use MIPS3_ or MIPS1_ specific names for TLB pids in
    mips3 and mips1 specific code paths (e.g., creating the kernel stack
    for process 0).

Add `options MIPS3' to pmax/conf/GENERIC.
1997-06-22 03:17:37 +00:00
mhitch a7ac6e48ad Move the CPU-specific shift of the TLB PID into mips_r?000.S. 1997-06-21 06:32:22 +00:00
mhitch b027d98eb5 MachHitFlushDCache is gone. 1997-06-21 04:52:26 +00:00
mhitch edbde97cdf Fix pmap_prefer() to work in merged for mips1/mips3.
Remove unused debug procedure I forgot to remove previously.
Consolidate the vm_page_free1() calls in pmap_release().  Duplicate code
was a result of the way I merged the MIPS3 support from the pica pmap.c.
Enhance the comment on flushing the cache when releasing the segmap pages,
and add a comment about the currently unused code to uncache pages in
pmap_enter_pv().
1997-06-21 04:36:22 +00:00
mhitch 478559dd28 Merged mips1/mips3: cache alias test in pagemove(). 1997-06-21 04:24:45 +00:00
mhitch 51d10edcf2 Restore a lost (int) case in DELAYBRANCH macro - test for BR delay in
unsigned cause register wouldn't have worked.
Add missing ')' in trapdump that shows up when compiled with DEBUG.
Fix (unfix?) previous change to printf formats in mips3_dump_tlb: vad_to_pfn
is now consistant with single-CPU and merged-CPU support.
1997-06-21 04:18:29 +00:00
jonathan 68863ebd8e More mips1/mips3 changes to cpuregs.h and psl.h:
* cpuregs.h:
  Delete unused VMMACH_ names (e.g., duplicates of PTE bits in  pte.h).
  Change remaining VMMACH_xxx  names to MIPS1_xxx or MIPS3_xx.
  Fold remaining compile-time definitions into a single #ifdef MIPS3.

* Use MIPS1_ names  in locore_r2000.S, mips3_ names in locore_r4000.S

* Garbage-collect MachHitFlushDCache()

* psl.h:
  use MIPS1_, MIPS3_  symbolic names for Cause register bits.
  change  _R3K to MIPS1_,  _R4K to MIPS3. Conditionalize for mips1 only,
  mips3 only, or when both are defined,  use runtime CPUISMIPS3 test.
1997-06-21 04:18:09 +00:00
mhitch e03cf7a95c Cast mips1-only and mips3-only pfn_to_vad() macros to match the mips1/mips3
merged inline function.  Fixes inconsist printf format usage in trap.c.
1997-06-21 04:10:42 +00:00
jonathan 63b4439556 Correct cast type on mips3_MachHitFlushDCache(). 1997-06-20 07:35:03 +00:00
jonathan 5ed24fd4b4 trapDump(): compute accurate mask for EXC_CODE from CPU type at runtime. 1997-06-20 05:15:36 +00:00
jonathan c6c2263566 MachHitFlushDCache -> mips3_HitFlushDCache().
Add  XXX reminder to d-cache flush I don't understand.
1997-06-20 04:34:38 +00:00
mhitch 9b445e15ea Use same cachesize variables for mips1 and mips3, and rename the variables
per Jonathan's request.
Remove switch_exit() declaration - it's now called via the locore jump vector.
1997-06-19 06:34:16 +00:00
mhitch 4fa507b4fc More merged mips1/mips3 support:
Remove cpu-specific routines from locore.S and add them to locore_r2000.S
and locore_r4000.S.  Add entries in locore jump vector table for switch_exit()
and the cpu_switch() context resume.
Add offsets into the jump vector to genassym.cf for use in locore.S.
1997-06-19 06:31:14 +00:00
mhitch df0701481f Use same cachesize variables for mips1 and mips3, and rename the variables
per Jonathan's request.
1997-06-19 06:30:47 +00:00
mhitch 129320c2ca More merged mips1/mips3 support:
Remove cpu-specific routines from locore.S and add them to locore_r2000.S
and locore_r4000.S.  Add entries in locore jump vector table for switch_exit()
and the cpu_switch() context resume.
Add offsets into the jump vector to genassym.cf for use in locore.S.

Use same cachesize variables for mips1 and mips3, and rename the variables
per Jonathan's request.
1997-06-19 06:30:03 +00:00
jonathan a066eecaf8 MachHitFlushDCache() -> mips3_HitFlushDCache() outside pmap.c. 1997-06-18 04:51:15 +00:00
jonathan a1085c85ae typo. 1997-06-18 04:23:52 +00:00
jonathan bbc40c6757 RCS id police.
Add a copyright, and a copy of the copyright from the 4.4BSD locore,
from which this is a derived work (as the CVS logs show).
1997-06-18 04:23:14 +00:00
mhitch b61d107b9b Save and restore usermode PC to/from current pcb instead of the RA slot of
the stack frame when usermode interrupt occurs.  The interrupt may have
modified the PC [such as sendsig()].  This got dropped with the stackframe
changes.
1997-06-18 04:07:06 +00:00
mhitch 806f730e87 Remove stray macro definition; didn't hurt for MIPS1 only, but wrong for
MIPS3.
1997-06-17 04:12:38 +00:00
mhitch fb16ddddc7 Fix printf format/argument mismatches. 1997-06-17 04:11:33 +00:00
mhitch 6df1fecbce Virtual coeherency exception handler fixes:
Remove old code now that the new version is working.
  Correct typo for 16K cache (R4400).
  Align the saved AT register location; seems to hang if not aligned on 8
  byte boundry.
1997-06-17 04:10:19 +00:00
jonathan b903dc73da Fix locore cache variables. (Should these be exported from locore at all?) 1997-06-17 01:40:13 +00:00
jonathan 4506da9ebd Check for '#ifdef MIPS1', not '#ifndef MIPS3', since we can now have both.
Add runtime check for 'if (CPUISMIPS3)' inside #ifdef MIPS3.
Add runtime check for 'if (!CPUISMIPS3)' inside #ifdef MIPS1.
1997-06-17 01:38:21 +00:00
jonathan fef3e76b31 Changes for configuring both MIPS1 and MIPS3, from a merge of
similar design and code by Jason Thorpe and Jonathan Stone.

NOTE: the kernel-stack-switching code and cacheflush() calls in
locore.S still use #ifdef MIPS3 and need more work.

mips/include/cpu.h:
    Add CPUISMIPS3 for run-time tests of what CPU architecture level
    we're running on.

mips/include/locore.h:
    Add declarations of locore cache-size variables for ref/def toolchain.

mips/include/mips1_pte.h:
    mips1 TLB bit definitions.

mips/include/mips3_pte.h:
    mips3 TLB bit definitions.

mips/include/pte.h:
    define accesor macros for TLB bits (e.g., mips_pg_m_bit(),
    that expand to CPU constants if only one CPU arch is configured,
    or to inline functions if both MIPS1 and MIPS3 are configured.

mips/mips/locore_r2000.S:
    Use MIPS1_PG_xxx constants inside mips1-specific code.

mips/mips/locore_r4000.S:
    Use MIPS3_PG_xxx constants inside mips3-specific code.

mips/mips/locore.S:
    Use MIPS1_PG_xxx constants inside mips3-specific code.
    Use MIPS1_PG_xxx constants inside mips1-specific code.
    (Needs more  work!)

mips/mips/{pmap.c,vm_machdep.c,trap.c}, pmax/pmax/machdep.c:
    Use MIPS3_PG_xxx constants inside mips3-specific functions,
         and MIPS1_PG_XXX inside mips1-specific code.
    Otherwise, use mips_pg_XXX_bit() macros where they apply,
    and use "if (CPUISMIPS3) { ... } else {... }" where they don't.

mips/mips/mips_machdep.c:
    Import Michael Hitch's fixes from the pmax locore-init code
    into mips_vector_init().

pmax/pmax/machdep.c:
    Use generic mips_vector_init() locore vector-init function.
1997-06-16 23:41:40 +00:00
jonathan eb1d8427cc Garbage-collect redundant declarations:
mips/include/locore.h:
  Add prototypes for HitFlushDCache() functions. Moe cpu_prid definition here.
mips/include/cpu.h:
  remove  cpu_prid definition.
pmax/pmax/machdep.c:
   remove local protoypes of HitFlushDCache() functions.
mips/mips/vm_machdep.c, mips/mips/vm_machdep.c::
   remove local protoypes of HitFlushDCache() functions.
1997-06-16 09:50:26 +00:00
jonathan 2d10220f8f Yet more mips1/mips3 merging:
Move mips-specific pmap definitions (PMAP_PREFER for mips3, declaratin
of pmap_bootstrap() for the system-specific machdep.c) from
arch/pmax/include/pmap.h to arch/mips/include/pmap.h.
1997-06-16 07:47:42 +00:00
jonathan df6533a42e Fix idempotent inclusion test macro: _MACHCONST -> _MIPS_CPUREGS_H_
to avoid collision with obsolete Sprite-derived NetBSD/pica  header file.
1997-06-16 07:41:08 +00:00
jonathan 5db35a8cce Yet more merging:
* Move declaration of locore communcation variables (CPU family,
     cache sizes, etc) to mips/include/locore.h.  Delete from
     pmax/include/cpu.h and older versions from pica/include/cpu.h.

   * Move definitions of CLKF_BASEPRI, CLKF_USERMODE to mips/include/cpu.
   * Delete duplicate definitions in pica/include/cpu.h, pmax/include/cpu.h.
1997-06-16 06:17:25 +00:00
jonathan 8ccf9122e4 Garbage-collect MIPS_3K_xxx, MIPS_4K_xxx outidde mips/include/cpuregs.h:
MIPS_3K_xxx ->    MIPS1_xxx
    MIPS_4K_xxx ->    MIPS3_xxx
1997-06-16 05:37:32 +00:00
jonathan 59c33b9f85 Garbage-collect #include <machine/machConst.h>. 1997-06-16 03:52:37 +00:00
jonathan d3ecedb9fb Garbage-collect non-jumptable prototype for wbflush(). 1997-06-16 03:52:08 +00:00
jonathan 2557a6fa43 GC more old header files:
<machine/locore.h> -> <mips/locore.h>
    <machine/mips_opcode.h> -> <mips/mips_opcode..h>
1997-06-16 03:29:07 +00:00
jonathan 2520d0a604 Remove genassym.c. (pmax has used genassym.cf for some time.) 1997-06-16 02:58:28 +00:00
jonathan c6b9463cd1 Remove all references to <machine/machAsmDefs.h>.
Use #include <mips/asm.h> instead.
1997-06-16 01:23:56 +00:00
jonathan 15628b2d97 Move merged pmax psl.h with mips1/mips3 support to mips/include/psl.h.
Change pmax/include/psl.h to just do #include <mips/psl.h>.

pmax/include/psl.h would go away completely if it wasn't stil required
by compat/common/kern_exit_43.c.
1997-06-16 01:10:03 +00:00
jonathan 8e5f767c50 Use generic MIPS pmap vm_machdep.c 1997-06-16 00:35:10 +00:00
jonathan 747e2b5e7e Generic mips pmap/vm code: move the merged pmax mips1/mips3 vm_machdep
and pmap code to arch/mips/mips.
Use <mips/XXX.h> header files, not <machine/XXX.h>.
1997-06-16 00:16:08 +00:00
mhitch ab0eff4a87 From Toru Nishimura: _FORKBRAINDAMAGE is gone, user process entered through
proc_trampoline().
More merged MIPS1/MIPS3 support.
1997-06-15 18:21:17 +00:00
mhitch f42f8eb4e6 More merged MIPS1/MIPS3 support - from pica pmap.c 1997-06-15 18:19:47 +00:00
mhitch 76f5c2a6c6 More merged MIPS1/MIPS3 support for DECstations. 1997-06-15 18:02:20 +00:00
mhitch 6b75aad4ca From Toru Nishimura: exception trapframe changes, separate out syscall
processing from generic trap processing,  _FORKBRAINDAMAGE is gone -
user process entered through proc_trampoline(), mini-debugger from pica
port.
More merged MIPS1/MIPS3 support for DECstations.
1997-06-15 17:49:53 +00:00
mhitch a5c7f52094 More merged MIPS1/MIPS3 support. Added wbflush() and proc_trampoline() to
locore vector.  Display level 2 (secondary) cache size.
1997-06-15 17:47:46 +00:00
mhitch 6748462623 From Toru Nishimura: _FORKBRAINDAMAGE is gone, user process entered through
proc_trampoline(); move away from UADDR access to user structure.
From Toru Nishimura:  exception trapframe changes, mini-debugger from pica
port, separate out syscall exception.
DECstation MIPS3 support: wbflush() is cpu-dependent, MIPS3 level 2 cache
support.
1997-06-15 17:44:46 +00:00
mhitch 501b5e6892 From Toru Nishimura: adjust for struct user pcb changes. 1997-06-15 17:40:03 +00:00
mhitch 386cf35c8d From Toru Nishimura: exception trapframe changes. 1997-06-15 17:37:45 +00:00
mhitch 27f717cdb8 From Toru Nishimura: user pcb/proc changes for exception handling and
removing access through UADDR.
1997-06-15 17:36:24 +00:00
mhitch ffb95ac852 DECstation MIPS3 support: wbflush() is cpu-dependent, need declaration from
machine/locore.h.
From Toru Nishimura: _FORKBRAINDAMAGE is gone, user process entered through
proc_trampoline() [also cpu-dependent].
1997-06-15 17:33:53 +00:00
mhitch 75b0c4777c From Toru Nishimura: _FORKBRAINDAMAGE is gone, user process entered through
proc_trampoline().
1997-06-15 17:28:46 +00:00
mhitch c06eb27dc9 More merged MIPS1/MIPS3 support: still only allows single-architecture
support.
1997-06-15 17:27:03 +00:00
mhitch fb6d59052e More merged MIPS1/MIPS3 support. The pte definitions still need work before
they can be support both MIPS1 and MIPS3.
1997-06-15 17:24:22 +00:00
jonathan 070deac2d1 Use standard symbolic register names in stacktrace() and logstacktrace(). 1997-06-15 01:18:25 +00:00
jonathan 8e854e11d1 Rewrite stack traceback printing (stacktrace()) and logging(logstacktrace()
wrappers for stacktrace_subr() in assembly code to avoid prototype conflicts.
1997-06-15 01:08:16 +00:00
mrg dc6a98e92c bring mrg-vm-swap2 onto mainilne. 1997-06-12 15:09:23 +00:00
jonathan f89e57aee7 Add sys_sysarch() calls for the standard mips userspace cache-control calls. 1997-06-09 11:46:16 +00:00
jonathan 19e4111ef7 Move the mips sys_machdep.c from pmax/pmax to mips/mips, to enforce a
common sysarch on all mips ports.
1997-06-09 02:14:56 +00:00
jonathan d6a4dfdc41 Declarations for standard MIPS-ABI cacheflush() and cachectl() calls,
as used by g++ trampoline code.
1997-06-08 10:52:04 +00:00
jonathan f15c808e44 Initialize machine_arch from MACHINE_ARCH. 1997-06-08 10:48:02 +00:00
jonathan ccc08d5a61 Move MACHINE_ARCH and _MACHINE_ARCH from pmax/include/param.h to
mips/include/mips_param.h.  (They should be common to all mips ports.)
1997-06-08 10:46:01 +00:00
veego de7e49a954 Add 'char machine_arch[] = "xxx";' for the new sysctl hw.machine_arch. 1997-06-06 23:26:01 +00:00
jonathan 6aa07ba92c Add #ifdef _KERNEL/#endif around prototype of mips single-step emulator.
Add "struct proc;" inside the ifdef: <sys/proc.h> includes <machine/proc.h>
before declaring struct proc.
1997-06-02 01:58:38 +00:00
jonathan ed8e9558ab Lint: printf formats inside #ifdef DEBUG (long vs int, %x vs pointer).
Add XXX to inconsistency: sometimes pmap.c calls blkclr(), sometimes it uses
an inline C loop tuned for 4-entry writebuffer.  Why?
1997-05-26 23:02:11 +00:00
jonathan 333ebdebd6 lint: prototype blkclr __P((caddr_t val, int size)). Used in pmap code. 1997-05-25 23:00:40 +00:00
jonathan dbdac42c7e Add ecoff symbol header definitions for mips1. 1997-05-25 21:22:19 +00:00
jonathan 2548f9ceee lint: add prototype for kvtophys(). 1997-05-25 10:16:17 +00:00
jonathan e991c94232 Add parens where requested by gcc -Wall. 1997-05-25 10:01:38 +00:00
jonathan 94d7e627c1 Rename cpu_singlstep() to mips_singlestep() and add prototype.
(it's not part of the standard interface to MD code.)

XXX Consider moving into process_machdep.c when the mips3 changes are merged.
1997-05-25 09:56:45 +00:00
jonathan cedd6dbe25 Lint: move forward declarations to beginning of file and protoize.
delete unused variables and add redundant parens where suggested.
1997-05-25 05:19:51 +00:00
jonathan d5b9a48fd5 Add prototype for cpu_exec_ecoff_setregs() to mips/inuclde/ecoff_machdep.h.
Use it in compat/ultrix/ultrix_misc.c (setting emul type on mips).
1997-05-24 10:26:30 +00:00
jonathan b14cdadc36 lint: Create mips/include/conf.h with prototypes for {mem device.
Add 'struct proc *p' 4th arg to mmopen(), mmclose().
      Delete unused variable.
1997-05-24 08:57:59 +00:00
jonathan aab81e72b8 lint: add prototypes for interrupt(), softintr(), pppintr(). 1997-05-24 08:49:22 +00:00
jonathan ba1c517a52 GNU ld script for linking mips kernels, contributed by Arne Juul. 1997-05-23 22:21:06 +00:00
jonathan ba2aa6f75a Add cpu_spl[012345]() definitions to locore. These clear the given
interrupt-enable bit in the status register, and all lower bits.

Can be used for spl{bio,net,tty,clock,statclock} on machines where
devices are wried to mips hard-interrupt levels in ascending bit order
so as to match the BSD spl.9 ordering.
1997-05-19 23:25:09 +00:00
jonathan 0a995f71a2 Fix typo. 1997-05-19 21:24:10 +00:00
mhitch 8e9925b45b Eliminate vm_pmap. 1997-05-18 17:26:30 +00:00
jonathan ac99526674 Add defines for increasing SPL levels, assuming devices are wired up
in to CPU interrupt pins in order of increasing priority.
1997-05-18 03:19:41 +00:00
gwr e2a58b69f7 Add #define __VM_PMAP_HACK as a temporary measure. 1997-05-16 21:35:30 +00:00
jonathan e199d62111 Add hooks for definiing kernel RCSId and copyright symbols,
via  asm(".section"),  for compatibility with Alpha tc and ioasic  drivers.

Assumes ELF and binutils-2.8 toolchain.
1997-05-15 08:47:05 +00:00
jonathan ab9bbd64d6 Use genassym.sh script to make assym.h, for cross-compiling.
Remove dependencies on genassym.
1997-03-16 11:54:03 +00:00
is 07b064e02e New ARP system, supports IPv4 over any hardware link.
Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.

For the detailed change history, look at the commit log entries for
the is-newarp branch.
1997-03-15 18:09:08 +00:00
jonathan 72a7ae4ee5 Add architecture-specific ELf relocs for mips chips. 1997-03-03 00:19:29 +00:00
jonathan cf0bcbc9b6 Define ALIGNED_POINTER
(missed when other <arch>/include/param.h files were updated)
1997-02-28 02:24:41 +00:00
jonathan 1607618d93 pmaxpagesperpage -> mipspagesperpage 1997-01-14 22:29:54 +00:00
jonathan 18a537d1da Pander to "kernel_text" kludge. 1996-12-23 15:27:47 +00:00
jtc 9da5f60715 PROF -> GPROF 1996-11-30 02:48:57 +00:00
jtc 16b48272c4 Define _BSD_CLOCKID_T_ and _BSD_TIMER_T_ 1996-11-15 22:38:45 +00:00
jonathan 0bbccb98a0 Change "___mcount" -> "__mcount" in asm() code in arch/mips/include/profile.h.
Fixes profiling for non-underscore-prepending toolchains
(elf, e.g.,  shared libs), and breaks a.out/ecoff  toolchains.

May  break mips kernel profiling too.  Needs more thought, since the
original intent of __mcount vs ___mcount on mips date back to pre-1.0 days.
1996-11-11 22:13:29 +00:00
jonathan bbcd2bb1ef Elf32 fixes for mips shared libraries:
* handle interpreters with nonzero virtual address of entry-point:
   subtract p_vaddr from computed entrypoint, as the mips elf exec did.

 * Add #ifdef ELF_INTERP_NON_RELOCATABLE/#endif around the code
   that tries to choose a `good' address at which to load an interpreter,
   if none was set by the emul probe  function.
   (the address chosen could be improved to avoid  fragmenting the
    process virtual address space).

 * define ELF_INTERP_NON_RELOCATABLE in machine/elf_machdep.h for mips CPUs,
   which currently use a GNU-derived ld.so.

ELF_INTERP_NON_RELOCATABLE is not necessary for native NetBSD/alpha ELF
binaries. It may be required for GNU-derived ELF dynamic loaders (Linux/i386?)
1996-11-11 20:33:10 +00:00
jonathan 502d34d915 Eliminate old mips/mips/elf.c ELF exec code.
Don't call into from the a.out exec hook; don't configure it into kernels.
1996-11-11 20:23:39 +00:00
jonathan 22858f6aed Eliminate old mips/mips/elf.c ELF exec code.
Don't call into from the a.out exec hook; don't configure it into kernels.
1996-11-11 07:45:30 +00:00
cgd 8a3333b2a9 Fix an inconsistency that came in with Lite: setrq() was renamed to
setrunqueue(), but remrq() was never renamed.  Rename remrq() to
remrunqueue().
1996-11-06 20:19:19 +00:00
jonathan 8ffa855e18 Increase MAXDSIZE to 256Mbytes. 1996-10-16 06:10:41 +00:00
jonathan 27ec6276b8 Rename mips CPU-family locore prefixes for case-consistency:
mips_r2000_, mips_R2000_ -> mips1_
    mips_r4000_, mips_R4000_ -> mips3_
(which are also, for mnemonic reasons,  consistent with gcc flag usage,
 rather than using mipsI_ and mipsIII_).
1996-10-13 21:37:35 +00:00
mhitch bc4aec6c5b Fix error from in_addr_t changes by christos: htonl() takes in_addr_t
parameter, not in_port_t.
1996-10-13 20:59:02 +00:00
jonathan fba8024a86 Add (missing) PAGE_IS_RDONLY() macro to test for readonly pages,
in both mips-I and mips-II versions, and use it in arch/mips/mips/trap.c.
1996-10-13 09:54:39 +00:00
jonathan 6ac1fdec40 Merge mips1 and mips3 pte/pmap code, pass 0;
* Move mips-I pte (TLBlo) definitions from pmax/include/pte.h
      to mips/include/mips1_pte.h

    * Move mips-III pte (TLBlo) definitions from  pica/include/pte.h
      to mips/include/mips3_pte.h

    * Add new mips/include/pte.h, which includes exactly one of
      mips1_pte.h or mips3_pte.h (which still have namespace collisions),
      depending on "options MIPS1" or "options MIPS3". (hack).
      Move soft kvtopte(), ptetovk() definitions to mips/include/pte.h

    * Add macro PTE_TO_PADDR() to hide the different hardware TLB formats
      when mapping from pte to physical address.

   * Add macro PTE_READONLY() to hide lack of SW read-only bit in mips-III
     tlb. (mips1 pmap uses a sw bit in the PTE, mips3 looks up RO bit in
     the kernel pmap.)

   * Use macros (not direct TLB frobbing) in mips/trap.c, to make it
     mips-1/mips-III indepenndet.

    * Change {pmax,pica}/include/pte.h to just do #include <mips/pte.h>.
1996-10-13 09:28:53 +00:00
jonathan a179b23932 Add marker labels to the end of the exception-vector (and exception
jump-table) locore entrypoints, so the stack traceback code can use
the end marker to handle entry points specially when doing  tracebacks,
even if it doesn't know about them  explicitly.
1996-10-13 08:45:15 +00:00
jonathan bc759e3dfb Apply
>backout previous kprintf change
change.
1996-10-13 07:45:01 +00:00
jonathan a49fa844a1 Fix stack traceback code for merged mips1/mips3 support:
add catch-all case, with distinct mips1 and mips3 ranges for locore
entry points,  cases to catch othewise-unknown locore entrypoints and
vector code (which have special entry sequences and require special
support to trace through).   The relevant mips1 and mips3 functions are
of course now distinct.
1996-10-13 07:09:33 +00:00
jonathan bb34d39024 Change pmax port over to using ``mips MI'' trap handler. 1996-10-13 05:28:48 +00:00
jonathan 54766d93cf Merge low-level mips trap handling and move to arch/mips/mips/trap.c. 1996-10-13 05:14:35 +00:00
christos d286889901 backout previous kprintf change 1996-10-13 03:39:27 +00:00
christos e37692f04d backout previous kprintf change 1996-10-13 03:29:05 +00:00
christos de83b4558f use in_addr_t and in_port_t 1996-10-13 03:02:26 +00:00
mhitch 4d1a9465f1 Add arch/mips/mips/mips_machdep.c, it's now compiled as a separate file. 1996-10-12 15:49:15 +00:00
christos 19d8368f2f printf -> kprintf, sprintf -> ksprintf 1996-10-11 00:44:42 +00:00
christos 8f56de03e1 printf -> kprintf 1996-10-11 00:22:09 +00:00
cgd 472889f8e4 moved to aout_machdep.h (via repository copy) 1996-10-08 12:57:37 +00:00
jonathan ba4d6af5fa Merge back MIPS3 locore stack-traceback code. 1996-10-07 11:20:53 +00:00
jonathan 45c47f41aa Fix for elf{32,64} changes: make <mips/reloc.h> re-includable,
Use elf_xxx section names (not elf32_xxx)in mips/mips/elf.c
1996-10-07 03:15:03 +00:00
jonathan fbdaac9a7a Use "MIPS1" and "MIPS3" as preprocessor tokens to select {config,compile}-time
support for mips-1 (r2000 family) and mips-3 (r4000 family) CPUs.
Avoids inconsistent use of CPU_R2000 and CPU_R3000.
1996-10-07 02:17:33 +00:00
jonathan 6c0d846a3d Include <mips/asm.h>, not the Sprite header names. 1996-09-30 02:21:20 +00:00
jonathan 1fc59008c3 Move Decstation-specific locore code (sii DMA copy, vmstat -i counters)
from arch/mips/mips/locore.S to arch/pmax/pmax/locore_machdep.S.
1996-09-30 01:30:21 +00:00
jonathan 0cfd4f8641 Update arch/pmax/Makefile to build in NetBSD rather than 4.4-Lite:
* Create arch/mips/Makefile.inc with source list of generic MIPS-cpu
    files for tags
  * Use mips/Makefile.inc and updated tag list in pmax/Makefile
  * Try building bootblocks in arch/pmax/stand.
1996-09-29 23:51:22 +00:00
cgd 64f4e1937e rename <machine/ecoff.h> to <machine/ecoff_machdep.h> for clarity and
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.)
1996-09-26 22:39:14 +00:00
cgd 0e097578a2 add and use a machine-dependent header, which currently defines some
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.
1996-09-26 21:50:55 +00:00
jonathan be78089fff * Add missing `UADDR' argument to RESTORE_USER_REGS() macro calls.
* Add back copyright notice and rcs ID from parent of previous
  revision (pre-merge).
1996-09-20 23:44:10 +00:00
jonathan de735d506d Fix for problem report port-pmax/2173: the local variable "inst"
in the branch-emulation  code was uninitialized, due to a misplaced #endif.

Remove the relevant #ifdef (macro version of GetBranchDest), and move the
XXX note about r4000 branch targets to the  function definition.
1996-09-18 11:16:20 +00:00
mycroft e6dd44f034 Use SIGBUS iff we get a legitimate bus fault. Use SIGSEGV for page protection
violations (per Solaris, SVR4, AIX, Linux, Irix, and SunOS).
1996-09-07 22:26:41 +00:00
jonathan 1cc7b834e4 * Add declarations for MIPS-III (r4000) locore entrypoints.
* Add initialization code to set MIPS-III exception vector and runtime
  jump-table for locore functions.
* Clean up for -Wall, pass 1.
1996-08-13 08:19:50 +00:00
jonathan 99b43cc2bc * Apply LOCORE -> _LOCORE change so locore.S doesn't #include struct
definitions.

* Include <mips/cpuregs.h> in <cpu.h> so kern_clock.c has user/kernel
  status bits in scope.  Still needs  work; r2k/r4k previous-mode bits
  are different.

* Include <mips/mips_param.h> in pica/include/param.h, for locore declarations,
  and definitions of vm and  other constants that should be shared across
  NetBSD/mips  systems to esnsure user-level binary compatibility.
1996-08-11 23:30:22 +00:00
mhitch 79fb4c0c30 Add missing #include of "ppp.h" to get definition of NPPP so that the
pppintr() call is actually included.  This fixes ppp so that it actually
works again.
1996-08-09 05:11:02 +00:00
thorpej cc1c24bbec RCS id police. 1996-07-16 23:23:55 +00:00
jonathan 9f364d3a3b Rename unused macro ELF_HDR_SIZE -> MIPS_ELF_HDR_SIZE to avoid clash
with #define of ELF_HDR_SIZE in MI elf code.
1996-06-26 04:41:41 +00:00
jonathan fc7c84da3a Explictly credit Per Fogelstrom for the mips shared library support in elf.c,
which was taken from OpenBSD/pica.

The previous revision of elf.c replaced Ted Lemon's elf exec machinery
with something closer to Christos' MI elf machinery. It turns out
that old NetBSD/pmax elf binaries have three segments, and the newer
elf exec machinery cannot exec them.

The old elf exec machinery is folded back into cpu_exec.c, which falls
back onto using the old machinery if the new machinery fails. The
old-style binaries will be deprecated at the 1.2 release.
1996-06-20 07:06:36 +00:00
jonathan 9fedff95ce Update mipspmax elf exec support:
* 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.
1996-06-17 10:51:28 +00:00
jonathan b212f1b0c1 Move cpu_singlestep outside of #ifdef DEBUG/#endif; the process-tracing code
in  mips/mips/process_machdep.c (erroneously) calls cpu_singlestep().
1996-06-17 07:55:13 +00:00
jonathan e0638e0c44 Include <mips/types.h> to bring u_int32_t and u_int16_t in scope for
the argument and return type of  {n,h}to{h,n}{l,s}.
1996-06-05 23:44:31 +00:00
jonathan 4139356a98 Copy the pmax locore.S code into the arch/mips hierarchy and split
it into three pieces:

 * locore.S, which contains generic mips locore code,
   applicable for both r2000/r3000 and r4000s (in 32-bit mode).

 * locore_r2000.S, which contains r2000/r3000 (MIPS-I) versions
   of the locore functions that need mips-generation-specific
   instructions or handling.
 * locore_r4000.S, which contains r4000/r4400/r4600 (MIPS-III?) versions
   of the locore functions that need mips-generation-specific
   instructions or handling.

Much of the code in locore_r4000.S is derived from Per Fogelstrom's Pica port.
locore.S still contains some pmax-specific DMA-buffer copy functions.
1996-05-21 00:20:40 +00:00
jonathan e704a8e1e9 * Move the declarations of mips locore functions from the pmax tree
to the mips tree.
* Add declarations of functions used by vm_machdep.c.
* Add declarations of functions printed by name in stack tracebacks.
* Add declarations of functions used by the model-independnet mips machdep.c
  code.
1996-05-20 23:38:26 +00:00
jonathan 7666d5b36b Check that either CPU_R3000 or CPU_R4000 is defined. Fix the r3k/r2k
symbolic lookup of the CPU-level specific locore entry points to use the
r2k, not the r4k, labels.

Include header files to get prototyped declarations of ipintr() and arpintr().
Remove unused variables and parenthesize assignments in if () expressions.

Gcc warns of a possible && vs || operator-precedence bug in the network
softint dispatch code, which needs more thought.
1996-05-20 23:24:00 +00:00
jonathan baa655bc0f Update the DECstation stack-traceback pretty-printer, KN01 interrupt handler,
and IOCTL ASIC dma-buffer-reservation code to use the reorganized am7990
preprocessor tokens and function names.
1996-05-19 17:58:12 +00:00
jonathan 6d5fbdfbe2 Remove common-across-all-MIPS-cpu definitions (e.g., user-level-visible
page/segment size definitions and macros) from pmax/include/param.h,
and move them to mips/include/mips_param.h.
1996-05-19 17:52:18 +00:00
jonathan e2a698293c Add local declarations for locore functions. Fix pagemove() return
type to be void. Add explicit "int" return types.
Fix format/argument mismatches for vm_offset_t's in diagnostic messages.
1996-05-19 15:55:31 +00:00
jonathan a67936cc04 Declare mips_elf_makecmds(), not pmax_elf_makecmds(). 1996-05-19 04:15:37 +00:00
jonathan bce6b88e9a Include <machine/locore.h>, to force all MIPS cpu-model specific
locore calls to go via a locore-entry jumptable.

Cast the (int) arguments  to MachTLBUpdateEntry() to avoid
warnings.  Variables TLB entries are still type-punned as either structs
or ints, without any regard, when the pmax-specific VM code passes
them as arguments to functions.
1996-05-19 02:00:58 +00:00
jonathan 6bb09a3781 Include <machine/locore.h>, to force all MIPS cpu-model specific
locore calls to go via a locore-entry jumptable.

Use mips_btop(), mips_round_page, mips_trunc_seg() instead
of pmax_btop(), pmax_round_page, pmax_trunc_seg().

Add Per's software-readonly-bit mechanism, since the r2000 and r4000
hardware TLB entries are  very different, and the r4k has no space for
software bits in TLB entries.  That is, this pmap code still won't work
on r4000 machines. Some other solution, like another jump table for
clients of the  pmap code, is necessary.
1996-05-19 01:58:35 +00:00
jonathan b4c4b28e43 Include <machine/locore.h>, to force all MIPS cpu-model specific
locore calls to go via a locore-entry jumptable.

Declare  r2000- and r4000-specific exception-handler functions, to which
trap() and interrupt() dispatch exceptions. Initialize r2000- and r4000-
specific exception-handler vectors, when CPU_R4000 and CPU_R2000 are
defined.

Update the stack-traceback code (partially) to understand and print
the new low-level exception-handler code, via which machine exception-vectors
send exceptions to call trap() or interrupt(). This needs  more work.
1996-05-19 01:54:49 +00:00
jonathan 5a890607de Define the conventional pmax locore entry-point names to be calls through
an vector (struct) of function pointers.  Add prototype declarations for
each vector entry.
Add declarations for the r2000 (MIPS-I) and r4000 (MIPS-III) locore
versions of the relevant functions.
1996-05-19 01:32:56 +00:00
jonathan 0064a12f68 Create mips_machdep.c, which contains Mips-specific functions common
to all mips ports.

So far, this consists of code to initialize a vector, or jump-table, of
pointers to locore functions that require different definitions on different
Mips CPUs (eg., r2000/3000 and r4000); a generic wrapper for setting up
CPU-specific exception vectors; and CPU and FPU identification code.
1996-05-19 00:31:57 +00:00
jonathan 503d421a0a Add alternate "mips_r2000_<XXX>" entry points for the r2000/r3000-specific
locore functions.  The new names are used by C code to construct a jump-table,.
making it less infeasible to have a single kernel image work on both
r3000 and r4000 systems.
1996-05-19 00:25:14 +00:00
cgd d5b0482bb9 update for changed ecoff headers. minor consistency changes for the
ecoff functions, as well.
1996-05-09 23:48:47 +00:00
cgd b10c43013d change structure member names to be in line with what various ECOFF
documentation I have calls them, and update for new definitions in
sys/exec_ecoff.h.
1996-05-09 23:46:18 +00:00
jonathan 368824e74c Fixes for -Wall -Wmissing-prototypes:
Add prototypes to (most of) src/sys/arch/pmax/pmax. (The  un-protytyped
   parts still have pending merges with the Pica port.)
   Fix splx() glitches in pmax/clock.c.
   Delete old cpu/fpu identification from pmax/autoconf.c, use r4400/r4600/idt
   aware code from Pica port, now in mips/mips/mips_machdep.c.
   Delete unused multi-CPU autoconfiguration code; NetBSD/pmax does not
   support decsystem 5800s anyway.
1996-04-10 17:38:18 +00:00
jonathan 8a1933076a Fixes for -Wall -Wmissing-prototypes:
Replace impliclty-sized types (u_long, u_short) used in
	declarations of byteorder functions witho explicitly sized types
	(u_int32_t, u_int16_t).

Avoids problems with using ntohl(foo) as (eg) an argument to printf().
1996-04-09 20:56:45 +00:00
jonathan 08a45c0a18 Fixes for -Wall -Wmissing-prototypes:
Do not define __BDEVSW_DUMP_OLD_TYPE, as it breaks prototyping
	of device dump functions, and should be port-dependent in any case.
The pmax 4.4bsd/pmax-derived drivers are being fixed, and the pica port
uses the MI scsi drivers already.
1996-04-09 20:54:08 +00:00
jonathan d115f89b5f Update arch/pmax/pmax/genassym.c to compile with -Wall: use offsetof().
Move to mips/pmax/genassym.c, as (most of) the assembler locore code is
being merged into a generic-MIPS locore.

Remove the redundant pmax/pmax/genassym.c.
1996-04-07 14:27:00 +00:00
jonathan 5163f64c0f merge mips and pica locore.S, pass 0:
* cut-and-paste all the code for both r2000 (MIPS-I) and r4000 (MIPS-III)
      into both the pica and pmax locore.S.

    * Change the names of the small segments of vector code that are
      bcopied to the machine vector locations, to avoid clashing.
      Get rid of the Sprite MachXXX names for the vector code, and
      use use mips_r2000_xxx and mips_r4000_xxx instead.

      Update the names used in the vector-copying code and trap handlers
      to match.

    * Most of the rest of the pica locore.S was copied from the pmax
      locore.S, and then edited to work on an r4000.  The names of
      functions and of manifest constants stayed the same, although
      both assmbler code and constant values changed.
      cut-and-paste such code into contiguous blocks protected by
      #if / #endif.  Much of the cache and trap-handling code
      needs r3000-only register fields, on the r3000, and r4000-only
      insns and registers on the r4000.

   * change the pmax r2000 exception-handling code to extract a trap
     code with the user/kernel bit at 0x20 rather than 0x10.
     (r2000s have 4-bit execption codes, r4000s have 5-bit.)
     Use the a 16 from-user-space + 16-from-kernel space jump table,
     just like on the r4000 pica port.

   * add NOPs to the common code where required by the r4000 pipeline
     constraints.
   * add _C_LABEL() macros to the r4000 locore.

Comitted to provide a snapshot for others to test, and work on a cleaner merge.
1996-03-31 03:38:21 +00:00
jonathan 34ab2734da Resolve all differences between the Pica and pmax versions of machConst.h:
* add "MIPS_3k_" for the MIPS-I r[23]000-specific register definitions.
    * add "MIPS_4k_" for the MIPS-II/III r4000-specific register definitions.
    * add #defines that provide the old values for locore and user
      code, so the existing code continues  to compile.

Regression-tested against the  old headers by grepping for #define's,
editing out the defined symbols, and preprocessing with both the previous
machConst.h headers and this version.

Some unused symbols (CPU and FPU must-be-zero constants) are no longer defined.
Pica interrupt masks are now constant expressions instead of constant
values.

TODO:
    * factor out the common #defines into src/sys/arch/mips.
    * Get rid of the Sprite coding-style names (MACH_xxx).
    * Separate out the r3k/r4k differences from the Pica/pmax differences.
    * Figure out how to have a run-time choice of r3k vs. r4k support,
     instead of a compile-time choice.
1996-03-28 11:34:05 +00:00
jonathan bfa1f425bc Add mips/mips/mem.c and mips/mips/process_machdep.c 1996-03-26 11:45:59 +00:00
jonathan 97f32908b1 Split trap handler into mips-generic and port-specific functions:
* Delete pmax-specific functions and declarations from trap.c

* Delete mips-geeneric functions and declaratinos from pmax_trap.c

* Rename the function pointer used to handle hardware interrupts to
 "mips_hardware_intr".  Define it in trap.c. Change references elsewhere,
  including machdep.c.

Verified to boot on a 5000/200.
1996-03-25 06:44:17 +00:00
jonathan 458024d39d Random additions from the Pica r4k port:
* Add spl4() and spl5() functions from the Pica port.
* Add MachFPTrap() as an alternate entry point for MachFPInterrupt.
  The r4k reports floating-point execptions as a trap, not an interrupt,
  and the Pica port uses the name MachFPTrap().
* Add nops to the Mach_spl?() functions and MachFPInterrupt, as required
   for the r4k port.
Commit "floppy"  interrupt counter for vmstat -i.
1996-03-25 06:40:39 +00:00
jonathan 522f8705a1 Copy src/sys/arch/pmax/pmax/trap.c to pmax_trap.c.
trap.c will contain the port-independent mips trap-handling functions.
pmax_trap.h will contain the pmax-specific interrupt handlers.
1996-03-25 05:55:30 +00:00
jonathan e920e8f829 Force reporting of memory errors for the 3MAX (aka kn02 aka 5000/200) to
always be eight digits.
Copy the kn02 memory-interrupt reporting function to the kn03 (5k/240)
memory-error handler, since the 3MAXPLUS seems to use the same ECC hardware
as the 3MAX.
1996-03-25 03:18:15 +00:00
jonathan 3b5a818c4e Rename from pmax/include/machAsmDefs.h to mips/include/asm.h.
Update the include-idempotency preprocessor token to match.

References to machAsmDefs in vendor (sprite, 4.4bsd) headers left unchanged,
for historical accuracy.
1996-03-25 02:50:50 +00:00
jonathan 71b212b66a Change pmax T_USER bit (software only) to be 0x20, the same as the
Pica port. (The r4000 CPU used in the pica has more hardware execption types.)
1996-03-24 08:12:53 +00:00
jonathan 893a0b508b fix case typo: CLKF_BASEPRI_R4k to _R4K 1996-03-23 20:28:19 +00:00
jonathan cd58cb9caa Factor out r3000 versus r4000 differences (CLKF_USERMODE() and CLKF_BASEPRI()),
provide r3k and r4k versions of each, and move to sys/arch/mips/include.

Note in comments where each mips-based port should provide
definitions in its own cpu.h after including this file.
1996-03-23 20:21:49 +00:00
jonathan 78aac1c7b9 Merge in additions of missing MIPS-I opcodes, and r4000-in-32-bit mode
opcodes from the Pica port.   Per Fogelstrom claims the latter are all
supposedly  MIPS-II (r6000) instructions, rather than MIPS-III (R4000),
but we haven't checked to be sure.  Are LL/SC really in MIPS-II?
CVS:: ----------------------------------------------------------------------
1996-03-23 18:49:29 +00:00
jonathan bfb10e5bdf Rename "pmax_elf_makecmds()" to "mips_elf_makecmds()".x 1996-03-23 04:59:00 +00:00
jonathan 69a70ec129 Merge in changes from the Pica port.
Still needs more thought for single-stepping and process_write_regs().
1996-03-20 01:30:49 +00:00
jonathan e3bc270a69 Change "XXX_pmax" to "XXX_mips" in preparation for merging with
Pica reloc.h.
1996-03-19 22:18:45 +00:00
jonathan f8342fcf97 Remove #ifdef LANGUAGE_C - protected definition of "struct reg".
(It was a duplicate of the real definition reg.h and was never used.)
1996-03-19 15:20:39 +00:00
jonathan d2c42783a3 Add trap definitions added for the r4000 port.
Note: T_USER is different in the pmax and pica ports!
1996-03-19 04:34:57 +00:00
jonathan ac7c6304db Add eight 32-bit (XXX) words of reserved space to struct sigcontext,
for binary compatibilty with the pica port.
1996-03-19 04:22:04 +00:00
jonathan ad4d94c4f3 Change "pmax_xxx" macros to "mips_xxx" macros, in preparation
for moving to src/sys/arch/mips/include/pmap.h.
1996-03-19 04:15:15 +00:00
jonathan 648169b854 Kernel config file for source code shared by mips-based NetBSD ports. 1996-03-19 03:26:29 +00:00
jonathan dcb272ef6e Remove pmax-specific CLK_TICK to prepare for moving to sys/arch/mips. 1996-03-19 02:45:48 +00:00
jonathan b495cef581 Add additional mips CPU and FPU ids from Pica port:
IDT r3081 family, r4600, MIPS-IV architecture, others.
1996-03-19 02:42:28 +00:00
jonathan 1cc17fc971 Change "pmax" -> "mips" before moving to sys/arch/mips/include. 1996-03-19 02:12:05 +00:00
jonathan c29eb3ea76 NetBSD's ieee FP definitions for the pmax are valid for other mips cpus;
change preprocessor XXX_PMAX_YYY #defines to XXX_MIPS_YYY.
1996-03-18 22:40:21 +00:00
jonathan ffd8d4cdc7 Additional fixes to complete the NetBSD/1.1B config changes:
Update the kn01 (3100 aka pmax) interrupt handler to use XXX_cd instead
of XXXcd.
1996-03-17 22:12:13 +00:00
jtc 2ce5f1478b Add _BSD_WINT_T_ definition so we can handle wint_t type added in NA1. 1996-03-16 01:31:45 +00:00
jonathan dc6fdf6cdc First commit of Per Fogelstrom's port to the Acer pica r4400/isa machine. 1996-03-13 04:58:04 +00:00
jonathan ff27dbbcf9 Revert pmax stdarg.h and varargs.h to versions from 1995-11-13. Those
versions work correctly; at some point between then and the immediately
preceding revisions, the "stylistic" changes to one (or both) stdarg.h
and varargs.h broke passing doubles to printf().
1996-02-26 23:29:05 +00:00
jonathan bf52fa8269 The prototyping `fixes' broke vmapbuf() and vunmapbuf(), due to a "sz"
parameter parameters shadowing locals.  Replace vmapbuf() and vunmapbuf()
with the Alpha-port versions, which are cleaner (use round_page(),
trunc_page(), etc.)
1996-02-06 00:31:51 +00:00
jonathan cb7e6f2e0f Change last argument of ktrsysret() call: pass rval[0], not rval, as
ktrsysret() expects.   Tracing of  rval[1] remains an open problem.
1996-02-06 00:13:04 +00:00
christos 2c8314f73c vm prototype changes 1996-02-05 02:06:38 +00:00
jonathan 1f780158bb Redo the locore interrupt counters reported by vmstat -i:
* add a new enum decstation_intr_t to trap.c, naming each instrumented
  interrupt symbolically, and used to index into intrcnt[].  Change the
  model-specific interrupt handlers to use the decstation_intr_t when
  updating interrupt counters.
* add instrumentation to the kmin and maxine interrupt handlers.
* fix a bug that counted each hardclock interrupts on the kn02 twice.

The hardcoded mapping from locore names to units is gross; but these
counters will hopefully be useful in identifying interrupt hot-spots
and PPP problems on the 3MIN.
1996-02-04 20:14:17 +00:00
mycroft 9db20bf150 Don't define _KERNEL here. 1996-02-02 19:42:08 +00:00
mycroft 9d9a70a5a2 Fix #includes. 1996-02-02 18:05:36 +00:00
mycroft 88e512b693 LOCORE -> _LOCORE 1996-02-01 22:28:24 +00:00
jonathan e229c8d175 Resolve pmax and alpha IOCTL asic driver differences, pass 1:
Rename the ioctl asic register and slot macros from ASIC_<xxx> to
IOASIC_<xxx>, to be compatible with the machine-indpendent names in
sys/dev/tc/ioasicvar.h.  The pmax code still uses
sys/arch/pmax/pmax/asic.h, as some of the registers and offsets
defined there are not yet defined in sys/dev/tc/ioasicvar.h.

Rename the ioctl asic base-address pointer from `asic_base' to `ioasic_base'.
1996-01-31 08:46:42 +00:00
jonathan 5ea2ec2357 Re-write Decstation turbochannel autoconfiguration code to use the machine-
independent TC support in sys/dev/tc/tc.c and sys/dev/tc/tcvar.h:
  * Change the tc autoconfiguration tables to use a struct tc_attach_args
    instead of the ad-hoc structure.
  * Change all pmax device drivers to use a `struct confargs' that's
    assignment-compatible with  sys/dev/tc/tcvar.h `struct tcdev_attach_args'.
    Devices that can be present on a TC or as ioctl asic/mainbus builtins
    use  the same `struct confargs'.
  * Eliminate the `BUS_CVTADDR()' macros which the pmax port inherited from
    an old, now-obsolete sys/arch/alpha snapshot.

  * Update the comments and debugging code in interrupt handlers to
    be consistent with the machine-independent TC support.

Other commits that overlap the same source files include: re-enabling
clock-tick interrupts earlier, and counting hardclock ticks for vmstat -i.
1996-01-29 22:52:15 +00:00
jonathan df51f8395d Change MachEmulateBranch() to be able to read an insn from user space.
Kernel-debugger breakpoints in user space, or FP insns that cause
underflow in a delay slot, should now work properly. Single-stepping
of arbitrary user processes, from user level, should be added.
1995-12-28 16:22:41 +00:00
mycroft cd8fe86bcb Make the type of __builtin_va_list a long. 1995-12-26 01:16:24 +00:00
mycroft 0c00214737 Use __builtin_va_alist. 1995-12-26 00:19:09 +00:00
mycroft fa887628d8 Stylistic changes. 1995-12-25 23:15:31 +00:00
mycroft d1de691efb Stylistic changes. 1995-12-25 22:22:02 +00:00
mycroft 0199e002ad Update for GCC 2.7, and fix bugs. 1995-12-25 21:41:08 +00:00
jonathan 2852152043 Reserve a number in the machine-dependent range for PT_STEP, in
case the kernel-debugger implementation of single-stepping ever works
with user code.
1995-12-21 09:28:36 +00:00
jonathan c0f958f6be Add support for ptrace PT_GETREGS and PT_SETREGS for NetBSD/pmax:
* define PT_GETREGS and PT_SETREGS in pmax/include/ptrace.h
 * Flesh out the stubs in pmax/pmax/process_machdep.c to handle
   those requests.
 * Now that "struct reg" is actually used, remove the bogus
   #ifdef LANGUAGE_C around its definition, and redo pmax/include/reg.h
   so that the definitions needed by locore.S are in a separate file,
   pmax/include/regnum.h.
 * update locore.S to match.
1995-12-20 02:00:23 +00:00
jonathan 00b821d6c2 Change mips __warn_references() macro to use the ELF warning features
in binutils 2.6 and (patched) gcc 2.7.2. Only works with gcc in ANSI C
mode, for now.
1995-12-15 01:17:04 +00:00
mycroft 292120bf63 Define __FORK_BRAINDAMAGE. 1995-12-09 04:41:41 +00:00
jtc 0cd793449e merge in changes from 1.1 release branch 1995-11-30 00:56:23 +00:00
jonathan ae1b64d888 Fix btoc()/ctob() typo in reading physical memory that stopped ps
from reading process argument lists.
Allow kernel-virtual memory reads to read the message buffer, since
dmesg needs it.
1995-09-29 21:53:29 +00:00
jonathan b543578236 Add a missing "nop" in a delay slot in the floating-point exception
handler.  Gradual underflow and fp emulation now work correctly.
Proper denorms also fix strtod() inaccuracies and Gcc's "enquire" program.
1995-09-28 20:02:50 +00:00
jonathan cd887a9930 Add "kvtophys()", which maps MIPS R2000 kernel-virtual addresses to physical addresses,
so they can (e.g.) be written to DMA mapping registers.
1995-09-25 20:36:23 +00:00
jonathan d1234038d4 Rename the force-all-pending-writes to memory function to wbflush().
Keep the old Mach-derived name "MachEmptyWriteBuffer()" as an alternate
entry point.
1995-09-21 23:28:31 +00:00
jonathan 0641f09bfb Include <sys/mount.h>, as the new <sys/syscallargs.h> won't compile without it. 1995-09-20 23:33:25 +00:00
thorpej 7d7396c414 Make system calls conform to a standard prototype and bring those
prototypes into scope.
1995-09-19 22:53:47 +00:00
jonathan 9a914b5b01 Rename the Decstation 2100/3100 interrupt functions from "pmax_<func>"
to "kn01_<func>", to avoid confounding a model name (PMAX) with the name of the
entire port (pmax).


Change the signature of interrupt-handlers to take a void *
(a pointer to the softc) and return an int (indicating spurious
interrupts or other conditions.)

Pass softc pointers to the scsi and ethernet kn01 (DS_PMAX)  drivers,
rather than having unit numbers wired into the base-level interrupt
handler.
1995-09-11 22:03:00 +00:00
mycroft fa13d32c41 Add splsoftnet(). 1995-08-13 00:16:08 +00:00
jonathan 6a99440efd Add prototypes for most functions. Fix typo where statements
intended to increment interrupt counters for vmstat -i (i.e., "ctr++")
on 3100s had just a single "+", and hence had no effect.
1995-08-01 06:58:57 +00:00
jonathan 4525afdaeb Add diagnostics for 5k/240 turbochannel interrupts, and clean up IOASIC clock
declarations.
1995-07-23 20:21:17 +00:00
cgd 479fb9e45b add <sys/cdefs.h> inclusions. namsspace-protect physadr, label_t
def'ns against _POSIX_SOURCE and _ANSI_SOURCE.
1995-07-06 03:39:32 +00:00
paulus 08b7596c51 Add code to interrupt to call pppintr. 1995-07-04 12:22:21 +00:00
cgd c83f9c5568 remove unused cpu_exec() definitions. moved "broken swap" markers, for
ports that still need it, to types.h.
1995-06-28 02:55:18 +00:00
cgd 1c0be437b1 define __BDEVSW_DUMP_OLD_TYPE for ports where it's true. clean up
some m68k ports inclusion of common header.
1995-06-26 05:13:37 +00:00
jtc 55fbbc705d Wrap with #ifndef _XXX_FLOAT_H_/#define _XXX_FLOAT_H_/ ... /#endif. 1995-06-20 20:45:22 +00:00
jtc 1d65cdd4ab #include <sys/cdefs.h>.
Wrap __flt_rounds() declaration with __BEGIN_DECLS/__END_DECLS.
1995-06-20 20:32:22 +00:00
mellon 1305dc32df Put parentheses around macro arguments 1995-06-16 02:07:33 +00:00
jonathan ae4eae4f63 Change reference in asm code from ``__mcount'' to ``___mcount'', to be
consistent with the (default) prepending of underscores to identifiers.

Because this reference is inside an ASM string it's too hairy to
conditionalize to support different toolchains that don't prepend underscores.
(Just don't do profiling with  such  toolchains.)
1995-05-31 00:25:06 +00:00
jtc f90f8d10aa Removing -DKERNEL, transition to _KERNEL has been completed 1995-05-16 22:24:17 +00:00
jonathan 4175c2819f Redo 3MAX+ (5k/240) interrupt enable code.
Instead of being a no-op, kn03_intr_enable() sets the sw copy of the
interrupt-enable mask *and* writes it into the IO asic intr-enable
register.  Boot code sets the sw copy (kn03_tc_imask) to something
sane (KN03_IM0, with tc option slots turned off).  Tested and works.
Interrupt code for other IOASIC machines should be redone so that
interrupts for devices are enabled by drivers, rather than by
cpu-specific boot code.  Functions common to all IOASIC machines
(PSWARN?) should be done by asic_init().

Checked in without the above changes so that 3MAX+, MAXINE and 3MIN
interrupt-(enable,handle) can converge.
1995-05-12 23:27:23 +00:00
mellon 214234c937 Fix MAXine interrupt mask routine 1995-05-05 06:48:14 +00:00
cgd 8703076975 define BROKEN_SWAP and/or cpu_swapout as appropriate. 1995-05-05 03:41:51 +00:00
mellon 3ff601e7a1 Don't conditionalize utility routines based on DEBUG flag 1995-05-05 02:45:31 +00:00
mellon c6a24163a3 Use Alpha cdefs.h 1995-05-03 06:04:54 +00:00