summaryrefslogtreecommitdiff
path: root/sys/arch/powerpc/include
diff options
context:
space:
mode:
authormatt <matt@NetBSD.org>2014-02-28 05:30:24 +0000
committermatt <matt@NetBSD.org>2014-02-28 05:30:24 +0000
commit1e42e20cf06e5d9844b6a16c19da2fb29f5a4510 (patch)
tree48726655ce6afc86c2ea2fcd9370dde998a31c4b /sys/arch/powerpc/include
parent0c0d241d4cc03eec1a4074ca6244bad89d6077dc (diff)
Add trapframe32 for COMPAT_NETBSD32
Diffstat (limited to 'sys/arch/powerpc/include')
-rw-r--r--sys/arch/powerpc/include/frame.h45
1 files changed, 44 insertions, 1 deletions
diff --git a/sys/arch/powerpc/include/frame.h b/sys/arch/powerpc/include/frame.h
index 43a2d2bb17d..1c02b5e32e2 100644
--- a/sys/arch/powerpc/include/frame.h
+++ b/sys/arch/powerpc/include/frame.h
@@ -1,4 +1,4 @@
-/* $NetBSD: frame.h,v 1.25 2012/08/01 16:19:42 matt Exp $ */
+/* $NetBSD: frame.h,v 1.26 2014/02/28 05:30:24 matt Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -59,6 +59,16 @@ struct reg_sans_pc {
register_t r_ctr;
};
+#ifdef _LP64
+struct reg_sans_pc32 {
+ register32_t r_fixreg[32];
+ register32_t r_lr;
+ uint32_t r_cr;
+ uint32_t r_xer;
+ register32_t r_ctr;
+};
+#endif
+
struct utrapframe {
register_t fixreg[32];
register_t lr;
@@ -78,6 +88,14 @@ struct clockframe {
int cf_idepth;
};
+#ifdef _LP64
+struct clockframe32 {
+ register32_t cf_srr0;
+ register32_t cf_srr1;
+ int cf_idepth;
+};
+#endif
+
struct trapframe {
struct reg_sans_pc tf_ureg;
struct clockframe tf_cf;
@@ -100,6 +118,31 @@ struct trapframe {
uint32_t tf_spefscr;
#endif
};
+
+#ifdef _LP64
+struct trapframe32 {
+ struct reg_sans_pc32 tf_ureg;
+ struct clockframe32 tf_cf;
+ uint32_t tf_exc;
+#if defined(PPC_OEA) || defined(PPC_OEA64) || defined(PPC_OEA64_BRIDGE)
+ register32_t tf_dar;
+ register32_t tf_pad0[2];
+ uint32_t tf_dsisr;
+ uint32_t tf_vrsave;
+ uint32_t tf_mq;
+ uint32_t tf_pad1[1];
+#endif
+#if defined(PPC_BOOKE) || defined(PPC_IBM4XX)
+ register32_t tf_dear;
+ register32_t tf_mcar;
+ register32_t tf_sprg1;
+ uint32_t tf_esr;
+ uint32_t tf_mcsr;
+ uint32_t tf_pid;
+ uint32_t tf_spefscr;
+#endif
+};
+#endif /* _LP64 */
#define tf_fixreg tf_ureg.r_fixreg
#define tf_lr tf_ureg.r_lr
#define tf_cr tf_ureg.r_cr