several Linux/sparc fixes
diff --git a/signal.c b/signal.c
index 082f5c7..6051d8f 100644
--- a/signal.c
+++ b/signal.c
@@ -63,15 +63,29 @@
 # include <asm/ptrace_offsets.h>
 #endif /* !IA64 */
 
-#ifdef HAVE_ASM_SIGCONTEXT_H
-#include <asm/sigcontext.h>
+#if HAVE_ASM_REG_H
 #ifdef SPARC
+#  define fpq kernel_fpq
+#  define fq kernel_fq
+#  define fpu kernel_fpu
+#endif
 #include <asm/reg.h>
+#ifdef SPARC
+#  undef fpq
+#  undef fq
+#  undef fpu 
+#endif
+
+#endif /* HAVE_ASM_REG_H */
+#ifdef HAVE_ASM_SIGCONTEXT_H
+#ifdef SPARC
 typedef struct {
 	struct regs		si_regs;
 	int			si_mask;
 } m_siginfo_t;
-#endif
+#else
+#include <asm/sigcontext.h>
+#endif /* SPARC */
 #else /* !HAVE_ASM_SIGCONTEXT_H */
 #ifdef I386
 struct sigcontext_struct {