History log of /freebsd/sys/amd64/include/atomic.h (Results 101 – 125 of 175)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 8306a37b 17-Jul-2002 Mark Murray <markm@FreeBSD.org>

Clean up the syntax WRT semicolons at the end of function-like-macros, and protect GCCisms from non-GNU compilers and lint.


Revision tags: release/4.6.0_cvs
# 71acb247 28-Feb-2002 Bosko Milekic <bmilekic@FreeBSD.org>

Make MPLOCKED work again in asm files and stringify it explicitly
where necessary.

Reviewed by: jake


# d2f22d70 11-Feb-2002 Bruce Evans <bde@FreeBSD.org>

Garbage-collect the "LOCORE" version of MPLOCKED.


Revision tags: release/4.5.0_cvs, release/4.4.0_cvs
# e4e991e1 18-Dec-2001 John Baldwin <jhb@FreeBSD.org>

Allow the ATOMIC_ASM() macro to pass in the constraints on the V parameter
since the char versions need to use either ax, bx, cx, or dx.

Submitted by: Peter Jeremy (mostly)
Recommended by: bde


# d9009094 12-Nov-2001 John Baldwin <jhb@FreeBSD.org>

Use newer constraints for atomic_cmpset().

Requested by: bde


# 20a2016a 12-Nov-2001 John Baldwin <jhb@FreeBSD.org>

Use newer constraints for inline assembly for an operand that is both an
input and an output by using the '+' modifier rather than listing the
operand in both the input and output sections.

Reviwed

Use newer constraints for inline assembly for an operand that is both an
input and an output by using the '+' modifier rather than listing the
operand in both the input and output sections.

Reviwed by: bde

show more ...


# 2a89a48f 08-Oct-2001 John Baldwin <jhb@FreeBSD.org>

Allow atomic ops to be somewhat safely used in userland. We always use
lock prefixes in the userland case so that the binaries will work on both
SMP and UP systems.


Revision tags: release/4.3.0_cvs, release/4.3.0
# d888fc4e 11-Feb-2001 Mark Murray <markm@FreeBSD.org>

RIP <machine/lock.h>.

