Annotation of sys/arch/m88k/include/pcb.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: pcb.h,v 1.4 2007/01/13 22:00:56 miod Exp $ */
2: /*
3: * Copyright (c) 1996 Nivas Madhur
4: * Mach Operating System
5: * Copyright (c) 1993-1992 Carnegie Mellon University
6: * All Rights Reserved.
7: *
8: * Permission to use, copy, modify and distribute this software and its
9: * documentation is hereby granted, provided that both the copyright
10: * notice and this permission notice appear in all copies of the
11: * software, derivative works or modified versions, and any portions
12: * thereof, and that both notices appear in supporting documentation.
13: *
14: * CARNEGIE MELLON AND OMRON ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS"
15: * CONDITION. CARNEGIE MELLON AND OMRON DISCLAIM ANY LIABILITY OF ANY KIND
16: * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
17: *
18: * Carnegie Mellon requests users of this software to return to
19: *
20: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
21: * School of Computer Science
22: * Carnegie Mellon University
23: * Pittsburgh PA 15213-3890
24: *
25: * any improvements or extensions that they make and grant Carnegie Mellon
26: * the rights to redistribute these changes.
27: */
28: /*
29: * Motorola 88100 pcb definitions
30: *
31: */
32: /*
33: */
34: #ifndef _M88K_PCB_H_
35: #define _M88K_PCB_H_
36:
37: #include <machine/frame.h>
38:
39: /*
40: * Our PCB is the regular PCB+Save area for kernel frame.
41: * Upon entering kernel mode from user land, save the user context
42: * in the saved_state area - this is passed as the exception frame.
43: * On a context switch, only registers that need to be saved by the
44: * C calling convention and few other regs (pc, psr etc) are saved
45: * in the kernel_state part of the PCB. Typically, trap frames are
46: * saved on the stack (by low level handlers or by hardware) but,
47: * we just decided to do it in the PCB.
48: */
49:
50: struct m88100_pcb {
51: unsigned pcb_pc; /* address to return */
52: unsigned :32;
53: unsigned pcb_r14;
54: unsigned pcb_r15;
55: unsigned pcb_r16;
56: unsigned pcb_r17;
57: unsigned pcb_r18;
58: unsigned pcb_r19;
59: unsigned pcb_r20;
60: unsigned pcb_r21;
61: unsigned pcb_r22;
62: unsigned pcb_r23;
63: unsigned pcb_r24;
64: unsigned pcb_r25;
65: unsigned pcb_r26;
66: unsigned pcb_r27;
67: unsigned pcb_r28;
68: unsigned pcb_r29;
69: unsigned pcb_r30;
70: unsigned pcb_sp; /* kernel stack pointer */
71: /* floating-point state */
72: unsigned pcb_fcr62;
73: unsigned pcb_fcr63;
74: };
75:
76: struct pcb
77: {
78: struct m88100_pcb kernel_state;
79: struct trapframe user_state;
80: int pcb_onfault;
81: };
82:
83: /*
84: * Location of saved user registers for the proc.
85: */
86: #define USER_REGS(p) \
87: (((struct reg *)(&((p)->p_addr->u_pcb.user_state))))
88:
89: /*
90: * The pcb is augmented with machine-dependent additional data for
91: * core dumps. Note that the trapframe here is a copy of the one
92: * from the top of the kernel stack (included here so that the kernel
93: * stack itself need not be dumped).
94: */
95: struct md_coredump {
96: struct trapframe md_tf;
97: };
98:
99: #endif /* _M88K_PCB_H_ */
CVSweb