Annotation of sys/arch/hppa64/include/frame.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: frame.h,v 1.1 2005/04/01 10:40:48 mickey Exp $ */
2:
3: /*
4: * Copyright (c) 2005 Michael Shalayeff
5: * All rights reserved.
6: *
7: * Permission to use, copy, modify, and distribute this software for any
8: * purpose with or without fee is hereby granted, provided that the above
9: * copyright notice and this permission notice appear in all copies.
10: *
11: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15: * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN
16: * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
17: * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18: */
19:
20: #ifndef _MACHINE_FRAME_H_
21: #define _MACHINE_FRAME_H_
22:
23: /*
24: * Call frame definitions
25: */
26: #define HPPA_FRAME_SIZE (128)
27: #define HPPA_FRAME_PSP (-8)
28: #define HPPA_FRAME_RP (-16)
29:
30: /*
31: * Macros to decode processor status word.
32: */
33: #define HPPA_PC_PRIV_MASK 3
34: #define HPPA_PC_PRIV_KERN 0
35: #define HPPA_PC_PRIV_USER 3
36: #define USERMODE(pc) ((((register_t)pc) & HPPA_PC_PRIV_MASK) != HPPA_PC_PRIV_KERN)
37: #define KERNMODE(pc) (((register_t)pc) & ~HPPA_PC_PRIV_MASK)
38:
39: /*
40: *
41: */
42: #define HPPA_SID_MAX 0x7ffffe00
43: #define HPPA_SID_KERNEL 0
44: #define HPPA_PID_KERNEL 2
45:
46: #ifndef _LOCORE
47: /*
48: * the trapframe is divided into two parts:
49: * one is saved while we are in the physical mode (beginning of the trap),
50: * and should be kept as small as possible, since all the interrupts will
51: * be lost during this phase, also it must be 64-bytes aligned, per
52: * pa-risc stack conventions, and its dependencies in the code (;
53: * the other part is filled out when we are already in the virtual mode,
54: * are able to catch interrupts (they are kept pending) and perform
55: * other trap activities (like tlb misses).
56: */
57: struct trapframe {
58: unsigned long tf_flags;
59: unsigned long tf_r1;
60: unsigned long tf_rp;
61: unsigned long tf_r3;
62: unsigned long tf_r4;
63: unsigned long tf_r5;
64: unsigned long tf_r6;
65: unsigned long tf_r7;
66: unsigned long tf_r8;
67: unsigned long tf_r9;
68: unsigned long tf_r10;
69: unsigned long tf_r11;
70: unsigned long tf_r12;
71: unsigned long tf_r13;
72: unsigned long tf_r14;
73: unsigned long tf_r15;
74: unsigned long tf_r16;
75: unsigned long tf_r17;
76: unsigned long tf_r18;
77: unsigned long tf_args[8];
78: unsigned long tf_dp; /* r27 */
79: unsigned long tf_ret0;
80: unsigned long tf_ret1;
81: unsigned long tf_sp;
82: unsigned long tf_r31;
83: unsigned long tf_sr0;
84: unsigned long tf_sr1;
85: unsigned long tf_sr2;
86: unsigned long tf_sr3;
87: unsigned long tf_sr4;
88: unsigned long tf_sr5;
89: unsigned long tf_sr6;
90: unsigned long tf_sr7;
91: unsigned long tf_rctr;
92: unsigned long tf_ccr; /* cr10 */
93: unsigned long tf_iioq[2];
94: unsigned long tf_iisq[2];
95: unsigned long tf_pidr1;
96: unsigned long tf_pidr2;
97: unsigned long tf_eiem;
98: unsigned long tf_eirr;
99: unsigned long tf_ior;
100: unsigned long tf_isr;
101: unsigned long tf_iir;
102: unsigned long tf_ipsw;
103: unsigned long tf_ci; /* cr24 */
104: unsigned long tf_vtop; /* cr25 */
105: unsigned long tf_cr30; /* pa(u) */
106: unsigned long tf_cr27; /* user curthread */
107: unsigned long tf_sar;
108:
109: unsigned long tf_pad[5];
110: };
111: #endif /* !_LOCORE */
112:
113: #endif /* !_MACHINE_FRAME_H_ */
CVSweb