Some things needed bits of <i386/include/lock.h> - cy.c now has its
own (only) copy of the COM_(UN)LOCK() macros, and IMASK_(UN)LOCK()
has been moved to <i386/include/apic.h> (

RIP <machine/lock.h>.

Some things needed bits of <i386/include/lock.h> - cy.c now has its
own (only) copy of the COM_(UN)LOCK() macros, and IMASK_(UN)LOCK()
has been moved to <i386/include/apic.h> (AKA <machine/apic.h>).
Reviewed by: jhb

show more ...


# 324fffae 17-Jan-2001 John Baldwin <jhb@FreeBSD.org>

- Sort of lie and say that %eax is an output only and not an input for the
non-386 atomic_load_acq(). %eax is an input since its value is used in
the cmpxchg instruction, but we don't care what

- Sort of lie and say that %eax is an output only and not an input for the
non-386 atomic_load_acq(). %eax is an input since its value is used in
the cmpxchg instruction, but we don't care what value it is, so setting
it to a specific value is just wasteful. Thus, it is being used without
being initialized as the warning stated, but it is ok for it to be used
because its value isn't important. Thus, we are only sort of lying when
we say it is an output only operand.
- Add "cc" to the clobber list for atomic_load_acq() since the cmpxchgl
changes ZF.

show more ...


# 8a6b1c8f 16-Jan-2001 John Baldwin <jhb@FreeBSD.org>

- Fix atomic_load_* and atomic_store_* to generate functions for atomic.c
that modules can call.
- Remove the old gcc <= 2.8 versions of the atomic ops.
- Resort the order of some things in the fil

- Fix atomic_load_* and atomic_store_* to generate functions for atomic.c
that modules can call.
- Remove the old gcc <= 2.8 versions of the atomic ops.
- Resort the order of some things in the file so that there is only
one #ifdef for KLD_MODULE, and so that all WANT_FUNCTIONS stuff is
moved to the bottom of the file.
- Remove ATOMIC_ACQ_REL() and just use explicit macros instead.

show more ...


# 9d979d89 14-Jan-2001 John Baldwin <jhb@FreeBSD.org>

Fix the atomic_load_acq() and atomic_store_rel() functions to properly
implement memory fences for the 486+. The 386 still uses versions w/o
memory fences as all operations on the 386 are not progra

Fix the atomic_load_acq() and atomic_store_rel() functions to properly
implement memory fences for the 486+. The 386 still uses versions w/o
memory fences as all operations on the 386 are not program ordered.
The 386 versions are not MP safe.

show more ...


Revision tags: release/4.2.0
# 55d79ad0 28-Oct-2000 John Baldwin <jhb@FreeBSD.org>

The x86 atomic operations are already locked, so they do not need an
additional locked instruction to guarantee a write barrier for the acquire
variants.

Approved by: dfr
Pointy hat to: jhb


# ee8f2f37 25-Oct-2000 John Baldwin <jhb@FreeBSD.org>

- Add atomic_cmpset_{acq_,rel_,}_long
- Add in atomic operations for 8-bit, 16-bit, and 32-bit integers


# ccbdd9ee 20-Oct-2000 John Baldwin <jhb@FreeBSD.org>

- Expand the set of atomic operations to optionally include memory barriers
in most of the atomic operations. Now for these operations, you can
use the normal atomic operation, you can use the o

- Expand the set of atomic operations to optionally include memory barriers
in most of the atomic operations. Now for these operations, you can
use the normal atomic operation, you can use the operation with a read
barrier, or you can use the operation with a write barrier. The function
names follow the same semantics used in the ia64 instruction set. An
atomic operation with a read barrier has the extra suffix 'acq', due to
it having "acquire" semantics. An atomic operation with a write barrier
has the extra suffix 'rel'. These suffixes are inserted between the
name of the operation to perform and the typename. For example, the
atomic_add_int() function now has 3 variants:
- atomic_add_int() - this is the same as the previous function
- atomic_add_acq_int() - this function combines the add operation with a
read memory barrier
- atomic_add_rel_int() - this function combines the add operation with a
write memory barrier
- Add 'ptr' to the list of types that we can perform atomic operations
on. This allows one to do atomic operations on uintptr_t's. This is
useful in the mutex code, for example, because the actual mutex lock is
a pointer.
- Add two new operations for doing loads and stores with memory barriers.
The new load operations use a read barrier before the load, and the
new store operations use a write barrier after the load. For example,
atomic_load_acq_int() will atomically load an integer as well as
enforcing a read barrier.

show more ...


# b4645202 06-Oct-2000 John Baldwin <jhb@FreeBSD.org>

Add atomic_readandclear_int and atomic_readandclear_long.


Revision tags: release/4.1.1_cvs
# 819e370c 06-Sep-2000 Poul-Henning Kamp <phk@FreeBSD.org>

Introduce atomic_cmpset_int() and atomic_cmpset_long() from SMPng a
few hours earlier than the rest.

The next DEVFS commit needs these functions.

Alpha versions by: dfr
i386 versions by: jakeb

App

Introduce atomic_cmpset_int() and atomic_cmpset_long() from SMPng a
few hours earlier than the rest.

The next DEVFS commit needs these functions.

Alpha versions by: dfr
i386 versions by: jakeb

Approved by: SMPng

show more ...


Revision tags: release/4.1.0, release/3.5.0_cvs
# 25f01030 10-May-2000 David E. O'Brien <obrien@FreeBSD.org>

When using _asm{} in GCC, one must specify the operand's size if one
specifies the instruction's operation size. GCC will default to 32-bit
operands reguardless of the prototype (ie, formal paramete

When using _asm{} in GCC, one must specify the operand's size if one
specifies the instruction's operation size. GCC will default to 32-bit
operands reguardless of the prototype (ie, formal parameters' type)
of an inline function.

show more ...


Revision tags: release/4.0.0_cvs, release/3.4.0_cvs
# 693612eb 04-Oct-1999 Peter Wemm <peter@FreeBSD.org>

Use the rev 1.1.2.1 code from RELENG_3 for atomic operations rather
than the non-atomic C macros.


# b8710473 04-Oct-1999 Peter Wemm <peter@FreeBSD.org>

Typo: s/__GNUC_MINOR_/__GNUC_MINOR__/
(__GNUC_MINOR__ on egcs in -current is "91" and is going to be "95" soon)


# 181d2137 03-Oct-1999 Eivind Eklund <eivind@FreeBSD.org>

Allow compilation with older versions of GCC, in order to make it possible
to bootstrap and work with -current from older versions of FreeBSD.


Revision tags: release/3.3.0_cvs
# c3aac50f 28-Aug-1999 Peter Wemm <peter@FreeBSD.org>

$Id$ -> $FreeBSD$


# 08c40841 18-Aug-1999 Alan Cox <alc@FreeBSD.org>

Create callable (non-inline) versions of the atomic_OP_TYPE functions
that are linked into the kernel. The KLD compilation options are
changed to call these functions, rather than in-lining the
atom

Create callable (non-inline) versions of the atomic_OP_TYPE functions
that are linked into the kernel. The KLD compilation options are
changed to call these functions, rather than in-lining the
atomic operations.

This approach makes atomic operations from KLDs significantly
faster on UP systems (though somewhat slower on SMP systems).

PR: i386/13111
Submitted by: peter.jeremy@alcatel.com.au

show more ...


# 03e3bc8e 24-Jul-1999 Alan Cox <alc@FreeBSD.org>

atomic.h:
Change "void *" to "volatile TYPE *", improving type safety
and eliminating some warnings (e.g., mp_machdep.c rev 1.106).

cpufunc.h:
Eliminate setbits. As defined, it's not precisely c

atomic.h:
Change "void *" to "volatile TYPE *", improving type safety
and eliminating some warnings (e.g., mp_machdep.c rev 1.106).

cpufunc.h:
Eliminate setbits. As defined, it's not precisely correct;
and it's redundant. (Use atomic_set_int instead.)

ipl_funcs.c:
Use atomic_set_int instead of setbits.

systm.h:
Include atomic.h.

Reviewed by: bde

show more ...


# 47b8bc92 13-Jul-1999 Alan Cox <alc@FreeBSD.org>

Commit the correct patch, i.e., the one that actually corresponds
to the rev 1.2 log entry.


# e58bb1c4 13-Jul-1999 Alan Cox <alc@FreeBSD.org>

Changed the implementation of the primitives to guarantee atomicity
with respect to interrupts on UP systems. (The upgrade from gcc 2.7.x
to egcs 1.1.2 produced at least one non-atomic code sequence

Changed the implementation of the primitives to guarantee atomicity
with respect to interrupts on UP systems. (The upgrade from gcc 2.7.x
to egcs 1.1.2 produced at least one non-atomic code sequence in
swap_pager_getpages.)

In addition, the primitives are now SMP-safe, but only on SMPs. (For
portability between SMPs and UPs, modules are compiled with the SMP-safe
versions.)

Submitted by: dillon and myself
Reviewed by: bde

show more ...


1234567