Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #ifndef _ASM_GENERIC_PERCPU_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #define _ASM_GENERIC_PERCPU_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #include <linux/compiler.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #include <linux/threads.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #include <linux/percpu-defs.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #ifdef CONFIG_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * per_cpu_offset() is the offset that has to be added to a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  * percpu variable to get to the instance for a certain processor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)  * Most arches use the __per_cpu_offset array for those offsets but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  * some arches have their own ways of determining the offset (x86_64, s390).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #ifndef __per_cpu_offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) extern unsigned long __per_cpu_offset[NR_CPUS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define per_cpu_offset(x) (__per_cpu_offset[x])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)  * Determine the offset for the currently active processor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)  * An arch may define __my_cpu_offset to provide a more effective
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27)  * means of obtaining the offset to the per cpu variables of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)  * current processor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #ifndef __my_cpu_offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define __my_cpu_offset per_cpu_offset(raw_smp_processor_id())
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #ifdef CONFIG_DEBUG_PREEMPT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #define my_cpu_offset per_cpu_offset(smp_processor_id())
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define my_cpu_offset __my_cpu_offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)  * Arch may define arch_raw_cpu_ptr() to provide more efficient address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)  * translations for raw_cpu_ptr().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #ifndef arch_raw_cpu_ptr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #ifdef CONFIG_HAVE_SETUP_PER_CPU_AREA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) extern void setup_per_cpu_areas(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #endif	/* SMP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #ifndef PER_CPU_BASE_SECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #ifdef CONFIG_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define PER_CPU_BASE_SECTION ".data..percpu"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define PER_CPU_BASE_SECTION ".data"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #ifndef PER_CPU_ATTRIBUTES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #define PER_CPU_ATTRIBUTES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define raw_cpu_generic_read(pcp)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	*raw_cpu_ptr(&(pcp));						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define raw_cpu_generic_to_op(pcp, val, op)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) do {									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	*raw_cpu_ptr(&(pcp)) op val;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define raw_cpu_generic_add_return(pcp, val)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	typeof(pcp) *__p = raw_cpu_ptr(&(pcp));				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	*__p += val;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	*__p;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define raw_cpu_generic_xchg(pcp, nval)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	typeof(pcp) *__p = raw_cpu_ptr(&(pcp));				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	typeof(pcp) __ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	__ret = *__p;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	*__p = nval;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	__ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define raw_cpu_generic_cmpxchg(pcp, oval, nval)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	typeof(pcp) *__p = raw_cpu_ptr(&(pcp));				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	typeof(pcp) __ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	__ret = *__p;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	if (__ret == (oval))						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 		*__p = nval;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	__ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define raw_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	typeof(pcp1) *__p1 = raw_cpu_ptr(&(pcp1));			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	typeof(pcp2) *__p2 = raw_cpu_ptr(&(pcp2));			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	int __ret = 0;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	if (*__p1 == (oval1) && *__p2  == (oval2)) {			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 		*__p1 = nval1;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 		*__p2 = nval2;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 		__ret = 1;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	}								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	(__ret);							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define __this_cpu_generic_read_nopreempt(pcp)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	typeof(pcp) ___ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	preempt_disable_notrace();					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	___ret = READ_ONCE(*raw_cpu_ptr(&(pcp)));			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	preempt_enable_notrace();					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	___ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define __this_cpu_generic_read_noirq(pcp)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	typeof(pcp) ___ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	unsigned long ___flags;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	raw_local_irq_save(___flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	___ret = raw_cpu_generic_read(pcp);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	raw_local_irq_restore(___flags);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	___ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define this_cpu_generic_read(pcp)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	typeof(pcp) __ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	if (__native_word(pcp))						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 		__ret = __this_cpu_generic_read_nopreempt(pcp);		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	else								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 		__ret = __this_cpu_generic_read_noirq(pcp);		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	__ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define this_cpu_generic_to_op(pcp, val, op)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) do {									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	unsigned long __flags;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	raw_local_irq_save(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	raw_cpu_generic_to_op(pcp, val, op);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	raw_local_irq_restore(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define this_cpu_generic_add_return(pcp, val)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	typeof(pcp) __ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	unsigned long __flags;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	raw_local_irq_save(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	__ret = raw_cpu_generic_add_return(pcp, val);			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	raw_local_irq_restore(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	__ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define this_cpu_generic_xchg(pcp, nval)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	typeof(pcp) __ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	unsigned long __flags;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	raw_local_irq_save(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	__ret = raw_cpu_generic_xchg(pcp, nval);			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	raw_local_irq_restore(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	__ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #define this_cpu_generic_cmpxchg(pcp, oval, nval)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	typeof(pcp) __ret;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	unsigned long __flags;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	raw_local_irq_save(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	__ret = raw_cpu_generic_cmpxchg(pcp, oval, nval);		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	raw_local_irq_restore(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	__ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #define this_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	int __ret;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	unsigned long __flags;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	raw_local_irq_save(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	__ret = raw_cpu_generic_cmpxchg_double(pcp1, pcp2,		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 			oval1, oval2, nval1, nval2);			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	raw_local_irq_restore(__flags);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	__ret;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #ifndef raw_cpu_read_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define raw_cpu_read_1(pcp)		raw_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) #ifndef raw_cpu_read_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) #define raw_cpu_read_2(pcp)		raw_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #ifndef raw_cpu_read_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define raw_cpu_read_4(pcp)		raw_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #ifndef raw_cpu_read_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define raw_cpu_read_8(pcp)		raw_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) #ifndef raw_cpu_write_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) #define raw_cpu_write_1(pcp, val)	raw_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) #ifndef raw_cpu_write_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) #define raw_cpu_write_2(pcp, val)	raw_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) #ifndef raw_cpu_write_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #define raw_cpu_write_4(pcp, val)	raw_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #ifndef raw_cpu_write_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define raw_cpu_write_8(pcp, val)	raw_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) #ifndef raw_cpu_add_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) #define raw_cpu_add_1(pcp, val)		raw_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #ifndef raw_cpu_add_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define raw_cpu_add_2(pcp, val)		raw_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) #ifndef raw_cpu_add_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define raw_cpu_add_4(pcp, val)		raw_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) #ifndef raw_cpu_add_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define raw_cpu_add_8(pcp, val)		raw_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #ifndef raw_cpu_and_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define raw_cpu_and_1(pcp, val)		raw_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #ifndef raw_cpu_and_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define raw_cpu_and_2(pcp, val)		raw_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) #ifndef raw_cpu_and_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) #define raw_cpu_and_4(pcp, val)		raw_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #ifndef raw_cpu_and_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) #define raw_cpu_and_8(pcp, val)		raw_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #ifndef raw_cpu_or_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define raw_cpu_or_1(pcp, val)		raw_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) #ifndef raw_cpu_or_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define raw_cpu_or_2(pcp, val)		raw_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #ifndef raw_cpu_or_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define raw_cpu_or_4(pcp, val)		raw_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #ifndef raw_cpu_or_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define raw_cpu_or_8(pcp, val)		raw_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) #ifndef raw_cpu_add_return_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) #define raw_cpu_add_return_1(pcp, val)	raw_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) #ifndef raw_cpu_add_return_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) #define raw_cpu_add_return_2(pcp, val)	raw_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) #ifndef raw_cpu_add_return_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) #define raw_cpu_add_return_4(pcp, val)	raw_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) #ifndef raw_cpu_add_return_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) #define raw_cpu_add_return_8(pcp, val)	raw_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) #ifndef raw_cpu_xchg_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) #define raw_cpu_xchg_1(pcp, nval)	raw_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) #ifndef raw_cpu_xchg_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) #define raw_cpu_xchg_2(pcp, nval)	raw_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) #ifndef raw_cpu_xchg_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) #define raw_cpu_xchg_4(pcp, nval)	raw_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) #ifndef raw_cpu_xchg_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) #define raw_cpu_xchg_8(pcp, nval)	raw_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) #ifndef raw_cpu_cmpxchg_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) #define raw_cpu_cmpxchg_1(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	raw_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) #ifndef raw_cpu_cmpxchg_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) #define raw_cpu_cmpxchg_2(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 	raw_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) #ifndef raw_cpu_cmpxchg_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) #define raw_cpu_cmpxchg_4(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 	raw_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) #ifndef raw_cpu_cmpxchg_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) #define raw_cpu_cmpxchg_8(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 	raw_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) #ifndef raw_cpu_cmpxchg_double_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) #define raw_cpu_cmpxchg_double_1(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 	raw_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) #ifndef raw_cpu_cmpxchg_double_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) #define raw_cpu_cmpxchg_double_2(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 	raw_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) #ifndef raw_cpu_cmpxchg_double_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) #define raw_cpu_cmpxchg_double_4(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 	raw_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) #ifndef raw_cpu_cmpxchg_double_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) #define raw_cpu_cmpxchg_double_8(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	raw_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) #ifndef this_cpu_read_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define this_cpu_read_1(pcp)		this_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #ifndef this_cpu_read_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) #define this_cpu_read_2(pcp)		this_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) #ifndef this_cpu_read_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) #define this_cpu_read_4(pcp)		this_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) #ifndef this_cpu_read_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #define this_cpu_read_8(pcp)		this_cpu_generic_read(pcp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) #ifndef this_cpu_write_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) #define this_cpu_write_1(pcp, val)	this_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #ifndef this_cpu_write_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) #define this_cpu_write_2(pcp, val)	this_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) #ifndef this_cpu_write_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) #define this_cpu_write_4(pcp, val)	this_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) #ifndef this_cpu_write_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) #define this_cpu_write_8(pcp, val)	this_cpu_generic_to_op(pcp, val, =)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) #ifndef this_cpu_add_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) #define this_cpu_add_1(pcp, val)	this_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) #ifndef this_cpu_add_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) #define this_cpu_add_2(pcp, val)	this_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) #ifndef this_cpu_add_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) #define this_cpu_add_4(pcp, val)	this_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) #ifndef this_cpu_add_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) #define this_cpu_add_8(pcp, val)	this_cpu_generic_to_op(pcp, val, +=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) #ifndef this_cpu_and_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) #define this_cpu_and_1(pcp, val)	this_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) #ifndef this_cpu_and_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) #define this_cpu_and_2(pcp, val)	this_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) #ifndef this_cpu_and_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) #define this_cpu_and_4(pcp, val)	this_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #ifndef this_cpu_and_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define this_cpu_and_8(pcp, val)	this_cpu_generic_to_op(pcp, val, &=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) #ifndef this_cpu_or_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) #define this_cpu_or_1(pcp, val)		this_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) #ifndef this_cpu_or_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define this_cpu_or_2(pcp, val)		this_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) #ifndef this_cpu_or_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) #define this_cpu_or_4(pcp, val)		this_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) #ifndef this_cpu_or_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) #define this_cpu_or_8(pcp, val)		this_cpu_generic_to_op(pcp, val, |=)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) #ifndef this_cpu_add_return_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) #define this_cpu_add_return_1(pcp, val)	this_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) #ifndef this_cpu_add_return_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) #define this_cpu_add_return_2(pcp, val)	this_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) #ifndef this_cpu_add_return_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) #define this_cpu_add_return_4(pcp, val)	this_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) #ifndef this_cpu_add_return_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) #define this_cpu_add_return_8(pcp, val)	this_cpu_generic_add_return(pcp, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) #ifndef this_cpu_xchg_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) #define this_cpu_xchg_1(pcp, nval)	this_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) #ifndef this_cpu_xchg_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) #define this_cpu_xchg_2(pcp, nval)	this_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) #ifndef this_cpu_xchg_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) #define this_cpu_xchg_4(pcp, nval)	this_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) #ifndef this_cpu_xchg_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) #define this_cpu_xchg_8(pcp, nval)	this_cpu_generic_xchg(pcp, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) #ifndef this_cpu_cmpxchg_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) #define this_cpu_cmpxchg_1(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) 	this_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) #ifndef this_cpu_cmpxchg_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) #define this_cpu_cmpxchg_2(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) 	this_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) #ifndef this_cpu_cmpxchg_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) #define this_cpu_cmpxchg_4(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) 	this_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) #ifndef this_cpu_cmpxchg_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) #define this_cpu_cmpxchg_8(pcp, oval, nval) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 	this_cpu_generic_cmpxchg(pcp, oval, nval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) #ifndef this_cpu_cmpxchg_double_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) #define this_cpu_cmpxchg_double_1(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) 	this_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) #ifndef this_cpu_cmpxchg_double_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) #define this_cpu_cmpxchg_double_2(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 	this_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) #ifndef this_cpu_cmpxchg_double_4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) #define this_cpu_cmpxchg_double_4(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) 	this_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) #ifndef this_cpu_cmpxchg_double_8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) #define this_cpu_cmpxchg_double_8(pcp1, pcp2, oval1, oval2, nval1, nval2) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) 	this_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) #endif /* _ASM_GENERIC_PERCPU_H_ */