Annotation of sys/arch/m88k/include/pcb.h, Revision 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