Home | History | Annotate | Download | only in sun3x
History log of /src/sys/arch/sun3/sun3x/locore.s
RevisionDateAuthorComments
 1.78  17-Jan-2024  thorpej Make sigcode.s and sunos_sigcode.s build as their own stand-alone files.
 1.77  17-Jan-2024  thorpej Make compat_13_sigreturn13.s and compat_16_sigreturn14.s build as their
own stand-alone files and G/C the now-empty sigreturn.s.
 1.76  16-Jan-2024  thorpej Build m68k/support.s on its own; don't include it from locore.s
 1.75  15-Jan-2024  thorpej G/C __HAVE_LEGACY_INTRCNT from the sun68k platforms.
 1.74  14-Jan-2024  thorpej Switch the sun68k platforms over to the common m68k interrupt dispatch code.
 1.73  13-Jan-2024  thorpej G/C unreferenced copies of _spl() and _splraise().
 1.72  12-Jan-2024  thorpej We only need one copy of getvbr() and setvbr().
 1.71  12-Jan-2024  thorpej Make getsr() an inline in <m68k/psl.h> and G/C all of the now-redudant
copies.
 1.70  12-Jan-2024  thorpej Remove getsp(); nothing uses it.
 1.69  16-Mar-2022  andvar branches: 1.69.4;
s/paniced/panicked/ and s/borken/broken/ in comments.
 1.68  31-Mar-2021  simonb Adjust the number of entries in the intrcnt array to match the number
of names in the intrnames list.
 1.67  25-Jan-2021  tsutsui branches: 1.67.2;
Remove #undefs against INTERRUPT_SAVEREG and INTERRUPT_RESTOREREG.

They have been defined in <m68k/asm.h> for years.
 1.66  19-Dec-2018  maxv branches: 1.66.12;
Remove compat_svr4 and compat_svr4_32, as discussed on tech-kern@ recently,
but also as discussed several times in the past.
 1.65  24-Mar-2014  christos branches: 1.65.28; 1.65.30;
avoid dup defs, use global macros
 1.64  22-Dec-2011  tsutsui branches: 1.64.6; 1.64.10;
Merge m68881_save() and m68881_restore() (using most common mvme68k ones).
All functions are checked by my eyes, and all GENERIC kernels compile.
 1.63  15-Nov-2011  tsutsui branches: 1.63.4;
Move spread getsfc() and getdfc() functions into common m68k/support.s.

Note:
- ENTRY_NOPROFILE() is okay since they are used only for debug printf
- they are declared to return int so no need to put a return value into %a0
 1.62  08-Feb-2011  rmind branches: 1.62.4;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.61  15-Oct-2010  tsutsui branches: 1.61.2; 1.61.4;
Make common kernel module binaries work on both sun3 and sun3x.
Tested on 3/160 (on TME) and (real) 3/80.

XXX: module files can be loaded only on single user?
 1.60  25-Feb-2010  skrll branches: 1.60.2;
s/cpu_fork/cpu_lwp_fork/ in comment
 1.59  10-Dec-2009  rmind branches: 1.59.2;
Rename L_ADDR to L_PCB and amend some comments accordingly.
 1.58  26-Nov-2009  matt Kill proc0paddr. Use lwp0.l_addr instead.
 1.57  17-Oct-2007  garbled branches: 1.57.20;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.56  20-Jul-2007  tsutsui branches: 1.56.6;
Sync with sun3/locore.s rev 1.88:
> Pass a frame pointer to trap() rather than the 'entire frame' trick. Gcc4
> was optimizing away modifications to the frame contents (it's not nice to
> trick gcc). Pass the pointer as the first argument to reduce the number
> of places that would be changed otherwise. Fixes the getcwd regression
> test on most m68k ports.
Fixes MMU fault panic in trap() on sun3x.

This should be pulled up to netbsd-4 too.
 1.55  18-May-2007  tsutsui branches: 1.55.2; 1.55.4;
Adapt sun68k ports to yamt-idlelwp.
Tested on TME (sun2 and sun3) and 3/80 (sun3x).
 1.54  11-Dec-2005  christos branches: 1.54.24; 1.54.30; 1.54.32; 1.54.38; 1.54.40;
merge ktrace-lwp.
 1.53  05-Mar-2004  he branches: 1.53.16;
Remove the local proc_trampoline definition from this file as well.
 1.52  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.51  18-Jan-2003  thorpej branches: 1.51.2;
Merge the nathanw_sa branch.
 1.50  02-Nov-2002  chs finish conversion to the common m68k cacheops:
