diff -Naurp linux-2.4.31.orig/arch/mips/kernel/signal.c linux-2.4.31/arch/mips/kernel/signal.c --- linux-2.4.31.orig/arch/mips/kernel/signal.c 2005-01-19 09:09:29.000000000 -0500 +++ linux-2.4.31/arch/mips/kernel/signal.c 2005-06-03 14:28:48.963159928 -0400 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -76,7 +77,8 @@ int copy_siginfo_to_user(siginfo_t *to, * Atomically swap in the new signal mask, and wait for a signal. */ save_static_function(sys_sigsuspend); -static_unused int _sys_sigsuspend(struct pt_regs regs) +__attribute_used__ __attribute__((noinline)) static int +_sys_sigsuspend(struct pt_regs regs) { sigset_t *uset, saveset, newset; @@ -102,7 +104,8 @@ static_unused int _sys_sigsuspend(struct } save_static_function(sys_rt_sigsuspend); -static_unused int _sys_rt_sigsuspend(struct pt_regs regs) +__attribute_used__ __attribute__((noinline)) static int +_sys_rt_sigsuspend(struct pt_regs regs) { sigset_t *unewset, saveset, newset; size_t sigsetsize; diff -Naurp linux-2.4.31.orig/arch/mips/kernel/syscall.c linux-2.4.31/arch/mips/kernel/syscall.c --- linux-2.4.31.orig/arch/mips/kernel/syscall.c 2005-01-19 09:09:29.000000000 -0500 +++ linux-2.4.31/arch/mips/kernel/syscall.c 2005-06-03 14:31:27.641037224 -0400 @@ -25,6 +25,8 @@ #include #include #include +#include + #include #include #include @@ -158,7 +160,8 @@ sys_mmap2(unsigned long addr, unsigned l } save_static_function(sys_fork); -static_unused int _sys_fork(struct pt_regs regs) +__attribute_used__ __attribute__((noinline)) static int +_sys_fork(struct pt_regs regs) { int res; @@ -168,7 +171,8 @@ static_unused int _sys_fork(struct pt_re save_static_function(sys_clone); -static_unused int _sys_clone(struct pt_regs regs) +__attribute_used__ __attribute__((noinline)) static int +_sys_clone(struct pt_regs regs) { unsigned long clone_flags; unsigned long newsp; diff -Naurp linux-2.4.31.orig/arch/mips64/kernel/signal32.c linux-2.4.31/arch/mips64/kernel/signal32.c --- linux-2.4.31.orig/arch/mips64/kernel/signal32.c 2005-01-19 09:09:33.000000000 -0500 +++ linux-2.4.31/arch/mips64/kernel/signal32.c 2005-06-03 14:29:34.369257152 -0400 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -192,7 +193,8 @@ static inline int get_sigset(sigset_t *k * Atomically swap in the new signal mask, and wait for a signal. */ save_static_function(sys32_sigsuspend); -static_unused int _sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs) +__attribute_used__ __attribute__((noinline)) static int +_sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs) { sigset32_t *uset; sigset_t newset, saveset; @@ -219,7 +221,8 @@ static_unused int _sys32_sigsuspend(abi6 } save_static_function(sys32_rt_sigsuspend); -static_unused int _sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs) +__attribute_used__ __attribute__((noinline)) static int +_sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs) { sigset32_t *uset; sigset_t newset, saveset; diff -Naurp linux-2.4.31.orig/include/asm-mips/ptrace.h linux-2.4.31/include/asm-mips/ptrace.h --- linux-2.4.31.orig/include/asm-mips/ptrace.h 2004-02-18 08:36:32.000000000 -0500 +++ linux-2.4.31/include/asm-mips/ptrace.h 2005-06-03 14:50:45.723981856 -0400 @@ -64,12 +64,10 @@ __asm__ ( "sw\t$22,"__str(PT_R22)"($29)\n\t" \ "sw\t$23,"__str(PT_R23)"($29)\n\t" \ "sw\t$30,"__str(PT_R30)"($29)\n\t" \ + "j\t_" #symbol "\n\t" \ ".end\t" #symbol "\n\t" \ ".size\t" #symbol",. - " #symbol) -/* Used in declaration of save_static functions. */ -#define static_unused static __attribute__((unused)) - #endif /* !__ASSEMBLY__ */ /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ diff -Naurp linux-2.4.31.orig/include/asm-mips64/ptrace.h linux-2.4.31/include/asm-mips64/ptrace.h --- linux-2.4.31.orig/include/asm-mips64/ptrace.h 2004-02-18 08:36:32.000000000 -0500 +++ linux-2.4.31/include/asm-mips64/ptrace.h 2005-06-03 14:50:55.292527216 -0400 @@ -61,12 +61,10 @@ __asm__ ( "sd\t$22,"__str(PT_R22)"($29)\n\t" \ "sd\t$23,"__str(PT_R23)"($29)\n\t" \ "sd\t$30,"__str(PT_R30)"($29)\n\t" \ + "j\t_" #symbol "\n\t" \ ".end\t" #symbol "\n\t" \ ".size\t" #symbol",. - " #symbol) -/* Used in declaration of save_static functions. */ -#define static_unused static __attribute__((unused)) - #define abi64_no_regargs \ unsigned long __dummy0, \ unsigned long __dummy1, \