ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/uae_cpu/fpu/fpu_x86.h
(Generate patch)

Comparing BasiliskII/src/uae_cpu/fpu/fpu_x86.h (file contents):
Revision 1.1 by gbeauche, 2001-03-20T18:05:36Z vs.
Revision 1.2 by gbeauche, 2002-09-13T12:50:40Z

# Line 1 | Line 1
1   /*
2 < *  fpu_x86.h - 68881/68040 fpu code for x86/Windows and Linux/x86.
2 > *  fpu/fpu_x86.h - Extra Definitions for the X86 assembly FPU core
3   *
4 < *  Basilisk II (C) 1997-2001 Christian Bauer
5 < *
6 < *  MC68881 emulation
7 < *
8 < *  Based on UAE FPU, original copyright 1996 Herman ten Brugge,
9 < *  rewritten by Lauri Pesonen 1999-2000,
10 < *  accomodated to GCC's Extended Asm syntax by Gwenole Beauchesne 2000.
4 > *  Basilisk II (C) 1997-1999 Christian Bauer
5   *
6 + *  MC68881/68040 fpu emulation
7 + *  
8 + *  Original UAE FPU, copyright 1996 Herman ten Brugge
9 + *  Rewrite for x86, copyright 1999-2000 Lauri Pesonen
10 + *  New framework, copyright 2000 Gwenole Beauchesne
11 + *  Adapted for JIT compilation (c) Bernd Meyer, 2000
12 + *  
13   *  This program is free software; you can redistribute it and/or modify
14   *  it under the terms of the GNU General Public License as published by
15   *  the Free Software Foundation; either version 2 of the License, or
# Line 24 | Line 25
25   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26   */
27  
28 < /* gb-- defined in newcpu.h
29 < // is_integral: true == 68040, false == 68881
30 < void fpu_set_integral_fpu( bool is_integral );
31 <
32 < // MUST be called before the cpu starts up.
33 < void fpu_init( void );
34 <
35 < // Finalize.
36 < void fpu_exit( void );
37 <
38 < // Soft reset.
39 < void fpu_reset( void );
40 < */
41 <
42 < // The same as original. "ftrapcc_opp" is bound to change soon.
43 < /* gb-- defined in newcpu.h
44 < void REGPARAM2 fpp_opp (uae_u32, uae_u16);
45 < void REGPARAM2 fdbcc_opp (uae_u32, uae_u16);
46 < void REGPARAM2 fscc_opp (uae_u32, uae_u16);
47 < void REGPARAM2 ftrapcc_opp (uae_u32,uaecptr);
48 < void REGPARAM2 fbcc_opp (uae_u32, uaecptr, uae_u32);
49 < void REGPARAM2 fsave_opp (uae_u32);
50 < void REGPARAM2 frestore_opp (uae_u32);
51 < */
52 <
53 < /* ---------------------------- Motorola ---------------------------- */
54 <
55 < // Exception byte
56 < #define BSUN            0x00008000
57 < #define SNAN            0x00004000
58 < #define OPERR           0x00002000
59 < #define OVFL            0x00001000
60 < #define UNFL            0x00000800
61 < #define DZ                      0x00000400
62 < #define INEX2           0x00000200
63 < #define INEX1           0x00000100
64 <
65 < // Accrued exception byte
66 < #define ACCR_IOP        0x80
67 < #define ACCR_OVFL       0x40
68 < #define ACCR_UNFL       0x20
69 < #define ACCR_DZ         0x10
70 < #define ACCR_INEX       0x08
71 <
72 < // fpcr rounding modes
73 < #define ROUND_CONTROL_MASK                              0x30
74 < #define ROUND_TO_NEAREST                                0
75 < #define ROUND_TO_ZERO                                   0x10
76 < #define ROUND_TO_NEGATIVE_INFINITY              0x20
77 < #define ROUND_TO_POSITIVE_INFINITY              0x30
78 <
79 < // fpcr precision control
80 < #define PRECISION_CONTROL_MASK                  0xC0
81 < #define PRECISION_CONTROL_EXTENDED              0
82 < #define PRECISION_CONTROL_DOUBLE                0x80
83 < #define PRECISION_CONTROL_SINGLE                0x40
84 < #define PRECISION_CONTROL_UNDEFINED             0xC0
85 <
86 <
87 < /* ---------------------------- Intel ---------------------------- */
88 <
89 < #define CW_RESET                0x0040           // initial CW value after RESET
90 < #define CW_FINIT                0x037F           // initial CW value after FINIT
91 < #define SW_RESET                0x0000           // initial SW value after RESET
92 < #define SW_FINIT                0x0000           // initial SW value after FINIT
93 < #define TW_RESET                0x5555           // initial TW value after RESET
94 < #define TW_FINIT                0x0FFF           // initial TW value after FINIT
95 <
96 < #define CW_X                    0x1000           // infinity control
97 < #define CW_RC_ZERO              0x0C00           // rounding control toward zero
98 < #define CW_RC_UP                0x0800           // rounding control toward +
99 < #define CW_RC_DOWN              0x0400           // rounding control toward -
100 < #define CW_RC_NEAR              0x0000           // rounding control toward even
101 < #define CW_PC_EXTENDED          0x0300           // precision control 64bit
102 < #define CW_PC_DOUBLE            0x0200           // precision control 53bit
103 < #define CW_PC_RESERVED          0x0100           // precision control reserved
104 < #define CW_PC_SINGLE            0x0000           // precision control 24bit
105 < #define CW_PM                   0x0020           // precision exception mask
106 < #define CW_UM                   0x0010           // underflow exception mask
107 < #define CW_OM                   0x0008           // overflow exception mask
108 < #define CW_ZM                   0x0004           // zero divide exception mask
109 < #define CW_DM                   0x0002           // denormalized operand exception mask
110 < #define CW_IM                   0x0001           // invalid operation exception mask
111 <
112 < #define SW_B                    0x8000           // busy flag
113 < #define SW_C3                   0x4000           // condition code flag 3
114 < #define SW_TOP_7                0x3800           // top of stack = ST(7)
115 < #define SW_TOP_6                0x3000           // top of stack = ST(6)
116 < #define SW_TOP_5                0x2800           // top of stack = ST(5)
117 < #define SW_TOP_4                0x2000           // top of stack = ST(4)
118 < #define SW_TOP_3                0x1800           // top of stack = ST(3)
119 < #define SW_TOP_2                0x1000           // top of stack = ST(2)
120 < #define SW_TOP_1                0x0800           // top of stack = ST(1)
121 < #define SW_TOP_0                0x0000           // top of stack = ST(0)
122 < #define SW_C2                   0x0400           // condition code flag 2
123 < #define SW_C1                   0x0200           // condition code flag 1
124 < #define SW_C0                   0x0100           // condition code flag 0
125 < #define SW_ES                   0x0080           // error summary status flag
126 < #define SW_SF                   0x0040           // stack fault flag
127 < #define SW_PE                   0x0020           // precision exception flag
128 < #define SW_UE                   0x0010           // underflow exception flag
129 < #define SW_OE                   0x0008           // overflow exception flag
130 < #define SW_ZE                   0x0004           // zero divide exception flag
131 < #define SW_DE                   0x0002           // denormalized operand exception flag
132 < #define SW_IE                   0x0001           // invalid operation exception flag
28 > #ifndef FPU_X86_H
29 > #define FPU_X86_H
30 >
31 > /* NOTE: this file shall be included from fpu/fpu_x86.cpp */
32 > #undef  PUBLIC
33 > #define PUBLIC  extern
34 >
35 > #undef  PRIVATE
36 > #define PRIVATE static
37 >
38 > #undef  FFPU
39 > #define FFPU    /**/
40 >
41 > #undef  FPU
42 > #define FPU             fpu.
43 >
44 > // Status word
45 > PRIVATE uae_u32 x86_status_word;
46 > PRIVATE uae_u32 x86_status_word_accrued;
47 >
48 > // FPU jump table
49 > typedef void REGPARAM2 ( *fpuop_func )( uae_u32, uae_u32 );
50 > PRIVATE fpuop_func fpufunctbl[65536];
51 >
52 > // FPU consistency
53 > PRIVATE uae_u32 checked_sw_atstart;
54 >
55 > // FMOVECR constants supported byt x86 FPU
56 > PRIVATE fpu_register const_pi;
57 > PRIVATE fpu_register const_lg2;
58 > PRIVATE fpu_register const_l2e;
59 > PRIVATE fpu_register const_z;
60 > PRIVATE fpu_register const_ln2;
61 > PRIVATE fpu_register const_1;
62 >
63 > // FMOVECR constants not not suported by x86 FPU
64 > PRIVATE fpu_register const_e;
65 > PRIVATE fpu_register const_log_10_e;
66 > PRIVATE fpu_register const_ln_10;
67 > PRIVATE fpu_register const_1e1;
68 > PRIVATE fpu_register const_1e2;
69 > PRIVATE fpu_register const_1e4;
70 > PRIVATE fpu_register const_1e8;
71 > PRIVATE fpu_register const_1e16;
72 > PRIVATE fpu_register const_1e32;
73 > PRIVATE fpu_register const_1e64;
74 > PRIVATE fpu_register const_1e128;
75 > PRIVATE fpu_register const_1e256;
76 > PRIVATE fpu_register const_1e512;
77 > PRIVATE fpu_register const_1e1024;
78 > PRIVATE fpu_register const_1e2048;
79 > PRIVATE fpu_register const_1e4096;
80 >
81 > // Saved host FPU state
82 > PRIVATE uae_u8 m_fpu_state_original[108]; // 90/94/108
83 >
84 > /* -------------------------------------------------------------------------- */
85 > /* --- Methods                                                            --- */
86 > /* -------------------------------------------------------------------------- */
87 >
88 > // Debug support functions
89 > PRIVATE void FFPU dump_first_bytes_buf(char *b, uae_u8* buf, uae_s32 actual);
90 > PRIVATE char * FFPU etos(fpu_register const & e) REGPARAM;
91 >
92 > // FPU consistency
93 > PRIVATE void FFPU FPU_CONSISTENCY_CHECK_START(void);
94 > PRIVATE void FFPU FPU_CONSISTENCY_CHECK_STOP(const char *name);
95 >
96 > // Get special floating-point value class
97 > PRIVATE __inline__ uae_u32 FFPU IS_INFINITY (fpu_register const & f);
98 > PRIVATE __inline__ uae_u32 FFPU IS_NAN (fpu_register const & f);
99 > PRIVATE __inline__ uae_u32 FFPU IS_ZERO (fpu_register const & f);
100 > PRIVATE __inline__ uae_u32 FFPU IS_NEGATIVE (fpu_register const & f);
101 >
102 > // Make a special floating-point value
103 > PRIVATE __inline__ void FFPU MAKE_NAN (fpu_register & f);
104 > PRIVATE __inline__ void FFPU MAKE_INF_POSITIVE (fpu_register & f);
105 > PRIVATE __inline__ void FFPU MAKE_INF_NEGATIVE (fpu_register & f);
106 > PRIVATE __inline__ void FFPU MAKE_ZERO_POSITIVE (fpu_register & f);
107 > PRIVATE __inline__ void FFPU MAKE_ZERO_NEGATIVE (fpu_register & f);
108 >
109 > // Conversion from extended floating-point values
110 > PRIVATE uae_s32 FFPU extended_to_signed_32 ( fpu_register const & f ) REGPARAM;
111 > PRIVATE uae_s16 FFPU extended_to_signed_16 ( fpu_register const & f ) REGPARAM;
112 > PRIVATE uae_s8 FFPU extended_to_signed_8 ( fpu_register const & f ) REGPARAM;
113 > PRIVATE fpu_double FFPU extended_to_double( fpu_register const & f ) REGPARAM;
114 > PRIVATE uae_u32 FFPU from_single ( fpu_register const & f ) REGPARAM;
115 > PRIVATE void FFPU from_exten ( fpu_register const & f, uae_u32 *wrd1, uae_u32 *wrd2, uae_u32 *wrd3 ) REGPARAM;
116 > PRIVATE void FFPU from_double ( fpu_register const & f, uae_u32 *wrd1, uae_u32 *wrd2 ) REGPARAM;
117 > PRIVATE void FFPU from_pack (fpu_double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) REGPARAM;
118 >
119 > // Conversion to extended floating-point values
120 > PRIVATE void FFPU signed_to_extended ( uae_s32 x, fpu_register & f ) REGPARAM;
121 > PRIVATE void FFPU double_to_extended ( double x, fpu_register & f ) REGPARAM;
122 > PRIVATE void FFPU to_single ( uae_u32 src, fpu_register & f ) REGPARAM;
123 > PRIVATE void FFPU to_exten_no_normalize ( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & f ) REGPARAM;
124 > PRIVATE void FFPU to_exten ( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & f ) REGPARAM;
125 > PRIVATE void FFPU to_double ( uae_u32 wrd1, uae_u32 wrd2, fpu_register & f ) REGPARAM;
126 > PRIVATE fpu_double FFPU to_pack(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) REGPARAM;
127 >
128 > // Atomic floating-point arithmetic operations
129 > PRIVATE void FFPU do_fmove ( fpu_register & dest, fpu_register const & src ) REGPARAM;
130 > PRIVATE void FFPU do_fmove_no_status ( fpu_register & dest, fpu_register const & src ) REGPARAM;
131 > PRIVATE void FFPU do_fint ( fpu_register & dest, fpu_register const & src ) REGPARAM;
132 > PRIVATE void FFPU do_fintrz ( fpu_register & dest, fpu_register const & src ) REGPARAM;
133 > PRIVATE void FFPU do_fsqrt ( fpu_register & dest, fpu_register const & src ) REGPARAM;
134 > PRIVATE void FFPU do_ftst ( fpu_register const & src ) REGPARAM;
135 > PRIVATE void FFPU do_fsinh ( fpu_register & dest, fpu_register const & src ) REGPARAM;
136 > PRIVATE void FFPU do_flognp1 ( fpu_register & dest, fpu_register const & src ) REGPARAM;
137 > PRIVATE void FFPU do_fetoxm1 ( fpu_register & dest, fpu_register const & src ) REGPARAM;
138 > PRIVATE void FFPU do_ftanh ( fpu_register & dest, fpu_register const & src ) REGPARAM;
139 > PRIVATE void FFPU do_fatan ( fpu_register & dest, fpu_register const & src ) REGPARAM;
140 > PRIVATE void FFPU do_fasin ( fpu_register & dest, fpu_register const & src ) REGPARAM;
141 > PRIVATE void FFPU do_fatanh ( fpu_register & dest, fpu_register const & src ) REGPARAM;
142 > PRIVATE void FFPU do_fetox ( fpu_register & dest, fpu_register const & src ) REGPARAM;
143 > PRIVATE void FFPU do_ftwotox ( fpu_register & dest, fpu_register const & src ) REGPARAM;
144 > PRIVATE void FFPU do_ftentox ( fpu_register & dest, fpu_register const & src ) REGPARAM;
145 > PRIVATE void FFPU do_flogn ( fpu_register & dest, fpu_register const & src ) REGPARAM;
146 > PRIVATE void FFPU do_flog10 ( fpu_register & dest, fpu_register const & src ) REGPARAM;
147 > PRIVATE void FFPU do_flog2 ( fpu_register & dest, fpu_register const & src ) REGPARAM;
148 > PRIVATE void FFPU do_facos ( fpu_register & dest, fpu_register const & src ) REGPARAM;
149 > PRIVATE void FFPU do_fcosh ( fpu_register & dest, fpu_register const & src ) REGPARAM;
150 > PRIVATE void FFPU do_fsin ( fpu_register & dest, fpu_register const & src ) REGPARAM;
151 > PRIVATE void FFPU do_ftan ( fpu_register & dest, fpu_register const & src ) REGPARAM;
152 > PRIVATE void FFPU do_fabs ( fpu_register & dest, fpu_register const & src ) REGPARAM;
153 > PRIVATE void FFPU do_fneg ( fpu_register & dest, fpu_register const & src ) REGPARAM;
154 > PRIVATE void FFPU do_fcos ( fpu_register & dest, fpu_register const & src ) REGPARAM;
155 > PRIVATE void FFPU do_fgetexp ( fpu_register & dest, fpu_register const & src ) REGPARAM;
156 > PRIVATE void FFPU do_fgetman ( fpu_register & dest, fpu_register const & src ) REGPARAM;
157 > PRIVATE void FFPU do_fdiv ( fpu_register & dest, fpu_register const & src ) REGPARAM;
158 > PRIVATE void FFPU do_fmod ( fpu_register & dest, fpu_register const & src ) REGPARAM;
159 > PRIVATE void FFPU do_frem ( fpu_register & dest, fpu_register const & src ) REGPARAM;
160 > PRIVATE void FFPU do_fmod_dont_set_cw ( fpu_register & dest, fpu_register const & src ) REGPARAM;
161 > PRIVATE void FFPU do_frem_dont_set_cw ( fpu_register & dest, fpu_register const & src ) REGPARAM;
162 > PRIVATE void FFPU do_fadd ( fpu_register & dest, fpu_register const & src ) REGPARAM;
163 > PRIVATE void FFPU do_fmul ( fpu_register & dest, fpu_register const & src ) REGPARAM;
164 > PRIVATE void FFPU do_fsgldiv ( fpu_register & dest, fpu_register const & src ) REGPARAM;
165 > PRIVATE void FFPU do_fscale ( fpu_register & dest, fpu_register const & src ) REGPARAM;
166 > PRIVATE void FFPU do_fsglmul ( fpu_register & dest, fpu_register const & src ) REGPARAM;
167 > PRIVATE void FFPU do_fsub ( fpu_register & dest, fpu_register const & src ) REGPARAM;
168 > PRIVATE void FFPU do_fsincos ( fpu_register & dest_sin, fpu_register & dest_cos, fpu_register const & src ) REGPARAM;
169 > PRIVATE void FFPU do_fcmp ( fpu_register & dest, fpu_register const & src ) REGPARAM;
170 > PRIVATE void FFPU do_fldpi ( fpu_register & dest ) REGPARAM;
171 > PRIVATE void FFPU do_fldlg2 ( fpu_register & dest ) REGPARAM;
172 > PRIVATE void FFPU do_fldl2e ( fpu_register & dest ) REGPARAM;
173 > PRIVATE void FFPU do_fldz ( fpu_register & dest ) REGPARAM;
174 > PRIVATE void FFPU do_fldln2 ( fpu_register & dest ) REGPARAM;
175 > PRIVATE void FFPU do_fld1 ( fpu_register & dest ) REGPARAM;
176 >
177 > // Instructions handlers
178 > PRIVATE void REGPARAM2 FFPU fpuop_illg( uae_u32 opcode, uae_u32 extra );
179 > PRIVATE void REGPARAM2 FFPU fpuop_fmove_2_ea( uae_u32 opcode, uae_u32 extra );
180 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Dreg( uae_u32 opcode, uae_u32 extra );
181 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra );
182 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Dreg( uae_u32 opcode, uae_u32 extra );
183 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Dreg( uae_u32 opcode, uae_u32 extra );
184 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra );
185 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra );
186 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Dreg( uae_u32 opcode, uae_u32 extra );
187 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra );
188 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_none( uae_u32 opcode, uae_u32 extra );
189 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpiar( uae_u32 opcode, uae_u32 extra );
190 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpsr( uae_u32 opcode, uae_u32 extra );
191 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpsr_fpiar( uae_u32 opcode, uae_u32 extra );
192 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr( uae_u32 opcode, uae_u32 extra );
193 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpiar( uae_u32 opcode, uae_u32 extra );
194 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr( uae_u32 opcode, uae_u32 extra );
195 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr_fpiar( uae_u32 opcode, uae_u32 extra );
196 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Areg( uae_u32 opcode, uae_u32 extra );
197 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra );
198 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Areg( uae_u32 opcode, uae_u32 extra );
199 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Areg( uae_u32 opcode, uae_u32 extra );
200 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra );
201 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra );
202 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Areg( uae_u32 opcode, uae_u32 extra );
203 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra );
204 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_none( uae_u32 opcode, uae_u32 extra );
205 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpiar( uae_u32 opcode, uae_u32 extra );
206 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpsr( uae_u32 opcode, uae_u32 extra );
207 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpsr_fpiar( uae_u32 opcode, uae_u32 extra );
208 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr( uae_u32 opcode, uae_u32 extra );
209 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpiar( uae_u32 opcode, uae_u32 extra );
210 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpsr( uae_u32 opcode, uae_u32 extra );
211 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpsr_fpiar( uae_u32 opcode, uae_u32 extra );
212 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
213 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
214 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
215 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
216 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
217 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
218 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
219 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra );
220 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
221 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
222 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
223 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
224 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
225 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
226 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
227 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra );
228 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem( uae_u32 opcode, uae_u32 extra );
229 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
230 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra );
231 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
232 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem( uae_u32 opcode, uae_u32 extra );
233 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
234 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra );
235 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
236 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_predecrement( uae_u32 opcode, uae_u32 extra );
237 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_predecrement( uae_u32 opcode, uae_u32 extra );
238 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_predecrement( uae_u32 opcode, uae_u32 extra );
239 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra );
240 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_predecrement( uae_u32 opcode, uae_u32 extra );
241 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra );
242 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_predecrement( uae_u32 opcode, uae_u32 extra );
243 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra );
244 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_postincrement( uae_u32 opcode, uae_u32 extra );
245 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_postincrement( uae_u32 opcode, uae_u32 extra );
246 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_postincrement( uae_u32 opcode, uae_u32 extra );
247 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra );
248 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_postincrement( uae_u32 opcode, uae_u32 extra );
249 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra );
250 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_postincrement( uae_u32 opcode, uae_u32 extra );
251 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra );
252 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_2_Mem( uae_u32 opcode, uae_u32 extra );
253 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
254 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra );
255 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
256 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_2_Mem( uae_u32 opcode, uae_u32 extra );
257 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
258 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra );
259 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra );
260 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred_postincrement( uae_u32 opcode, uae_u32 extra );
261 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred_predecrement( uae_u32 opcode, uae_u32 extra );
262 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred( uae_u32 opcode, uae_u32 extra );
263 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_postincrement( uae_u32 opcode, uae_u32 extra );
264 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_predecrement( uae_u32 opcode, uae_u32 extra );
265 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred( uae_u32 opcode, uae_u32 extra );
266 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_postincrement( uae_u32 opcode, uae_u32 extra );
267 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_predecrement( uae_u32 opcode, uae_u32 extra );
268 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc( uae_u32 opcode, uae_u32 extra );
269 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_postincrement( uae_u32 opcode, uae_u32 extra );
270 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_predecrement( uae_u32 opcode, uae_u32 extra );
271 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc( uae_u32 opcode, uae_u32 extra );
272 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred_postincrement( uae_u32 opcode, uae_u32 extra );
273 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred_predecrement( uae_u32 opcode, uae_u32 extra );
274 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred( uae_u32 opcode, uae_u32 extra );
275 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_postincrement( uae_u32 opcode, uae_u32 extra );
276 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_predecrement( uae_u32 opcode, uae_u32 extra );
277 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred( uae_u32 opcode, uae_u32 extra );
278 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_postincrement( uae_u32 opcode, uae_u32 extra );
279 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_predecrement( uae_u32 opcode, uae_u32 extra );
280 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc( uae_u32 opcode, uae_u32 extra );
281 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_postincrement( uae_u32 opcode, uae_u32 extra );
282 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_predecrement( uae_u32 opcode, uae_u32 extra );
283 > PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc( uae_u32 opcode, uae_u32 extra );
284 > PRIVATE void REGPARAM2 FFPU fpuop_do_fldpi( uae_u32 opcode, uae_u32 extra );
285 > PRIVATE void REGPARAM2 FFPU fpuop_do_fldlg2( uae_u32 opcode, uae_u32 extra );
286 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_e( uae_u32 opcode, uae_u32 extra );
287 > PRIVATE void REGPARAM2 FFPU fpuop_do_fldl2e( uae_u32 opcode, uae_u32 extra );
288 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_log_10_e( uae_u32 opcode, uae_u32 extra );
289 > PRIVATE void REGPARAM2 FFPU fpuop_do_fldz( uae_u32 opcode, uae_u32 extra );
290 > PRIVATE void REGPARAM2 FFPU fpuop_do_fldln2( uae_u32 opcode, uae_u32 extra );
291 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_ln_10( uae_u32 opcode, uae_u32 extra );
292 > PRIVATE void REGPARAM2 FFPU fpuop_do_fld1( uae_u32 opcode, uae_u32 extra );
293 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e1( uae_u32 opcode, uae_u32 extra );
294 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e2( uae_u32 opcode, uae_u32 extra );
295 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e4( uae_u32 opcode, uae_u32 extra );
296 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e8( uae_u32 opcode, uae_u32 extra );
297 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e16( uae_u32 opcode, uae_u32 extra );
298 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e32( uae_u32 opcode, uae_u32 extra );
299 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e64( uae_u32 opcode, uae_u32 extra );
300 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e128( uae_u32 opcode, uae_u32 extra );
301 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e256( uae_u32 opcode, uae_u32 extra );
302 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e512( uae_u32 opcode, uae_u32 extra );
303 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e1024( uae_u32 opcode, uae_u32 extra );
304 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e2048( uae_u32 opcode, uae_u32 extra );
305 > PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e4096( uae_u32 opcode, uae_u32 extra );
306 > PRIVATE void REGPARAM2 FFPU fpuop_do_fmove( uae_u32 opcode, uae_u32 extra );
307 > PRIVATE void REGPARAM2 FFPU fpuop_do_fint( uae_u32 opcode, uae_u32 extra );
308 > PRIVATE void REGPARAM2 FFPU fpuop_do_fsinh( uae_u32 opcode, uae_u32 extra );
309 > PRIVATE void REGPARAM2 FFPU fpuop_do_fintrz( uae_u32 opcode, uae_u32 extra );
310 > PRIVATE void REGPARAM2 FFPU fpuop_do_fsqrt( uae_u32 opcode, uae_u32 extra );
311 > PRIVATE void REGPARAM2 FFPU fpuop_do_flognp1( uae_u32 opcode, uae_u32 extra );
312 > PRIVATE void REGPARAM2 FFPU fpuop_do_fetoxm1( uae_u32 opcode, uae_u32 extra );
313 > PRIVATE void REGPARAM2 FFPU fpuop_do_ftanh( uae_u32 opcode, uae_u32 extra );
314 > PRIVATE void REGPARAM2 FFPU fpuop_do_fatan( uae_u32 opcode, uae_u32 extra );
315 > PRIVATE void REGPARAM2 FFPU fpuop_do_fasin( uae_u32 opcode, uae_u32 extra );
316 > PRIVATE void REGPARAM2 FFPU fpuop_do_fatanh( uae_u32 opcode, uae_u32 extra );
317 > PRIVATE void REGPARAM2 FFPU fpuop_do_fsin( uae_u32 opcode, uae_u32 extra );
318 > PRIVATE void REGPARAM2 FFPU fpuop_do_ftan( uae_u32 opcode, uae_u32 extra );
319 > PRIVATE void REGPARAM2 FFPU fpuop_do_fetox( uae_u32 opcode, uae_u32 extra );
320 > PRIVATE void REGPARAM2 FFPU fpuop_do_ftwotox( uae_u32 opcode, uae_u32 extra );
321 > PRIVATE void REGPARAM2 FFPU fpuop_do_ftentox( uae_u32 opcode, uae_u32 extra );
322 > PRIVATE void REGPARAM2 FFPU fpuop_do_flogn( uae_u32 opcode, uae_u32 extra );
323 > PRIVATE void REGPARAM2 FFPU fpuop_do_flog10( uae_u32 opcode, uae_u32 extra );
324 > PRIVATE void REGPARAM2 FFPU fpuop_do_flog2( uae_u32 opcode, uae_u32 extra );
325 > PRIVATE void REGPARAM2 FFPU fpuop_do_fabs( uae_u32 opcode, uae_u32 extra );
326 > PRIVATE void REGPARAM2 FFPU fpuop_do_fcosh( uae_u32 opcode, uae_u32 extra );
327 > PRIVATE void REGPARAM2 FFPU fpuop_do_fneg( uae_u32 opcode, uae_u32 extra );
328 > PRIVATE void REGPARAM2 FFPU fpuop_do_facos( uae_u32 opcode, uae_u32 extra );
329 > PRIVATE void REGPARAM2 FFPU fpuop_do_fcos( uae_u32 opcode, uae_u32 extra );
330 > PRIVATE void REGPARAM2 FFPU fpuop_do_fgetexp( uae_u32 opcode, uae_u32 extra );
331 > PRIVATE void REGPARAM2 FFPU fpuop_do_fgetman( uae_u32 opcode, uae_u32 extra );
332 > PRIVATE void REGPARAM2 FFPU fpuop_do_fdiv( uae_u32 opcode, uae_u32 extra );
333 > PRIVATE void REGPARAM2 FFPU fpuop_do_fmod( uae_u32 opcode, uae_u32 extra );
334 > PRIVATE void REGPARAM2 FFPU fpuop_do_frem( uae_u32 opcode, uae_u32 extra );
335 > PRIVATE void REGPARAM2 FFPU fpuop_do_fadd( uae_u32 opcode, uae_u32 extra );
336 > PRIVATE void REGPARAM2 FFPU fpuop_do_fmul( uae_u32 opcode, uae_u32 extra );
337 > PRIVATE void REGPARAM2 FFPU fpuop_do_fsgldiv( uae_u32 opcode, uae_u32 extra );
338 > PRIVATE void REGPARAM2 FFPU fpuop_do_fscale( uae_u32 opcode, uae_u32 extra );
339 > PRIVATE void REGPARAM2 FFPU fpuop_do_fsglmul( uae_u32 opcode, uae_u32 extra );
340 > PRIVATE void REGPARAM2 FFPU fpuop_do_fsub( uae_u32 opcode, uae_u32 extra );
341 > PRIVATE void REGPARAM2 FFPU fpuop_do_fsincos( uae_u32 opcode, uae_u32 extra );
342 > PRIVATE void REGPARAM2 FFPU fpuop_do_fcmp( uae_u32 opcode, uae_u32 extra );
343 > PRIVATE void REGPARAM2 FFPU fpuop_do_ftst( uae_u32 opcode, uae_u32 extra );
344 >
345 > // Get & Put floating-point values
346 > PRIVATE int FFPU get_fp_value (uae_u32 opcode, uae_u32 extra, fpu_register & src) REGPARAM;
347 > PRIVATE int FFPU put_fp_value (fpu_register const & value, uae_u32 opcode, uae_u32 extra) REGPARAM;
348 > PRIVATE int FFPU get_fp_ad(uae_u32 opcode, uae_u32 * ad) REGPARAM;
349 >
350 > // Floating-point condition-based instruction handlers
351 > PRIVATE int FFPU fpp_cond(uae_u32 opcode, int condition) REGPARAM;
352 >
353 > // Misc functions
354 > PRIVATE void __inline__ FFPU set_host_fpu_control_word ();
355 > PRIVATE void __inline__ FFPU SET_BSUN_ON_NAN ();
356 > PRIVATE void __inline__ FFPU build_ex_status ();
357 > PRIVATE void FFPU do_null_frestore ();
358 > PRIVATE void FFPU build_fpp_opp_lookup_table ();
359 > PRIVATE void FFPU set_constant ( fpu_register & f, char *name, double value, uae_s32 mult );
360  
361 < #define X86_ROUND_CONTROL_MASK                  0x0C00
134 < #define X86_PRECISION_CONTROL_MASK              0x0300
361 > #endif /* FPU_X86_H */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines