Home | History | Annotate | Download | only in include
History log of /src/sys/arch/sparc/include/types.h
RevisionDateAuthorComments
 1.73  20-Mar-2023  martin __HAVE_HASHLOCKED_ATOMICS needs to be visible to userland
 1.72  30-Jul-2022  riastradh sys/atomic.h: Fix atomic_store_* on sparcv7, sparcv8.

These did not cooperate with the hash-locked scheme of the other
atomic operations, with the effect that, for instance, a typical
naive spin lock based on atomic_*,

volatile unsigned locked = 0;
lock()
{
while (atomic_swap_uint(&locked, 1))
continue;
membar_acquire();
}
unlock()
{
membar_release();
atomic_store_relaxed(&locked, 0);
}

would fail to achieve mutual exclusion.

For this case, we need to use atomic_swap_* (or, for 8- or 16-bit
objects, atomic_cas_32 loops, since there is no atomic_swap_8 or
atomic_swap_16).

The new machine/types.h macro __HAVE_HASHLOCKED_ATOMICS says whether
these contortions are necessary.

Note that this _requires_ the use of atomic_store_*(p, v), not
regular stores *p = v, to work with the r/m/w atomic operations.
 1.71  23-Jan-2021  christos Document via __HAVE_BUS_SPACE_8 platforms that implement bus_space_*_8
 1.70  06-Dec-2020  christos undo previous; __register_t is already defined
 1.69  06-Dec-2020  christos don't expose register_t
 1.68  17-May-2020  martin branches: 1.68.2;
__HAVE_CPU_DATA_FIRST is still true for sparc64 (which shares this file)
 1.67  16-May-2020  ad PR port-sparc/55261: sparc still panics running ATF tests

Reinstate the cpu_info change and remove __HAVE_CPU_DATA_FIRST to fix
build failure.
 1.66  23-Jan-2016  christos expose the kernel types for standalone code.
 1.65  23-Jan-2016  christos Hide {p,v}{addr,size}_t and register_t (and a couple more types that
are machine-specific) from userland unless _KERNEL/_KMEMUSER and a
new _KERNTYPES variables is defined. The _KERNTYPES should be fixed
for many subsystems that should not be using it (rump)...
 1.64  06-Oct-2015  martin Do not use #ifdef SUN4U when testing for cpu features of post-v8 CPUs,
it is not good for SUN4V-only kernels. Instead use __sparc_v9__ (which
is also defined by the sparc compiler when called with cpu=ultrasparc).
ok: mrg@
 1.63  27-Aug-2015  pooka Fix PTHREAD_FOO_INITIALIZER for C++ by not using volatile in the relevant
pthread types in C++ builds, attempt 2.

The problem with attempt 1 was making assumptions of what the MD
__cpu_simple_lock_t (declared volatile) looks like. To get a same type
except non-volatile, we change the MD type to __cpu_simple_lock_nv_t
and typedef __cpu_simple_lock_t as a volatile __cpu_simple_lock_nv_t.
IMO, __cpu_simple_lock_t should not be volatile at all, but changing it
now is too risky.

Fixes at least Rumprun w/ gcc 5.1/5.2. Furthermore, the mpd application
(and possibly others) will no longer require NetBSD-specific patches.

Tested: build.sh for i386, Rumprun for x86_64 w/ gcc 5.2.

Based on the patch from Christos in lib/49989.
 1.62  02-Nov-2012  chs branches: 1.62.14;
Add RAS support for sparc.
 1.61  30-Jul-2011  martin branches: 1.61.2; 1.61.12;
Get rid of #ifdef __sparc__ in uvm code - as noted by cgd back 1996,
now that we have __HAVE_CPU_VMSPACE_EXEC/cpu_vmspace_exec().
 1.60  17-Jul-2011  dyoung Switch sparc and sparc64 to new-style <sys/bus.h>.
 1.59  18-Jun-2011  nakayama Add fast softint(9) support for sparc64.

Reviewed on port-sparc64.
 1.58  12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.57  30-Mar-2011  martin branches: 1.57.2;
Enable TLS on sparc and sparc64
 1.56  24-Feb-2011  joerg Allow storing and receiving the LWP private pointer via ucontext_t
on all platforms except VAX and IA64. Add fast access via register for
AMD64, i386 and SH3 ports. Use this fast access in libpthread to replace
the stack based pthread_self(). Implement skeleton support for Alpha,
HPPA, PowerPC, SPARC and SPARC64, but leave it disabled.