add support for machine-specific flavors of the ops for off-chip caches.
many thanks to Izumi Tsutsui for his help with this.
 1.49  20-Oct-2002  chs merge the 12 copies of vm_machdep.c on the m68k platforms.
clean up some other stuff along the way, including:
- use m68k/cacheops.*, remove duplicates from cpu.h.
- centralize a few declarations in (all the copies of) cpu.h.
- define M68K_VAC on platforms which have a VAC.
- switch the sun platforms to the (now common) proc_trampoline().
- do the phys_map thang on the sun platforms too, no reason not to.
 1.48  22-Jul-2001  scw branches: 1.48.6;
ptest_addr() is prototyped (in pmap.c) to return a u_long not a pointer.
Therefore the return value should be in %d0, not %a0.
 1.47  30-May-2001  lukem branches: 1.47.2;
add missing #include "opt_kgdb.h"
 1.46  12-May-2001  kleink Update to reflect that unlike in m68k a.out environments, where the .align
directive is given a log2 argument, .align is given a linear argument in
m68k ELF environments.
 1.45  22-Feb-2001  chs branches: 1.45.2;
switch sun3 to ELF. highlight include:
add "%" prefix to register names in assembly code.
change assembly functions to return values in %a0 instead of %d0.
C symbols no longer prepend an underscore, adjust assembly code for this.
32-bit values are now 32-bit aligned instead of 16-bit aligned,
adjust structure packing and padding to override this where necessary.
make EXEC_ELF std, make EXEC_AOUT and COMPAT_AOUT_M68K optional.
use the MI loadfile() instead of several home-grown versions.
 1.44  26-Nov-2000  jdolecek split m68k SunOS and SVR4-specific sigcode.s code to sunos_sigcode.s
and svr4_sigcode.s respectively
adjust individual m68k port's locore.s to include new sigcode files if
appropriate
 1.43  03-Nov-2000  tsutsui Fix typo in the previous revision. (s/LIdle/Lidle/)
 1.42  20-Aug-2000  thorpej Add a lock around the scheduler, and use it as necessary, including
in the non-MULTIPROCESSOR case (LOCKDEBUG requires it). Scheduler
lock is held upon entry to mi_switch() and cpu_switch(), and
cpu_switch() releases the lock before returning.

Largely from Bill Sommerfeld, with some minor bug fixes and
machine-dependent code hacking from me.
 1.41  31-May-2000  thorpej Add a comment on single-processor systems about p_cpu being initialized
by fork1().
 1.40  31-May-2000  nathanw Update for qs -> sched_qs change.
Kernel compiles again.
 1.39  26-May-2000  thorpej branches: 1.39.2;
First sweep at scheduler state cleanup. Collect MI scheduler
state into global and per-CPU scheduler state:

- Global state: sched_qs (run queues), sched_whichqs (bitmap
of non-empty run queues), sched_slpque (sleep queues).
NOTE: These may collectively move into a struct schedstate
at some point in the future.

- Per-CPU state, struct schedstate_percpu: spc_runtime
(time process on this CPU started running), spc_flags
(replaces struct proc's p_schedflags), and
spc_curpriority (usrpri of processes on this CPU).

- Every platform must now supply a struct cpu_info and
a curcpu() macro. Simplify existing cpu_info declarations
where appropriate.

- All references to per-CPU scheduler state now made through
curcpu(). NOTE: this will likely be adjusted in the future
after further changes to struct proc are made.

Tested on i386 and Alpha. Changes are mostly mechanical, but apologies
in advance if it doesn't compile on a particular platform.
 1.38  26-May-2000  thorpej Introduce a new process state distinct from SRUN called SONPROC
which indicates that the process is actually running on a
processor. Test against SONPROC as appropriate rather than
combinations of SRUN and curproc. Update all context switch code
to properly set SONPROC when the process becomes the current
process on the CPU.
 1.37  26-Oct-1999  itohy Fix the problem that single-step tracing of a trap instruction
drops the system into kernel debugger.
 1.36  01-Aug-1999  thorpej branches: 1.36.2; 1.36.4; 1.36.6;
Make sure the branch target of the delay loop is aligned to a cache
half-line (8-byte) boundary. Inspired by a discussion w/ Scott Reynolds.
 1.35  30-Apr-1999  christos Include opt_compat_sunos.h
 1.34  19-Apr-1999  kleink Add COMPAT_SVR4 for m68k.
 1.33  24-Mar-1999  mrg branches: 1.33.2;
completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.32  26-Feb-1999  is sun3 part of fix for PR 6152
 1.31  11-Nov-1998  thorpej 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.
 1.30  30-Sep-1998  thorpej Garbage collect trap #1 and trap #2 handlers; they're moved to
trap_subr.s
 1.29  30-Sep-1998  thorpej Pull in opt_compat_netbsd.h
 1.28  09-Sep-1998  thorpej 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).
 1.27  09-Jun-1998  gwr First cut at UVM support. Compiles, but not tested yet.
 1.26  05-Feb-1998  gwr Merge arch/sun3x into arch/sun3
 1.25  22-Jan-1998  gwr branches: 1.25.4;
