|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * HISTORY ! 27: * Revision 1.3 1997/11/06 21:07:55 umeshv ! 28: * Cleaned up incorrect use of __PPC__, and __I386__ ! 29: * Fixed the feature inclusion to be #ifdef KERNEL_BUILD ! 30: * ! 31: * Revision 1.2 1997/10/29 02:13:46 tmason ! 32: * Fixed oodles of bugs related to pmap issues as well as bcopy, FLOAT!, and cached accesses. ! 33: * Radar Bug ID: ! 34: * ! 35: * Revision 1.1.1.1 1997/09/30 02:45:20 wsanchez ! 36: * Import of kernel from umeshv/kernel ! 37: * ! 38: * Radar #1660195 ! 39: * Revision 1.1.??.? 1997/06/29 01:52:00 rvega ! 40: * Radar #1660195 ! 41: * Add LR plus volatile regs in PP area. This is ! 42: * needed for the MMU support (PTEG overflow) ! 43: * [1997/06/29 01:52:00 rvega] ! 44: * ! 45: */ ! 46: ! 47: /* ! 48: * Copyright 1996 1995 by Open Software Foundation, Inc. 1997 1996 1995 1994 1993 1992 1991 ! 49: * All Rights Reserved ! 50: * ! 51: * Permission to use, copy, modify, and distribute this software and ! 52: * its documentation for any purpose and without fee is hereby granted, ! 53: * provided that the above copyright notice appears in all copies and ! 54: * that both the copyright notice and this permission notice appear in ! 55: * supporting documentation. ! 56: * ! 57: * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE ! 58: * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ! 59: * FOR A PARTICULAR PURPOSE. ! 60: * ! 61: * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR ! 62: * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM ! 63: * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, ! 64: * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION ! 65: * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ! 66: */ ! 67: /* ! 68: * MKLINUX-1.0DR2 ! 69: */ ! 70: ! 71: /* Miscellaneous constants and structures used by the exception ! 72: * handlers ! 73: */ ! 74: ! 75: #ifndef _PPC_EXCEPTION_H_ ! 76: #define _PPC_EXCEPTION_H_ ! 77: ! 78: #ifndef __ASSEMBLER__ ! 79: ! 80: #include <machdep/ppc/mem.h> ! 81: #if defined(KERNEL_BUILD) ! 82: #include <cpus.h> ! 83: #endif /* KERNEL_BUILD */ ! 84: #include <machdep/ppc/thread.h> ! 85: ! 86: /* When an exception is taken, this info is accessed via sprg0 */ ! 87: ! 88: struct per_proc_info { ! 89: unsigned int save_cr; ! 90: unsigned int save_lr; ! 91: unsigned int save_srr0; ! 92: unsigned int save_srr1; ! 93: unsigned int save_dar; ! 94: unsigned int save_dsisr; ! 95: unsigned int save_sprg0; ! 96: unsigned int save_sprg1; ! 97: unsigned int save_sprg2; ! 98: unsigned int save_sprg3; ! 99: unsigned int save_exception_type; ! 100: ! 101: unsigned int phys_exception_handlers; ! 102: unsigned int virt_per_proc_info; /* virt addr for our CPU */ ! 103: ! 104: /* This save area is for the volatile registers used by the ! 105: firmware functions. ! 106: */ ! 107: unsigned int save_r0; ! 108: unsigned int save_r1; ! 109: unsigned int save_r2; ! 110: unsigned int save_r3; ! 111: unsigned int save_r4; ! 112: unsigned int save_r5; ! 113: unsigned int save_r6; ! 114: unsigned int save_r7; ! 115: unsigned int save_r8; ! 116: unsigned int save_r9; ! 117: unsigned int save_r10; ! 118: unsigned int save_r11; ! 119: unsigned int save_r12; ! 120: #if TRUE ! 121: unsigned int save_r13; ! 122: unsigned int save_r14; ! 123: unsigned int save_r15; ! 124: unsigned int save_r16; ! 125: unsigned int save_r17; ! 126: unsigned int save_r18; ! 127: unsigned int save_r19; ! 128: unsigned int save_r20; ! 129: unsigned int save_r21; ! 130: unsigned int save_r22; ! 131: unsigned int save_r23; ! 132: unsigned int save_r24; ! 133: unsigned int save_r25; ! 134: unsigned int save_r26; ! 135: unsigned int save_r27; ! 136: unsigned int save_r28; ! 137: unsigned int save_r29; ! 138: unsigned int save_r30; ! 139: unsigned int save_r31; ! 140: #endif ! 141: ! 142: unsigned int active_kloaded; /* pointer to active_kloaded[CPU_NO] */ ! 143: unsigned int cpu_data; /* pointer to cpu_data[CPU_NO] */ ! 144: unsigned int active_stacks; /* pointer to active_stacks[CPU_NO] */ ! 145: unsigned int need_ast; /* pointer to need_ast[CPU_NO] */ ! 146: pcb_t fpu_pcb; /* pcb owning the fpu on this cpu */ ! 147: }; ! 148: ! 149: extern struct per_proc_info per_proc_info[NCPUS]; ! 150: ! 151: extern char *trap_type[]; ! 152: ! 153: #ifdef DEBUG ! 154: extern int kdp_trap_codes[]; ! 155: #define kdp_code(x) kdp_trap_codes[((x)==EXC_AST?0x30:(x)/EXC_VECTOR_SIZE)] ! 156: #endif /* DEBUG */ ! 157: ! 158: #endif /* ! __ASSEMBLER__ */ ! 159: ! 160: #define EXC_VECTOR_SIZE 4 /* function pointer size */ ! 161: ! 162: /* Hardware exceptions */ ! 163: ! 164: #define EXC_INVALID (0x00 * EXC_VECTOR_SIZE) ! 165: #define EXC_RESET (0x01 * EXC_VECTOR_SIZE) ! 166: #define EXC_MACHINE_CHECK (0x02 * EXC_VECTOR_SIZE) ! 167: #define EXC_DATA_ACCESS (0x03 * EXC_VECTOR_SIZE) ! 168: #define EXC_INSTRUCTION_ACCESS (0x04 * EXC_VECTOR_SIZE) ! 169: #define EXC_INTERRUPT (0x05 * EXC_VECTOR_SIZE) ! 170: #define EXC_ALIGNMENT (0x06 * EXC_VECTOR_SIZE) ! 171: #define EXC_PROGRAM (0x07 * EXC_VECTOR_SIZE) ! 172: #define EXC_FP_UNAVAILABLE (0x08 * EXC_VECTOR_SIZE) ! 173: #define EXC_DECREMENTER (0x09 * EXC_VECTOR_SIZE) ! 174: #define EXC_IO_ERROR (0x0a * EXC_VECTOR_SIZE) ! 175: #define EXC_RESERVED_0B (0x0b * EXC_VECTOR_SIZE) ! 176: #define EXC_SYSTEM_CALL (0x0c * EXC_VECTOR_SIZE) ! 177: #define EXC_TRACE (0x0d * EXC_VECTOR_SIZE) ! 178: #define EXC_FP_ASSIST (0x0e * EXC_VECTOR_SIZE) ! 179: #define EXC_PERFORMANCE_MON (0x0f * EXC_VECTOR_SIZE) ! 180: #define EXC_603_IT_MISS (0x10 * EXC_VECTOR_SIZE) ! 181: #define EXC_603_DLT_MISS (0x11 * EXC_VECTOR_SIZE) ! 182: #define EXC_603_DST_MISS (0x12 * EXC_VECTOR_SIZE) ! 183: #define EXC_INSTRUCTION_BKPT (0x13 * EXC_VECTOR_SIZE) ! 184: #define EXC_SYSTEM_MANAGEMENT (0x14 * EXC_VECTOR_SIZE) ! 185: #define EXC_RESERVED_15 (0x15 * EXC_VECTOR_SIZE) ! 186: #define EXC_RESERVED_16 (0x16 * EXC_VECTOR_SIZE) ! 187: #define EXC_RESERVED_17 (0x17 * EXC_VECTOR_SIZE) ! 188: #define EXC_RESERVED_18 (0x18 * EXC_VECTOR_SIZE) ! 189: #define EXC_RESERVED_19 (0x19 * EXC_VECTOR_SIZE) ! 190: #define EXC_RESERVED_1A (0x1a * EXC_VECTOR_SIZE) ! 191: #define EXC_RESERVED_1B (0x1b * EXC_VECTOR_SIZE) ! 192: #define EXC_RESERVED_1C (0x1c * EXC_VECTOR_SIZE) ! 193: #define EXC_RESERVED_1D (0x1d * EXC_VECTOR_SIZE) ! 194: #define EXC_RESERVED_1E (0x1e * EXC_VECTOR_SIZE) ! 195: #define EXC_RESERVED_1F (0x1f * EXC_VECTOR_SIZE) ! 196: #define EXC_RUNMODE_TRACE (0x20 * EXC_VECTOR_SIZE) /* 601 only */ ! 197: #define EXC_RESERVED_21 (0x21 * EXC_VECTOR_SIZE) ! 198: #define EXC_RESERVED_22 (0x22 * EXC_VECTOR_SIZE) ! 199: #define EXC_RESERVED_23 (0x23 * EXC_VECTOR_SIZE) ! 200: #define EXC_RESERVED_24 (0x24 * EXC_VECTOR_SIZE) ! 201: #define EXC_RESERVED_25 (0x25 * EXC_VECTOR_SIZE) ! 202: #define EXC_RESERVED_26 (0x26 * EXC_VECTOR_SIZE) ! 203: #define EXC_RESERVED_27 (0x27 * EXC_VECTOR_SIZE) ! 204: #define EXC_RESERVED_28 (0x28 * EXC_VECTOR_SIZE) ! 205: #define EXC_RESERVED_29 (0x29 * EXC_VECTOR_SIZE) ! 206: #define EXC_RESERVED_2A (0x2a * EXC_VECTOR_SIZE) ! 207: #define EXC_RESERVED_2B (0x2b * EXC_VECTOR_SIZE) ! 208: #define EXC_RESERVED_2C (0x2c * EXC_VECTOR_SIZE) ! 209: #define EXC_RESERVED_2D (0x2d * EXC_VECTOR_SIZE) ! 210: #define EXC_RESERVED_2E (0x2e * EXC_VECTOR_SIZE) ! 211: #define EXC_RESERVED_2F (0x2f * EXC_VECTOR_SIZE) ! 212: ! 213: ! 214: /* software exceptions */ ! 215: ! 216: #define EXC_AST (0x100 * EXC_VECTOR_SIZE) ! 217: #define EXC_MAX EXC_RESERVED_2F /* Maximum exception no */ ! 218: ! 219: #endif /* _PPC_EXCEPTION_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.