aboutsummaryrefslogtreecommitdiffstats
path: root/arch/xtensa/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-15 16:53:55 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-15 16:53:55 -0400
commitfa2e5c073a355465a2a8c9a2fbecf404f9857c3a (patch)
tree771be75e5436031ad53649634dffa67f6667b083 /arch/xtensa/kernel
parente44740c1a94b5d39b093045920f543a7bc135584 (diff)
parent97b2f0dc331474fb80ba4f4e4aee1d8e9ffbf7ce (diff)
Merge branch 'exec_domain_rip_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc
Pull exec domain removal from Richard Weinberger: "This series removes execution domain support from Linux. The idea behind exec domains was to support different ABIs. The feature was never complete nor stable. Let's rip it out and make the kernel signal handling code less complicated" * 'exec_domain_rip_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc: (27 commits) arm64: Removed unused variable sparc: Fix execution domain removal Remove rest of exec domains. arch: Remove exec_domain from remaining archs arc: Remove signal translation and exec_domain xtensa: Remove signal translation and exec_domain xtensa: Autogenerate offsets in struct thread_info x86: Remove signal translation and exec_domain unicore32: Remove signal translation and exec_domain um: Remove signal translation and exec_domain tile: Remove signal translation and exec_domain sparc: Remove signal translation and exec_domain sh: Remove signal translation and exec_domain s390: Remove signal translation and exec_domain mn10300: Remove signal translation and exec_domain microblaze: Remove signal translation and exec_domain m68k: Remove signal translation and exec_domain m32r: Remove signal translation and exec_domain m32r: Autogenerate offsets in struct thread_info frv: Remove signal translation and exec_domain ...
Diffstat (limited to 'arch/xtensa/kernel')
-rw-r--r--arch/xtensa/kernel/asm-offsets.c8
-rw-r--r--arch/xtensa/kernel/signal.c11
2 files changed, 10 insertions, 9 deletions
diff --git a/arch/xtensa/kernel/asm-offsets.c b/arch/xtensa/kernel/asm-offsets.c
index 1915c7c889ba..b123ace3b67c 100644
--- a/arch/xtensa/kernel/asm-offsets.c
+++ b/arch/xtensa/kernel/asm-offsets.c
@@ -77,6 +77,14 @@ int main(void)
77 DEFINE(TASK_THREAD_INFO, offsetof (struct task_struct, stack)); 77 DEFINE(TASK_THREAD_INFO, offsetof (struct task_struct, stack));
78 DEFINE(TASK_STRUCT_SIZE, sizeof (struct task_struct)); 78 DEFINE(TASK_STRUCT_SIZE, sizeof (struct task_struct));
79 79
80 /* offsets in thread_info struct */
81 OFFSET(TI_TASK, thread_info, task);
82 OFFSET(TI_FLAGS, thread_info, flags);
83 OFFSET(TI_STSTUS, thread_info, status);
84 OFFSET(TI_CPU, thread_info, cpu);
85 OFFSET(TI_PRE_COUNT, thread_info, preempt_count);
86 OFFSET(TI_ADDR_LIMIT, thread_info, addr_limit);
87
80 /* struct thread_info (offset from start_struct) */ 88 /* struct thread_info (offset from start_struct) */
81 DEFINE(THREAD_RA, offsetof (struct task_struct, thread.ra)); 89 DEFINE(THREAD_RA, offsetof (struct task_struct, thread.ra));
82 DEFINE(THREAD_SP, offsetof (struct task_struct, thread.sp)); 90 DEFINE(THREAD_SP, offsetof (struct task_struct, thread.sp));
diff --git a/arch/xtensa/kernel/signal.c b/arch/xtensa/kernel/signal.c
index 6b3790445cbe..e87adaa07ff3 100644
--- a/arch/xtensa/kernel/signal.c
+++ b/arch/xtensa/kernel/signal.c
@@ -336,7 +336,6 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
336{ 336{
337 struct rt_sigframe *frame; 337 struct rt_sigframe *frame;
338 int err = 0, sig = ksig->sig; 338 int err = 0, sig = ksig->sig;
339 int signal;
340 unsigned long sp, ra, tp; 339 unsigned long sp, ra, tp;
341 340
342 sp = regs->areg[1]; 341 sp = regs->areg[1];
@@ -354,12 +353,6 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
354 return -EFAULT; 353 return -EFAULT;
355 } 354 }
356 355
357 signal = current_thread_info()->exec_domain
358 && current_thread_info()->exec_domain->signal_invmap
359 && sig < 32
360 ? current_thread_info()->exec_domain->signal_invmap[sig]
361 : sig;
362
363 if (ksig->ka.sa.sa_flags & SA_SIGINFO) { 356 if (ksig->ka.sa.sa_flags & SA_SIGINFO) {
364 err |= copy_siginfo_to_user(&frame->info, &ksig->info); 357 err |= copy_siginfo_to_user(&frame->info, &ksig->info);
365 } 358 }
@@ -400,14 +393,14 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
400 * Note: PS.CALLINC is set to one by start_thread 393 * Note: PS.CALLINC is set to one by start_thread
401 */ 394 */
402 regs->areg[4] = (((unsigned long) ra) & 0x3fffffff) | 0x40000000; 395 regs->areg[4] = (((unsigned long) ra) & 0x3fffffff) | 0x40000000;
403 regs->areg[6] = (unsigned long) signal; 396 regs->areg[6] = (unsigned long) sig;
404 regs->areg[7] = (unsigned long) &frame->info; 397 regs->areg[7] = (unsigned long) &frame->info;
405 regs->areg[8] = (unsigned long) &frame->uc; 398 regs->areg[8] = (unsigned long) &frame->uc;
406 regs->threadptr = tp; 399 regs->threadptr = tp;
407 400
408#if DEBUG_SIG 401#if DEBUG_SIG
409 printk("SIG rt deliver (%s:%d): signal=%d sp=%p pc=%08x\n", 402 printk("SIG rt deliver (%s:%d): signal=%d sp=%p pc=%08x\n",
410 current->comm, current->pid, signal, frame, regs->pc); 403 current->comm, current->pid, sig, frame, regs->pc);
411#endif 404#endif
412 405
413 return 0; 406 return 0;