Separate pmap_activate() from _pmap_switch(), so the latter can remain
equivalent to what locore.s:cpu_switch does with in-line assembly when
PMAP_DEBUG is not defined. Also do splimp/splx in pmap_activate.
 1.24  22-Jan-1998  gwr Use MONEND instead of DVMA_SPACE_START in the "DDB convenience" symbols.
 1.23  02-Jan-1998  thorpej Make pmap_activate() take a proc *.
 1.22  16-Oct-1997  gwr MONSTART/monstart symbol
 1.21  29-May-1997  gwr Add non-inline version of _splraise.
 1.20  13-May-1997  gwr Eliminate references to vmspace.vm_pmap
(also fix some comments).
 1.19  02-May-1997  jeremy Wrap all label references with new macros in m68k/asm.h in preperation
for ELF switchover. (eventually)
 1.18  25-Apr-1997  gwr Rename "Idle" to "_Idle" so clock.c can reference it.
 1.17  25-Apr-1997  thorpej Adjust for <m68k/m68k/trap_subr.s>
 1.16  13-Apr-1997  thorpej Use common m68k sigcode.
 1.15  09-Apr-1997  thorpej Use <m68k/m68k/proc_subr.s>
 1.14  31-Mar-1997  jeremy In-tree GNU ``as'' does not know of 'pmove <reg>,tt0' instruction. Changed
instances of this instruction to hardcoded opcode statements. Thanks to
jthorpe for pointing this out.
 1.13  17-Mar-1997  gwr s/fpu_type/fputype/g
 1.12  16-Mar-1997  thorpej Use <m68k/m68k/support.s>
 1.11  13-Mar-1997  gwr Sync with sun3 (Trap 1,2,15 handlers)
 1.10  05-Mar-1997  gwr Add ptest_addr
 1.9  20-Feb-1997  jeremy Added the '@' symbols that GAS needs for address register indirect addressing
statements that are used when PMAP_DEBUG is undefined.
 1.8  12-Feb-1997  gwr Reinstate call to pmap_activate() for now, because it is helpful
for debugging the pmap code. The in-line version of the same is
still here and will be used if PMAP_DEBUG is not defined.
 1.7  11-Feb-1997  gwr Add a few more coments. (i.e. why init a6=0)
 1.6  11-Feb-1997  gwr Sync with sun3.
 1.5  02-Feb-1997  thorpej branches: 1.5.2;
Remove an un-true comment.
 1.4  23-Jan-1997  gwr Load the root pointer using VM_PMAP_MMUCRP
Also rename nodb_trap to _nodb_trap
 1.3  17-Jan-1997  gwr Fix a comment (PCB_MMUCTX is a virtual address).
 1.2  17-Jan-1997  gwr Adapt to rename of pcb_mmuctx to pcb_mmucrp, and corrected
prototype of loadcrp(), which kills some bogus type casts.
 1.1  14-Jan-1997  gwr branches: 1.1.1;
Initial revision
 1.1.1.1  14-Jan-1997  gwr Initial import. Gets as far as nfs_mountroot.
 1.5.2.1  12-Mar-1997  is Merge in Changes from The Trunk.
 1.25.4.1  27-Jan-1998  gwr Accomodate some name changes in mon.h and elsewhere.
 1.33.2.1  30-Apr-1999  perry branches: 1.33.2.1.2;
pullup 1.34->1.35 (christos); conflicts manually edited
 1.33.2.1.2.2  02-Aug-1999  thorpej Update from trunk.
 1.33.2.1.2.1  21-Jun-1999  thorpej Sync w/ -current.
 1.36.6.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.36.4.1  15-Nov-1999  fvdl Sync with -current
 1.36.2.4  12-Mar-2001  bouyer Sync with HEAD.
 1.36.2.3  08-Dec-2000  bouyer Sync with HEAD.
 1.36.2.2  22-Nov-2000  bouyer Sync with HEAD.
 1.36.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.39.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.45.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.47.2.1  03-Aug-2001  lukem update to -current
 1.48.6.5  11-Nov-2002  nathanw Catch up to -current
 1.48.6.4  24-Jun-2002  nathanw Curproc->curlwp renaming.

