| .. | .. |
|---|
| 5 | 5 | #include <linux/compiler.h> |
|---|
| 6 | 6 | #include <linux/threads.h> |
|---|
| 7 | 7 | #include <linux/percpu-defs.h> |
|---|
| 8 | | -#include <linux/irqflags.h> |
|---|
| 9 | 8 | |
|---|
| 10 | 9 | #ifdef CONFIG_SMP |
|---|
| 11 | 10 | |
|---|
| .. | .. |
|---|
| 63 | 62 | #define PER_CPU_ATTRIBUTES |
|---|
| 64 | 63 | #endif |
|---|
| 65 | 64 | |
|---|
| 66 | | -#ifndef PER_CPU_DEF_ATTRIBUTES |
|---|
| 67 | | -#define PER_CPU_DEF_ATTRIBUTES |
|---|
| 68 | | -#endif |
|---|
| 69 | | - |
|---|
| 70 | 65 | #define raw_cpu_generic_read(pcp) \ |
|---|
| 71 | 66 | ({ \ |
|---|
| 72 | 67 | *raw_cpu_ptr(&(pcp)); \ |
|---|
| .. | .. |
|---|
| 79 | 74 | |
|---|
| 80 | 75 | #define raw_cpu_generic_add_return(pcp, val) \ |
|---|
| 81 | 76 | ({ \ |
|---|
| 82 | | - typeof(&(pcp)) __p = raw_cpu_ptr(&(pcp)); \ |
|---|
| 77 | + typeof(pcp) *__p = raw_cpu_ptr(&(pcp)); \ |
|---|
| 83 | 78 | \ |
|---|
| 84 | 79 | *__p += val; \ |
|---|
| 85 | 80 | *__p; \ |
|---|
| .. | .. |
|---|
| 87 | 82 | |
|---|
| 88 | 83 | #define raw_cpu_generic_xchg(pcp, nval) \ |
|---|
| 89 | 84 | ({ \ |
|---|
| 90 | | - typeof(&(pcp)) __p = raw_cpu_ptr(&(pcp)); \ |
|---|
| 85 | + typeof(pcp) *__p = raw_cpu_ptr(&(pcp)); \ |
|---|
| 91 | 86 | typeof(pcp) __ret; \ |
|---|
| 92 | 87 | __ret = *__p; \ |
|---|
| 93 | 88 | *__p = nval; \ |
|---|
| .. | .. |
|---|
| 96 | 91 | |
|---|
| 97 | 92 | #define raw_cpu_generic_cmpxchg(pcp, oval, nval) \ |
|---|
| 98 | 93 | ({ \ |
|---|
| 99 | | - typeof(&(pcp)) __p = raw_cpu_ptr(&(pcp)); \ |
|---|
| 94 | + typeof(pcp) *__p = raw_cpu_ptr(&(pcp)); \ |
|---|
| 100 | 95 | typeof(pcp) __ret; \ |
|---|
| 101 | 96 | __ret = *__p; \ |
|---|
| 102 | 97 | if (__ret == (oval)) \ |
|---|
| .. | .. |
|---|
| 106 | 101 | |
|---|
| 107 | 102 | #define raw_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2) \ |
|---|
| 108 | 103 | ({ \ |
|---|
| 109 | | - typeof(&(pcp1)) __p1 = raw_cpu_ptr(&(pcp1)); \ |
|---|
| 110 | | - typeof(&(pcp2)) __p2 = raw_cpu_ptr(&(pcp2)); \ |
|---|
| 104 | + typeof(pcp1) *__p1 = raw_cpu_ptr(&(pcp1)); \ |
|---|
| 105 | + typeof(pcp2) *__p2 = raw_cpu_ptr(&(pcp2)); \ |
|---|
| 111 | 106 | int __ret = 0; \ |
|---|
| 112 | 107 | if (*__p1 == (oval1) && *__p2 == (oval2)) { \ |
|---|
| 113 | 108 | *__p1 = nval1; \ |
|---|
| .. | .. |
|---|
| 119 | 114 | |
|---|
| 120 | 115 | #define __this_cpu_generic_read_nopreempt(pcp) \ |
|---|
| 121 | 116 | ({ \ |
|---|
| 122 | | - typeof(pcp) __ret; \ |
|---|
| 117 | + typeof(pcp) ___ret; \ |
|---|
| 123 | 118 | preempt_disable_notrace(); \ |
|---|
| 124 | | - __ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \ |
|---|
| 119 | + ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \ |
|---|
| 125 | 120 | preempt_enable_notrace(); \ |
|---|
| 126 | | - __ret; \ |
|---|
| 121 | + ___ret; \ |
|---|
| 127 | 122 | }) |
|---|
| 128 | 123 | |
|---|
| 129 | 124 | #define __this_cpu_generic_read_noirq(pcp) \ |
|---|
| 130 | 125 | ({ \ |
|---|
| 131 | | - typeof(pcp) __ret; \ |
|---|
| 132 | | - unsigned long __flags; \ |
|---|
| 133 | | - raw_local_irq_save(__flags); \ |
|---|
| 134 | | - __ret = raw_cpu_generic_read(pcp); \ |
|---|
| 135 | | - raw_local_irq_restore(__flags); \ |
|---|
| 136 | | - __ret; \ |
|---|
| 126 | + typeof(pcp) ___ret; \ |
|---|
| 127 | + unsigned long ___flags; \ |
|---|
| 128 | + raw_local_irq_save(___flags); \ |
|---|
| 129 | + ___ret = raw_cpu_generic_read(pcp); \ |
|---|
| 130 | + raw_local_irq_restore(___flags); \ |
|---|
| 131 | + ___ret; \ |
|---|
| 137 | 132 | }) |
|---|
| 138 | 133 | |
|---|
| 139 | 134 | #define this_cpu_generic_read(pcp) \ |
|---|