Ports that support this feature provide __HAVE____LWP_GETPRIVATE_FAST in
machine/types.h and a corresponding __lwp_getprivate_fast in
machine/mcontext.h.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.
 1.55  26-Dec-2010  martin branches: 1.55.2; 1.55.4;
Move ci_data first in struct cpu_info
 1.54  26-Dec-2010  martin sparc64 currently does not have ci_data as first member in cpu_info!
 1.53  22-Dec-2010  christos Add a define __HAVE_CPU_DATA_FIRST which means that cpu_data is the first
member in struct cpu_info.
 1.52  10-Jan-2010  martin branches: 1.52.4;
Better support for FC-AL controllers/boot disks:
- on FC-AL disks, use wwn instead of target index to match a particular drive
- use the new device_register_post_config() to match "sd" device against
the bootpath after they have gained their wwn device property
- supply firmwares notion of port and node wwn for FC controllers
as device properties (the builtin ones don't see to have a separate nvram)
 1.51  11-Dec-2009  matt Add PRIx{P,V}{ADDR,SIZE}, PRIu{P,V}SIZE, and PRIxREGISTER{,32,64} for all
(except where they will be added via merge). These should be used to print
{p,v}{addr,size}_t and register*_t as appropriate.
 1.50  20-Jan-2008  joerg branches: 1.50.10;
Now that __HAVE_TIMECOUNTER and __HAVE_GENERIC_TODR are invariants,
remove the conditionals and the code associated with the undef case.
 1.49  29-Nov-2007  ad branches: 1.49.6;
__HAVE_ATOMIC64_OPS for SUN4U.
 1.48  17-Oct-2007  garbled branches: 1.48.2;
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.47  14-Jul-2007  ad branches: 1.47.8; 1.47.10;
Generic soft interrupts are mandatory.
 1.46  09-Feb-2007  ad branches: 1.46.6; 1.46.14;
Merge newlock2 to head.
 1.45  03-Sep-2006  gdamore branches: 1.45.2;
Convert both sparc and sparc64 to MI todr.
 1.44  03-Sep-2006  bjh21 Nothing in the kernel now tests __HAVE_NWSCONS, so stop defining it everywhere.
 1.43  28-Jun-2006  martin Align the size and alignment of label_t (kernel jmp_buf equivalent)
with the use in setjmp/longjmp. Duh!
This makes DDB work again on sparc kernels compiled with gcc4.
 1.42  07-Jun-2006  kardel branches: 1.42.2;
convert to timecounters (from branch simonb-timecounters)
 1.41  24-Dec-2005  perry branches: 1.41.4; 1.41.6; 1.41.8; 1.41.14;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.40  11-Dec-2005  christos merge ktrace-lwp.
 1.39  10-Jul-2005  christos - add syscall_{plain,fancy}
- make it use mi_userret
 1.38  10-Feb-2004  bjh21 branches: 1.38.16;
__HAVE_NWSCONS seems to mean, "If this port uses pckbc(4), it also uses
sys/dev/pckbc/files.pckbc." This is true of sparc, so define __HAVE_NWSCONS,
and remove the code in pckbc_machdep_cnattach() that was conditional on its
not being defined and that is no longer needed (since with __HAVE_NWSCONS,
pckbc_cnattach() will call pckbd_cnattach() itself if necessary).
 1.37  18-Jan-2004  martin Do not export __HAVE_RAS to userland. Applications are supposed to try
rasctl() and detect failure with EOPNOTSUPP.
 1.36  06-Jan-2004  martin Implement restartable atomic sequences (RAS) for sparc64.
 1.35  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.34  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.33  06-Aug-2003  bsh add __GENERIC_SOFT_INTERRUPTS_ALL_LEVELS to machine/types.h for
following ports:

acorn26, amiga, hpcarm, sparc, sparc64

This was proposed by Martin Husemann at teck-kern@ in May to properly
test whether softintr can be established for all IPL, or only for
IPL_SOFT*. OKed by acorn26, hpcarm and sparc port masters.
 1.32  28-Apr-2003  bjh21 branches: 1.32.2;
Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
!defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them. In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.
 1.31  07-Dec-2002  pk Use MI versions of {set,rem}runqueue().
 1.30  07-Oct-2002  martin All sparc64 CPUs do __HAVE_CPU_COUNTER (aka %tick).
 1.29  22-Sep-2002  simonb Use "#define\t" instead of "#define ".
 1.28  22-Sep-2002  gmcgarry Add __HAVE_MD_RUNQUEUE flag for MD code to override MI run queue primitives.
 1.27  28-Feb-2002  simonb branches: 1.27.10;
Use "#define<tab>".
 1.26  04-Dec-2001  darrenr defopt "options SUN4*", put #define for each of SUN4, SUN4C, SUN4M and SUN4U
into opt_arch_sparc.h and include this wherever they are used.
 1.25  27-Sep-2001  mrg branches: 1.25.4;
implement generic soft interrupts as described in softintr(9). convert
the network, clock & serial softint's to use them.
 1.24  12-May-2001  kleink branches: 1.24.2; 1.24.4;
Delint my previous change.
 1.23  28-Apr-2001  kleink * Move definitions of exact-width integer types from <machine/types.h>
to <sys/types.h> and <sys/stdint.h>.
* Add a new C99 <stdint.h> header, which provides integer types of
explicit width, related limits and integer constant macros.
* Extend <inttypes.h> to provide <stdint.h> definitions and format
macros for printf() and scanf().
* Add C99 strtoimax() and strtoumax() functions.
* Use the latter within scanf().
* Add C99 %j, %t and %z printf()/scanf() conversions for
intmax_t, pointer-type and size_t arguments.
 1.22  03-Jan-2001  takemura branches: 1.22.2;
replace 'long long' with int64_t to compile stand alone program with
compiler other than GCC.
 1.21  04-Dec-2000  mrg sync a comment with sparc64/include/types.h
 1.20  19-Mar-2000  pk Remove __BROKEN_CONFIG_UNIT_USAGE.
 1.19  05-Feb-2000  cgd add __BROKEN_CONFIG_UNIT_USAGE #define, becuase these ports do very
wrong things with device configuration data "cf_unit" information.
 1.18  01-Feb-2000  danw #define __HAVE_DEVICE_REGISTER on ports that have it, and check for
that, rather than a list of architecture defines, in config_attach
 1.17  30-Nov-1999  mrg oops; remove part of the previous that was not intended (yet).
 1.16  27-Nov-1999  mrg merge sparc64 types.h; these files are now identical.
 1.15  21-Aug-1998  pk branches: 1.15.12; 1.15.18;
Remove vm_offset_t & vm_size_t.
 1.14  13-Aug-1998  eeh Merge paddr_t changes into the main branch.
 1.13  14-Jun-1998  kleink branches: 1.13.2;
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.
 1.12  05-Nov-1997  thorpej Mark uses of long long with /* LONGLONG */ for lint. From
Chris Demetriou <cgd@pa.dec.com>.
 1.11  10-Dec-1996  pk branches: 1.11.14;
Kill __BROKEN_INDIRECT_CONF.
 1.10  05-Dec-1996  cgd First step inn removing config_scan() and the hacks that gave devices
on indirect-config busses a (permanent) softc that they could share
between 'match' and 'attach' routines:

Define __BROKEN_INDIRECT_CONFIG so that old autoconfiguration
interfaces are used, until drivers are converted to use the new
interfaces (actually, converted back to use the _older_ interfaces)
which prohibit indirect configuration devices from receiving a softc
in their match routine that they can share with their attach routine.
 1.9  14-Mar-1996  pk Remove __FORK_BRAINDAMAGE.
 1.8  09-Dec-1995  mycroft Define __FORK_BRAINDAMAGE.
 1.7  05-Jul-1995  pk remove __BDEVSW_DUMP_OLD_TYPE
#include <sys/cdefs.h>.
 1.6  26-Jun-1995  cgd define __BDEVSW_DUMP_OLD_TYPE for ports where it's true. clean up
some m68k ports inclusion of common header.
 1.5  20-Nov-1994  deraadt copyright/Id cleanup
 1.4  20-Oct-1994  cgd update for new syscall args description mechanism
 1.3  20-Jul-1994  cgd define __BIT_TYPES_DEFINED__ for compatibility with things like BIND and nvi
 1.2  24-May-1994  deraadt branches: 1.2.2;
liten
 1.1  02-Oct-1993  deraadt Chris Torek's sparc port. Missing lots of things.
 1.2.2.1  20-Jul-1994  cgd update from trunk.
 1.11.14.1  05-Nov-1997  thorpej Update from trunk: Mark usese of long long with /* LONGLONG */ for lint.
 1.13.2.2  12-Aug-1998  eeh Protect XOPEN and POSIX code from vm_offset_t, paddr_t, vaddr_t, vm_size_t, psize_t, and vsize_t.
 1.13.2.1  30-Jul-1998  eeh Split vm_offset_t and vm_size_t into paddr_t, psize_t, vaddr_t, and vsize_t.
 1.15.18.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.15.12.3  05-Jan-2001  bouyer Sync with HEAD
 1.15.12.2  08-Dec-2000  bouyer Sync with HEAD.
 1.15.12.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.22.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.24.4.1  01-Oct-2001  fvdl Catch up with -current.
 1.24.2.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.24.2.2  16-Mar-2002  jdolecek Catch up with -current.
 1.24.2.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.25.4.5  11-Dec-2002  thorpej Sync with HEAD.
 1.25.4.4  18-Oct-2002  nathanw Catch up to -current.
 1.25.4.3  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.25.4.2  08-Jan-2002  nathanw Catch up to -current.
 1.25.4.1  27-Sep-2001  nathanw file types.h was added on branch nathanw_sa on 2002-01-08 00:27:40 +0000
 1.27.10.1  07-Dec-2002  he Pull up revision 1.30 (requested by martin in ticket #907):
All sparc64 CPUs do __HAVE_CPU_COUNTER (aka %tick).
 1.32.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.32.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.32.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.32.2.1  03-Aug-2004  skrll Sync with HEAD
 1.38.16.6  21-Jan-2008  yamt sync with head
 1.38.16.5  07-Dec-2007  yamt sync with head
 1.38.16.4  03-Sep-2007  yamt sync with head.
 1.38.16.3  26-Feb-2007  yamt sync with head.
 1.38.16.2  30-Dec-2006  yamt sync with head.
 1.38.16.1  21-Jun-2006  yamt sync with head.
 1.41.14.1  19-Jun-2006  chap Sync with head.
 1.41.8.3  14-Sep-2006  yamt sync with head.
 1.41.8.2  11-Aug-2006  yamt sync with head
 1.41.8.1  26-Jun-2006  yamt sync with head.
 1.41.6.1  27-May-2006  kardel sparc has grown timecounter support
 1.41.4.1  09-Sep-2006  rpaulo sync with head
 1.42.2.1  13-Jul-2006  gdamore Merge from HEAD.
 1.45.2.1  29-Dec-2006  ad Checkpoint work in progress.
 1.46.14.1  03-Oct-2007  garbled Sync with HEAD
 1.46.6.2  03-Dec-2007  ad Sync with HEAD.
 1.46.6.1  15-Jul-2007  ad Sync with head.
 1.47.10.3  23-Mar-2008  matt sync with HEAD
 1.47.10.2  09-Jan-2008  matt sync with HEAD
 1.47.10.1  06-Nov-2007  matt sync with HEAD
 1.47.8.1  03-Dec-2007  joerg Sync with HEAD.
 1.48.2.2  18-Feb-2008  mjf Sync with HEAD.
 1.48.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.49.6.1  23-Jan-2008  bouyer Sync with HEAD.
 1.50.10.1  11-Mar-2010  yamt sync with head
 1.52.4.4  21-Apr-2011  rmind sync with head
 1.52.4.3  05-Mar-2011  rmind sync with head
 1.52.4.2  24-Mar-2010  mrg only define __HAVE_MM_MD_READWRITE for !SUN4U builds.
 1.52.4.1  18-Mar-2010  rmind Unify /dev/{mem,kmem,zero,null} implementations in MI code. Based on patch
from Joerg Sonnenberger, proposed on tech-kern@, in February 2008.

Work and depression still in progress.
 1.55.4.1  05-Mar-2011  bouyer Sync with HEAD
 1.55.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.57.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.61.12.2  03-Dec-2017  jdolecek update from HEAD
 1.61.12.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.61.2.1  16-Jan-2013  yamt sync with (a bit old) head
 1.62.14.3  19-Mar-2016  skrll Sync with HEAD
 1.62.14.2  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.62.14.1  22-Sep-2015  skrll Sync with HEAD
 1.68.2.2  03-Apr-2021  thorpej Sync with HEAD.
 1.68.2.1  14-Dec-2020  thorpej Sync w/ HEAD.

RSS XML Feed