patch-2.4.19 linux-2.4.19/arch/mips64/kernel/signal32.c
Next file: linux-2.4.19/arch/mips64/kernel/smp.c
Previous file: linux-2.4.19/arch/mips64/kernel/signal.c
Back to the patch index
Back to the overall index
- Lines: 263
- Date:
Fri Aug 2 17:39:43 2002
- Orig file:
linux-2.4.18/arch/mips64/kernel/signal32.c
- Orig date:
Sun Sep 9 10:43:01 2001
diff -urN linux-2.4.18/arch/mips64/kernel/signal32.c linux-2.4.19/arch/mips64/kernel/signal32.c
@@ -69,11 +69,12 @@
unsigned int fcr0;
int err = 0;
- err |= __copy_to_user(&sc->sc_fpregs[0],
- ¤t->thread.fpu.hard.fp_regs[0], NUM_FPU_REGS *
- sizeof(unsigned long));
- err |= __copy_to_user(&sc->sc_fpc_csr, ¤t->thread.fpu.hard.control,
- sizeof(unsigned int));
+ err |= __copy_to_user(&sc->sc_fpregs[0],
+ ¤t->thread.fpu.hard.fp_regs[0],
+ NUM_FPU_REGS * sizeof(unsigned long));
+ err |= __copy_to_user(&sc->sc_fpc_csr,
+ ¤t->thread.fpu.hard.control,
+ sizeof(unsigned int));
__asm__ __volatile__("cfc1 %0, $0\n\t" : "=r" (fcr0));
err |= __copy_to_user(&sc->sc_fpc_eir, &fcr0, sizeof(unsigned int));
@@ -86,18 +87,18 @@
if (verify_area(VERIFY_READ, sc, sizeof(*sc)))
return -EFAULT;
- err |= __copy_from_user(¤t->thread.fpu.hard.fp_regs[0],
- &sc->sc_fpregs[0], NUM_FPU_REGS * sizeof(unsigned long));
- err |= __copy_from_user(¤t->thread.fpu.hard.control, &sc->sc_fpc_csr,
- sizeof(unsigned int));
+ err |= __copy_from_user(¤t->thread.fpu.hard.fp_regs[0],
+ &sc->sc_fpregs[0],
+ NUM_FPU_REGS * sizeof(unsigned long));
+ err |= __copy_from_user(¤t->thread.fpu.hard.control,
+ &sc->sc_fpc_csr, sizeof(unsigned int));
return err;
}
extern void __put_sigset_unknown_nsig(void);
extern void __get_sigset_unknown_nsig(void);
-static inline int
-put_sigset(const sigset_t *kbuf, sigset32_t *ubuf)
+static inline int put_sigset(const sigset_t *kbuf, sigset32_t *ubuf)
{
int err = 0;
@@ -118,8 +119,7 @@
return err;
}
-static inline int
-get_sigset(sigset_t *kbuf, const sigset32_t *ubuf)
+static inline int get_sigset(sigset_t *kbuf, const sigset32_t *ubuf)
{
int err = 0;
unsigned long sig[4];
@@ -146,8 +146,7 @@
/*
* Atomically swap in the new signal mask, and wait for a signal.
*/
-asmlinkage inline int
-sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs)
+asmlinkage inline int sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs)
{
sigset32_t *uset;
sigset_t newset, saveset;
@@ -174,8 +173,7 @@
}
}
-asmlinkage int
-sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
+asmlinkage int sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
{
sigset32_t *uset;
sigset_t newset, saveset;
@@ -253,8 +251,7 @@
return ret;
}
-asmlinkage int
-sys32_sigaltstack(abi64_no_regargs, struct pt_regs regs)
+asmlinkage int sys32_sigaltstack(abi64_no_regargs, struct pt_regs regs)
{
const stack32_t *uss = (const stack32_t *) regs.regs[4];
stack32_t *uoss = (stack32_t *) regs.regs[5];
@@ -292,8 +289,8 @@
return ret;
}
-static asmlinkage int
-restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
+static asmlinkage int restore_sigcontext(struct pt_regs *regs,
+ struct sigcontext *sc)
{
int owned_fp;
int err = 0;
@@ -345,8 +342,7 @@
struct ucontext rs_uc;
};
-asmlinkage void
-sys32_sigreturn(abi64_no_regargs, struct pt_regs regs)
+asmlinkage void sys32_sigreturn(abi64_no_regargs, struct pt_regs regs)
{
struct sigframe *frame;
sigset_t blocked;
@@ -373,7 +369,7 @@
syscall_trace();
__asm__ __volatile__(
"move\t$29, %0\n\t"
- "j\tret_from_sys_call"
+ "j\to32_ret_from_sys_call"
:/* no outputs */
:"r" (®s));
/* Unreached */
@@ -382,8 +378,7 @@
force_sig(SIGSEGV, current);
}
-asmlinkage void
-sys32_rt_sigreturn(abi64_no_regargs, struct pt_regs regs)
+asmlinkage void sys32_rt_sigreturn(abi64_no_regargs, struct pt_regs regs)
{
struct rt_sigframe *frame;
sigset_t set;
@@ -415,7 +410,7 @@
*/
__asm__ __volatile__(
"move\t$29, %0\n\t"
- "j\tret_from_sys_call"
+ "j\to32_ret_from_sys_call"
:/* no outputs */
:"r" (®s));
/* Unreached */
@@ -424,8 +419,8 @@
force_sig(SIGSEGV, current);
}
-static int inline
-setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
+static int inline setup_sigcontext(struct pt_regs *regs,
+ struct sigcontext *sc)
{
int err = 0;
@@ -470,8 +465,8 @@
/*
* Determine which stack to use..
*/
-static inline void *
-get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size)
+static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
+ size_t frame_size)
{
unsigned long sp;
@@ -485,9 +480,8 @@
return (void *)((sp - frame_size) & ALMASK);
}
-static void inline
-setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
- int signr, sigset_t *set)
+static void inline setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
+ int signr, sigset_t *set)
{
struct sigframe *frame;
int err = 0;
@@ -537,8 +531,9 @@
regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
#if DEBUG_SIG
- printk("SIG deliver (%s:%d): sp=0x%p pc=0x%p ra=0x%p\n",
- current->comm, current->pid, frame, regs->cp0_epc, frame->code);
+ printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n",
+ current->comm, current->pid,
+ frame, regs->cp0_epc, frame->sf_code);
#endif
return;
@@ -548,9 +543,9 @@
force_sig(SIGSEGV, current);
}
-static void inline
-setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
- int signr, sigset_t *set, siginfo_t *info)
+static void inline setup_rt_frame(struct k_sigaction * ka,
+ struct pt_regs *regs, int signr,
+ sigset_t *set, siginfo_t *info)
{
struct rt_sigframe *frame;
int err = 0;
@@ -613,8 +608,9 @@
regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
#if DEBUG_SIG
- printk("SIG deliver (%s:%d): sp=0x%p pc=0x%p ra=0x%p\n",
- current->comm, current->pid, frame, regs->cp0_epc, frame->code);
+ printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n",
+ current->comm, current->pid,
+ frame, regs->cp0_epc, frame->rs_code);
#endif
return;
@@ -624,9 +620,9 @@
force_sig(SIGSEGV, current);
}
-static inline void
-handle_signal(unsigned long sig, struct k_sigaction *ka,
- siginfo_t *info, sigset_t *oldset, struct pt_regs * regs)
+static inline void handle_signal(unsigned long sig, struct k_sigaction *ka,
+ siginfo_t *info, sigset_t *oldset,
+ struct pt_regs * regs)
{
if (ka->sa.sa_flags & SA_SIGINFO)
setup_rt_frame(ka, regs, sig, oldset, info);
@@ -644,8 +640,8 @@
}
}
-static inline void
-syscall_restart(struct pt_regs *regs, struct k_sigaction *ka)
+static inline void syscall_restart(struct pt_regs *regs,
+ struct k_sigaction *ka)
{
switch(regs->regs[0]) {
case ERESTARTNOHAND:
@@ -733,7 +729,7 @@
continue;
switch (signr) {
- case SIGCONT: case SIGCHLD: case SIGWINCH:
+ case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGURG:
continue;
case SIGTSTP: case SIGTTIN: case SIGTTOU:
@@ -757,10 +753,7 @@
/* FALLTHRU */
default:
- sigaddset(¤t->pending.signal, signr);
- recalc_sigpending(current);
- current->flags |= PF_SIGNALED;
- do_exit(exit_code);
+ sig_exit(signr, exit_code, &info);
/* NOTREACHED */
}
}
@@ -915,5 +908,12 @@
return ret;
}
-asmlinkage void sys32_rt_sigtimedwait(void) { panic(__FUNCTION__ " called."); }
-asmlinkage void sys32_rt_sigqueueinfo(void) { panic(__FUNCTION__ " called."); }
+asmlinkage void sys32_rt_sigtimedwait(void)
+{
+ panic("%s called.", __FUNCTION__);
+}
+
+asmlinkage void sys32_rt_sigqueueinfo(void)
+{
+ panic("%s called.", __FUNCTION__);
+}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)