diff options
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r-- | arch/powerpc/include/asm/cputime.h | 72 | ||||
-rw-r--r-- | arch/powerpc/include/asm/kvm_book3s.h | 33 | ||||
-rw-r--r-- | arch/powerpc/include/asm/kvm_book3s_64.h | 33 | ||||
-rw-r--r-- | arch/powerpc/include/asm/memblock.h | 8 | ||||
-rw-r--r-- | arch/powerpc/include/asm/socket.h | 3 |
5 files changed, 65 insertions, 84 deletions
diff --git a/arch/powerpc/include/asm/cputime.h b/arch/powerpc/include/asm/cputime.h index 33a35801f7c9..487d46ff68a1 100644 --- a/arch/powerpc/include/asm/cputime.h +++ b/arch/powerpc/include/asm/cputime.h | |||
@@ -29,25 +29,8 @@ static inline void setup_cputime_one_jiffy(void) { } | |||
29 | #include <asm/time.h> | 29 | #include <asm/time.h> |
30 | #include <asm/param.h> | 30 | #include <asm/param.h> |
31 | 31 | ||
32 | typedef u64 cputime_t; | 32 | typedef u64 __nocast cputime_t; |
33 | typedef u64 cputime64_t; | 33 | typedef u64 __nocast cputime64_t; |
34 | |||
35 | #define cputime_zero ((cputime_t)0) | ||
36 | #define cputime_max ((~((cputime_t)0) >> 1) - 1) | ||
37 | #define cputime_add(__a, __b) ((__a) + (__b)) | ||
38 | #define cputime_sub(__a, __b) ((__a) - (__b)) | ||
39 | #define cputime_div(__a, __n) ((__a) / (__n)) | ||
40 | #define cputime_halve(__a) ((__a) >> 1) | ||
41 | #define cputime_eq(__a, __b) ((__a) == (__b)) | ||
42 | #define cputime_gt(__a, __b) ((__a) > (__b)) | ||
43 | #define cputime_ge(__a, __b) ((__a) >= (__b)) | ||
44 | #define cputime_lt(__a, __b) ((__a) < (__b)) | ||
45 | #define cputime_le(__a, __b) ((__a) <= (__b)) | ||
46 | |||
47 | #define cputime64_zero ((cputime64_t)0) | ||
48 | #define cputime64_add(__a, __b) ((__a) + (__b)) | ||
49 | #define cputime64_sub(__a, __b) ((__a) - (__b)) | ||
50 | #define cputime_to_cputime64(__ct) (__ct) | ||
51 | 34 | ||
52 | #ifdef __KERNEL__ | 35 | #ifdef __KERNEL__ |
53 | 36 | ||
@@ -65,7 +48,7 @@ DECLARE_PER_CPU(unsigned long, cputime_scaled_last_delta); | |||
65 | 48 | ||
66 | static inline unsigned long cputime_to_jiffies(const cputime_t ct) | 49 | static inline unsigned long cputime_to_jiffies(const cputime_t ct) |
67 | { | 50 | { |
68 | return mulhdu(ct, __cputime_jiffies_factor); | 51 | return mulhdu((__force u64) ct, __cputime_jiffies_factor); |
69 | } | 52 | } |
70 | 53 | ||
71 | /* Estimate the scaled cputime by scaling the real cputime based on | 54 | /* Estimate the scaled cputime by scaling the real cputime based on |
@@ -74,14 +57,15 @@ static inline cputime_t cputime_to_scaled(const cputime_t ct) | |||
74 | { | 57 | { |
75 | if (cpu_has_feature(CPU_FTR_SPURR) && | 58 | if (cpu_has_feature(CPU_FTR_SPURR) && |
76 | __get_cpu_var(cputime_last_delta)) | 59 | __get_cpu_var(cputime_last_delta)) |
77 | return ct * __get_cpu_var(cputime_scaled_last_delta) / | 60 | return (__force u64) ct * |
78 | __get_cpu_var(cputime_last_delta); | 61 | __get_cpu_var(cputime_scaled_last_delta) / |
62 | __get_cpu_var(cputime_last_delta); | ||
79 | return ct; | 63 | return ct; |
80 | } | 64 | } |
81 | 65 | ||
82 | static inline cputime_t jiffies_to_cputime(const unsigned long jif) | 66 | static inline cputime_t jiffies_to_cputime(const unsigned long jif) |
83 | { | 67 | { |
84 | cputime_t ct; | 68 | u64 ct; |
85 | unsigned long sec; | 69 | unsigned long sec; |
86 | 70 | ||
87 | /* have to be a little careful about overflow */ | 71 | /* have to be a little careful about overflow */ |
@@ -93,7 +77,7 @@ static inline cputime_t jiffies_to_cputime(const unsigned long jif) | |||
93 | } | 77 | } |
94 | if (sec) | 78 | if (sec) |
95 | ct += (cputime_t) sec * tb_ticks_per_sec; | 79 | ct += (cputime_t) sec * tb_ticks_per_sec; |
96 | return ct; | 80 | return (__force cputime_t) ct; |
97 | } | 81 | } |
98 | 82 | ||
99 | static inline void setup_cputime_one_jiffy(void) | 83 | static inline void setup_cputime_one_jiffy(void) |
@@ -103,7 +87,7 @@ static inline void setup_cputime_one_jiffy(void) | |||
103 | 87 | ||
104 | static inline cputime64_t jiffies64_to_cputime64(const u64 jif) | 88 | static inline cputime64_t jiffies64_to_cputime64(const u64 jif) |
105 | { | 89 | { |
106 | cputime_t ct; | 90 | u64 ct; |
107 | u64 sec; | 91 | u64 sec; |
108 | 92 | ||
109 | /* have to be a little careful about overflow */ | 93 | /* have to be a little careful about overflow */ |
@@ -114,13 +98,13 @@ static inline cputime64_t jiffies64_to_cputime64(const u64 jif) | |||
114 | do_div(ct, HZ); | 98 | do_div(ct, HZ); |
115 | } | 99 | } |
116 | if (sec) | 100 | if (sec) |
117 | ct += (cputime_t) sec * tb_ticks_per_sec; | 101 | ct += (u64) sec * tb_ticks_per_sec; |
118 | return ct; | 102 | return (__force cputime64_t) ct; |
119 | } | 103 | } |
120 | 104 | ||
121 | static inline u64 cputime64_to_jiffies64(const cputime_t ct) | 105 | static inline u64 cputime64_to_jiffies64(const cputime_t ct) |
122 | { | 106 | { |
123 | return mulhdu(ct, __cputime_jiffies_factor); | 107 | return mulhdu((__force u64) ct, __cputime_jiffies_factor); |
124 | } | 108 | } |
125 | 109 | ||
126 | /* | 110 | /* |
@@ -130,12 +114,12 @@ extern u64 __cputime_usec_factor; | |||
130 | 114 | ||
131 | static inline unsigned long cputime_to_usecs(const cputime_t ct) | 115 | static inline unsigned long cputime_to_usecs(const cputime_t ct) |
132 | { | 116 | { |
133 | return mulhdu(ct, __cputime_usec_factor); | 117 | return mulhdu((__force u64) ct, __cputime_usec_factor); |
134 | } | 118 | } |
135 | 119 | ||
136 | static inline cputime_t usecs_to_cputime(const unsigned long us) | 120 | static inline cputime_t usecs_to_cputime(const unsigned long us) |
137 | { | 121 | { |
138 | cputime_t ct; | 122 | u64 ct; |
139 | unsigned long sec; | 123 | unsigned long sec; |
140 | 124 | ||
141 | /* have to be a little careful about overflow */ | 125 | /* have to be a little careful about overflow */ |
@@ -147,9 +131,11 @@ static inline cputime_t usecs_to_cputime(const unsigned long us) | |||
147 | } | 131 | } |
148 | if (sec) | 132 | if (sec) |
149 | ct += (cputime_t) sec * tb_ticks_per_sec; | 133 | ct += (cputime_t) sec * tb_ticks_per_sec; |
150 | return ct; | 134 | return (__force cputime_t) ct; |
151 | } | 135 | } |
152 | 136 | ||
137 | #define usecs_to_cputime64(us) usecs_to_cputime(us) | ||
138 | |||
153 | /* | 139 | /* |
154 | * Convert cputime <-> seconds | 140 | * Convert cputime <-> seconds |
155 | */ | 141 | */ |
@@ -157,12 +143,12 @@ extern u64 __cputime_sec_factor; | |||
157 | 143 | ||
158 | static inline unsigned long cputime_to_secs(const cputime_t ct) | 144 | static inline unsigned long cputime_to_secs(const cputime_t ct) |
159 | { | 145 | { |
160 | return mulhdu(ct, __cputime_sec_factor); | 146 | return mulhdu((__force u64) ct, __cputime_sec_factor); |
161 | } | 147 | } |
162 | 148 | ||
163 | static inline cputime_t secs_to_cputime(const unsigned long sec) | 149 | static inline cputime_t secs_to_cputime(const unsigned long sec) |
164 | { | 150 | { |
165 | return (cputime_t) sec * tb_ticks_per_sec; | 151 | return (__force cputime_t)((u64) sec * tb_ticks_per_sec); |
166 | } | 152 | } |
167 | 153 | ||
168 | /* | 154 | /* |
@@ -170,7 +156,7 @@ static inline cputime_t secs_to_cputime(const unsigned long sec) | |||
170 | */ | 156 | */ |
171 | static inline void cputime_to_timespec(const cputime_t ct, struct timespec *p) | 157 | static inline void cputime_to_timespec(const cputime_t ct, struct timespec *p) |
172 | { | 158 | { |
173 | u64 x = ct; | 159 | u64 x = (__force u64) ct; |
174 | unsigned int frac; | 160 | unsigned int frac; |
175 | 161 | ||
176 | frac = do_div(x, tb_ticks_per_sec); | 162 | frac = do_div(x, tb_ticks_per_sec); |
@@ -182,11 +168,11 @@ static inline void cputime_to_timespec(const cputime_t ct, struct timespec *p) | |||
182 | 168 | ||
183 | static inline cputime_t timespec_to_cputime(const struct timespec *p) | 169 | static inline cputime_t timespec_to_cputime(const struct timespec *p) |
184 | { | 170 | { |
185 | cputime_t ct; | 171 | u64 ct; |
186 | 172 | ||
187 | ct = (u64) p->tv_nsec * tb_ticks_per_sec; | 173 | ct = (u64) p->tv_nsec * tb_ticks_per_sec; |
188 | do_div(ct, 1000000000); | 174 | do_div(ct, 1000000000); |
189 | return ct + (u64) p->tv_sec * tb_ticks_per_sec; | 175 | return (__force cputime_t)(ct + (u64) p->tv_sec * tb_ticks_per_sec); |
190 | } | 176 | } |
191 | 177 | ||
192 | /* | 178 | /* |
@@ -194,7 +180,7 @@ static inline cputime_t timespec_to_cputime(const struct timespec *p) | |||
194 | */ | 180 | */ |
195 | static inline void cputime_to_timeval(const cputime_t ct, struct timeval *p) | 181 | static inline void cputime_to_timeval(const cputime_t ct, struct timeval *p) |
196 | { | 182 | { |
197 | u64 x = ct; | 183 | u64 x = (__force u64) ct; |
198 | unsigned int frac; | 184 | unsigned int frac; |
199 | 185 | ||
200 | frac = do_div(x, tb_ticks_per_sec); | 186 | frac = do_div(x, tb_ticks_per_sec); |
@@ -206,11 +192,11 @@ static inline void cputime_to_timeval(const cputime_t ct, struct timeval *p) | |||
206 | 192 | ||
207 | static inline cputime_t timeval_to_cputime(const struct timeval *p) | 193 | static inline cputime_t timeval_to_cputime(const struct timeval *p) |
208 | { | 194 | { |
209 | cputime_t ct; | 195 | u64 ct; |
210 | 196 | ||
211 | ct = (u64) p->tv_usec * tb_ticks_per_sec; | 197 | ct = (u64) p->tv_usec * tb_ticks_per_sec; |
212 | do_div(ct, 1000000); | 198 | do_div(ct, 1000000); |
213 | return ct + (u64) p->tv_sec * tb_ticks_per_sec; | 199 | return (__force cputime_t)(ct + (u64) p->tv_sec * tb_ticks_per_sec); |
214 | } | 200 | } |
215 | 201 | ||
216 | /* | 202 | /* |
@@ -220,12 +206,12 @@ extern u64 __cputime_clockt_factor; | |||
220 | 206 | ||
221 | static inline unsigned long cputime_to_clock_t(const cputime_t ct) | 207 | static inline unsigned long cputime_to_clock_t(const cputime_t ct) |
222 | { | 208 | { |
223 | return mulhdu(ct, __cputime_clockt_factor); | 209 | return mulhdu((__force u64) ct, __cputime_clockt_factor); |
224 | } | 210 | } |
225 | 211 | ||
226 | static inline cputime_t clock_t_to_cputime(const unsigned long clk) | 212 | static inline cputime_t clock_t_to_cputime(const unsigned long clk) |
227 | { | 213 | { |
228 | cputime_t ct; | 214 | u64 ct; |
229 | unsigned long sec; | 215 | unsigned long sec; |
230 | 216 | ||
231 | /* have to be a little careful about overflow */ | 217 | /* have to be a little careful about overflow */ |
@@ -236,8 +222,8 @@ static inline cputime_t clock_t_to_cputime(const unsigned long clk) | |||
236 | do_div(ct, USER_HZ); | 222 | do_div(ct, USER_HZ); |
237 | } | 223 | } |
238 | if (sec) | 224 | if (sec) |
239 | ct += (cputime_t) sec * tb_ticks_per_sec; | 225 | ct += (u64) sec * tb_ticks_per_sec; |
240 | return ct; | 226 | return (__force cputime_t) ct; |
241 | } | 227 | } |
242 | 228 | ||
243 | #define cputime64_to_clock_t(ct) cputime_to_clock_t((cputime_t)(ct)) | 229 | #define cputime64_to_clock_t(ct) cputime_to_clock_t((cputime_t)(ct)) |
diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h index d4df013ad779..69c7377d2071 100644 --- a/arch/powerpc/include/asm/kvm_book3s.h +++ b/arch/powerpc/include/asm/kvm_book3s.h | |||
@@ -381,39 +381,6 @@ static inline bool kvmppc_critical_section(struct kvm_vcpu *vcpu) | |||
381 | } | 381 | } |
382 | #endif | 382 | #endif |
383 | 383 | ||
384 | static inline unsigned long compute_tlbie_rb(unsigned long v, unsigned long r, | ||
385 | unsigned long pte_index) | ||
386 | { | ||
387 | unsigned long rb, va_low; | ||
388 | |||
389 | rb = (v & ~0x7fUL) << 16; /* AVA field */ | ||
390 | va_low = pte_index >> 3; | ||
391 | if (v & HPTE_V_SECONDARY) | ||
392 | va_low = ~va_low; | ||
393 | /* xor vsid from AVA */ | ||
394 | if (!(v & HPTE_V_1TB_SEG)) | ||
395 | va_low ^= v >> 12; | ||
396 | else | ||
397 | va_low ^= v >> 24; | ||
398 | va_low &= 0x7ff; | ||
399 | if (v & HPTE_V_LARGE) { | ||
400 | rb |= 1; /* L field */ | ||
401 | if (cpu_has_feature(CPU_FTR_ARCH_206) && | ||
402 | (r & 0xff000)) { | ||
403 | /* non-16MB large page, must be 64k */ | ||
404 | /* (masks depend on page size) */ | ||
405 | rb |= 0x1000; /* page encoding in LP field */ | ||
406 | rb |= (va_low & 0x7f) << 16; /* 7b of VA in AVA/LP field */ | ||
407 | rb |= (va_low & 0xfe); /* AVAL field (P7 doesn't seem to care) */ | ||
408 | } | ||
409 | } else { | ||
410 | /* 4kB page */ | ||
411 | rb |= (va_low & 0x7ff) << 12; /* remaining 11b of VA */ | ||
412 | } | ||
413 | rb |= (v >> 54) & 0x300; /* B field */ | ||
414 | return rb; | ||
415 | } | ||
416 | |||
417 | /* Magic register values loaded into r3 and r4 before the 'sc' assembly | 384 | /* Magic register values loaded into r3 and r4 before the 'sc' assembly |
418 | * instruction for the OSI hypercalls */ | 385 | * instruction for the OSI hypercalls */ |
419 | #define OSI_SC_MAGIC_R3 0x113724FA | 386 | #define OSI_SC_MAGIC_R3 0x113724FA |
diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h index e43fe42b9875..d0ac94f98f9e 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h | |||
@@ -29,4 +29,37 @@ static inline struct kvmppc_book3s_shadow_vcpu *to_svcpu(struct kvm_vcpu *vcpu) | |||
29 | 29 | ||
30 | #define SPAPR_TCE_SHIFT 12 | 30 | #define SPAPR_TCE_SHIFT 12 |
31 | 31 | ||
32 | static inline unsigned long compute_tlbie_rb(unsigned long v, unsigned long r, | ||
33 | unsigned long pte_index) | ||
34 | { | ||
35 | unsigned long rb, va_low; | ||
36 | |||
37 | rb = (v & ~0x7fUL) << 16; /* AVA field */ | ||
38 | va_low = pte_index >> 3; | ||
39 | if (v & HPTE_V_SECONDARY) | ||
40 | va_low = ~va_low; | ||
41 | /* xor vsid from AVA */ | ||
42 | if (!(v & HPTE_V_1TB_SEG)) | ||
43 | va_low ^= v >> 12; | ||
44 | else | ||
45 | va_low ^= v >> 24; | ||
46 | va_low &= 0x7ff; | ||
47 | if (v & HPTE_V_LARGE) { | ||
48 | rb |= 1; /* L field */ | ||
49 | if (cpu_has_feature(CPU_FTR_ARCH_206) && | ||
50 | (r & 0xff000)) { | ||
51 | /* non-16MB large page, must be 64k */ | ||
52 | /* (masks depend on page size) */ | ||
53 | rb |= 0x1000; /* page encoding in LP field */ | ||
54 | rb |= (va_low & 0x7f) << 16; /* 7b of VA in AVA/LP field */ | ||
55 | rb |= (va_low & 0xfe); /* AVAL field (P7 doesn't seem to care) */ | ||
56 | } | ||
57 | } else { | ||
58 | /* 4kB page */ | ||
59 | rb |= (va_low & 0x7ff) << 12; /* remaining 11b of VA */ | ||
60 | } | ||
61 | rb |= (v >> 54) & 0x300; /* B field */ | ||
62 | return rb; | ||
63 | } | ||
64 | |||
32 | #endif /* __ASM_KVM_BOOK3S_64_H__ */ | 65 | #endif /* __ASM_KVM_BOOK3S_64_H__ */ |
diff --git a/arch/powerpc/include/asm/memblock.h b/arch/powerpc/include/asm/memblock.h deleted file mode 100644 index 43efc345065e..000000000000 --- a/arch/powerpc/include/asm/memblock.h +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | #ifndef _ASM_POWERPC_MEMBLOCK_H | ||
2 | #define _ASM_POWERPC_MEMBLOCK_H | ||
3 | |||
4 | #include <asm/udbg.h> | ||
5 | |||
6 | #define MEMBLOCK_DBG(fmt...) udbg_printf(fmt) | ||
7 | |||
8 | #endif /* _ASM_POWERPC_MEMBLOCK_H */ | ||
diff --git a/arch/powerpc/include/asm/socket.h b/arch/powerpc/include/asm/socket.h index 866f7606da68..2fc2af8fbf59 100644 --- a/arch/powerpc/include/asm/socket.h +++ b/arch/powerpc/include/asm/socket.h | |||
@@ -69,4 +69,7 @@ | |||
69 | 69 | ||
70 | #define SO_RXQ_OVFL 40 | 70 | #define SO_RXQ_OVFL 40 |
71 | 71 | ||
72 | #define SO_WIFI_STATUS 41 | ||
73 | #define SCM_WIFI_STATUS SO_WIFI_STATUS | ||
74 | |||
72 | #endif /* _ASM_POWERPC_SOCKET_H */ | 75 | #endif /* _ASM_POWERPC_SOCKET_H */ |