diff --git a/arch/mips/ksigaction.h b/arch/mips/ksigaction.h index 6d731646..3127f7c0 100644 --- a/arch/mips/ksigaction.h +++ b/arch/mips/ksigaction.h @@ -7,3 +7,5 @@ struct k_sigaction { * mips-specific preprocessor conditionals in sigaction.c. */ void (*restorer)(); }; + +void __restore(), __restore_rt(); diff --git a/arch/sh/ksigaction.h b/arch/sh/ksigaction.h new file mode 100644 index 00000000..0c652bea --- /dev/null +++ b/arch/sh/ksigaction.h @@ -0,0 +1,8 @@ +struct k_sigaction { + void (*handler)(int); + unsigned long flags; + void *restorer; + unsigned mask[2]; +}; + +extern unsigned char __restore[], __restore_rt[]; diff --git a/src/internal/ksigaction.h b/src/internal/ksigaction.h index 2eacabf1..1d8d9646 100644 --- a/src/internal/ksigaction.h +++ b/src/internal/ksigaction.h @@ -7,3 +7,5 @@ struct k_sigaction { void (*restorer)(void); unsigned mask[2]; }; + +void __restore(), __restore_rt(); diff --git a/src/signal/sh/restore.s b/src/signal/sh/restore.s index eaedcdfb..d5df8e14 100644 --- a/src/signal/sh/restore.s +++ b/src/signal/sh/restore.s @@ -1,5 +1,4 @@ .global __restore -.type __restore, @function __restore: mov #119, r3 !__NR_sigreturn trapa #31 @@ -11,7 +10,6 @@ __restore: or r0, r0 .global __restore_rt -.type __restore_rt, @function __restore_rt: mov #100, r3 !__NR_rt_sigreturn add #73, r3 diff --git a/src/signal/sigaction.c b/src/signal/sigaction.c index d5f47741..ab23a6f2 100644 --- a/src/signal/sigaction.c +++ b/src/signal/sigaction.c @@ -6,8 +6,6 @@ #include "libc.h" #include "ksigaction.h" -void __restore(), __restore_rt(); - static int unmask_done; static unsigned long handler_set[_NSIG/(8*sizeof(long))];