From 02b9cbc93cb60570c43514dbc520cd98864b15ec Mon Sep 17 00:00:00 2001 From: Stefano Stabellini Date: Wed, 8 Aug 2012 16:34:01 +0000 Subject: [PATCH] --- yaml --- r: 330389 b: refs/heads/master c: e54d2f61528165bbe0e5f628b111eab3be31c3b5 h: refs/heads/master i: 330387: 7867ec4b253489bfafe6094284bc525d7259d7f2 v: v3 --- [refs] | 2 +- trunk/arch/arm/include/asm/sync_bitops.h | 27 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 trunk/arch/arm/include/asm/sync_bitops.h diff --git a/[refs] b/[refs] index 6cd8e7df7d27..38076986cff2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 36a67abce227af005b4a595735556942b74f6741 +refs/heads/master: e54d2f61528165bbe0e5f628b111eab3be31c3b5 diff --git a/trunk/arch/arm/include/asm/sync_bitops.h b/trunk/arch/arm/include/asm/sync_bitops.h new file mode 100644 index 000000000000..63479eecbf76 --- /dev/null +++ b/trunk/arch/arm/include/asm/sync_bitops.h @@ -0,0 +1,27 @@ +#ifndef __ASM_SYNC_BITOPS_H__ +#define __ASM_SYNC_BITOPS_H__ + +#include +#include + +/* sync_bitops functions are equivalent to the SMP implementation of the + * original functions, independently from CONFIG_SMP being defined. + * + * We need them because _set_bit etc are not SMP safe if !CONFIG_SMP. But + * under Xen you might be communicating with a completely external entity + * who might be on another CPU (e.g. two uniprocessor guests communicating + * via event channels and grant tables). So we need a variant of the bit + * ops which are SMP safe even on a UP kernel. + */ + +#define sync_set_bit(nr, p) _set_bit(nr, p) +#define sync_clear_bit(nr, p) _clear_bit(nr, p) +#define sync_change_bit(nr, p) _change_bit(nr, p) +#define sync_test_and_set_bit(nr, p) _test_and_set_bit(nr, p) +#define sync_test_and_clear_bit(nr, p) _test_and_clear_bit(nr, p) +#define sync_test_and_change_bit(nr, p) _test_and_change_bit(nr, p) +#define sync_test_bit(nr, addr) test_bit(nr, addr) +#define sync_cmpxchg cmpxchg + + +#endif