diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 11:40:04 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 11:40:04 -0800 |
commit | 574009c1a895aeeb85eaab29c235d75852b09eb8 (patch) | |
tree | 350208723aea3fa62927e5fed6c07567cee9f930 /arch/mips/kernel/signal_n32.c | |
parent | a727fea99bf4b2addcd64c596735148117a7b37f (diff) | |
parent | e692eb30ffc2b99e62f766f9958f46dfdc1013cc (diff) | |
download | linux-rt-574009c1a895aeeb85eaab29c235d75852b09eb8.tar.gz |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
[MIPS] signal: do not inline handle_signal()
[MIPS] signal: do not use save_static_function() anymore
[MIPS] signal32: no need to save c0_status register in setup_sigcontext32()
[MIPS] signal32: reduce {setup,restore}_sigcontext32 sizes
[MIPS] signal: factorize debug code
[MIPS] signal: test return value of install_sigtramp()
[MIPS] signal32: remove duplicate code
[MIPS] signal: clean up sigframe structure
[MIPS] signal: do not inline functions in signal-common.h
[MIPS] signals: reduce {setup,restore}_sigcontext sizes
[MIPS] Fix warning in get_user when fetching pointer object from userspace.
[MIPS] Fix eth2 platform device id for jaguar_atx and ocelot_3 platforms
[MIPS] JMR3927 and RBTX49x7 support little endian
[MIPS] RBTX49x7: declare prom_getcmdline()
[MIPS] RTLX: Sprinkle device model code into code to make udev happier.
[MIPS] VPE: Sprinkle device model code into code to make udev happier.
Diffstat (limited to 'arch/mips/kernel/signal_n32.c')
-rw-r--r-- | arch/mips/kernel/signal_n32.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c index b28646b3ceae..57456e6a0c62 100644 --- a/arch/mips/kernel/signal_n32.c +++ b/arch/mips/kernel/signal_n32.c @@ -47,8 +47,6 @@ #define __NR_N32_rt_sigreturn 6211 #define __NR_N32_restart_syscall 6214 -#define DEBUG_SIG 0 - #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) /* IRIX compatible stack_t */ @@ -66,25 +64,30 @@ struct ucontextn32 { sigset_t uc_sigmask; /* mask last for extensibility */ }; +#if ICACHE_REFILLS_WORKAROUND_WAR == 0 + struct rt_sigframe_n32 { u32 rs_ass[4]; /* argument save space for o32 */ -#if ICACHE_REFILLS_WORKAROUND_WAR - u32 rs_pad[2]; -#else u32 rs_code[2]; /* signal trampoline */ -#endif struct siginfo rs_info; struct ucontextn32 rs_uc; -#if ICACHE_REFILLS_WORKAROUND_WAR +}; + +#else /* ICACHE_REFILLS_WORKAROUND_WAR */ + +struct rt_sigframe_n32 { + u32 rs_ass[4]; /* argument save space for o32 */ + u32 rs_pad[2]; + struct siginfo rs_info; + struct ucontextn32 rs_uc; u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ -#endif }; +#endif /* !ICACHE_REFILLS_WORKAROUND_WAR */ + extern void sigset_from_compat (sigset_t *set, compat_sigset_t *compat); -save_static_function(sysn32_rt_sigsuspend); -__attribute_used__ noinline static int -_sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) +asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) { compat_sigset_t __user *unewset; compat_sigset_t uset; @@ -114,9 +117,7 @@ _sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) return -ERESTARTNOHAND; } -save_static_function(sysn32_rt_sigreturn); -__attribute_used__ noinline static void -_sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) +asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) { struct rt_sigframe_n32 __user *frame; sigset_t set; @@ -214,11 +215,10 @@ int setup_rt_frame_n32(struct k_sigaction * ka, regs->regs[31] = (unsigned long) frame->rs_code; 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%lx ra=0x%p\n", + DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", current->comm, current->pid, frame, regs->cp0_epc, regs->regs[31]); -#endif + return 0; give_sigsegv: |