127 lines
2.8 KiB
C
127 lines
2.8 KiB
C
/* @(#)trap.h 1.1 94/10/31 SMI */
|
|
|
|
/*
|
|
* Copyright (c) 1985 by Sun Microsystems, Inc.
|
|
*/
|
|
|
|
#ifndef _sparc_trap_h
|
|
#define _sparc_trap_h
|
|
|
|
/*
|
|
* Trap type values.
|
|
*/
|
|
#define TT(X) ((X)<<4)
|
|
|
|
/*
|
|
* The Coprocessor bit.
|
|
*/
|
|
#define CP_BIT 0x20
|
|
|
|
#define SPARC_V8_TRAPS
|
|
#ifdef SPARC_V8_TRAPS
|
|
/*
|
|
* The Error (versus Fault==Exception) bit.
|
|
*/
|
|
#define ERR_BIT 0x20
|
|
#endif
|
|
|
|
/*
|
|
* Hardware traps.
|
|
*/
|
|
#define T_RESET 0x00
|
|
#define T_TEXT_FAULT 0x01
|
|
#ifdef SPARC_V8_TRAPS
|
|
#define T_TEXT_ERROR (0x1 | ERR_BIT)
|
|
#endif
|
|
#define T_UNIMP_INSTR 0x02
|
|
#define T_PRIV_INSTR 0x03
|
|
#define T_FP_DISABLED 0x04
|
|
#define T_CP_DISABLED (0x4 | CP_BIT)
|
|
#define T_WIN_OVERFLOW 0x05
|
|
#define T_WIN_UNDERFLOW 0x06
|
|
#define T_ALIGNMENT 0x07
|
|
#define T_FP_EXCEPTION 0x08
|
|
#define T_CP_EXCEPTION (0x8 | CP_BIT)
|
|
#define T_DATA_FAULT 0x09
|
|
#ifdef SPARC_V8_TRAPS
|
|
#define T_DATA_ERROR (0x9 | ERR_BIT)
|
|
#endif
|
|
#define T_TAG_OVERFLOW 0x0A
|
|
#define T_INT 0x10
|
|
#define T_INT_LEVEL 0x0F
|
|
#define T_INT_LEVEL_1 0x11
|
|
#define T_INT_LEVEL_2 0x12
|
|
#define T_INT_LEVEL_3 0x13
|
|
#define T_INT_LEVEL_4 0x14
|
|
#define T_INT_LEVEL_5 0x15
|
|
#define T_INT_LEVEL_6 0x16
|
|
#define T_INT_LEVEL_7 0x17
|
|
#define T_INT_LEVEL_8 0x18
|
|
#define T_INT_LEVEL_9 0x19
|
|
#define T_INT_LEVEL_10 0x1A
|
|
#define T_INT_LEVEL_11 0x1B
|
|
#define T_INT_LEVEL_12 0x1C
|
|
#define T_INT_LEVEL_13 0x1D
|
|
#define T_INT_LEVEL_14 0x1E
|
|
#define T_INT_LEVEL_15 0x1F
|
|
#ifdef SPARC_V8_TRAPS
|
|
#define T_UMIMP_FLUSH 0x25
|
|
#endif
|
|
#define T_IDIV0 0x2A
|
|
#define T_DATA_STORE 0x2B
|
|
#ifdef SPARC_V8_TRAPS
|
|
#define T_DATA_MISS 0x2C
|
|
#define T_TEXT_MISS 0x3C
|
|
#endif
|
|
|
|
/*
|
|
* Software traps (ticc instructions).
|
|
*/
|
|
#define ST_SYSCALL 0x00
|
|
#define ST_BREAKPOINT 0x01
|
|
#define ST_DIV0 0x02
|
|
#define ST_FLUSH_WINDOWS 0x03
|
|
#define ST_CLEAN_WINDOWS 0x04
|
|
#define ST_RANGE_CHECK 0x05
|
|
#define ST_FIX_ALIGN 0x06
|
|
#define ST_INT_OVERFLOW 0x07
|
|
|
|
#define ST_GETCC 0x20
|
|
#define ST_SETCC 0x21
|
|
#if defined(sun4c) || defined(sun4m)
|
|
#define ST_MON_BREAKPOINT 0x7F
|
|
#endif sun4c
|
|
|
|
/*
|
|
* Software trap vectors 16 - 31 are reserved for use by the user
|
|
* and will not be usurped by Sun.
|
|
*/
|
|
|
|
/*
|
|
* Software trap type values.
|
|
*/
|
|
#define T_SOFTWARE_TRAP 0x80
|
|
#define T_ESOFTWARE_TRAP 0xFF
|
|
#define T_SYSCALL (T_SOFTWARE_TRAP + ST_SYSCALL)
|
|
#define T_BREAKPOINT (T_SOFTWARE_TRAP + ST_BREAKPOINT)
|
|
#define T_DIV0 (T_SOFTWARE_TRAP + ST_DIV0)
|
|
#define T_FLUSH_WINDOWS (T_SOFTWARE_TRAP + ST_FLUSH_WINDOWS)
|
|
#define T_CLEAN_WINDOWS (T_SOFTWARE_TRAP + ST_CLEAN_WINDOWS)
|
|
#define T_RANGE_CHECK (T_SOFTWARE_TRAP + ST_RANGE_CHECK)
|
|
#define T_FIX_ALIGN (T_SOFTWARE_TRAP + ST_FIX_ALIGN)
|
|
#define T_INT_OVERFLOW (T_SOFTWARE_TRAP + ST_INT_OVERFLOW)
|
|
|
|
#define T_GETCC (T_SOFTWARE_TRAP + ST_GETCC)
|
|
#define T_SETCC (T_SOFTWARE_TRAP + ST_SETCC)
|
|
|
|
/*
|
|
* Pseudo traps.
|
|
*/
|
|
#define T_INTERRUPT 0x100
|
|
#define T_SPURIOUS (T_INTERRUPT | T_INT)
|
|
#define T_FAULT 0x200
|
|
#define T_AST 0x400
|
|
#define T_ZERO 0x00
|
|
|
|
#endif /*!_sparc_trap_h*/
|