machtrap.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_MACHTRAP_H
#define _SYS_MACHTRAP_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* This file is machine specific as is.
* Some trap types could be made common
* for all sparcs, but that is a project
* in and of itself.
*/
/*
* Hardware traps.
*/
#define T_POR 0x001
#define T_WDR 0x002
#define T_XIR 0x003
#define T_SIR 0x004
#define T_RED_EXCEPTION 0x005
#define T_INSTR_EXCEPTION 0x008
#define T_INSTR_MMU_MISS 0x009
#define T_INSTR_ERROR 0x00A
#define T_UNIMP_INSTR 0x010
#define T_PRIV_INSTR 0x011
#define T_FP_DISABLED 0x020
#define T_FP_EXCEPTION_IEEE 0x021
#define T_FP_EXCEPTION_OTHER 0x022
#define T_TAG_OVERFLOW 0x023
#define T_CLEAN_WINDOW 0x024
#define T_IDIV0 0x028
#define T_DATA_EXCEPTION 0x030
#define T_DATA_MMU_MISS 0x031
#define T_DATA_ERROR 0x032
#define T_DATA_PROT 0x033
#define T_ALIGNMENT 0x034
#define T_LDDF_ALIGN 0x035
#define T_STDF_ALIGN 0x036
#define T_PRIV_ACTION 0x037
#define T_ASYNC_ERROR 0x040
#define T_INT_LEVEL_1 0x041
#define T_INT_LEVEL_2 0x042
#define T_INT_LEVEL_3 0x043
#define T_INT_LEVEL_4 0x044
#define T_INT_LEVEL_5 0x045
#define T_INT_LEVEL_6 0x046
#define T_INT_LEVEL_7 0x047
#define T_INT_LEVEL_8 0x048
#define T_INT_LEVEL_9 0x049
#define T_INT_LEVEL_10 0x04A
#define T_INT_LEVEL_11 0x04B
#define T_INT_LEVEL_12 0x04C
#define T_INT_LEVEL_13 0x04D
#define T_INT_LEVEL_14 0x04E
#define T_INT_LEVEL_15 0x04F
#define T_VECTORED_INT 0x060
#define T_PA_WATCHPOINT 0x061
#define T_VA_WATCHPOINT 0x062
#define T_FAST_INSTR_MMU_MISS 0x064
#define T_FAST_DATA_MMU_MISS 0x068
#define T_FAST_DATA_MMU_PROT 0x06C
#define T_WIN_OVERFLOW 0x080
#define T_WIN_UNDERFLOW 0x0C0
/*
* T_TL1 is the bit that is used to compute the trap vector address when the
* trap is taken at TL>0. This flag is for trap_table.s use, not trap.c use.
*/
#define T_TL1 0x200
/*
* Software trap type values.
*/
#define T_SOFTWARE_TRAP 0x100
#define T_ESOFTWARE_TRAP 0x1FF
#define T_OSYSCALL (T_SOFTWARE_TRAP + ST_OSYSCALL)
#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_SYSCALL (T_SOFTWARE_TRAP + ST_SYSCALL)
#define T_GETCC (T_SOFTWARE_TRAP + ST_GETCC)
#define T_SETCC (T_SOFTWARE_TRAP + ST_SETCC)
#define T_AST 0x200
#define T_FLUSH_PCB (T_AST + 0x10)
#define T_SYS_RTT_PAGE (T_AST + 0x20)
#define T_SYS_RTT_ALIGN (T_AST + 0x30)
#define T_FLUSHW (T_AST + 0x40)
/* user mode flag added to trap type */
#define T_USER 0x10000
#ifdef __cplusplus
}
#endif
#endif /* _SYS_MACHTRAP_H */