1*4a968b52Schs /* $NetBSD: fsr.h,v 1.5 2010/08/08 18:44:15 chs Exp $ */ 2274a9076Sderaadt 34588caefSderaadt /* 44588caefSderaadt * Copyright (c) 1992, 1993 54588caefSderaadt * The Regents of the University of California. All rights reserved. 64588caefSderaadt * 74588caefSderaadt * This software was developed by the Computer Systems Engineering group 84588caefSderaadt * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and 94588caefSderaadt * contributed to Berkeley. 104588caefSderaadt * 114588caefSderaadt * All advertising materials mentioning features or use of this software 124588caefSderaadt * must display the following acknowledgement: 134588caefSderaadt * This product includes software developed by the University of 144588caefSderaadt * California, Lawrence Berkeley Laboratory. 154588caefSderaadt * 164588caefSderaadt * Redistribution and use in source and binary forms, with or without 174588caefSderaadt * modification, are permitted provided that the following conditions 184588caefSderaadt * are met: 194588caefSderaadt * 1. Redistributions of source code must retain the above copyright 204588caefSderaadt * notice, this list of conditions and the following disclaimer. 214588caefSderaadt * 2. Redistributions in binary form must reproduce the above copyright 224588caefSderaadt * notice, this list of conditions and the following disclaimer in the 234588caefSderaadt * documentation and/or other materials provided with the distribution. 24aad01611Sagc * 3. Neither the name of the University nor the names of its contributors 254588caefSderaadt * may be used to endorse or promote products derived from this software 264588caefSderaadt * without specific prior written permission. 274588caefSderaadt * 284588caefSderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 294588caefSderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 304588caefSderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 314588caefSderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 324588caefSderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 334588caefSderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 344588caefSderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 354588caefSderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 364588caefSderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 374588caefSderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 384588caefSderaadt * SUCH DAMAGE. 394588caefSderaadt * 404588caefSderaadt * @(#)fsr.h 8.1 (Berkeley) 6/11/93 414588caefSderaadt */ 424588caefSderaadt 43*4a968b52Schs #ifndef _SPARC_FSR_H_ 44*4a968b52Schs #define _SPARC_FSR_H_ 454588caefSderaadt 464588caefSderaadt /* 474588caefSderaadt * Bits in FSR. 484588caefSderaadt */ 494588caefSderaadt #define FSR_RD 0xc0000000 /* rounding direction */ 504588caefSderaadt #define FSR_RD_RN 0 /* round to nearest */ 514588caefSderaadt #define FSR_RD_RZ 1 /* round towards 0 */ 524588caefSderaadt #define FSR_RD_RP 2 /* round towards +inf */ 534588caefSderaadt #define FSR_RD_RM 3 /* round towards -inf */ 544588caefSderaadt #define FSR_RD_SHIFT 30 554588caefSderaadt #define FSR_RD_MASK 0x03 564588caefSderaadt 574588caefSderaadt #define FSR_RP 0x30000000 /* extended rounding precision */ 584588caefSderaadt #define FSR_RP_X 0 /* extended stays extended */ 594588caefSderaadt #define FSR_RP_S 1 /* extended => single */ 604588caefSderaadt #define FSR_RP_D 2 /* extended => double */ 614588caefSderaadt #define FSR_RP_80 3 /* extended => 80-bit */ 624588caefSderaadt #define FSR_RP_SHIFT 28 634588caefSderaadt #define FSR_RP_MASK 0x03 644588caefSderaadt 654588caefSderaadt #define FSR_TEM 0x0f800000 /* trap enable mask */ 664588caefSderaadt #define FSR_TEM_SHIFT 23 674588caefSderaadt #define FSR_TEM_MASK 0x1f 684588caefSderaadt 694588caefSderaadt #define FSR_NS 0x00400000 /* ``nonstandard mode'' */ 704588caefSderaadt #define FSR_AU 0x00400000 /* aka abrupt underflow mode */ 714588caefSderaadt #define FSR_MBZ 0x00300000 /* reserved; must be zero */ 724588caefSderaadt 734588caefSderaadt #define FSR_VER 0x000e0000 /* version bits */ 744588caefSderaadt #define FSR_VER_SHIFT 17 754588caefSderaadt #define FSR_VER_MASK 0x07 764588caefSderaadt 774588caefSderaadt #define FSR_FTT 0x0001c000 /* FP trap type */ 784588caefSderaadt #define FSR_TT_NONE 0 /* no trap */ 794588caefSderaadt #define FSR_TT_IEEE 1 /* IEEE exception */ 804588caefSderaadt #define FSR_TT_UNFIN 2 /* unfinished operation */ 814588caefSderaadt #define FSR_TT_UNIMP 3 /* unimplemented operation */ 824588caefSderaadt #define FSR_TT_SEQ 4 /* sequence error */ 834588caefSderaadt #define FSR_TT_HWERR 5 /* hardware error (unrecoverable) */ 84*4a968b52Schs #define FSR_TT_INVR 6 /* invalid fp register */ 85*4a968b52Schs #define FSR_TT_RESV 7 /* reserved */ 864588caefSderaadt #define FSR_FTT_SHIFT 14 87*4a968b52Schs #define FSR_FTT_MASK 0x07 884588caefSderaadt 894588caefSderaadt #define FSR_QNE 0x00002000 /* queue not empty */ 904588caefSderaadt #define FSR_PR 0x00001000 /* partial result */ 914588caefSderaadt 924588caefSderaadt #define FSR_FCC 0x00000c00 /* FP condition codes */ 934588caefSderaadt #define FSR_CC_EQ 0 /* f1 = f2 */ 944588caefSderaadt #define FSR_CC_LT 1 /* f1 < f2 */ 954588caefSderaadt #define FSR_CC_GT 2 /* f1 > f2 */ 964588caefSderaadt #define FSR_CC_UO 3 /* (f1,f2) unordered */ 974588caefSderaadt #define FSR_FCC_SHIFT 10 984588caefSderaadt #define FSR_FCC_MASK 0x03 994588caefSderaadt 1004588caefSderaadt #define FSR_AX 0x000003e0 /* accrued exceptions */ 1014588caefSderaadt #define FSR_AX_SHIFT 5 1024588caefSderaadt #define FSR_AX_MASK 0x1f 1034588caefSderaadt #define FSR_CX 0x0000001f /* current exceptions */ 1044588caefSderaadt #define FSR_CX_SHIFT 0 1054588caefSderaadt #define FSR_CX_MASK 0x1f 1064588caefSderaadt 1074588caefSderaadt /* The following exceptions apply to TEM, AX, and CX. */ 1084588caefSderaadt #define FSR_NV 0x10 /* invalid operand */ 1094588caefSderaadt #define FSR_OF 0x08 /* overflow */ 1104588caefSderaadt #define FSR_UF 0x04 /* underflow */ 1114588caefSderaadt #define FSR_DZ 0x02 /* division by zero */ 1124588caefSderaadt #define FSR_NX 0x01 /* inexact result */ 1134588caefSderaadt 114*4a968b52Schs #ifdef __sparc_v9__ 115*4a968b52Schs 116*4a968b52Schs /* 117*4a968b52Schs * The rest of these are only for sparcv9. 118*4a968b52Schs */ 119*4a968b52Schs 120*4a968b52Schs /* These are the 3 new v9 fcc's */ 121*4a968b52Schs #define FSR_FCC3 0x0000003000000000ULL /* FP condition codes */ 122*4a968b52Schs #define FSR_FCC3_SHIFT 36 123*4a968b52Schs 124*4a968b52Schs #define FSR_FCC2 0x0000000c00000000ULL /* FP condition codes */ 125*4a968b52Schs #define FSR_FCC2_SHIFT 34 126*4a968b52Schs 127*4a968b52Schs #define FSR_FCC1 0x0000000300000000ULL /* FP condition codes */ 128*4a968b52Schs #define FSR_FCC1_SHIFT 32 129*4a968b52Schs 130*4a968b52Schs /* 131*4a968b52Schs * Bits in FPRS. 132*4a968b52Schs */ 133*4a968b52Schs #define FPRS_FEF 0x04 /* Enable FP -- must be set to enable FP regs */ 134*4a968b52Schs #define FPRS_DU 0x02 /* Dirty upper -- upper fp regs are dirty */ 135*4a968b52Schs #define FPRS_DL 0x01 /* Dirty lower -- lower fp regs are dirty */ 136*4a968b52Schs 137*4a968b52Schs #endif /* __sparc_v9__ */ 138*4a968b52Schs 139*4a968b52Schs #endif /* _SPARC_FSR_H_ */ 140