Home | History | Annotate | Download | only in include
History log of /src/sys/arch/sparc/include/lock.h
RevisionDateAuthorComments
 1.34  13-Feb-2022  riastradh sparc: __cpu_simple_lock membar audit.

No functional change -- comments only, to justify the absence of
barriers with reference to chapter & verse.
 1.33  29-Nov-2019  riastradh Nix mb_* on sparc and sparc64.
 1.32  17-Sep-2017  christos branches: 1.32.4;
more const.
 1.31  28-Apr-2008  martin branches: 1.31.44;
Remove clause 3 and 4 from TNF licenses
 1.30  17-Oct-2007  garbled branches: 1.30.16; 1.30.18; 1.30.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.29  10-Sep-2007  skrll Merge nick-csl-alignment.
 1.28  17-Feb-2007  ad branches: 1.28.4; 1.28.12; 1.28.16; 1.28.20; 1.28.22;
Put a sock in it..
 1.27  16-Feb-2007  ad branches: 1.27.2;
Pacify lint.
 1.26  15-Feb-2007  ad Pacify lint/gcc.
 1.25  11-Feb-2007  ad inline -> __inline
 1.24  09-Feb-2007  ad Merge newlock2 to head.
 1.23  04-Mar-2006  uwe branches: 1.23.14;
De-__P.
 1.22  28-Dec-2005  perry branches: 1.22.4; 1.22.6;
inline -> __inline
 1.21  24-Dec-2005  perry __asm__ -> __asm
__const__ -> const
__inline__ -> inline
__volatile__ -> volatile
 1.20  24-Dec-2005  perry Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.19  11-Dec-2005  christos merge ktrace-lwp.
 1.18  03-Feb-2005  chs branches: 1.18.6;
add the early-clobber modifier on the destination reg of ldstub.
in some implementations (eg. sun4c), the hardware modifies the destination
reg before checking for write permission on the memory location. without
this change, gcc was using the same register for the address and the
destination, so if the store part of the instruction faulted, the address
was already gone when the instruction was retried after resolving the fault.
part of PR 25633, PR 25896.
 1.17  20-Apr-2004  pk branches: 1.17.4; 1.17.6;
Turn __CPU_SIMPLE_LOCK_INLINE into !__CPU_SIMPLE_LOCK_NOINLINE, so we don't
screw up user land.
 1.16  19-Apr-2004  pk __cpu_simple_lock() isn't a pure function.
 1.15  18-Apr-2004  pk Make inlining __cpu_simple_lock() optional. Add a version with a built-in
spin out counter that panics with a diagnostic.
 1.14  26-Dec-2003  mrg branches: 1.14.2;
convert __ldstub() from a ({}) macro into a properly static inline function.
the latter is not valid for C++ so says GCC3.
 1.13  16-Nov-2003  pk __cpu_simple_unlock: use __insn_barrier() instead of a "memory" clobber.
 1.12  09-Nov-2003  pk __cpu_simple_unlock: avoid instruction re-ordering by the compiler.
 1.11  26-Sep-2003  nathanw Move __cpu_simple_lock_t and __SIMPLELOCK_{UN,}LOCKED to machine/types.h
so that they can be used in a namespace-friendly way.
 1.10  05-May-2000  hannken branches: 1.10.16; 1.10.28;
Fix for lint during build of libc.
 1.9  02-May-2000  thorpej Let each platform typedef the new __cpu_simple_lock_t, which should
be the most efficient type used for the atomic operations in the
simplelock structure, and should also be __volatile.
 1.8  30-Apr-2000  pk FIx declaration in __ldstub.
 1.7  29-Apr-2000  thorpej Require that each each MACHINE/MACHINE_ARCH supply a lock.h. This file
contains the values __SIMPLELOCK_LOCKED and __SIMPLELOCK_UNLOCKED, which
replace the old SIMPLELOCK_LOCKED and SIMPLELOCK_UNLOCKED. These files
are also required to supply inline functions __cpu_simple_lock(),
__cpu_simple_lock_try(), and __cpu_simple_unlock() if locking is to be
supported on that platform (i.e. if MULTIPROCESSOR is defined in the
_KERNEL case). Change these functions to take an int * (&alp->lock_data)
rather than the struct simplelock * itself.

