[BACK]Return to trap.h CVS log [TXT][DIR] Up to [local] / sys / arch / sparc64 / include

Annotation of sys/arch/sparc64/include/trap.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: trap.h,v 1.3 2003/07/09 02:22:48 jason Exp $  */
                      2: /*     $NetBSD: trap.h,v 1.4 1999/06/07 05:28:04 eeh Exp $ */
                      3:
                      4: /*
                      5:  * Copyright (c) 1996-1999 Eduardo Horvath
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  *
                     13:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR  ``AS IS'' AND
                     14:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     15:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     16:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR  BE LIABLE
                     17:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     18:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     19:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     20:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     21:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     22:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     23:  * SUCH DAMAGE.
                     24:  *
                     25:  */
                     26:
                     27:
                     28: #ifndef        _MACHINE_TRAP_H
                     29: #define        _MACHINE_TRAP_H
                     30:
                     31: /*     trap            vec       (pri) description     */
                     32: /*                     0x000      unused */
                     33: #define        T_POR           0x001   /* (0) power on reset */
                     34: #define T_WDR          0x002   /* (1) watchdog reset */
                     35: #define T_XIR          0x003   /* (1) externally initiated reset */
                     36: #define T_SIR          0x004   /* (1) software initiated reset */
                     37: #define T_RED_EXCEPTION        0x005   /* (1) RED state exception */
                     38: /*                     0x006      unused */
                     39: /*                     0x007      unused */
                     40: #define T_INST_EXCEPT  0x008   /* (5) instruction access exception */
                     41: #define T_TEXTFAULT    0x009   /* (2) ? Text fault */
                     42: #define T_INST_ERROR   0x00a   /* (3) instruction access error */
                     43: /*                     0x00b      unused */
                     44: /*     through         0x00f      unused */
                     45: #define T_ILLINST      0x010   /* (7) illegal instruction */
                     46: #define T_PRIVINST     0x011   /* (6) privileged opcode */
                     47: #define        T_UNIMP_LDD     0x012   /* (6) unimplemented LDD */
                     48: #define        T_UNIMP_STD     0x013   /* (6) unimplemented STD */
                     49: /*                     0x014      unused */
                     50: /*     through         0x01f      unused */
                     51: #define T_FPDISABLED   0x020   /* (8) fpu disabled */
                     52: #define T_FP_IEEE_754  0x021   /* (11) ieee 754 exception */
                     53: #define T_FP_OTHER     0x022   /* (11) other fp exception */
                     54: #define T_TAGOF                0x023   /* (14) tag overflow */
                     55: #define T_CLEAN_WINDOW 0x024   /* (10) clean window exception */
                     56: /*                     0x025      unused */
                     57: /*     through         0x027      unused */
                     58: #define T_DIV0         0x028   /* (15) division routine was handed 0 */
                     59: #define        T_PROCERR       0x029   /* (4) internal processor error */
                     60: /*                     0x02a      unused */
                     61: /*     through         0x02f      unused */
                     62: #define        T_DATAFAULT     0x030   /* (12) address fault during data fetch */
                     63: #define        T_DATA_MMU_MISS 0x031   /* (12) data access MMU miss */
                     64: #define T_DATA_ERROR   0x032   /* (12) data access error */
                     65: #define T_DATA_PROT    0x033   /* (12) Data protection ??? */
                     66: #define        T_ALIGN         0x034   /* (10) address not properly aligned */
                     67: #define        T_LDDF_ALIGN    0x035   /* (10) LDDF address not properly aligned */
                     68: #define        T_STDF_ALIGN    0x036   /* (10) STDF address not properly aligned */
                     69: #define T_PRIVACT      0x037   /* (11) privileged action */
                     70: #define        T_LDQF_ALIGN    0x038   /* (10) LDQF address not properly aligned */
                     71: #define        T_STQF_ALIGN    0x039   /* (10) STQF address not properly aligned */
                     72: /*                     0x03a      unused */
                     73: /*     through         0x03f      unused */
                     74: #define T_ASYNC_ERROR  0x040   /* (2) ???? */
                     75: #define        T_L1INT         0x041   /* (31) level 1 interrupt */
                     76: #define        T_L2INT         0x042   /* (30) level 2 interrupt */
                     77: #define        T_L3INT         0x043   /* (29) level 3 interrupt */
                     78: #define        T_L4INT         0x044   /* (28) level 4 interrupt */
                     79: #define        T_L5INT         0x045   /* (27) level 5 interrupt */
                     80: #define        T_L6INT         0x046   /* (26) level 6 interrupt */
                     81: #define        T_L7INT         0x047   /* (25) level 7 interrupt */
                     82: #define        T_L8INT         0x048   /* (24) level 8 interrupt */
                     83: #define        T_L9INT         0x049   /* (23) level 9 interrupt */
                     84: #define        T_L10INT        0x04a   /* (22) level 10 interrupt */
                     85: #define        T_L11INT        0x04b   /* (21) level 11 interrupt */
                     86: #define        T_L12INT        0x04c   /* (20) level 12 interrupt */
                     87: #define        T_L13INT        0x04d   /* (19) level 13 interrupt */
                     88: #define        T_L14INT        0x04e   /* (18) level 14 interrupt */
                     89: #define        T_L15INT        0x04f   /* (17) level 15 interrupt */
                     90: /*                     0x050      unused */
                     91: /*     through         0x05f      unused */
                     92: #define T_INTVEC       0x060   /* (16) interrupt vector [Interrupt Global Regs]*/
                     93: #define T_PA_WATCHPT   0x061   /* (12) Physical addr data watchpoint */
                     94: #define T_VA_WATCHPT   0x062   /* (11) Virtual addr data watchpoint */
                     95: #define T_ECCERR       0x063   /* (33) ECC correction error */
                     96: #define T_FIMMU_MISS   0x064   /* (2) fast instruction access MMU miss */
                     97: /*     through         0x067      unused */
                     98: #define T_FDMMU_MISS   0x068   /* (2) fast data access MMU miss */
                     99: /*     through         0x06b      unused */
                    100: #define T_FDMMU_PROT   0x06c   /* (2) fast data access protection */
                    101: /*     through         0x06f      unused */
                    102: /*  0x070...0x07f implementation dependent exceptions */
                    103: #define T_SPILL_N_NORM 0x080   /* (9) spill (n=0..7) normal */
                    104: /*     through         0x09f      unused */
                    105: #define T_SPILL_N_OTHER        0x0a0   /* (9) spill (n=0..7) other */
                    106: /*     through         0x0bf      unused */
                    107: #define T_FILL_N_NORM  0x0c0   /* (9) fill (n=0..7) normal */
                    108: /*     through         0x0df      unused */
                    109: #define T_FILL_N_OTHER 0x0e0   /* (9) fill (n=0..7) other */
                    110: /*     through         0x0ff      unused */
                    111:
                    112: /* beginning of `user' vectors (from trap instructions) - all priority 16 */
                    113: #define        T_SUN_SYSCALL   0x100   /* system call */
                    114: #define        T_BREAKPOINT    0x101   /* breakpoint `instruction' */
                    115: #define        T_UDIV0         0x102   /* division routine was handed 0 */
                    116: #define        T_FLUSHWIN      0x103   /* flush windows */
                    117: #define        T_CLEANWIN      0x104   /* provide clean windows */
                    118: #define        T_RANGECHECK    0x105   /* ? */
                    119: #define        T_FIXALIGN      0x106   /* fix up unaligned accesses */
                    120: #define        T_INTOF         0x107   /* integer overflow ? */
                    121: #define        T_SVR4_SYSCALL  0x108   /* SVR4 system call */
                    122: #define        T_BSD_SYSCALL   0x109   /* BSD system call */
                    123: #define        T_KGDB_EXEC     0x10a   /* for kernel gdb */
                    124:
                    125: /* 0x10b..0x1ff are currently unallocated, except the following */
                    126: #define T_SVR4_GETCC           0x120
                    127: #define T_SVR4_SETCC           0x121
                    128: #define T_SVR4_GETPSR          0x122
                    129: #define T_SVR4_SETPSR          0x123
                    130: #define T_SVR4_GETHRTIME       0x124
                    131: #define T_SVR4_GETHRVTIME      0x125
                    132: #define T_SVR4_GETHRESTIME     0x127
                    133: #define T_GETCC                        0x132
                    134: #define T_SETCC                        0x133
                    135: #define T_SVID_SYSCALL         0x164
                    136: #define        T_SPARC_INTL_SYSCALL    0x165
                    137: #define        T_OS_VENDOR_SYSCALL     0x166
                    138: #define        T_HW_OEM_SYSCALL        0x167
                    139: #define T_RTF_DEF_TRAP         0x168
                    140:
                    141: #ifdef _KERNEL                 /* pseudo traps for locore.s */
                    142: #define        T_RWRET         -1      /* need first user window for trap return */
                    143: #define        T_AST           -2      /* no-op, just needed reschedule or profile */
                    144: #endif
                    145:
                    146: /* flags to system call (flags in %g1 along with syscall number) */
                    147: #define        SYSCALL_G2RFLAG 0x400   /* on success, return to %g2 rather than npc */
                    148: #define        SYSCALL_G7RFLAG 0x800   /* use %g7 as above (deprecated) */
                    149:
                    150: /*
                    151:  * `software trap' macros to keep people happy (sparc v8 manual says not
                    152:  * to set the upper bits).
                    153:  */
                    154: #define        ST_BREAKPOINT   (T_BREAKPOINT & 0x7f)
                    155: #define        ST_DIV0         (T_DIV0 & 0x7f)
                    156: #define        ST_FLUSHWIN     (T_FLUSHWIN & 0x7f)
                    157: #define        ST_SYSCALL      (T_SUN_SYSCALL & 0x7f)
                    158:
                    159: #endif /* _MACHINE_TRAP_H_ */

CVSweb