aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin')
-rw-r--r--arch/blackfin/include/asm/thread_info.h11
-rw-r--r--arch/blackfin/kernel/asm-offsets.c6
-rw-r--r--arch/blackfin/kernel/signal.c6
-rw-r--r--arch/blackfin/kernel/traps.c1
-rw-r--r--arch/blackfin/mach-bf561/smp.c2
-rw-r--r--arch/blackfin/mach-common/smp.c6
6 files changed, 11 insertions, 21 deletions
diff --git a/arch/blackfin/include/asm/thread_info.h b/arch/blackfin/include/asm/thread_info.h
index 57c3a8bd583d..2966b93850a1 100644
--- a/arch/blackfin/include/asm/thread_info.h
+++ b/arch/blackfin/include/asm/thread_info.h
@@ -37,7 +37,6 @@ typedef unsigned long mm_segment_t;
37 37
38struct thread_info { 38struct thread_info {
39 struct task_struct *task; /* main task structure */ 39 struct task_struct *task; /* main task structure */
40 struct exec_domain *exec_domain; /* execution domain */
41 unsigned long flags; /* low level flags */ 40 unsigned long flags; /* low level flags */
42 int cpu; /* cpu we're on */ 41 int cpu; /* cpu we're on */
43 int preempt_count; /* 0 => preemptable, <0 => BUG */ 42 int preempt_count; /* 0 => preemptable, <0 => BUG */
@@ -53,7 +52,6 @@ struct thread_info {
53#define INIT_THREAD_INFO(tsk) \ 52#define INIT_THREAD_INFO(tsk) \
54{ \ 53{ \
55 .task = &tsk, \ 54 .task = &tsk, \
56 .exec_domain = &default_exec_domain, \
57 .flags = 0, \ 55 .flags = 0, \
58 .cpu = 0, \ 56 .cpu = 0, \
59 .preempt_count = INIT_PREEMPT_COUNT, \ 57 .preempt_count = INIT_PREEMPT_COUNT, \
@@ -76,15 +74,6 @@ static inline struct thread_info *current_thread_info(void)
76#endif /* __ASSEMBLY__ */ 74#endif /* __ASSEMBLY__ */
77 75
78/* 76/*
79 * Offsets in thread_info structure, used in assembly code
80 */
81#define TI_TASK 0
82#define TI_EXECDOMAIN 4
83#define TI_FLAGS 8
84#define TI_CPU 12
85#define TI_PREEMPT 16
86
87/*
88 * thread information flag bit numbers 77 * thread information flag bit numbers
89 */ 78 */
90#define TIF_SYSCALL_TRACE 0 /* syscall trace active */ 79#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
diff --git a/arch/blackfin/kernel/asm-offsets.c b/arch/blackfin/kernel/asm-offsets.c
index 37fcae950216..486560aea050 100644
--- a/arch/blackfin/kernel/asm-offsets.c
+++ b/arch/blackfin/kernel/asm-offsets.c
@@ -42,6 +42,12 @@ int main(void)
42 DEFINE(THREAD_PC, offsetof(struct thread_struct, pc)); 42 DEFINE(THREAD_PC, offsetof(struct thread_struct, pc));
43 DEFINE(KERNEL_STACK_SIZE, THREAD_SIZE); 43 DEFINE(KERNEL_STACK_SIZE, THREAD_SIZE);
44 44
45 /* offsets in thread_info struct */
46 OFFSET(TI_TASK, thread_info, task);
47 OFFSET(TI_FLAGS, thread_info, flags);
48 OFFSET(TI_CPU, thread_info, cpu);
49 OFFSET(TI_PREEMPT, thread_info, preempt_count);
50
45 /* offsets into the pt_regs */ 51 /* offsets into the pt_regs */
46 DEFINE(PT_ORIG_R0, offsetof(struct pt_regs, orig_r0)); 52 DEFINE(PT_ORIG_R0, offsetof(struct pt_regs, orig_r0));
47 DEFINE(PT_ORIG_P0, offsetof(struct pt_regs, orig_p0)); 53 DEFINE(PT_ORIG_P0, offsetof(struct pt_regs, orig_p0));
diff --git a/arch/blackfin/kernel/signal.c b/arch/blackfin/kernel/signal.c
index f2a8b5493bd3..ea570db598e5 100644
--- a/arch/blackfin/kernel/signal.c
+++ b/arch/blackfin/kernel/signal.c
@@ -151,11 +151,7 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs)
151 151
152 frame = get_sigframe(ksig, sizeof(*frame)); 152 frame = get_sigframe(ksig, sizeof(*frame));
153 153
154 err |= __put_user((current_thread_info()->exec_domain 154 err |= __put_user(ksig->sig, &frame->sig);
155 && current_thread_info()->exec_domain->signal_invmap
156 && ksig->sig < 32
157 ? current_thread_info()->exec_domain->
158 signal_invmap[ksig->sig] : ksig->sig), &frame->sig);
159 155
160 err |= __put_user(&frame->info, &frame->pinfo); 156 err |= __put_user(&frame->info, &frame->pinfo);
161 err |= __put_user(&frame->uc, &frame->puc); 157 err |= __put_user(&frame->uc, &frame->puc);
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index de5c2c3ebd9b..1ed85ddadc0d 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -18,6 +18,7 @@
18#include <asm/fixed_code.h> 18#include <asm/fixed_code.h>
19#include <asm/pseudo_instructions.h> 19#include <asm/pseudo_instructions.h>
20#include <asm/pda.h> 20#include <asm/pda.h>
21#include <asm/asm-offsets.h>
21 22
22#ifdef CONFIG_KGDB 23#ifdef CONFIG_KGDB
23# include <linux/kgdb.h> 24# include <linux/kgdb.h>
diff --git a/arch/blackfin/mach-bf561/smp.c b/arch/blackfin/mach-bf561/smp.c
index 11789beca75a..8c0c80fd1a45 100644
--- a/arch/blackfin/mach-bf561/smp.c
+++ b/arch/blackfin/mach-bf561/smp.c
@@ -124,7 +124,7 @@ void platform_send_ipi(cpumask_t callmap, int irq)
124 unsigned int cpu; 124 unsigned int cpu;
125 int offset = (irq == IRQ_SUPPLE_0) ? 6 : 8; 125 int offset = (irq == IRQ_SUPPLE_0) ? 6 : 8;
126 126
127 for_each_cpu_mask(cpu, callmap) { 127 for_each_cpu(cpu, &callmap) {
128 BUG_ON(cpu >= 2); 128 BUG_ON(cpu >= 2);
129 SSYNC(); 129 SSYNC();
130 bfin_write_SICB_SYSCR(bfin_read_SICB_SYSCR() | (1 << (offset + cpu))); 130 bfin_write_SICB_SYSCR(bfin_read_SICB_SYSCR() | (1 << (offset + cpu)));
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c
index 8ad3e90cc8fc..1c7259597395 100644
--- a/arch/blackfin/mach-common/smp.c
+++ b/arch/blackfin/mach-common/smp.c
@@ -413,16 +413,14 @@ int __cpu_disable(void)
413 return 0; 413 return 0;
414} 414}
415 415
416static DECLARE_COMPLETION(cpu_killed);
417
418int __cpu_die(unsigned int cpu) 416int __cpu_die(unsigned int cpu)
419{ 417{
420 return wait_for_completion_timeout(&cpu_killed, 5000); 418 return cpu_wait_death(cpu, 5);
421} 419}
422 420
423void cpu_die(void) 421void cpu_die(void)
424{ 422{
425 complete(&cpu_killed); 423 (void)cpu_report_death();
426 424
427 atomic_dec(&init_mm.mm_users); 425 atomic_dec(&init_mm.mm_users);
428 atomic_dec(&init_mm.mm_count); 426 atomic_dec(&init_mm.mm_count);