1
linux/arch/powerpc
Milton Miller 714542721b powerpc: Use bytes instead of bitops in smp ipi multiplexing
Since there are only 4 messages, we can replace the atomic bit set
(which uses atomic load reserve and store conditional sequence) with
a byte stores to seperate bytes.  We still have to perform a load
reserve and store conditional sequence to avoid loosing messages on
reception but we can do that with a single call to xchg.

The do {} while and __BIG_ENDIAN specific mask testing was chosen by
looking at the generated asm code.  On gcc-4.4, the bit masking becomes
a simple bit mask and test of the register returned from xchg without
storing and loading the value to the stack like attempts with a union
of bytes and an int (or worse, loading single bit constants from the
constant pool into non-voliatle registers that had to be preseved on
the stack).  The do {} while avoids an unconditional branch to the
end of the loop to test the entry / repeat condition of a while loop
and instead optimises for the expected single iteration of the loop.

We have a full mb() at the beginning to cover ordering between send,
ipi, and receive so we can use xchg_local and forgo the further
acquire and release barriers of xchg.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-05-19 15:31:31 +10:00
..
boot powerpc: Use the deterministic mode of ar 2011-05-19 14:30:40 +10:00
configs powerpc/pseries: Enable iSCSI support for a number of cards 2011-05-19 14:30:41 +10:00
include/asm powerpc: Add kconfig for muxed smp ipi support 2011-05-19 15:31:05 +10:00
kernel powerpc: Use bytes instead of bitops in smp ipi multiplexing 2011-05-19 15:31:31 +10:00
kvm powerpc: Always use SPRN_SPRG_HSCRATCH0 when running in HV mode 2011-04-20 11:03:23 +10:00
lib powerpc: Remove alloc_maybe_bootmem for zalloc version 2011-05-19 15:30:57 +10:00
math-emu powerpc/85xx: Fix SPE float to integer conversion failure 2011-03-15 13:48:15 -05:00
mm powerpc: Remove ioremap_flags 2011-05-19 14:30:43 +10:00
oprofile Fix common misspellings 2011-03-31 11:26:23 -03:00
platforms powerpc: Add kconfig for muxed smp ipi support 2011-05-19 15:31:05 +10:00
sysdev powerpc: Add kconfig for muxed smp ipi support 2011-05-19 15:31:05 +10:00
xmon powerpc: Remove call sites of MSG_ALL_BUT_SELF 2011-05-19 14:30:46 +10:00
Kconfig powerpc/boot: Add an ePAPR compliant boot wrapper 2011-04-20 16:59:21 +10:00
Kconfig.debug powerpc: Add early debug for WSP platforms 2011-05-06 13:32:41 +10:00
Makefile powerpc: Fix typo in uImage target 2010-08-24 15:26:32 +10:00
relocs_check.pl