Change uses of "curproc->l_proc" back to "curproc", which is more like the
original use. Bare uses of "curproc" are now "curlwp".

"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL)
so that it is always safe to reference curproc (*de*referencing curproc
is another story, but that's always been true).
 1.48.6.3  08-Dec-2001  thorpej cpu_fork() -> cpu_lwp_fork(). This logically forks an LWP, not a
complete process. As noted by Gregory McGarry on tech-kern.
 1.48.6.2  18-Nov-2001  scw MD Scheduler Activation bits for sun3/3x.
Compile-tested only.
 1.48.6.1  22-Jul-2001  scw file locore.s was added on branch nathanw_sa on 2001-11-18 19:39:04 +0000
 1.51.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.51.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.51.2.1  03-Aug-2004  skrll Sync with HEAD
 1.53.16.1  03-Sep-2007  yamt sync with head.
 1.54.40.1  03-Sep-2007  wrstuden Sync w/ NetBSD-4-RC_1
 1.54.38.2  03-Oct-2007  garbled Sync with HEAD
 1.54.38.1  22-May-2007  matt Update to HEAD.
 1.54.32.1  11-Jul-2007  mjf Sync with head.
 1.54.30.2  20-Aug-2007  ad Sync with HEAD.
 1.54.30.1  27-May-2007  ad Sync with head.
 1.54.24.1  22-Jul-2007  liamjfoy Pull up following revision(s) (requested by tsutsui in ticket #782):
sys/arch/sun3/sun3x/locore.s: revision 1.56
Sync with sun3/locore.s rev 1.88:
Pass a frame pointer to trap() rather than the 'entire frame' trick. Gcc4
was optimizing away modifications to the frame contents (it's not nice to
trick gcc). Pass the pointer as the first argument to reduce the number
of places that would be changed otherwise. Fixes the getcwd regression
test on most m68k ports.
Fixes MMU fault panic in trap() on sun3x.
This should be pulled up to netbsd-4 too.
 1.55.4.1  15-Aug-2007  skrll Sync with HEAD.
 1.55.2.1  07-Aug-2007  matt Sync with HEAD.
 1.56.6.1  06-Nov-2007  matt sync with HEAD
 1.57.20.1  11-Mar-2010  yamt sync with head
 1.59.2.2  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.59.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.60.2.1  05-Mar-2011  rmind sync with head
 1.61.4.1  17-Feb-2011  bouyer Sync with HEAD
 1.61.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.62.4.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.62.4.1  17-Apr-2012  yamt sync with head
 1.63.4.1  18-Feb-2012  mrg merge to -current.
 1.64.10.1  18-May-2014  rmind sync with head
 1.64.6.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.65.30.1  10-Jun-2019  christos Sync with HEAD
 1.65.28.1  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.66.12.1  03-Apr-2021  thorpej Sync with HEAD.
 1.67.2.1  03-Apr-2021  thorpej Sync with HEAD.
 1.69.4.1  27-Jun-2024  martin Pull up following revision(s) (requested by rin in ticket #724
to fix build fallout on the branch):

sys/arch/m68k/m68k/compat_16_sigreturn14.s: revision 1.6
sys/arch/mvme68k/mvme68k/locore.s: revision 1.129
sys/arch/news68k/news68k/locore.s: revision 1.84
sys/arch/hp300/hp300/locore.s: revision 1.183
sys/arch/m68k/m68k/compat_13_sigreturn13.s: revision 1.8
sys/arch/m68k/m68k/sigreturn.s: file removal
sys/arch/m68k/include/pte_motorola.h: revision 1.10
sys/arch/atari/atari/locore.s: revision 1.125
sys/arch/amiga/amiga/locore.s: revision 1.169
sys/arch/sun2/sun2/locore.s: revision 1.37
sys/arch/next68k/next68k/locore.s: revision 1.84
sys/arch/x68k/x68k/locore.s: revision 1.130
sys/arch/sun3/sun3x/locore.s: revision 1.77
sys/arch/cesfic/cesfic/locore.s: revision 1.45
sys/arch/m68k/conf/files.m68k: revision 1.53
sys/arch/sun3/sun3/locore.s: revision 1.109
sys/arch/luna68k/luna68k/locore.s: revision 1.81
sys/arch/mac68k/mac68k/locore.s: revision 1.182

Define PTE used in the pmap module int terms of the bit definitions
in mmu_{51,40}.h.

Make compat_13_sigreturn13.s and compat_16_sigreturn14.s build as their
own stand-alone files and G/C the now-empty sigreturn.s.

RSS XML Feed