mirror of
				https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
				synced 2025-10-29 23:28:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_X86_RMWcc
 | |
| #define _ASM_X86_RMWcc
 | |
| 
 | |
| #ifdef CC_HAVE_ASM_GOTO
 | |
| 
 | |
| #define __GEN_RMWcc(fullop, var, cc, ...)				\
 | |
| do {									\
 | |
| 	asm_volatile_goto (fullop "; j" cc " %l[cc_label]"		\
 | |
| 			: : "m" (var), ## __VA_ARGS__ 			\
 | |
| 			: "memory" : cc_label);				\
 | |
| 	return 0;							\
 | |
| cc_label:								\
 | |
| 	return 1;							\
 | |
| } while (0)
 | |
| 
 | |
| #define GEN_UNARY_RMWcc(op, var, arg0, cc) 				\
 | |
| 	__GEN_RMWcc(op " " arg0, var, cc)
 | |
| 
 | |
| #define GEN_BINARY_RMWcc(op, var, vcon, val, arg0, cc)			\
 | |
| 	__GEN_RMWcc(op " %1, " arg0, var, cc, vcon (val))
 | |
| 
 | |
| #else /* !CC_HAVE_ASM_GOTO */
 | |
| 
 | |
| #define __GEN_RMWcc(fullop, var, cc, ...)				\
 | |
| do {									\
 | |
| 	char c;								\
 | |
| 	asm volatile (fullop "; set" cc " %1"				\
 | |
| 			: "+m" (var), "=qm" (c)				\
 | |
| 			: __VA_ARGS__ : "memory");			\
 | |
| 	return c != 0;							\
 | |
| } while (0)
 | |
| 
 | |
| #define GEN_UNARY_RMWcc(op, var, arg0, cc)				\
 | |
| 	__GEN_RMWcc(op " " arg0, var, cc)
 | |
| 
 | |
| #define GEN_BINARY_RMWcc(op, var, vcon, val, arg0, cc)			\
 | |
| 	__GEN_RMWcc(op " %2, " arg0, var, cc, vcon (val))
 | |
| 
 | |
| #endif /* CC_HAVE_ASM_GOTO */
 | |
| 
 | |
| #endif /* _ASM_X86_RMWcc */
 | 
