diff options
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/include/asm/thread_info.h | 11 | ||||
-rw-r--r-- | arch/blackfin/kernel/asm-offsets.c | 6 | ||||
-rw-r--r-- | arch/blackfin/kernel/signal.c | 6 | ||||
-rw-r--r-- | arch/blackfin/kernel/traps.c | 1 | ||||
-rw-r--r-- | arch/blackfin/mach-bf561/smp.c | 2 | ||||
-rw-r--r-- | arch/blackfin/mach-common/smp.c | 6 |
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 | ||
38 | struct thread_info { | 38 | struct 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 | ||
416 | static DECLARE_COMPLETION(cpu_killed); | ||
417 | |||
418 | int __cpu_die(unsigned int cpu) | 416 | int __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 | ||
423 | void cpu_die(void) | 421 | void 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); |