xref: /titanic_51/usr/src/uts/sparc/v7/sys/psr.h (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  * Copyright 1986,2003 Sun Microsystems, Inc.  All rights reserved.
24*7c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
25*7c478bd9Sstevel@tonic-gate  */
26*7c478bd9Sstevel@tonic-gate 
27*7c478bd9Sstevel@tonic-gate #ifndef _SYS_PSR_H
28*7c478bd9Sstevel@tonic-gate #define	_SYS_PSR_H
29*7c478bd9Sstevel@tonic-gate 
30*7c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI" /* from SunOS psl.h 1.2 */
31*7c478bd9Sstevel@tonic-gate 
32*7c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
33*7c478bd9Sstevel@tonic-gate extern "C" {
34*7c478bd9Sstevel@tonic-gate #endif
35*7c478bd9Sstevel@tonic-gate 
36*7c478bd9Sstevel@tonic-gate /*
37*7c478bd9Sstevel@tonic-gate  * Definition of bits in the SPARC PSR (Processor Status Register)
38*7c478bd9Sstevel@tonic-gate  *  ________________________________________________________________________
39*7c478bd9Sstevel@tonic-gate  * | IMPL | VER	|	ICC	| resvd	| EC | EF | PIL	| S | PS | ET | CWP |
40*7c478bd9Sstevel@tonic-gate  * |	  |	| N | Z | V | C |	|    |	  |	|   |	 |    |	    |
41*7c478bd9Sstevel@tonic-gate  * |------|-----|---|---|---|---|-------|----|----|-----|---|----|----|-----|
42*7c478bd9Sstevel@tonic-gate  *  31  28 27 24  23  22  21  20 19   14  13   12  11  8   7   6    5  4   0
43*7c478bd9Sstevel@tonic-gate  *
44*7c478bd9Sstevel@tonic-gate  * Reserved bits are defined to be initialized to zero and must
45*7c478bd9Sstevel@tonic-gate  * be preserved if written, for compatabily with future revisions.
46*7c478bd9Sstevel@tonic-gate  */
47*7c478bd9Sstevel@tonic-gate 
48*7c478bd9Sstevel@tonic-gate #define	PSR_CWP		0x0000001F	/* current window pointer */
49*7c478bd9Sstevel@tonic-gate #define	PSR_ET		0x00000020	/* enable traps */
50*7c478bd9Sstevel@tonic-gate #define	PSR_PS		0x00000040	/* previous supervisor mode */
51*7c478bd9Sstevel@tonic-gate #define	PSR_S		0x00000080	/* supervisor mode */
52*7c478bd9Sstevel@tonic-gate #define	PSR_PIL		0x00000F00	/* processor interrupt level */
53*7c478bd9Sstevel@tonic-gate #define	PSR_EF		0x00001000	/* enable floating point unit */
54*7c478bd9Sstevel@tonic-gate #define	PSR_EC		0x00002000	/* enable coprocessor */
55*7c478bd9Sstevel@tonic-gate #define	PSR_RSV		0x000FC000	/* reserved */
56*7c478bd9Sstevel@tonic-gate #define	PSR_ICC		0x00F00000	/* integer condition codes */
57*7c478bd9Sstevel@tonic-gate #define	PSR_C		0x00100000	/* carry bit */
58*7c478bd9Sstevel@tonic-gate #define	PSR_V		0x00200000	/* overflow bit */
59*7c478bd9Sstevel@tonic-gate #define	PSR_Z		0x00400000	/* zero bit */
60*7c478bd9Sstevel@tonic-gate #define	PSR_N		0x00800000	/* negative bit */
61*7c478bd9Sstevel@tonic-gate #define	PSR_VER		0x0F000000	/* mask version */
62*7c478bd9Sstevel@tonic-gate #define	PSR_IMPL	0xF0000000	/* implementation */
63*7c478bd9Sstevel@tonic-gate 
64*7c478bd9Sstevel@tonic-gate #define	PSL_ALLCC	PSR_ICC		/* for portability */
65*7c478bd9Sstevel@tonic-gate 
66*7c478bd9Sstevel@tonic-gate #ifndef _ASM
67*7c478bd9Sstevel@tonic-gate typedef int	psw_t;
68*7c478bd9Sstevel@tonic-gate #endif
69*7c478bd9Sstevel@tonic-gate 
70*7c478bd9Sstevel@tonic-gate /*
71*7c478bd9Sstevel@tonic-gate  * Handy psr values.
72*7c478bd9Sstevel@tonic-gate  */
73*7c478bd9Sstevel@tonic-gate #define	PSL_USER	(PSR_S)		/* initial user psr */
74*7c478bd9Sstevel@tonic-gate #define	PSL_USERMASK	(PSR_ICC)	/* user variable psr bits */
75*7c478bd9Sstevel@tonic-gate 
76*7c478bd9Sstevel@tonic-gate #define	PSL_UBITS	(PSR_ICC|PSR_EF)	/* user modifiable fields */
77*7c478bd9Sstevel@tonic-gate 						/* should set PSR_EC also */
78*7c478bd9Sstevel@tonic-gate 
79*7c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
80*7c478bd9Sstevel@tonic-gate }
81*7c478bd9Sstevel@tonic-gate #endif
82*7c478bd9Sstevel@tonic-gate 
83*7c478bd9Sstevel@tonic-gate #endif	/* _SYS_PSR_H */
84