aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2014-07-13 09:24:03 -0400
committerRichard Weinberger <richard@nod.at>2015-04-12 14:58:24 -0400
commita4980448ed658db313da3195bcca634c7a5adafa (patch)
treef3871d68c77b5a823f866f272e61957f38091d9d /arch/arm
parent973f911f55a0e510dd6db8bbb29cd82ff138d3c0 (diff)
arm: Remove signal translation and exec_domain
As execution domain support is gone we can remove signal translation from the signal code and remove exec_domain from thread_info. Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/include/asm/thread_info.h3
-rw-r--r--arch/arm/kernel/asm-offsets.c1
-rw-r--r--arch/arm/kernel/signal.c13
-rw-r--r--arch/arm/kernel/traps.c6
4 files changed, 3 insertions, 20 deletions
diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h
index 72812a1f3d1c..bd32eded3e50 100644
--- a/arch/arm/include/asm/thread_info.h
+++ b/arch/arm/include/asm/thread_info.h
@@ -23,7 +23,6 @@
23#ifndef __ASSEMBLY__ 23#ifndef __ASSEMBLY__
24 24
25struct task_struct; 25struct task_struct;
26struct exec_domain;
27 26
28#include <asm/types.h> 27#include <asm/types.h>
29#include <asm/domain.h> 28#include <asm/domain.h>
@@ -53,7 +52,6 @@ struct thread_info {
53 int preempt_count; /* 0 => preemptable, <0 => bug */ 52 int preempt_count; /* 0 => preemptable, <0 => bug */
54 mm_segment_t addr_limit; /* address limit */ 53 mm_segment_t addr_limit; /* address limit */
55 struct task_struct *task; /* main task structure */ 54 struct task_struct *task; /* main task structure */
56 struct exec_domain *exec_domain; /* execution domain */
57 __u32 cpu; /* cpu */ 55 __u32 cpu; /* cpu */
58 __u32 cpu_domain; /* cpu domain */ 56 __u32 cpu_domain; /* cpu domain */
59 struct cpu_context_save cpu_context; /* cpu context */ 57 struct cpu_context_save cpu_context; /* cpu context */
@@ -73,7 +71,6 @@ struct thread_info {
73#define INIT_THREAD_INFO(tsk) \ 71#define INIT_THREAD_INFO(tsk) \
74{ \ 72{ \
75 .task = &tsk, \ 73 .task = &tsk, \
76 .exec_domain = &default_exec_domain, \
77 .flags = 0, \ 74 .flags = 0, \
78 .preempt_count = INIT_PREEMPT_COUNT, \ 75 .preempt_count = INIT_PREEMPT_COUNT, \
79 .addr_limit = KERNEL_DS, \ 76 .addr_limit = KERNEL_DS, \
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c
index 2d2d6087b9b1..70d277ce235f 100644
--- a/arch/arm/kernel/asm-offsets.c
+++ b/arch/arm/kernel/asm-offsets.c
@@ -66,7 +66,6 @@ int main(void)
66 DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count)); 66 DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count));
67 DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit)); 67 DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit));
68 DEFINE(TI_TASK, offsetof(struct thread_info, task)); 68 DEFINE(TI_TASK, offsetof(struct thread_info, task));
69 DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain));
70 DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); 69 DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
71 DEFINE(TI_CPU_DOMAIN, offsetof(struct thread_info, cpu_domain)); 70 DEFINE(TI_CPU_DOMAIN, offsetof(struct thread_info, cpu_domain));
72 DEFINE(TI_CPU_SAVE, offsetof(struct thread_info, cpu_context)); 71 DEFINE(TI_CPU_SAVE, offsetof(struct thread_info, cpu_context));
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 023ac905e4c3..423663e23791 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -318,17 +318,6 @@ get_sigframe(struct ksignal *ksig, struct pt_regs *regs, int framesize)
318 return frame; 318 return frame;
319} 319}
320 320
321/*
322 * translate the signal
323 */
324static inline int map_sig(int sig)
325{
326 struct thread_info *thread = current_thread_info();
327 if (sig < 32 && thread->exec_domain && thread->exec_domain->signal_invmap)
328 sig = thread->exec_domain->signal_invmap[sig];
329 return sig;
330}
331
332static int 321static int
333setup_return(struct pt_regs *regs, struct ksignal *ksig, 322setup_return(struct pt_regs *regs, struct ksignal *ksig,
334 unsigned long __user *rc, void __user *frame) 323 unsigned long __user *rc, void __user *frame)
@@ -412,7 +401,7 @@ setup_return(struct pt_regs *regs, struct ksignal *ksig,
412 } 401 }
413 } 402 }
414 403
415 regs->ARM_r0 = map_sig(ksig->sig); 404 regs->ARM_r0 = ksig->sig;
416 regs->ARM_sp = (unsigned long)frame; 405 regs->ARM_sp = (unsigned long)frame;
417 regs->ARM_lr = retcode; 406 regs->ARM_lr = retcode;
418 regs->ARM_pc = handler; 407 regs->ARM_pc = handler;
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index 788e23fe64d8..3dce1a342030 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -505,12 +505,10 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason)
505 505
506static int bad_syscall(int n, struct pt_regs *regs) 506static int bad_syscall(int n, struct pt_regs *regs)
507{ 507{
508 struct thread_info *thread = current_thread_info();
509 siginfo_t info; 508 siginfo_t info;
510 509
511 if ((current->personality & PER_MASK) != PER_LINUX && 510 if ((current->personality & PER_MASK) != PER_LINUX) {
512 thread->exec_domain->handler) { 511 send_sig(SIGSEGV, current, 1);
513 thread->exec_domain->handler(n, regs);
514 return regs->ARM_r0; 512 return regs->ARM_r0;
515 } 513 }
516 514