Annotation of qemu/linux-user/arm/nwfpe/fpsr.h, revision 1.1.1.1

1.1       root        1: /*
                      2:     NetWinder Floating Point Emulator
                      3:     (c) Rebel.com, 1998-1999
                      4: 
                      5:     Direct questions, comments to Scott Bambrough <[email protected]>
                      6: 
                      7:     This program is free software; you can redistribute it and/or modify
                      8:     it under the terms of the GNU General Public License as published by
                      9:     the Free Software Foundation; either version 2 of the License, or
                     10:     (at your option) any later version.
                     11: 
                     12:     This program is distributed in the hope that it will be useful,
                     13:     but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14:     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     15:     GNU General Public License for more details.
                     16: 
                     17:     You should have received a copy of the GNU General Public License
                     18:     along with this program; if not, write to the Free Software
                     19:     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                     20: */
                     21: 
                     22: #ifndef __FPSR_H__
                     23: #define __FPSR_H__
                     24: 
                     25: /*
                     26: The FPSR is a 32 bit register consisting of 4 parts, each exactly
                     27: one byte.
                     28: 
                     29:        SYSTEM ID
                     30:        EXCEPTION TRAP ENABLE BYTE
                     31:        SYSTEM CONTROL BYTE
                     32:        CUMULATIVE EXCEPTION FLAGS BYTE
                     33: 
                     34: The FPCR is a 32 bit register consisting of bit flags.
                     35: */
                     36: 
                     37: /* SYSTEM ID
                     38: ------------
                     39: Note: the system id byte is read only  */
                     40: 
                     41: typedef unsigned int FPSR;  /* type for floating point status register */
                     42: typedef unsigned int FPCR;  /* type for floating point control register */
                     43: 
                     44: #define MASK_SYSID             0xff000000
                     45: #define BIT_HARDWARE           0x80000000
                     46: #define FP_EMULATOR            0x01000000      /* System ID for emulator */
                     47: #define FP_ACCELERATOR         0x81000000      /* System ID for FPA11 */
                     48: 
                     49: /* EXCEPTION TRAP ENABLE BYTE
                     50: ----------------------------- */
                     51: 
                     52: #define MASK_TRAP_ENABLE       0x00ff0000
                     53: #define MASK_TRAP_ENABLE_STRICT        0x001f0000
                     54: #define BIT_IXE                0x00100000   /* inexact exception enable */
                     55: #define BIT_UFE                0x00080000   /* underflow exception enable */
                     56: #define BIT_OFE                0x00040000   /* overflow exception enable */
                     57: #define BIT_DZE                0x00020000   /* divide by zero exception enable */
                     58: #define BIT_IOE                0x00010000   /* invalid operation exception enable */
                     59: 
                     60: /* SYSTEM CONTROL BYTE
                     61: ---------------------- */
                     62: 
                     63: #define MASK_SYSTEM_CONTROL    0x0000ff00
                     64: #define MASK_TRAP_STRICT       0x00001f00
                     65: 
                     66: #define BIT_AC 0x00001000      /* use alternative C-flag definition
                     67:                                   for compares */
                     68: #define BIT_EP 0x00000800      /* use expanded packed decimal format */
                     69: #define BIT_SO 0x00000400      /* select synchronous operation of FPA */
                     70: #define BIT_NE 0x00000200      /* NaN exception bit */
                     71: #define BIT_ND 0x00000100      /* no denormalized numbers bit */
                     72: 
                     73: /* CUMULATIVE EXCEPTION FLAGS BYTE
                     74: ---------------------------------- */
                     75: 
                     76: #define MASK_EXCEPTION_FLAGS           0x000000ff
                     77: #define MASK_EXCEPTION_FLAGS_STRICT    0x0000001f
                     78: 
                     79: #define BIT_IXC                0x00000010      /* inexact exception flag */
                     80: #define BIT_UFC                0x00000008      /* underflow exception flag */
                     81: #define BIT_OFC                0x00000004      /* overfloat exception flag */
                     82: #define BIT_DZC                0x00000002      /* divide by zero exception flag */
                     83: #define BIT_IOC                0x00000001      /* invalid operation exception flag */
                     84: 
                     85: /* Floating Point Control Register
                     86: ----------------------------------*/
                     87: 
                     88: #define BIT_RU         0x80000000      /* rounded up bit */
                     89: #define BIT_IE         0x10000000      /* inexact bit */
                     90: #define BIT_MO         0x08000000      /* mantissa overflow bit */
                     91: #define BIT_EO         0x04000000      /* exponent overflow bit */
                     92: #define BIT_SB         0x00000800      /* store bounce */
                     93: #define BIT_AB         0x00000400      /* arithmetic bounce */
                     94: #define BIT_RE         0x00000200      /* rounding exception */
                     95: #define BIT_DA         0x00000100      /* disable FPA */
                     96: 
                     97: #define MASK_OP                0x00f08010      /* AU operation code */
                     98: #define MASK_PR                0x00080080      /* AU precision */
                     99: #define MASK_S1                0x00070000      /* AU source register 1 */
                    100: #define MASK_S2                0x00000007      /* AU source register 2 */
                    101: #define MASK_DS                0x00007000      /* AU destination register */
                    102: #define MASK_RM                0x00000060      /* AU rounding mode */
                    103: #define MASK_ALU       0x9cfff2ff      /* only ALU can write these bits */
                    104: #define MASK_RESET     0x00000d00      /* bits set on reset, all others cleared */
                    105: #define MASK_WFC       MASK_RESET
                    106: #define MASK_RFC       ~MASK_RESET
                    107: 
                    108: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.