aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2014-09-09 17:50:11 -0400
committerRichard Weinberger <richard@nod.at>2015-04-12 14:58:25 -0400
commit6a32591a4a38948d785a3bb0dac32d5be1f76354 (patch)
tree8b468beffd6b32f481e4adf28b5affe3a69784c1 /arch/s390
parent78d156b8d8e5884cb5af07f9e57a45a1ae5d59cf (diff)
s390: 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/s390')
-rw-r--r--arch/s390/include/asm/thread_info.h2
-rw-r--r--arch/s390/kernel/asm-offsets.c1
-rw-r--r--arch/s390/kernel/compat_signal.c14
-rw-r--r--arch/s390/kernel/signal.c14
4 files changed, 4 insertions, 27 deletions
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h
index ef1df718642d..0a6dcff94cde 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -34,7 +34,6 @@
34 */ 34 */
35struct thread_info { 35struct thread_info {
36 struct task_struct *task; /* main task structure */ 36 struct task_struct *task; /* main task structure */
37 struct exec_domain *exec_domain; /* execution domain */
38 unsigned long flags; /* low level flags */ 37 unsigned long flags; /* low level flags */
39 unsigned long sys_call_table; /* System call table address */ 38 unsigned long sys_call_table; /* System call table address */
40 unsigned int cpu; /* current CPU */ 39 unsigned int cpu; /* current CPU */
@@ -51,7 +50,6 @@ struct thread_info {
51#define INIT_THREAD_INFO(tsk) \ 50#define INIT_THREAD_INFO(tsk) \
52{ \ 51{ \
53 .task = &tsk, \ 52 .task = &tsk, \
54 .exec_domain = &default_exec_domain, \
55 .flags = 0, \ 53 .flags = 0, \
56 .cpu = 0, \ 54 .cpu = 0, \
57 .preempt_count = INIT_PREEMPT_COUNT, \ 55 .preempt_count = INIT_PREEMPT_COUNT, \
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index e07e91605353..e52a202b13b5 100644
--- a/arch/s390/kernel/asm-offsets.c
+++ b/arch/s390/kernel/asm-offsets.c
@@ -34,7 +34,6 @@ int main(void)
34 DEFINE(__THREAD_per_paid, offsetof(struct task_struct, thread.per_event.paid)); 34 DEFINE(__THREAD_per_paid, offsetof(struct task_struct, thread.per_event.paid));
35 BLANK(); 35 BLANK();
36 DEFINE(__TI_task, offsetof(struct thread_info, task)); 36 DEFINE(__TI_task, offsetof(struct thread_info, task));
37 DEFINE(__TI_domain, offsetof(struct thread_info, exec_domain));
38 DEFINE(__TI_flags, offsetof(struct thread_info, flags)); 37 DEFINE(__TI_flags, offsetof(struct thread_info, flags));
39 DEFINE(__TI_sysc_table, offsetof(struct thread_info, sys_call_table)); 38 DEFINE(__TI_sysc_table, offsetof(struct thread_info, sys_call_table));
40 DEFINE(__TI_cpu, offsetof(struct thread_info, cpu)); 39 DEFINE(__TI_cpu, offsetof(struct thread_info, cpu));
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index bc1df12dd4f8..fe8d6924efaa 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -370,16 +370,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
370 return (void __user *)((sp - frame_size) & -8ul); 370 return (void __user *)((sp - frame_size) & -8ul);
371} 371}
372 372
373static inline int map_signal(int sig)
374{
375 if (current_thread_info()->exec_domain
376 && current_thread_info()->exec_domain->signal_invmap
377 && sig < 32)
378 return current_thread_info()->exec_domain->signal_invmap[sig];
379 else
380 return sig;
381}
382
383static int setup_frame32(struct ksignal *ksig, sigset_t *set, 373static int setup_frame32(struct ksignal *ksig, sigset_t *set,
384 struct pt_regs *regs) 374 struct pt_regs *regs)
385{ 375{
@@ -449,7 +439,7 @@ static int setup_frame32(struct ksignal *ksig, sigset_t *set,
449 (regs->psw.mask & ~PSW_MASK_ASC); 439 (regs->psw.mask & ~PSW_MASK_ASC);
450 regs->psw.addr = (__force __u64) ksig->ka.sa.sa_handler; 440 regs->psw.addr = (__force __u64) ksig->ka.sa.sa_handler;
451 441
452 regs->gprs[2] = map_signal(sig); 442 regs->gprs[2] = sig;
453 regs->gprs[3] = (__force __u64) &frame->sc; 443 regs->gprs[3] = (__force __u64) &frame->sc;
454 444
455 /* We forgot to include these in the sigcontext. 445 /* We forgot to include these in the sigcontext.
@@ -532,7 +522,7 @@ static int setup_rt_frame32(struct ksignal *ksig, sigset_t *set,
532 (regs->psw.mask & ~PSW_MASK_ASC); 522 (regs->psw.mask & ~PSW_MASK_ASC);
533 regs->psw.addr = (__u64 __force) ksig->ka.sa.sa_handler; 523 regs->psw.addr = (__u64 __force) ksig->ka.sa.sa_handler;
534 524
535 regs->gprs[2] = map_signal(ksig->sig); 525 regs->gprs[2] = ksig->sig;
536 regs->gprs[3] = (__force __u64) &frame->info; 526 regs->gprs[3] = (__force __u64) &frame->info;
537 regs->gprs[4] = (__force __u64) &frame->uc; 527 regs->gprs[4] = (__force __u64) &frame->uc;
538 regs->gprs[5] = task_thread_info(current)->last_break; 528 regs->gprs[5] = task_thread_info(current)->last_break;
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index b3ae6f70c6d6..c3f71c4f7b71 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -309,16 +309,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
309 return (void __user *)((sp - frame_size) & -8ul); 309 return (void __user *)((sp - frame_size) & -8ul);
310} 310}
311 311
312static inline int map_signal(int sig)
313{
314 if (current_thread_info()->exec_domain
315 && current_thread_info()->exec_domain->signal_invmap
316 && sig < 32)
317 return current_thread_info()->exec_domain->signal_invmap[sig];
318 else
319 return sig;
320}
321
322static int setup_frame(int sig, struct k_sigaction *ka, 312static int setup_frame(int sig, struct k_sigaction *ka,
323 sigset_t *set, struct pt_regs * regs) 313 sigset_t *set, struct pt_regs * regs)
324{ 314{
@@ -386,7 +376,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
386 (regs->psw.mask & ~PSW_MASK_ASC); 376 (regs->psw.mask & ~PSW_MASK_ASC);
387 regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; 377 regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE;
388 378
389 regs->gprs[2] = map_signal(sig); 379 regs->gprs[2] = sig;
390 regs->gprs[3] = (unsigned long) &frame->sc; 380 regs->gprs[3] = (unsigned long) &frame->sc;
391 381
392 /* We forgot to include these in the sigcontext. 382 /* We forgot to include these in the sigcontext.
@@ -468,7 +458,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
468 (regs->psw.mask & ~PSW_MASK_ASC); 458 (regs->psw.mask & ~PSW_MASK_ASC);
469 regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler | PSW_ADDR_AMODE; 459 regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler | PSW_ADDR_AMODE;
470 460
471 regs->gprs[2] = map_signal(ksig->sig); 461 regs->gprs[2] = ksig->sig;
472 regs->gprs[3] = (unsigned long) &frame->info; 462 regs->gprs[3] = (unsigned long) &frame->info;
473 regs->gprs[4] = (unsigned long) &frame->uc; 463 regs->gprs[4] = (unsigned long) &frame->uc;
474 regs->gprs[5] = task_thread_info(current)->last_break; 464 regs->gprs[5] = task_thread_info(current)->last_break;