diff options
Diffstat (limited to 'arch/m68k/kernel')
| -rw-r--r-- | arch/m68k/kernel/ptrace.c | 2 | ||||
| -rw-r--r-- | arch/m68k/kernel/signal.c | 29 | ||||
| -rw-r--r-- | arch/m68k/kernel/time.c | 4 | 
3 files changed, 9 insertions, 26 deletions
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c index 8b4a2222e65..1bc10e62b9a 100644 --- a/arch/m68k/kernel/ptrace.c +++ b/arch/m68k/kernel/ptrace.c @@ -286,7 +286,7 @@ asmlinkage void syscall_trace(void)  	}  } -#ifdef CONFIG_COLDFIRE +#if defined(CONFIG_COLDFIRE) || !defined(CONFIG_MMU)  asmlinkage int syscall_trace_enter(void)  {  	int ret = 0; diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c index d9f3d1900ee..710a528b928 100644 --- a/arch/m68k/kernel/signal.c +++ b/arch/m68k/kernel/signal.c @@ -51,8 +51,6 @@  #include <asm/traps.h>  #include <asm/ucontext.h> -#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) -  #ifdef CONFIG_MMU  /* @@ -795,7 +793,6 @@ asmlinkage int do_sigreturn(unsigned long __unused)  			      sizeof(frame->extramask))))  		goto badframe; -	sigdelsetmask(&set, ~_BLOCKABLE);  	set_current_blocked(&set);  	if (restore_sigcontext(regs, &frame->sc, frame + 1)) @@ -820,7 +817,6 @@ asmlinkage int do_rt_sigreturn(unsigned long __unused)  	if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))  		goto badframe; -	sigdelsetmask(&set, ~_BLOCKABLE);  	set_current_blocked(&set);  	if (rt_restore_ucontext(regs, sw, &frame->uc)) @@ -1123,8 +1119,9 @@ handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler)   */  static void  handle_signal(int sig, struct k_sigaction *ka, siginfo_t *info, -	      sigset_t *oldset, struct pt_regs *regs) +	      struct pt_regs *regs)  { +	sigset_t *oldset = sigmask_to_save();  	int err;  	/* are we from a system call? */  	if (regs->orig_d0 >= 0) @@ -1140,14 +1137,12 @@ handle_signal(int sig, struct k_sigaction *ka, siginfo_t *info,  	if (err)  		return; -	block_sigmask(ka, sig); +	signal_delivered(sig, info, ka, regs, 0);  	if (test_thread_flag(TIF_DELAYED_TRACE)) {  		regs->sr &= ~0x8000;  		send_sig(SIGTRAP, current, 1);  	} - -	clear_thread_flag(TIF_RESTORE_SIGMASK);  }  /* @@ -1160,19 +1155,13 @@ static void do_signal(struct pt_regs *regs)  	siginfo_t info;  	struct k_sigaction ka;  	int signr; -	sigset_t *oldset;  	current->thread.esp0 = (unsigned long) regs; -	if (test_thread_flag(TIF_RESTORE_SIGMASK)) -		oldset = ¤t->saved_sigmask; -	else -		oldset = ¤t->blocked; -  	signr = get_signal_to_deliver(&info, &ka, regs, NULL);  	if (signr > 0) {  		/* Whee!  Actually deliver the signal.  */ -		handle_signal(signr, &ka, &info, oldset, regs); +		handle_signal(signr, &ka, &info, regs);  		return;  	} @@ -1182,10 +1171,7 @@ static void do_signal(struct pt_regs *regs)  		handle_restart(regs, NULL, 0);  	/* If there's no signal to deliver, we just restore the saved mask.  */ -	if (test_thread_flag(TIF_RESTORE_SIGMASK)) { -		clear_thread_flag(TIF_RESTORE_SIGMASK); -		sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); -	} +	restore_saved_sigmask();  }  void do_notify_resume(struct pt_regs *regs) @@ -1193,9 +1179,6 @@ void do_notify_resume(struct pt_regs *regs)  	if (test_thread_flag(TIF_SIGPENDING))  		do_signal(regs); -	if (test_and_clear_thread_flag(TIF_NOTIFY_RESUME)) { +	if (test_and_clear_thread_flag(TIF_NOTIFY_RESUME))  		tracehook_notify_resume(regs); -		if (current->replacement_session_keyring) -			key_replace_session_keyring(); -	}  } diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index d7deb7fc7eb..707f0573ec6 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c @@ -85,7 +85,7 @@ void __init time_init(void)  	mach_sched_init(timer_interrupt);  } -#ifdef CONFIG_M68KCLASSIC +#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET  u32 arch_gettimeoffset(void)  { @@ -108,4 +108,4 @@ static int __init rtc_init(void)  module_init(rtc_init); -#endif /* CONFIG_M68KCLASSIC */ +#endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */  |