These changes make it possible for userland to use the locking primitives
by including <machine/lock.h>.
 1.6  27-Jul-1999  thorpej branches: 1.6.2;
Make a slight rearrangement in how <machine/lock.h> is included.
 1.5  27-Jul-1999  thorpej Define apporpriate an value for SIMPLELOCK_LOCKED, based on the
semantics of ldstub.
 1.4  27-Jul-1999  thorpej Prepend `cpu_' to the machine-dependent atomic locking primitivies.
 1.3  04-Nov-1998  chs branches: 1.3.8;
LOCKDEBUG enhancements for non-MP:
keep a list of locked locks.
use this to print where the lock was locked
when we either go to sleep with a lock held
or try to free a locked lock.
 1.2  05-Oct-1998  pk If a lock is held do not spin in a read/write loop but just read the lock
until it is released. This is easier on the bus cache coherency logic.
 1.1  27-Sep-1998  pk sparc spin lock functions.
 1.3.8.1  02-Aug-1999  thorpej Update from trunk.
 1.6.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.10.28.4  04-Feb-2005  skrll Sync with HEAD.
 1.10.28.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.10.28.2  18-Sep-2004  skrll Sync with HEAD.
 1.10.28.1  03-Aug-2004  skrll Sync with HEAD
 1.10.16.1  19-Mar-2002  thorpej Change __cpu_simple_lock_t to a single byte.
 1.14.2.2  16-Mar-2005  tron Pull up revision 1.18 (requested by chs in ticket #1159):
add the early-clobber modifier on the destination reg of ldstub.
in some implementations (eg. sun4c), the hardware modifies the destination
reg before checking for write permission on the memory location. without
this change, gcc was using the same register for the address and the
destination, so if the store part of the instruction faulted, the address
was already gone when the instruction was retried after resolving the fault.
part of PR 25633, PR 25896.
 1.14.2.1  24-Apr-2004  jdc branches: 1.14.2.1.2;
Pull up revisions 1.15-1.17 (requested by pk in ticket #179)

Many fixes for issues with sparc multi-processor support (includes
fixes to make HyperSPARC MP work).
 1.14.2.1.2.1  16-Mar-2005  tron Pull up revision 1.18 (requested by chs in ticket #1159):
add the early-clobber modifier on the destination reg of ldstub.
in some implementations (eg. sun4c), the hardware modifies the destination
reg before checking for write permission on the memory location. without
this change, gcc was using the same register for the address and the
destination, so if the store part of the instruction faulted, the address
was already gone when the instruction was retried after resolving the fault.
part of PR 25633, PR 25896.
 1.17.6.1  12-Feb-2005  yamt sync with head.
 1.17.4.1  29-Apr-2005  kent sync with -current
 1.18.6.3  27-Oct-2007  yamt sync with head.
 1.18.6.2  26-Feb-2007  yamt sync with head.
 1.18.6.1  21-Jun-2006  yamt sync with head.
 1.22.6.1  22-Apr-2006  simonb Sync with head.
 1.22.4.1  09-Sep-2006  rpaulo sync with head
 1.23.14.3  06-Feb-2007  ad Test for the presence of 'membar' by checking for __sparc_v9__.
 1.23.14.2  12-Jan-2007  ad Make sparc64 build again.
 1.23.14.1  12-Jan-2007  ad sparc MD changes.
 1.27.2.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.28.22.1  06-Nov-2007  matt sync with HEAD
 1.28.20.1  02-Oct-2007  joerg Sync with HEAD.
 1.28.16.1  15-Aug-2007  skrll Provide __SIMPLELOCK_{UN,}LOCKED_P and __cpu_simple_lock_{set,clear}
for all architectures.
 1.28.12.1  03-Oct-2007  garbled Sync with HEAD
 1.28.4.1  09-Oct-2007  ad Sync with head.
 1.30.20.1  16-May-2008  yamt sync with head.
 1.30.18.1  18-May-2008  yamt sync with head.
 1.30.16.1  02-Jun-2008  mjf Sync with HEAD.
 1.31.44.1  03-Dec-2017  jdolecek update from HEAD
 1.32.4.1  08-Apr-2020  martin Merge changes from current as of 20200406

RSS XML Feed