1
0
Fork 0

remove more fpu exception flags and refine fpu statusword updates;

add a more direct calling of fpu functions (dynamic core, thanks to kekko!);
avoid temporary storing of fpu values for eatree functions (x86 fpu only)


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2644
This commit is contained in:
Sebastian Strohhäcker 2006-06-01 08:33:52 +00:00
parent 7312606796
commit 3500ea88eb
8 changed files with 657 additions and 105 deletions

View file

@ -1 +1,2 @@
noinst_HEADERS = cache.h helpers.h decoder.h risc_x86.h string.h
noinst_HEADERS = cache.h helpers.h decoder.h risc_x86.h string.h \
dyn_fpu.h

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#define X86_DYNFPU
#include "fpu.h"
#define DYN_FPU_ESC(code) { \
dyn_get_modrm(); \
@ -1223,6 +1225,10 @@ static void dyn_add_iocheck_var(Bit8u accessed_port,Bitu access_size) {
}
}
#ifdef X86_DYNFPU
#include "dyn_fpu.h"
#endif
static CacheBlock * CreateCacheBlock(CodePageHandler * codepage,PhysPt start,Bitu max_opcodes) {
Bits i;
/* Init a load of variables */
@ -1568,6 +1574,32 @@ restart_prefix:
case 0xd3:dyn_grp2_ev(grp2_cl);break;
//FPU
#ifdef CPU_FPU
#ifdef X86_DYNFPU
case 0xd8:
dyn_fpu_esc0();
break;
case 0xd9:
dyn_fpu_esc1();
break;
case 0xda:
dyn_fpu_esc2();
break;
case 0xdb:
dyn_fpu_esc3();
break;
case 0xdc:
dyn_fpu_esc4();
break;
case 0xdd:
dyn_fpu_esc5();
break;
case 0xde:
dyn_fpu_esc6();
break;
case 0xdf:
dyn_fpu_esc7();
break;
#else
case 0xd8:
DYN_FPU_ESC(0);
break;
@ -1600,6 +1632,7 @@ restart_prefix:
gen_releasereg(DREG(EA));
}
break;
#endif
#endif
//Loop's
case 0xe2:dyn_loop(LOOP_NONE);goto finish_block;