Define HAVE_EXIT_THREAD for archs which want to do something in exit_thread. For others, let's define exit_thread as an empty inline. This is a cleanup before we change the prototype of exit_thread to accept a task parameter. [akpm@linux-foundation.org: fix mips] Signed-off-by: Jiri Slaby <jslaby@suse.cz> Cc: "David S. Miller" <davem@davemloft.net> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> Cc: Aurelien Jacquiot <a-jacquiot@ti.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Chen Liqin <liqin.linux@gmail.com> Cc: Chris Metcalf <cmetcalf@mellanox.com> Cc: Chris Zankel <chris@zankel.net> Cc: David Howells <dhowells@redhat.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Guan Xuetao <gxt@mprc.pku.edu.cn> Cc: Haavard Skinnemoen <hskinnemoen@gmail.com> Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Helge Deller <deller@gmx.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: James Hogan <james.hogan@imgtec.com> Cc: Jeff Dike <jdike@addtoit.com> Cc: Jesper Nilsson <jesper.nilsson@axis.com> Cc: Jiri Slaby <jslaby@suse.cz> Cc: Jonas Bonn <jonas@southpole.se> Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com> Cc: Lennox Wu <lennox.wu@gmail.com> Cc: Ley Foon Tan <lftan@altera.com> Cc: Mark Salter <msalter@redhat.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Matt Turner <mattst88@gmail.com> Cc: Max Filippov <jcmvbkbc@gmail.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Michal Simek <monstr@monstr.eu> Cc: Mikael Starvik <starvik@axis.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Rich Felker <dalias@libc.org> Cc: Richard Henderson <rth@twiddle.net> Cc: Richard Kuo <rkuo@codeaurora.org> Cc: Richard Weinberger <richard@nod.at> Cc: Russell King <linux@arm.linux.org.uk> Cc: Steven Miao <realmz6@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tony Luck <tony.luck@intel.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Unified · Split
| @@ -517,6 +517,11 @@ config HAVE_ARCH_MMAP_RND_BITS · 516 unmodified lines | |||
| 517 | - ARCH_MMAP_RND_BITS_MIN | 517 | - ARCH_MMAP_RND_BITS_MIN |
| 518 | - ARCH_MMAP_RND_BITS_MAX | 518 | - ARCH_MMAP_RND_BITS_MAX |
| 519 | 519 | ||
| 520 | config HAVE_EXIT_THREAD | ||
| 521 | bool | ||
| 522 | help | ||
| 523 | An architecture implements exit_thread. | ||
| 524 | |||
| 520 | config ARCH_MMAP_RND_BITS_MIN | 525 | config ARCH_MMAP_RND_BITS_MIN |
| 521 | int | 526 | int |
| 522 | 527 | ||
| @@ -210,14 +210,6 @@ start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp) · 209 unmodified lines | |||
| 210 | } | 210 | } |
| 211 | EXPORT_SYMBOL(start_thread); | 211 | EXPORT_SYMBOL(start_thread); |
| 212 | 212 | ||
| 213 | /* | ||
| 214 | * Free current thread data structures etc.. | ||
| 215 | */ | ||
| 216 | void | ||
| 217 | exit_thread(void) | ||
| 218 | { | ||
| 219 | } | ||
| 220 | |||
| 221 | void | 213 | void |
| 222 | flush_thread(void) | 214 | flush_thread(void) |
| 223 | { | 215 | { |
| @@ -183,13 +183,6 @@ void flush_thread(void) · 182 unmodified lines | |||
| 183 | { | 183 | { |
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | /* | ||
| 187 | * Free any architecture-specific thread data structures, etc. | ||
| 188 | */ | ||
| 189 | void exit_thread(void) | ||
| 190 | { | ||
| 191 | } | ||
| 192 | |||
| 193 | int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) | 186 | int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) |
| 194 | { | 187 | { |
| 195 | return 0; | 188 | return 0; |
| @@ -50,6 +50,7 @@ config ARM · 49 unmodified lines | |||
| 50 | select HAVE_DMA_CONTIGUOUS if MMU | 50 | select HAVE_DMA_CONTIGUOUS if MMU |
| 51 | select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL) && !CPU_ENDIAN_BE32 && MMU | 51 | select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL) && !CPU_ENDIAN_BE32 && MMU |
| 52 | select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU | 52 | select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU |
| 53 | select HAVE_EXIT_THREAD | ||
| 53 | select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL) | 54 | select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL) |
| 54 | select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL) | 55 | select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL) |
| 55 | select HAVE_FUNCTION_TRACER if (!XIP_KERNEL) | 56 | select HAVE_FUNCTION_TRACER if (!XIP_KERNEL) |
| @@ -200,13 +200,6 @@ void show_regs(struct pt_regs * regs) · 199 unmodified lines | |||
| 200 | __show_regs(regs); | 200 | __show_regs(regs); |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | /* | ||
| 204 | * Free current thread data structures etc.. | ||
| 205 | */ | ||
| 206 | void exit_thread(void) | ||
| 207 | { | ||
| 208 | } | ||
| 209 | |||
| 210 | static void tls_thread_flush(void) | 203 | static void tls_thread_flush(void) |
| 211 | { | 204 | { |
| 212 | asm ("msr tpidr_el0, xzr"); | 205 | asm ("msr tpidr_el0, xzr"); |
| @@ -4,6 +4,7 @@ config AVR32 · 3 unmodified lines | |||
| 4 | # that we usually don't need on AVR32. | 4 | # that we usually don't need on AVR32. |
| 5 | select EXPERT | 5 | select EXPERT |
| 6 | select HAVE_CLK | 6 | select HAVE_CLK |
| 7 | select HAVE_EXIT_THREAD | ||
| 7 | select HAVE_OPROFILE | 8 | select HAVE_OPROFILE |
| 8 | select HAVE_KPROBES | 9 | select HAVE_KPROBES |
| 9 | select VIRT_TO_BUS | 10 | select VIRT_TO_BUS |
| @@ -75,13 +75,6 @@ static inline void release_thread(struct task_struct *dead_task) · 74 unmodified lines | |||
| 75 | { | 75 | { |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | /* | ||
| 79 | * Free current thread data structures etc.. | ||
| 80 | */ | ||
| 81 | static inline void exit_thread(void) | ||
| 82 | { | ||
| 83 | } | ||
| 84 | |||
| 85 | /* | 78 | /* |
| 86 | * Return saved PC of a blocked thread. | 79 | * Return saved PC of a blocked thread. |
| 87 | */ | 80 | */ |
| @@ -82,10 +82,6 @@ void flush_thread(void) · 81 unmodified lines | |||
| 82 | { | 82 | { |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | void exit_thread(void) | ||
| 86 | { | ||
| 87 | } | ||
| 88 | |||
| 89 | /* | 85 | /* |
| 90 | * Do necessary setup to start up a newly executed thread. | 86 | * Do necessary setup to start up a newly executed thread. |
| 91 | */ | 87 | */ |
| @@ -59,6 +59,7 @@ config CRIS · 58 unmodified lines | |||
| 59 | select GENERIC_IOMAP | 59 | select GENERIC_IOMAP |
| 60 | select MODULES_USE_ELF_RELA | 60 | select MODULES_USE_ELF_RELA |
| 61 | select CLONE_BACKWARDS2 | 61 | select CLONE_BACKWARDS2 |
| 62 | select HAVE_EXIT_THREAD if ETRAX_ARCH_V32 | ||
| 62 | select OLD_SIGSUSPEND | 63 | select OLD_SIGSUSPEND |
| 63 | select OLD_SIGACTION | 64 | select OLD_SIGACTION |
| 64 | select GPIOLIB | 65 | select GPIOLIB |
| @@ -35,15 +35,6 @@ void default_idle(void) · 34 unmodified lines | |||
| 35 | local_irq_enable(); | 35 | local_irq_enable(); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | /* | ||
| 39 | * Free current thread data structures etc.. | ||
| 40 | */ | ||
| 41 | |||
| 42 | void exit_thread(void) | ||
| 43 | { | ||
| 44 | /* Nothing needs to be done. */ | ||
| 45 | } | ||
| 46 | |||
| 47 | /* if the watchdog is enabled, we can simply disable interrupts and go | 38 | /* if the watchdog is enabled, we can simply disable interrupts and go |
| 48 | * into an eternal loop, and the watchdog will reset the CPU after 0.1s | 39 | * into an eternal loop, and the watchdog will reset the CPU after 0.1s |
| 49 | * if on the other hand the watchdog wasn't enabled, we just enable it and wait | 40 | * if on the other hand the watchdog wasn't enabled, we just enable it and wait |
| @@ -96,13 +96,6 @@ extern asmlinkage void *restore_user_regs(const struct user_context *target, ... · 95 unmodified lines | |||
| 96 | #define release_segments(mm) do { } while (0) | 96 | #define release_segments(mm) do { } while (0) |
| 97 | #define forget_segments() do { } while (0) | 97 | #define forget_segments() do { } while (0) |
| 98 | 98 | ||
| 99 | /* | ||
| 100 | * Free current thread data structures etc.. | ||
| 101 | */ | ||
| 102 | static inline void exit_thread(void) | ||
| 103 | { | ||
| 104 | } | ||
| 105 | |||
| 106 | /* | 99 | /* |
| 107 | * Return saved PC of a blocked thread. | 100 | * Return saved PC of a blocked thread. |
| 108 | */ | 101 | */ |
| @@ -110,13 +110,6 @@ static inline void release_thread(struct task_struct *dead_task) · 109 unmodified lines | |||
| 110 | { | 110 | { |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | /* | ||
| 114 | * Free current thread data structures etc.. | ||
| 115 | */ | ||
| 116 | static inline void exit_thread(void) | ||
| 117 | { | ||
| 118 | } | ||
| 119 | |||
| 120 | /* | 113 | /* |
| 121 | * Return saved PC of a blocked thread. | 114 | * Return saved PC of a blocked thread. |
| 122 | */ | 115 | */ |
| @@ -136,13 +136,6 @@ void release_thread(struct task_struct *dead_task) · 135 unmodified lines | |||
| 136 | { | 136 | { |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | /* | ||
| 140 | * Free any architecture-specific thread data structures, etc. | ||
| 141 | */ | ||
| 142 | void exit_thread(void) | ||
| 143 | { | ||
| 144 | } | ||
| 145 | |||
| 146 | /* | 139 | /* |
| 147 | * Some archs flush debug and FPU info here | 140 | * Some archs flush debug and FPU info here |
| 148 | */ | 141 | */ |
| @@ -18,6 +18,7 @@ config IA64 · 17 unmodified lines | |||
| 18 | select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI | 18 | select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI |
| 19 | select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI | 19 | select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI |
| 20 | select HAVE_UNSTABLE_SCHED_CLOCK | 20 | select HAVE_UNSTABLE_SCHED_CLOCK |
| 21 | select HAVE_EXIT_THREAD | ||
| 21 | select HAVE_IDE | 22 | select HAVE_IDE |
| 22 | select HAVE_OPROFILE | 23 | select HAVE_OPROFILE |
| 23 | select HAVE_KPROBES | 24 | select HAVE_KPROBES |
| @@ -101,15 +101,6 @@ void show_regs(struct pt_regs * regs) · 100 unmodified lines | |||
| 101 | #endif | 101 | #endif |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | /* | ||
| 105 | * Free current thread data structures etc.. | ||
| 106 | */ | ||
| 107 | void exit_thread(void) | ||
| 108 | { | ||
| 109 | /* Nothing to do. */ | ||
| 110 | DPRINTK("pid = %d\n", current->pid); | ||
| 111 | } | ||
| 112 | |||
| 113 | void flush_thread(void) | 104 | void flush_thread(void) |
| 114 | { | 105 | { |
| 115 | DPRINTK("pid = %d\n", current->pid); | 106 | DPRINTK("pid = %d\n", current->pid); |
| @@ -153,13 +153,6 @@ static inline void release_thread(struct task_struct *dead_task) · 152 unmodified lines | |||
| 153 | { | 153 | { |
| 154 | } | 154 | } |
| 155 | 155 | ||
| 156 | /* | ||
| 157 | * Free current thread data structures etc.. | ||
| 158 | */ | ||
| 159 | static inline void exit_thread(void) | ||
| 160 | { | ||
| 161 | } | ||
| 162 | |||
| 163 | extern unsigned long thread_saved_pc(struct task_struct *tsk); | 156 | extern unsigned long thread_saved_pc(struct task_struct *tsk); |
| 164 | 157 | ||
| 165 | unsigned long get_wchan(struct task_struct *p); | 158 | unsigned long get_wchan(struct task_struct *p); |
| @@ -11,6 +11,7 @@ config METAG · 10 unmodified lines | |||
| 11 | select HAVE_DEBUG_KMEMLEAK | 11 | select HAVE_DEBUG_KMEMLEAK |
| 12 | select HAVE_DEBUG_STACKOVERFLOW | 12 | select HAVE_DEBUG_STACKOVERFLOW |
| 13 | select HAVE_DYNAMIC_FTRACE | 13 | select HAVE_DYNAMIC_FTRACE |
| 14 | select HAVE_EXIT_THREAD | ||
| 14 | select HAVE_FTRACE_MCOUNT_RECORD | 15 | select HAVE_FTRACE_MCOUNT_RECORD |
| 15 | select HAVE_FUNCTION_TRACER | 16 | select HAVE_FUNCTION_TRACER |
| 16 | select HAVE_KERNEL_BZIP2 | 17 | select HAVE_KERNEL_BZIP2 |
| @@ -134,8 +134,6 @@ static inline void release_thread(struct task_struct *dead_task) · 133 unmodified lines | |||
| 134 | #define copy_segments(tsk, mm) do { } while (0) | 134 | #define copy_segments(tsk, mm) do { } while (0) |
| 135 | #define release_segments(mm) do { } while (0) | 135 | #define release_segments(mm) do { } while (0) |
| 136 | 136 | ||
| 137 | extern void exit_thread(void); | ||
| 138 | |||
| 139 | /* | 137 | /* |
| 140 | * Return saved PC of a blocked thread. | 138 | * Return saved PC of a blocked thread. |
| 141 | */ | 139 | */ |
| @@ -70,11 +70,6 @@ static inline void release_thread(struct task_struct *dead_task) · 69 unmodified lines | |||
| 70 | { | 70 | { |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | /* Free all resources held by a thread. */ | ||
| 74 | static inline void exit_thread(void) | ||
| 75 | { | ||
| 76 | } | ||
| 77 | |||
| 78 | extern unsigned long thread_saved_pc(struct task_struct *t); | 73 | extern unsigned long thread_saved_pc(struct task_struct *t); |
| 79 | 74 | ||
| 80 | extern unsigned long get_wchan(struct task_struct *p); | 75 | extern unsigned long get_wchan(struct task_struct *p); |
| @@ -127,11 +122,6 @@ static inline void release_thread(struct task_struct *dead_task) · 46 unmodified lines | |||
| 127 | { | 122 | { |
| 128 | } | 123 | } |
| 129 | 124 | ||
| 130 | /* Free current thread data structures etc. */ | ||
| 131 | static inline void exit_thread(void) | ||
| 132 | { | ||
| 133 | } | ||
| 134 | |||
| 135 | /* Return saved (kernel) PC of a blocked thread. */ | 125 | /* Return saved (kernel) PC of a blocked thread. */ |
| 136 | # define thread_saved_pc(tsk) \ | 126 | # define thread_saved_pc(tsk) \ |
| 137 | ((tsk)->thread.regs ? (tsk)->thread.regs->r15 : 0) | 127 | ((tsk)->thread.regs ? (tsk)->thread.regs->r15 : 0) |
| @@ -73,10 +73,6 @@ void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp) · 72 unmodified lines | |||
| 73 | regs->regs[29] = sp; | 73 | regs->regs[29] = sp; |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | void exit_thread(void) | ||
| 77 | { | ||
| 78 | } | ||
| 79 | |||
| 80 | int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) | 76 | int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) |
| 81 | { | 77 | { |
| 82 | /* | 78 | /* |
| @@ -1,5 +1,6 @@ | |||
| 1 | config MN10300 | 1 | config MN10300 |
| 2 | def_bool y | 2 | def_bool y |
| 3 | select HAVE_EXIT_THREAD | ||
| 3 | select HAVE_OPROFILE | 4 | select HAVE_OPROFILE |
| 4 | select HAVE_UID16 | 5 | select HAVE_UID16 |
| 5 | select GENERIC_IRQ_SHOW | 6 | select GENERIC_IRQ_SHOW |
| @@ -75,11 +75,6 @@ static inline void release_thread(struct task_struct *dead_task) · 74 unmodified lines | |||
| 75 | { | 75 | { |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | /* Free current thread data structures etc.. */ | ||
| 79 | static inline void exit_thread(void) | ||
| 80 | { | ||
| 81 | } | ||
| 82 | |||
| 83 | /* Return saved PC of a blocked thread. */ | 78 | /* Return saved PC of a blocked thread. */ |
| 84 | #define thread_saved_pc(tsk) ((tsk)->thread.kregs->ea) | 79 | #define thread_saved_pc(tsk) ((tsk)->thread.kregs->ea) |
| 85 | 80 | ||
| @@ -84,15 +84,6 @@ void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp); · 83 unmodified lines | |||
| 84 | void release_thread(struct task_struct *); | 84 | void release_thread(struct task_struct *); |
| 85 | unsigned long get_wchan(struct task_struct *p); | 85 | unsigned long get_wchan(struct task_struct *p); |
| 86 | 86 | ||
| 87 | /* | ||
| 88 | * Free current thread data structures etc.. | ||
| 89 | */ | ||
| 90 | |||
| 91 | extern inline void exit_thread(void) | ||
| 92 | { | ||
| 93 | /* Nothing needs to be done. */ | ||
| 94 | } | ||
| 95 | |||
| 96 | /* | 87 | /* |
| 97 | * Return saved PC of a blocked thread. For now, this is the "user" PC | 88 | * Return saved PC of a blocked thread. For now, this is the "user" PC |
| 98 | */ | 89 | */ |
| @@ -144,13 +144,6 @@ void machine_power_off(void) · 143 unmodified lines | |||
| 144 | void (*pm_power_off)(void) = machine_power_off; | 144 | void (*pm_power_off)(void) = machine_power_off; |
| 145 | EXPORT_SYMBOL(pm_power_off); | 145 | EXPORT_SYMBOL(pm_power_off); |
| 146 | 146 | ||
| 147 | /* | ||
| 148 | * Free current thread data structures etc.. | ||
| 149 | */ | ||
| 150 | void exit_thread(void) | ||
| 151 | { | ||
| 152 | } | ||
| 153 | |||
| 154 | void flush_thread(void) | 147 | void flush_thread(void) |
| 155 | { | 148 | { |
| 156 | /* Only needs to handle fpu stuff or perf monitors. | 149 | /* Only needs to handle fpu stuff or perf monitors. |
| @@ -1329,10 +1329,6 @@ void show_regs(struct pt_regs * regs) · 1328 unmodified lines | |||
| 1329 | show_instructions(regs); | 1329 | show_instructions(regs); |
| 1330 | } | 1330 | } |
| 1331 | 1331 | ||
| 1332 | void exit_thread(void) | ||
| 1333 | { | ||
| 1334 | } | ||
| 1335 | |||
| 1336 | void flush_thread(void) | 1332 | void flush_thread(void) |
| 1337 | { | 1333 | { |
| 1338 | #ifdef CONFIG_HAVE_HW_BREAKPOINT | 1334 | #ifdef CONFIG_HAVE_HW_BREAKPOINT |
| @@ -134,6 +134,7 @@ config S390 · 133 unmodified lines | |||
| 134 | select HAVE_DMA_API_DEBUG | 134 | select HAVE_DMA_API_DEBUG |
| 135 | select HAVE_DYNAMIC_FTRACE | 135 | select HAVE_DYNAMIC_FTRACE |
| 136 | select HAVE_DYNAMIC_FTRACE_WITH_REGS | 136 | select HAVE_DYNAMIC_FTRACE_WITH_REGS |
| 137 | select HAVE_EXIT_THREAD | ||
| 137 | select HAVE_FTRACE_MCOUNT_RECORD | 138 | select HAVE_FTRACE_MCOUNT_RECORD |
| 138 | select HAVE_FUNCTION_GRAPH_TRACER | 139 | select HAVE_FUNCTION_GRAPH_TRACER |
| 139 | select HAVE_FUNCTION_TRACER | 140 | select HAVE_FUNCTION_TRACER |
| @@ -56,8 +56,6 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp) · 55 unmodified lines | |||
| 56 | regs->regs[0] = sp; | 56 | regs->regs[0] = sp; |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | void exit_thread(void) {} | ||
| 60 | |||
| 61 | /* | 59 | /* |
| 62 | * When a process does an "exec", machine state like FPU and debug | 60 | * When a process does an "exec", machine state like FPU and debug |
| 63 | * registers need to be reset. This is a hook function for that. | 61 | * registers need to be reset. This is a hook function for that. |
| @@ -71,6 +71,7 @@ config SUPERH32 · 70 unmodified lines | |||
| 71 | 71 | ||
| 72 | config SUPERH64 | 72 | config SUPERH64 |
| 73 | def_bool ARCH = "sh64" | 73 | def_bool ARCH = "sh64" |
| 74 | select HAVE_EXIT_THREAD | ||
| 74 | select KALLSYMS | 75 | select KALLSYMS |
| 75 | 76 | ||
| 76 | config ARCH_DEFCONFIG | 77 | config ARCH_DEFCONFIG |
| @@ -76,13 +76,6 @@ void start_thread(struct pt_regs *regs, unsigned long new_pc, · 75 unmodified lines | |||
| 76 | } | 76 | } |
| 77 | EXPORT_SYMBOL(start_thread); | 77 | EXPORT_SYMBOL(start_thread); |
| 78 | 78 | ||
| 79 | /* | ||
| 80 | * Free current thread data structures etc.. | ||
| 81 | */ | ||
| 82 | void exit_thread(void) | ||
| 83 | { | ||
| 84 | } | ||
| 85 | |||
| 86 | void flush_thread(void) | 79 | void flush_thread(void) |
| 87 | { | 80 | { |
| 88 | struct task_struct *tsk = current; | 81 | struct task_struct *tsk = current; |
| @@ -20,6 +20,7 @@ config SPARC · 19 unmodified lines | |||
| 20 | select HAVE_OPROFILE | 20 | select HAVE_OPROFILE |
| 21 | select HAVE_ARCH_KGDB if !SMP || SPARC64 | 21 | select HAVE_ARCH_KGDB if !SMP || SPARC64 |
| 22 | select HAVE_ARCH_TRACEHOOK | 22 | select HAVE_ARCH_TRACEHOOK |
| 23 | select HAVE_EXIT_THREAD | ||
| 23 | select SYSCTL_EXCEPTION_TRACE | 24 | select SYSCTL_EXCEPTION_TRACE |
| 24 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 25 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
| 25 | select RTC_CLASS | 26 | select RTC_CLASS |
| @@ -3,6 +3,7 @@ · 2 unmodified lines | |||
| 3 | 3 | ||
| 4 | config TILE | 4 | config TILE |
| 5 | def_bool y | 5 | def_bool y |
| 6 | select HAVE_EXIT_THREAD | ||
| 6 | select HAVE_PERF_EVENTS | 7 | select HAVE_PERF_EVENTS |
| 7 | select USE_PMC if PERF_EVENTS | 8 | select USE_PMC if PERF_EVENTS |
| 8 | select HAVE_DMA_API_DEBUG | 9 | select HAVE_DMA_API_DEBUG |
| @@ -103,10 +103,6 @@ void interrupt_end(void) · 102 unmodified lines | |||
| 103 | tracehook_notify_resume(regs); | 103 | tracehook_notify_resume(regs); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | void exit_thread(void) | ||
| 107 | { | ||
| 108 | } | ||
| 109 | |||
| 110 | int get_current_pid(void) | 106 | int get_current_pid(void) |
| 111 | { | 107 | { |
| 112 | return task_pid_nr(current); | 108 | return task_pid_nr(current); |
| @@ -201,13 +201,6 @@ void show_regs(struct pt_regs *regs) · 200 unmodified lines | |||
| 201 | __backtrace(); | 201 | __backtrace(); |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | /* | ||
| 205 | * Free current thread data structures etc.. | ||
| 206 | */ | ||
| 207 | void exit_thread(void) | ||
| 208 | { | ||
| 209 | } | ||
| 210 | |||
| 211 | void flush_thread(void) | 204 | void flush_thread(void) |
| 212 | { | 205 | { |
| 213 | struct thread_info *thread = current_thread_info(); | 206 | struct thread_info *thread = current_thread_info(); |
| @@ -105,6 +105,7 @@ config X86 · 104 unmodified lines | |||
| 105 | select HAVE_DYNAMIC_FTRACE | 105 | select HAVE_DYNAMIC_FTRACE |
| 106 | select HAVE_DYNAMIC_FTRACE_WITH_REGS | 106 | select HAVE_DYNAMIC_FTRACE_WITH_REGS |
| 107 | select HAVE_EFFICIENT_UNALIGNED_ACCESS | 107 | select HAVE_EFFICIENT_UNALIGNED_ACCESS |
| 108 | select HAVE_EXIT_THREAD | ||
| 108 | select HAVE_FENTRY if X86_64 | 109 | select HAVE_FENTRY if X86_64 |
| 109 | select HAVE_FTRACE_MCOUNT_RECORD | 110 | select HAVE_FTRACE_MCOUNT_RECORD |
| 110 | select HAVE_FUNCTION_GRAPH_FP_TEST | 111 | select HAVE_FUNCTION_GRAPH_FP_TEST |
| @@ -14,6 +14,7 @@ config XTENSA · 13 unmodified lines | |||
| 14 | select GENERIC_PCI_IOMAP | 14 | select GENERIC_PCI_IOMAP |
| 15 | select GENERIC_SCHED_CLOCK | 15 | select GENERIC_SCHED_CLOCK |
| 16 | select HAVE_DMA_API_DEBUG | 16 | select HAVE_DMA_API_DEBUG |
| 17 | select HAVE_EXIT_THREAD | ||
| 17 | select HAVE_FUNCTION_TRACER | 18 | select HAVE_FUNCTION_TRACER |
| 18 | select HAVE_FUTEX_CMPXCHG if !MMU | 19 | select HAVE_FUTEX_CMPXCHG if !MMU |
| 19 | select HAVE_HW_BREAKPOINT if PERF_EVENTS | 20 | select HAVE_HW_BREAKPOINT if PERF_EVENTS |
| @@ -2769,7 +2769,14 @@ static inline int copy_thread_tls( · 2768 unmodified lines | |||
| 2769 | } | 2769 | } |
| 2770 | #endif | 2770 | #endif |
| 2771 | extern void flush_thread(void); | 2771 | extern void flush_thread(void); |
| 2772 | |||
| 2773 | #ifdef CONFIG_HAVE_EXIT_THREAD | ||
| 2772 | extern void exit_thread(void); | 2774 | extern void exit_thread(void); |
| 2775 | #else | ||
| 2776 | static inline void exit_thread(void) | ||
| 2777 | { | ||
| 2778 | } | ||
| 2779 | #endif | ||
| 2773 | 2780 | ||
| 2774 | extern void exit_files(struct task_struct *); | 2781 | extern void exit_files(struct task_struct *); |
| 2775 | extern void __cleanup_sighand(struct sighand_struct *); | 2782 | extern void __cleanup_sighand(struct sighand_struct *); |