linux/arch/sparc
David S. Miller 270c10e00a sparc64: Fix cpu strand yielding.
For atomic backoff, we just loop over an exponentially backed off
counter.  This is extremely ineffective as it doesn't actually yield
the cpu strand so that other competing strands can use the cpu core.

In cpus previous to SPARC-T4 we have to do this in a slightly hackish
way, by doing an operation with no side effects that also happens to
mark the strand as unavailable.

The mechanism we choose for this is three reads of the %ccr
(condition-code) register into %g0 (the zero register).

SPARC-T4 has an explicit "pause" instruction, and we'll make use of
that in a subsequent commit.

Yield strands also in cpu_relax().  We really should have done this a
very long time ago.

Signed-off-by: David S. Miller <davem@davemloft.net>
2012-10-27 18:35:27 -07:00
..
boot sparc32: drop build time btfixup patching 2012-05-14 14:05:10 -07:00
configs perf: Remove PERF_COUNTERS config option 2012-04-26 13:52:52 +02:00
crypto sparc64: Fix function argument comment in camellia_sparc64_key_expand asm. 2012-09-21 12:04:51 -07:00
include sparc64: Fix cpu strand yielding. 2012-10-27 18:35:27 -07:00
kernel sparc64: Make montmul/montsqr/mpmul usable in 32-bit threads. 2012-10-26 15:18:37 -07:00
lib sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
math-emu sparc64: Make montmul/montsqr/mpmul usable in 32-bit threads. 2012-10-26 15:18:37 -07:00
mm sparc64: Add global PMU register dumping via sysrq. 2012-10-16 09:34:01 -07:00
net sparc: bpf_jit_comp: add XOR instruction for BPF JIT JIT 2012-09-27 18:04:35 -04:00
oprofile
prom sparc32: Remove superfluous extern declarations for prom_*() functions 2012-06-27 01:27:45 -07:00
Kbuild sparc64: Add SHA1 driver making use of the 'sha1' instruction. 2012-08-20 15:08:49 -07:00
Kconfig Merge branch 'modules-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux 2012-10-14 13:39:34 -07:00
Kconfig.debug lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
Makefile Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-05-21 19:43:57 -07:00