diff options
48 files changed, 707 insertions, 425 deletions
diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h index 6cb7fe85c4b5..b4cf03690394 100644 --- a/arch/alpha/include/asm/processor.h +++ b/arch/alpha/include/asm/processor.h | |||
| @@ -57,6 +57,7 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 57 | ((tsk) == current ? rdusp() : task_thread_info(tsk)->pcb.usp) | 57 | ((tsk) == current ? rdusp() : task_thread_info(tsk)->pcb.usp) |
| 58 | 58 | ||
| 59 | #define cpu_relax() barrier() | 59 | #define cpu_relax() barrier() |
| 60 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 60 | 61 | ||
| 61 | #define ARCH_HAS_PREFETCH | 62 | #define ARCH_HAS_PREFETCH |
| 62 | #define ARCH_HAS_PREFETCHW | 63 | #define ARCH_HAS_PREFETCHW |
diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h index d99f9b37cd15..82588f3ba77f 100644 --- a/arch/arc/include/asm/processor.h +++ b/arch/arc/include/asm/processor.h | |||
| @@ -62,6 +62,8 @@ unsigned long thread_saved_pc(struct task_struct *t); | |||
| 62 | #define cpu_relax() do { } while (0) | 62 | #define cpu_relax() do { } while (0) |
| 63 | #endif | 63 | #endif |
| 64 | 64 | ||
| 65 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 66 | |||
| 65 | #define copy_segments(tsk, mm) do { } while (0) | 67 | #define copy_segments(tsk, mm) do { } while (0) |
| 66 | #define release_segments(mm) do { } while (0) | 68 | #define release_segments(mm) do { } while (0) |
| 67 | 69 | ||
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h index c3d5fc124a05..8a1e8e995dae 100644 --- a/arch/arm/include/asm/processor.h +++ b/arch/arm/include/asm/processor.h | |||
| @@ -82,6 +82,8 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 82 | #define cpu_relax() barrier() | 82 | #define cpu_relax() barrier() |
| 83 | #endif | 83 | #endif |
| 84 | 84 | ||
| 85 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 86 | |||
| 85 | #define task_pt_regs(p) \ | 87 | #define task_pt_regs(p) \ |
| 86 | ((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1) | 88 | ((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1) |
| 87 | 89 | ||
diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h index 77712454486b..3df21feeabdd 100644 --- a/arch/arm64/include/asm/processor.h +++ b/arch/arm64/include/asm/processor.h | |||
| @@ -129,6 +129,7 @@ extern void release_thread(struct task_struct *); | |||
| 129 | unsigned long get_wchan(struct task_struct *p); | 129 | unsigned long get_wchan(struct task_struct *p); |
| 130 | 130 | ||
| 131 | #define cpu_relax() barrier() | 131 | #define cpu_relax() barrier() |
| 132 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 132 | 133 | ||
| 133 | /* Thread switching */ | 134 | /* Thread switching */ |
| 134 | extern struct task_struct *cpu_switch_to(struct task_struct *prev, | 135 | extern struct task_struct *cpu_switch_to(struct task_struct *prev, |
diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h index 972adcc1e8f4..941593c7d9f3 100644 --- a/arch/avr32/include/asm/processor.h +++ b/arch/avr32/include/asm/processor.h | |||
| @@ -92,6 +92,7 @@ extern struct avr32_cpuinfo boot_cpu_data; | |||
| 92 | #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) | 92 | #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) |
| 93 | 93 | ||
| 94 | #define cpu_relax() barrier() | 94 | #define cpu_relax() barrier() |
| 95 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 95 | #define cpu_sync_pipeline() asm volatile("sub pc, -2" : : : "memory") | 96 | #define cpu_sync_pipeline() asm volatile("sub pc, -2" : : : "memory") |
| 96 | 97 | ||
| 97 | struct cpu_context { | 98 | struct cpu_context { |
diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h index d0e72e9475a6..7acd46653df3 100644 --- a/arch/blackfin/include/asm/processor.h +++ b/arch/blackfin/include/asm/processor.h | |||
| @@ -99,7 +99,7 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 99 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) | 99 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) |
| 100 | 100 | ||
| 101 | #define cpu_relax() smp_mb() | 101 | #define cpu_relax() smp_mb() |
| 102 | 102 | #define cpu_relax_lowlatency() cpu_relax() | |
| 103 | 103 | ||
| 104 | /* Get the Silicon Revision of the chip */ | 104 | /* Get the Silicon Revision of the chip */ |
| 105 | static inline uint32_t __pure bfin_revid(void) | 105 | static inline uint32_t __pure bfin_revid(void) |
diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h index b9eb3da7f278..f2ef31be2f8b 100644 --- a/arch/c6x/include/asm/processor.h +++ b/arch/c6x/include/asm/processor.h | |||
| @@ -121,6 +121,7 @@ extern unsigned long get_wchan(struct task_struct *p); | |||
| 121 | #define KSTK_ESP(task) (task_pt_regs(task)->sp) | 121 | #define KSTK_ESP(task) (task_pt_regs(task)->sp) |
| 122 | 122 | ||
| 123 | #define cpu_relax() do { } while (0) | 123 | #define cpu_relax() do { } while (0) |
| 124 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 124 | 125 | ||
| 125 | extern const struct seq_operations cpuinfo_op; | 126 | extern const struct seq_operations cpuinfo_op; |
| 126 | 127 | ||
diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h index 15b815df29c1..862126b58116 100644 --- a/arch/cris/include/asm/processor.h +++ b/arch/cris/include/asm/processor.h | |||
| @@ -63,6 +63,7 @@ static inline void release_thread(struct task_struct *dead_task) | |||
| 63 | #define init_stack (init_thread_union.stack) | 63 | #define init_stack (init_thread_union.stack) |
| 64 | 64 | ||
| 65 | #define cpu_relax() barrier() | 65 | #define cpu_relax() barrier() |
| 66 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 66 | 67 | ||
| 67 | void default_idle(void); | 68 | void default_idle(void); |
| 68 | 69 | ||
diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h index 45a825402f63..d8501137c8d0 100644 --- a/arch/hexagon/include/asm/processor.h +++ b/arch/hexagon/include/asm/processor.h | |||
| @@ -56,6 +56,7 @@ struct thread_struct { | |||
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | #define cpu_relax() __vmyield() | 58 | #define cpu_relax() __vmyield() |
| 59 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 59 | 60 | ||
| 60 | /* | 61 | /* |
| 61 | * Decides where the kernel will search for a free chunk of vm space during | 62 | * Decides where the kernel will search for a free chunk of vm space during |
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h index efd1b927ccb7..c7367130ab14 100644 --- a/arch/ia64/include/asm/processor.h +++ b/arch/ia64/include/asm/processor.h | |||
| @@ -548,6 +548,7 @@ ia64_eoi (void) | |||
| 548 | } | 548 | } |
| 549 | 549 | ||
| 550 | #define cpu_relax() ia64_hint(ia64_hint_pause) | 550 | #define cpu_relax() ia64_hint(ia64_hint_pause) |
| 551 | #define cpu_relax_lowlatency() cpu_relax() | ||
| 551 | 552 | ||
| 552 | static inline int | 553 | static inline int |
| 553 | ia64_get_irr(unsigned int vector) | 554 | ia64_get_irr(unsigned int vector) |
diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h index 5767367550c6..9f8fd9bef70f 100644 --- a/arch/m32r/include/asm/processor.h +++ b/arch/m32r/include/asm/processor.h | |||
| @@ -133,5 +133,6 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 133 | #define KSTK_ESP(tsk) ((tsk)->thread.sp) | 133 | #define KSTK_ESP(tsk) ((tsk)->thread.sp) |
| 134 | 134 | ||
| 135 | #define cpu_relax() barrier() | 135 | #define cpu_relax() barrier() |
| 136 | #define cpu_relax_lowlatency() cpu_relax() | ||
