pkgsrc/sysutils/xenkernel42/patches/patch-xen_include_asm-x86_atomic.h

31 lines
1.8 KiB
C
Raw Normal View History

2015-03-18 16:05:51 +01:00
$NetBSD: patch-xen_include_asm-x86_atomic.h,v 1.1 2015/03/18 15:05:51 joerg Exp $
read_atomic() is used in the condition part of while() loops, so don't
use break here.
--- xen/include/asm-x86/atomic.h.orig 2015-03-17 23:41:49.000000000 +0000
+++ xen/include/asm-x86/atomic.h
@@ -46,12 +46,16 @@ void __bad_atomic_size(void);
#define read_atomic(p) ({ \
typeof(*p) __x; \
- switch ( sizeof(*p) ) { \
- case 1: __x = (typeof(*p))read_u8_atomic((uint8_t *)p); break; \
- case 2: __x = (typeof(*p))read_u16_atomic((uint16_t *)p); break; \
- case 4: __x = (typeof(*p))read_u32_atomic((uint32_t *)p); break; \
- case 8: __x = (typeof(*p))read_u64_atomic((uint64_t *)p); break; \
- default: __x = 0; __bad_atomic_size(); break; \
+ if ( sizeof(*p) == 1 ) \
+ __x = (typeof(*p))read_u8_atomic((uint8_t *)p); \
+ else if ( sizeof(*p) == 2 ) \
+ __x = (typeof(*p))read_u16_atomic((uint16_t *)p); \
+ else if ( sizeof(*p) == 4 ) \
+ __x = (typeof(*p))read_u32_atomic((uint32_t *)p); \
+ else if ( sizeof(*p) == 8 ) \
+ __x = (typeof(*p))read_u64_atomic((uint64_t *)p); \
+ else { \
+ __x = 0; __bad_atomic_size(); \
} \
__x; \
})