mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	ia64/xen: introduce sync bitops which is necessary for ia64/xen support.
define sync bitops which is necessary for ia64/xen. This bit operation is used to communicate with VMM or other guest kernel Even when this kernel is built for UP, VMM might be SMP so that those operation must always use atomic operation. Cc: Robin Holt <holt@sgi.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
		
							parent
							
								
									da0ac27213
								
							
						
					
					
						commit
						1b051c6be3
					
				
					 1 changed files with 51 additions and 0 deletions
				
			
		
							
								
								
									
										51
									
								
								arch/ia64/include/asm/sync_bitops.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								arch/ia64/include/asm/sync_bitops.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| #ifndef _ASM_IA64_SYNC_BITOPS_H | ||||
| #define _ASM_IA64_SYNC_BITOPS_H | ||||
| 
 | ||||
| /*
 | ||||
|  * Copyright (C) 2008 Isaku Yamahata <yamahata at valinux co jp> | ||||
|  * | ||||
|  * Based on synch_bitops.h which Dan Magenhaimer wrote. | ||||
|  * | ||||
|  * bit operations which provide guaranteed strong synchronisation | ||||
|  * when communicating with Xen or other guest OSes running on other CPUs. | ||||
|  */ | ||||
| 
 | ||||
| static inline void sync_set_bit(int nr, volatile void *addr) | ||||
| { | ||||
| 	set_bit(nr, addr); | ||||
| } | ||||
| 
 | ||||
| static inline void sync_clear_bit(int nr, volatile void *addr) | ||||
| { | ||||
| 	clear_bit(nr, addr); | ||||
| } | ||||
| 
 | ||||
| static inline void sync_change_bit(int nr, volatile void *addr) | ||||
| { | ||||
| 	change_bit(nr, addr); | ||||
| } | ||||
| 
 | ||||
| static inline int sync_test_and_set_bit(int nr, volatile void *addr) | ||||
| { | ||||
| 	return test_and_set_bit(nr, addr); | ||||
| } | ||||
| 
 | ||||
| static inline int sync_test_and_clear_bit(int nr, volatile void *addr) | ||||
| { | ||||
| 	return test_and_clear_bit(nr, addr); | ||||
| } | ||||
| 
 | ||||
| static inline int sync_test_and_change_bit(int nr, volatile void *addr) | ||||
| { | ||||
| 	return test_and_change_bit(nr, addr); | ||||
| } | ||||
| 
 | ||||
| static inline int sync_test_bit(int nr, const volatile void *addr) | ||||
| { | ||||
| 	return test_bit(nr, addr); | ||||
| } | ||||
| 
 | ||||
| #define sync_cmpxchg(ptr, old, new)				\ | ||||
| 	((__typeof__(*(ptr)))cmpxchg_acq((ptr), (old), (new))) | ||||
| 
 | ||||
| #endif /* _ASM_IA64_SYNC_BITOPS_H */ | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Isaku Yamahata
						Isaku Yamahata