diff options
Diffstat (limited to 'include/asm-powerpc/system.h')
| -rw-r--r-- | include/asm-powerpc/system.h | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index d075725bf444..4b41deaa8d8d 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
| @@ -39,7 +39,6 @@ | |||
| 39 | #define read_barrier_depends() do { } while(0) | 39 | #define read_barrier_depends() do { } while(0) |
| 40 | 40 | ||
| 41 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 41 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 42 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 43 | 42 | ||
| 44 | #ifdef __KERNEL__ | 43 | #ifdef __KERNEL__ |
| 45 | #ifdef CONFIG_SMP | 44 | #ifdef CONFIG_SMP |
| @@ -54,6 +53,15 @@ | |||
| 54 | #define smp_read_barrier_depends() do { } while(0) | 53 | #define smp_read_barrier_depends() do { } while(0) |
| 55 | #endif /* CONFIG_SMP */ | 54 | #endif /* CONFIG_SMP */ |
| 56 | 55 | ||
| 56 | /* | ||
| 57 | * This is a barrier which prevents following instructions from being | ||
| 58 | * started until the value of the argument x is known. For example, if | ||
| 59 | * x is a variable loaded from memory, this prevents following | ||
| 60 | * instructions from being executed until the load has been performed. | ||
| 61 | */ | ||
| 62 | #define data_barrier(x) \ | ||
| 63 | asm volatile("twi 0,%0,0; isync" : : "r" (x) : "memory"); | ||
| 64 | |||
| 57 | struct task_struct; | 65 | struct task_struct; |
| 58 | struct pt_regs; | 66 | struct pt_regs; |
| 59 | 67 | ||
| @@ -169,11 +177,6 @@ extern u32 booke_wdt_enabled; | |||
| 169 | extern u32 booke_wdt_period; | 177 | extern u32 booke_wdt_period; |
| 170 | #endif /* CONFIG_BOOKE_WDT */ | 178 | #endif /* CONFIG_BOOKE_WDT */ |
| 171 | 179 | ||
| 172 | /* EBCDIC -> ASCII conversion for [0-9A-Z] on iSeries */ | ||
| 173 | extern unsigned char e2a(unsigned char); | ||
| 174 | extern unsigned char* strne2a(unsigned char *dest, | ||
| 175 | const unsigned char *src, size_t n); | ||
| 176 | |||
| 177 | struct device_node; | 180 | struct device_node; |
| 178 | extern void note_scsi_host(struct device_node *, void *); | 181 | extern void note_scsi_host(struct device_node *, void *); |
| 179 | 182 | ||
| @@ -220,8 +223,8 @@ __xchg_u32(volatile void *p, unsigned long val) | |||
| 220 | " stwcx. %3,0,%2 \n\ | 223 | " stwcx. %3,0,%2 \n\ |
| 221 | bne- 1b" | 224 | bne- 1b" |
| 222 | ISYNC_ON_SMP | 225 | ISYNC_ON_SMP |
| 223 | : "=&r" (prev), "=m" (*(volatile unsigned int *)p) | 226 | : "=&r" (prev), "+m" (*(volatile unsigned int *)p) |
| 224 | : "r" (p), "r" (val), "m" (*(volatile unsigned int *)p) | 227 | : "r" (p), "r" (val) |
| 225 | : "cc", "memory"); | 228 | : "cc", "memory"); |
| 226 | 229 | ||
| 227 | return prev; | 230 | return prev; |
| @@ -240,8 +243,8 @@ __xchg_u64(volatile void *p, unsigned long val) | |||
| 240 | " stdcx. %3,0,%2 \n\ | 243 | " stdcx. %3,0,%2 \n\ |
| 241 | bne- 1b" | 244 | bne- 1b" |
| 242 | ISYNC_ON_SMP | 245 | ISYNC_ON_SMP |
| 243 | : "=&r" (prev), "=m" (*(volatile unsigned long *)p) | 246 | : "=&r" (prev), "+m" (*(volatile unsigned long *)p) |
| 244 | : "r" (p), "r" (val), "m" (*(volatile unsigned long *)p) | 247 | : "r" (p), "r" (val) |
| 245 | : "cc", "memory"); | 248 | : "cc", "memory"); |
| 246 | 249 | ||
| 247 | return prev; | 250 | return prev; |
| @@ -299,8 +302,8 @@ __cmpxchg_u32(volatile unsigned int *p, unsigned long old, unsigned long new) | |||
| 299 | ISYNC_ON_SMP | 302 | ISYNC_ON_SMP |
| 300 | "\n\ | 303 | "\n\ |
| 301 | 2:" | 304 | 2:" |
| 302 | : "=&r" (prev), "=m" (*p) | 305 | : "=&r" (prev), "+m" (*p) |
| 303 | : "r" (p), "r" (old), "r" (new), "m" (*p) | 306 | : "r" (p), "r" (old), "r" (new) |
| 304 | : "cc", "memory"); | 307 | : "cc", "memory"); |
| 305 | 308 | ||
| 306 | return prev; | 309 | return prev; |
| @@ -322,8 +325,8 @@ __cmpxchg_u64(volatile unsigned long *p, unsigned long old, unsigned long new) | |||
| 322 | ISYNC_ON_SMP | 325 | ISYNC_ON_SMP |
| 323 | "\n\ | 326 | "\n\ |
| 324 | 2:" | 327 | 2:" |
| 325 | : "=&r" (prev), "=m" (*p) | 328 | : "=&r" (prev), "+m" (*p) |
| 326 | : "r" (p), "r" (old), "r" (new), "m" (*p) | 329 | : "r" (p), "r" (old), "r" (new) |
| 327 | : "cc", "memory"); | 330 | : "cc", "memory"); |
| 328 | 331 | ||
| 329 | return prev; | 332 | return prev; |
