aboutsummaryrefslogtreecommitdiff
path: root/sys/powerpc/include
diff options
context:
space:
mode:
authorPeter Grehan <grehan@FreeBSD.org>2004-03-02 06:13:09 +0000
committerPeter Grehan <grehan@FreeBSD.org>2004-03-02 06:13:09 +0000
commit919cb3362fded33aca682a6ac57777f8fff86e36 (patch)
tree7d6d4f0cac4e59eee3a84e4e5e1f8c5080719548 /sys/powerpc/include
parent8fc8ef2efec4184af2f5e149922a267cb7ab5e03 (diff)
Notes
Diffstat (limited to 'sys/powerpc/include')
-rw-r--r--sys/powerpc/include/ucontext.h36
1 files changed, 31 insertions, 5 deletions
diff --git a/sys/powerpc/include/ucontext.h b/sys/powerpc/include/ucontext.h
index 28e50f345854f..f053cd5df0f43 100644
--- a/sys/powerpc/include/ucontext.h
+++ b/sys/powerpc/include/ucontext.h
@@ -35,12 +35,38 @@
#ifndef _MACHINE_UCONTEXT_H_
#define _MACHINE_UCONTEXT_H_
-#include <machine/frame.h>
+typedef struct __mcontext {
+ int mc_vers;
+ int mc_flags;
+#define _MC_FP_VALID 0x01
+#define _MC_AV_VALID 0x02
+ int mc_onstack; /* saved onstack flag */
+ int mc_len; /* sizeof(__mcontext) */
+ uint64_t mc_avec[32*2]; /* vector register file */
+ uint32_t mc_av[2];
+ uint32_t mc_frame[41];
+ uint64_t mc_fpreg[33];
+} mcontext_t __aligned(16);
+/* GPRs and supervisor-level regs */
+#define mc_gpr mc_frame
+#define mc_lr mc_frame[32]
+#define mc_cr mc_frame[33]
+#define mc_xer mc_frame[34]
+#define mc_ctr mc_frame[35]
+#define mc_srr0 mc_frame[36]
+#define mc_srr1 mc_frame[37]
+#define mc_dar mc_frame[38]
+#define mc_dsisr mc_frame[39]
+#define mc_exc mc_frame[40]
-typedef struct __mcontext {
- int mc_onstack; /* saved onstack flag */
- struct trapframe mc_frame; /* saved registers */
-} mcontext_t;
+/* floating-point state */
+#define mc_fpscr mc_fpreg[32]
+
+/* altivec state */
+#define mc_vscr mc_av[0]
+#define mc_vrsave mc_av[1]
+
+#define _MC_VERSION 0x1
#endif /* !_MACHINE_UCONTEXT_H_ */