aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h
index d174c9e779..8430dbcbe1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h
@@ -17,13 +17,25 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+struct __rt_signal_frame {
+ siginfo_t sf_info;
+ struct pt_regs sf_regs;
+ __siginfo_fpu_t *fpu_save;
+ struct {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } sf_stack;
+ unsigned long sf_mask;
+};
+
#ifndef STACK_BIAS
#define STACK_BIAS 2047
#endif
-#define SIGCONTEXT __siginfo_t *
-#define GET_PC(__ctx) ((void *) ((__ctx)->si_regs.tpc))
+#define SIGCONTEXT struct __rt_signal_frame *
+#define GET_PC(__ctx) ((void *) ((__ctx)->sf_regs.tpc))
#define ADVANCE_STACK_FRAME(__next) \
((void *) &((struct reg_window *) (((unsigned long int) (__next)) \
+ STACK_BIAS))->ins[6])
-#define GET_STACK(__ctx) ((void *) ((__ctx)->si_regs.u_regs[14]))
+#define GET_STACK(__ctx) ((void *) ((__ctx)->sf_regs.u_regs[14]))
#define GET_FRAME(__ctx) ADVANCE_STACK_FRAME (GET_STACK (__ctx))