summaryrefslogtreecommitdiff
path: root/sys/arch/hppa/include
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>1999-04-20 19:49:36 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>1999-04-20 19:49:36 +0000
commitdc4fab89b761322e350d4b89675296f2a581ce0f (patch)
tree148747ede9731d312306b8acc1001a079aa9e2b3 /sys/arch/hppa/include
parent965b40fe03eb2a245999f7b7b8e687bd26c56611 (diff)
name changes, add stack frame, better USERMODE()
Diffstat (limited to 'sys/arch/hppa/include')
-rw-r--r--sys/arch/hppa/include/frame.h178
1 files changed, 114 insertions, 64 deletions
diff --git a/sys/arch/hppa/include/frame.h b/sys/arch/hppa/include/frame.h
index db655d53395..24504a637e5 100644
--- a/sys/arch/hppa/include/frame.h
+++ b/sys/arch/hppa/include/frame.h
@@ -1,10 +1,60 @@
-/* $OpenBSD: frame.h,v 1.4 1998/12/29 21:52:37 mickey Exp $ */
+/* $OpenBSD: frame.h,v 1.5 1999/04/20 19:49:35 mickey Exp $ */
+
+/*
+ * Copyright (c) 1999 Michael Shalayeff
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Michael Shalayeff.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
#ifndef _MACHINE_FRAME_H_
#define _MACHINE_FRAME_H_
-#define FRAME_PC (33*4)
+#include <machine/reg.h>
+
+/*
+ * Call frame definitions
+ */
+#define HPPA_FRAME_NARGS (12)
+#define HPPA_FRAME_MAXARGS (HPPA_FRAME_NARGS * 4)
+#define HPPA_FRAME_ARGSOFF (18 * sizeof(register_t))
+
+#ifndef _LOCORE
+ /* size of frame is 32*sizeof(register_t) */
+struct hppa_frame {
+ register_t f_rp;
+ register_t f_r3 , f_r4 , f_r5 , f_r6 , f_r7 , f_r8 , f_r9 , f_r10,
+ f_r11, f_r12, f_r13, f_r14, f_r15, f_r16, f_r17, f_r18;
+ register_t f_sp;
+ register_t f_args[HPPA_FRAME_NARGS];
+ register_t f_pad[2];
+ /* locals goes here */
+};
+#endif /* _LOCORE */
/*
* Macros to decode processor status word.
@@ -12,72 +62,72 @@
#define HPPA_PC_PRIV_MASK 3
#define HPPA_PC_PRIV_KERN 0
#define HPPA_PC_PRIV_USER 3
-#define USERMODE(pc) (((pc) & HPPA_PC_PRIV_MASK) != HPPA_PC_PRIV_KERN)
+#define USERMODE(pc) ((((register_t)pc) & HPPA_PC_PRIV_MASK) != HPPA_PC_PRIV_KERN)
+#define KERNMODE(pc) (((register_t)pc) & ~HPPA_PC_PRIV_MASK)
#ifndef _LOCORE
struct trapframe {
- u_int flags;
- u_int r1;
- u_int rp; /* r2 */
- u_int r3; /* frame pointer when -g */
- u_int r4;
- u_int r5;
- u_int r6;
- u_int r7;
- u_int r8;
- u_int r9;
- u_int r10;
- u_int r11;
- u_int r12;
- u_int r13;
- u_int r14;
- u_int r15;
- u_int r16;
- u_int r17;
- u_int r18;
- u_int t4; /* r19 */
- u_int t3; /* r20 */
- u_int t2; /* r21 */
- u_int t1; /* r22 */
- u_int arg3; /* r23 */
- u_int arg2; /* r24 */
- u_int arg1; /* r25 */
- u_int arg0; /* r26 */
- u_int dp; /* r27 */
- u_int ret0; /* r28 */
- u_int ret1; /* r29 */
- u_int sp; /* r30 */
- u_int r31;
- u_int sar; /* cr11 */
- u_int iioq_head;
- u_int iisq_head;
- u_int iioq_tail;
- u_int iisq_tail;
- u_int eiem; /* cr15 */
- u_int iir; /* cr19 */
- u_int isr; /* cr20 */
- u_int ior; /* cr21 */
- u_int ipsw; /* cr22 */
- u_int sr4;
- u_int sr0;
- u_int sr1;
- u_int sr2;
- u_int sr3;
- u_int sr5;
- u_int sr6;
- u_int sr7;
- u_int rctr; /* cr0 */
- u_int pidr1; /* cr8 */
- u_int pidr2; /* cr9 */
- u_int ccr; /* cr10 */
- u_int pidr3; /* cr12 */
- u_int pidr4; /* cr13 */
- u_int hptm; /* cr24 */
- u_int vtop; /* cr25 */
- u_int tr2; /* cr26 */
- u_int fpu;
+ u_int tf_flags;
+ u_int tf_r1;
+ u_int tf_rp; /* r2 */
+ u_int tf_r3; /* frame pointer when -g */
+ u_int tf_r4;
+ u_int tf_r5;
+ u_int tf_r6;
+ u_int tf_r7;
+ u_int tf_r8;
+ u_int tf_r9;
+ u_int tf_r10;
+ u_int tf_r11;
+ u_int tf_r12;
+ u_int tf_r13;
+ u_int tf_r14;
+ u_int tf_r15;
+ u_int tf_r16;
+ u_int tf_r17;
+ u_int tf_r18;
+ u_int tf_t4; /* r19 */
+ u_int tf_t3; /* r20 */
+ u_int tf_t2; /* r21 */
+ u_int tf_t1; /* r22 */
+ u_int tf_arg3; /* r23 */
+ u_int tf_arg2; /* r24 */
+ u_int tf_arg1; /* r25 */
+ u_int tf_arg0; /* r26 */
+ u_int tf_dp; /* r27 */
+ u_int tf_ret0; /* r28 */
+ u_int tf_ret1; /* r29 */
+ u_int tf_sp; /* r30 */
+ u_int tf_r31;
+ u_int tf_sar; /* cr11 */
+ u_int tf_iioq_head;
+ u_int tf_iisq_head;
+ u_int tf_iioq_tail;
+ u_int tf_iisq_tail;
+ u_int tf_eiem; /* cr15 */
+ u_int tf_iir; /* cr19 */
+ u_int tf_isr; /* cr20 */
+ u_int tf_ior; /* cr21 */
+ u_int tf_ipsw; /* cr22 */
+ u_int tf_sr4;
+ u_int tf_sr0;
+ u_int tf_sr1;
+ u_int tf_sr2;
+ u_int tf_sr3;
+ u_int tf_sr5;
+ u_int tf_sr6;
+ u_int tf_sr7;
+ u_int tf_rctr; /* cr0 */
+ u_int tf_pidr1; /* cr8 */
+ u_int tf_pidr2; /* cr9 */
+ u_int tf_ccr; /* cr10 */
+ u_int tf_pidr3; /* cr12 */
+ u_int tf_pidr4; /* cr13 */
+ u_int tf_hptm; /* cr24 */
+ u_int tf_vtop; /* cr25 */
+ u_int tf_tr2; /* cr26 */
- int tf_regs[10];
+ u_int64_t tf_fpregs[HPPA_NFPREGS];
};
#endif /* !_LOCORE */