diff options
Diffstat (limited to 'arch/m32r/kernel')
| -rw-r--r-- | arch/m32r/kernel/Makefile | 2 | ||||
| -rw-r--r-- | arch/m32r/kernel/init_task.c | 34 | ||||
| -rw-r--r-- | arch/m32r/kernel/signal.c | 44 | ||||
| -rw-r--r-- | arch/m32r/kernel/smpboot.c | 6 | 
4 files changed, 10 insertions, 76 deletions
| diff --git a/arch/m32r/kernel/Makefile b/arch/m32r/kernel/Makefile index b1a4b603659..0c09dad8b1f 100644 --- a/arch/m32r/kernel/Makefile +++ b/arch/m32r/kernel/Makefile @@ -2,7 +2,7 @@  # Makefile for the Linux/M32R kernel.  # -extra-y	:= head.o init_task.o vmlinux.lds +extra-y	:= head.o vmlinux.lds  obj-y	:= process.o entry.o traps.o align.o irq.o setup.o time.o \  	m32r_ksyms.o sys_m32r.o signal.o ptrace.o diff --git a/arch/m32r/kernel/init_task.c b/arch/m32r/kernel/init_task.c deleted file mode 100644 index 6c42d5f8df5..00000000000 --- a/arch/m32r/kernel/init_task.c +++ /dev/null @@ -1,34 +0,0 @@ -/* orig : i386 init_task.c */ - -#include <linux/mm.h> -#include <linux/module.h> -#include <linux/sched.h> -#include <linux/init.h> -#include <linux/init_task.h> -#include <linux/fs.h> -#include <linux/mqueue.h> - -#include <asm/uaccess.h> -#include <asm/pgtable.h> - -static struct signal_struct init_signals = INIT_SIGNALS(init_signals); -static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); -/* - * Initial thread structure. - * - * We need to make sure that this is 8192-byte aligned due to the - * way process stacks are handled. This is done by having a special - * "init_task" linker map entry.. - */ -union thread_union init_thread_union __init_task_data = -	{ INIT_THREAD_INFO(init_task) }; - -/* - * Initial task structure. - * - * All other task structs will be allocated on slabs in fork.c - */ -struct task_struct init_task = INIT_TASK(init_task); - -EXPORT_SYMBOL(init_task); - diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index a08697f0886..f3fb2c029cf 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c @@ -28,8 +28,6 @@  #define DEBUG_SIG 0 -#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) -  asmlinkage int  sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,  		unsigned long r2, unsigned long r3, unsigned long r4, @@ -111,11 +109,7 @@ sys_rt_sigreturn(unsigned long r0, unsigned long r1,  	if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))  		goto badframe; -	sigdelsetmask(&set, ~_BLOCKABLE); -	spin_lock_irq(¤t->sighand->siglock); -	current->blocked = set; -	recalc_sigpending(); -	spin_unlock_irq(¤t->sighand->siglock); +	set_current_blocked(&set);  	if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &result))  		goto badframe; @@ -270,9 +264,9 @@ static int prev_insn(struct pt_regs *regs)   * OK, we're invoking a handler   */ -static int +static void  handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, -	      sigset_t *oldset, struct pt_regs *regs) +	      struct pt_regs *regs)  {  	/* Are we from a system call? */  	if (regs->syscall_nr >= 0) { @@ -297,16 +291,10 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,  	}  	/* Set up the stack frame */ -	if (setup_rt_frame(sig, ka, info, oldset, regs)) -		return -EFAULT; +	if (setup_rt_frame(sig, ka, info, sigmask_to_save(), regs)) +		return; -	spin_lock_irq(¤t->sighand->siglock); -	sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); -	if (!(ka->sa.sa_flags & SA_NODEFER)) -		sigaddset(¤t->blocked,sig); -	recalc_sigpending(); -	spin_unlock_irq(¤t->sighand->siglock); -	return 0; +	signal_delivered(sig, info, ka, regs, 0);  }  /* @@ -319,7 +307,6 @@ static void do_signal(struct pt_regs *regs)  	siginfo_t info;  	int signr;  	struct k_sigaction ka; -	sigset_t *oldset;  	/*  	 * We want the common case to go fast, which @@ -330,14 +317,6 @@ static void do_signal(struct pt_regs *regs)  	if (!user_mode(regs))  		return; -	if (try_to_freeze())  -		goto no_signal; - -	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) {  		/* Re-enable any watchpoints before delivering the @@ -347,13 +326,11 @@ static void do_signal(struct pt_regs *regs)  		 */  		/* Whee!  Actually deliver the signal.  */ -		if (handle_signal(signr, &ka, &info, oldset, regs) == 0) -			clear_thread_flag(TIF_RESTORE_SIGMASK); +		handle_signal(signr, &ka, &info, regs);  		return;  	} - no_signal:  	/* Did we come from a system call? */  	if (regs->syscall_nr >= 0) {  		/* Restart the system call - no handlers present */ @@ -368,10 +345,7 @@ static void do_signal(struct pt_regs *regs)  			prev_insn(regs);  		}  	} -	if (test_thread_flag(TIF_RESTORE_SIGMASK)) { -		clear_thread_flag(TIF_RESTORE_SIGMASK); -		sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); -	} +	restore_saved_sigmask();  }  /* @@ -391,8 +365,6 @@ void do_notify_resume(struct pt_regs *regs, __u32 thread_info_flags)  	if (thread_info_flags & _TIF_NOTIFY_RESUME) {  		clear_thread_flag(TIF_NOTIFY_RESUME);  		tracehook_notify_resume(regs); -		if (current->replacement_session_keyring) -			key_replace_session_keyring();  	}  	clear_thread_flag(TIF_IRET); diff --git a/arch/m32r/kernel/smpboot.c b/arch/m32r/kernel/smpboot.c index cfdbe5d1500..a2cfc0abb05 100644 --- a/arch/m32r/kernel/smpboot.c +++ b/arch/m32r/kernel/smpboot.c @@ -109,12 +109,8 @@ static unsigned int calibration_result;  /* Function Prototypes                                                       */  /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ -void smp_prepare_boot_cpu(void); -void smp_prepare_cpus(unsigned int);  static void init_ipi_lock(void);  static void do_boot_cpu(int); -int __cpu_up(unsigned int); -void smp_cpus_done(unsigned int);  int start_secondary(void *);  static void smp_callin(void); @@ -347,7 +343,7 @@ static void __init do_boot_cpu(int phys_id)  	}  } -int __cpuinit __cpu_up(unsigned int cpu_id) +int __cpuinit __cpu_up(unsigned int cpu_id, struct task_struct *tidle)  {  	int timeout; | 
