~vcs-imports/qemu/git

« back to all changes in this revision

Viewing changes to target-arm/nwfpe/fpsr.h

  • Committer: blueswir1
  • Date: 2007-11-25 08:48:16 UTC
  • Revision ID: git-v1:b76482e76560345c00e7d6c89199ced204a926d2
 Fix buffer mux handling for unconnected serial ports


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3737 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    NetWinder Floating Point Emulator
 
3
    (c) Rebel.com, 1998-1999
 
4
 
 
5
    Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
 
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