Paul Khuong
96fdf1efbd
ck_cc: new bitwise ops
...
GCC and compatible compilers support ffs/ctz/clz/popcount. Expose that
in ck_cc and default to slow but portable software emulation.
11 years ago
Samy Al Bahra
f8b41af77c
x86_64: Require 32-bit immediate values for expansion.
...
Pointed out by Paul Khuong, who ran into issues with immediates
while working on improvements to ck_bitmap.
11 years ago
Samy Al Bahra
c197b37df1
legal: Update Copyright statements.
11 years ago
Samy Al Bahra
661f3948ed
ck_pr: Add acquire and release fences.
11 years ago
Samy Al Bahra
4af7571990
ck_pr/arm: Remove extraneous newline.
11 years ago
Olivier Houchard
259fb5174d
ck_pr: Use the "dmb st" instruction on arm when available.
11 years ago
Samy Al Bahra
3c089d55e5
arm: Add support for cas_2 and other double-word operations.
...
This adds support for CAS_64{_VALUE}, CAS_PTR_2{_VALUE},
LOAD_64, STORE_64 and other primitives built on universal
CAS primitive.
Patch submitted by Olivier Houchard <cognet@FreeBSD>.
11 years ago
Samy Al Bahra
5916485e9e
ck_pr/arm: Implement support for Thumb 2 and fix incorrect CAS behavior.
...
Besides implementing Thumb 2 supports, this fixes incorrect usage of
"cmp" where "cmpeq" was meant.
Patch submitted by Olivier Houchard <cognet@freebsd>.
11 years ago
Samy Al Bahra
e1c0f6854d
ck_pr/arm: Additional style clean-up.
11 years ago
Samy Al Bahra
1c97766039
ck_pr: First cut 32-bit ARM port.
...
Contributed by Olivier Houchard <cognet@freebsd>.
Signed-off-by: Samy Al Bahra <sbahra@repnop.org>
11 years ago
Samy Al Bahra
5d8a273dbe
whitespace: Bulk whitespace changes.
11 years ago
Samy Al Bahra
f149dd09fe
ck_pr: Add ck_pr_fence_strict_atomic for x86-64.
12 years ago
Samy Al Bahra
2ed965bfc2
ck_pr_rtm: Fix xtest output clobber identifier.
12 years ago
Samy Al Bahra
43a6628cf1
ck_pr: Initial support for TSX.
...
goto label support has been omitted for the moment.
A majority of initial targets are still pre-gcc-4.7
to support multiple branches.
12 years ago
Samy Al Bahra
cd53e928bf
ck_cc: Add branch execution hint support for GCC.
12 years ago
Samy Al Bahra
adbdfe6633
ck_pr: Get rid of ck_pr_fence_X_X functions.
...
These add unnecessary complexity to the ck_pr_fence interface.
Instead, it can be safely assumed that developers will use
ck_pr_fence_X to enforce X -> X ordering.
12 years ago
Samy Al Bahra
214d7aed66
ck_pr: Implement ck_pr_fence_atomic in MD ck_pr.
12 years ago
Samy Al Bahra
a4220f2377
ck_pr: Remove ck_pr_fence_load_depends from GCC port.
12 years ago
Samy Al Bahra
d1dd6611ac
ck_pr: Add ck_pr_fence_atomic interface.
...
These operations serialize atomic-RMW operations with respect
to each other, loads and stores. In addition to this, the
load_depends implementations have been removed.
12 years ago
Samy Al Bahra
5506ad2744
ck_pr: Move ck_pr_barrier to compiler port.
12 years ago
Samy Al Bahra
cc8c3fb2db
ck_pr/gcc: Fix style issue.
12 years ago
Samy Al Bahra
8311e9fcb4
ck_pr: Update GCC port and change ck_pr dependency path.
...
The compiler-specific ck_pr is now unconditionally included.
It currently implements things like compiler barriers.
12 years ago
Samy Al Bahra
44b769963f
ck_pr: ck_pr_fence_X_Y interface has been added.
...
ck_pr_fence_{load_load,store_store,load_store,store_load} operations
have been added. In addition to this, it is no longer the responsibility
of architecture ports to determine when to emit a specific fence. Instead,
the underlying port will always emit the necessary instructions to
enforce strict ordering. The higher-level include/ck_pr implementation will
enforce whether or not a fence is necessary to be emitted according to
the memory model specified by ck_md (CK_MD_{TSO,RMO,PSO}).
In other words, only ck_pr_fence_strict_* is implemented by the MD-ck_pr
port.
12 years ago
Samy Al Bahra
b7d258b219
ck_pr/gcc: ck_pr_fence_load_depends should be heavy-weight on catch-all target.
12 years ago
Joao Fernandes
086ebf7126
ck_pr: moving PPC32 to RMO.
...
Signed-off-by: Joao Fernandes <mail@joaofernandes.eu>
12 years ago
Samy Al Bahra
33a9222923
legal: Update Copyright statements.
12 years ago
Samy Al Bahra
b37ce19976
ck_pr/x86_64: GCC will attempt immediate expansion on double.
...
Break out double functionality to not use immediate expansion
at all.
Pointed out by Abel Mathew <amathew@appnexus...>.
12 years ago
Samy Al Bahra
93684f77c1
ck_pr: Use CK_CC_INLINE instead of inline keyword for ck_pr_barrier.
12 years ago
Samy Al Bahra
1c7b8811c8
ck_pr/gcc: Remove useless assignment from volatile load.
12 years ago
Samy Al Bahra
a9ed19303f
ck_pr/gcc: Adopt const semantics for load/store in GCC port.
12 years ago
Samy Al Bahra
6de54d6aa5
ck_pr/x86_64: Use correct target for load_64_2.
12 years ago
Samy Al Bahra
12da4128ff
ck_pr: Adopt const qualifer for load/store.
...
We will adopt these semantics for the rest of _ptr
family at some point in the future as well.
12 years ago
Samy Al Bahra
e40521d1aa
ck_pr/ppc64: Switch to RMO model for atomic operations.
...
Signed-off-by: Samy Al Bahra <sbahra@repnop.org>
12 years ago
Samy Al Bahra
52ca64b2b7
ck_pr/sparcv9: MemIssue is overly heavyweight.
...
Signed-off-by: Samy Al Bahra <sbahra@repnop.org>
12 years ago
Samy Al Bahra
3f217c9789
ck_pr: Fallback to RMO for PSO for this release.
...
Barriers can be rejiggered next release.
12 years ago
Samy Al Bahra
a1dc38f20e
build/ck_pr: Add configurable memory models.
12 years ago
Samy Al Bahra
fedc2f6e47
ck_pr/sparcv9: Assume TSO by default.
12 years ago
Samy Al Bahra
8043f52130
ck_pr: Add ck_pr_barrier for compiler barrier.
...
CK_CC_BARRIER isn't idiomatic, roll this into PR memory model
instead.
12 years ago
Samy Al Bahra
bc19dccb1f
ck_cc: Add CK_CC_BARRIER for compiler barrier.
12 years ago
Samy Al Bahra
65cf506af9
ck_cc: Add CK_CC_ALIASED attribute.
...
Submitted by John Wittrock <jwittrock@...>.
13 years ago
Samy Al Bahra
9bc4ede14e
ck_pr/x86: Re-order includes.
13 years ago
Samy Al Bahra
5cc3e6f1fc
ck_pr: Re-order includes.
13 years ago
Samy Al Bahra
3cf265cba0
all: Strip trailing whitespaces.
13 years ago
Samy Al Bahra
4251e6aa56
ck_pr: Update PPC32 header guard to be consistent.
13 years ago
Samy Al Bahra
70edc1f6cb
ck_pr: Merge Joao's PPC32 support with some modifications.
...
Add PPC32 build file. Add support in configure script.
13 years ago
Joao Fernandes
64b7f83417
Added support for 32-bit PowerPC CPUs. Untested!
13 years ago
Samy Al Bahra
706fd07de7
legal: Update Copyright statements.
13 years ago
Samy Al Bahra
f5f5074b70
ck_pr: Cast down to void pointer for cmpxchg16b wrapper.
13 years ago
Samy Al Bahra
e8a96f4fb8
ck_pr: Add ck_pr_fas_double for {ppc,x86_}64 and ck_pr_cas_double{_2} for x86_64.
13 years ago
Samy Al Bahra
5e7adf5983
ck_pr: Add respective feature flags for ck_pr_load/store_double.
13 years ago