Added JIT FPU, removed Softfloat option (too slow to be useful) - Thanks TomB!
This commit is contained in:
parent
f24301e8dd
commit
a8815b211e
55 changed files with 3579 additions and 10940 deletions
|
@ -7,9 +7,6 @@
|
|||
* Adaptation for ARAnyM/ARM, copyright 2001-2015
|
||||
* Milan Jurik, Jens Heitmann
|
||||
*
|
||||
* Adaptation for Basilisk II and improvements, copyright 2000-2005
|
||||
* Gwenole Beauchesne
|
||||
*
|
||||
* Basilisk II (C) 1997-2005 Christian Bauer
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -121,13 +118,14 @@
|
|||
#define DISABLE_I_ROXLW
|
||||
#define DISABLE_I_ROXRW
|
||||
//#define DISABLE_I_MULL
|
||||
#define DISABLE_I_FPP
|
||||
#define DISABLE_I_FBCC
|
||||
#define DISABLE_I_FSCC
|
||||
//#define DISABLE_I_FPP
|
||||
//#define DISABLE_I_FBCC
|
||||
//#define DISABLE_I_FSCC
|
||||
//#define DISABLE_I_MOVE16
|
||||
|
||||
#define DISABLE_I_DIVU // DIVU works, but we have to think about exceptions. No big performance enhancement.
|
||||
|
||||
|
||||
#define RETURN "return 0;"
|
||||
|
||||
#define BOOL_TYPE "int"
|
||||
|
@ -1222,9 +1220,6 @@ static void gen_dbcc(uae_u32 opcode, struct instr *curi, char* ssize) {
|
|||
comprintf("\tarm_ADD_l_ri(PC_P, m68k_pc_offset);\n");
|
||||
comprintf("\tm68k_pc_offset=0;\n");
|
||||
|
||||
start_brace();
|
||||
comprintf("\tint nsrc = scratchie++;\n");
|
||||
|
||||
if (curi->cc >= 2) {
|
||||
comprintf("\tmake_flags_live();\n"); /* Load the flags */
|
||||
}
|
||||
|
@ -1262,7 +1257,6 @@ static void gen_dbcc(uae_u32 opcode, struct instr *curi, char* ssize) {
|
|||
break;
|
||||
default: abort();
|
||||
}
|
||||
genastore("src", curi->smode, "srcreg", curi->size, "src");
|
||||
gen_update_next_handler();
|
||||
}
|
||||
|
||||
|
@ -2071,7 +2065,6 @@ gen_opcode(unsigned long int opcode) {
|
|||
|
||||
case i_SBCD:
|
||||
failure;
|
||||
/* I don't think so! */
|
||||
break;
|
||||
|
||||
case i_ADD:
|
||||
|
@ -2097,7 +2090,6 @@ gen_opcode(unsigned long int opcode) {
|
|||
|
||||
case i_ABCD:
|
||||
failure;
|
||||
/* No BCD maths for me.... */
|
||||
break;
|
||||
|
||||
case i_NEG:
|
||||
|
@ -2116,7 +2108,6 @@ gen_opcode(unsigned long int opcode) {
|
|||
|
||||
case i_NBCD:
|
||||
failure;
|
||||
/* Nope! */
|
||||
break;
|
||||
|
||||
case i_CLR:
|
||||
|
@ -2362,7 +2353,8 @@ gen_opcode(unsigned long int opcode) {
|
|||
isjump;
|
||||
genamode(curi->smode, "srcreg", curi->size, "src", 0, 0);
|
||||
start_brace();
|
||||
comprintf("\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n");
|
||||
comprintf(
|
||||
"\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n");
|
||||
comprintf("\tint ret=scratchie++;\n"
|
||||
"\tmov_l_ri(ret,retadd);\n"
|
||||
"\tsub_l_ri(15,4);\n"
|
||||
|
@ -2391,10 +2383,12 @@ gen_opcode(unsigned long int opcode) {
|
|||
#ifdef DISABLE_I_BSR
|
||||
failure;
|
||||
#endif
|
||||
is_const_jump;
|
||||
is_const_jump
|
||||
;
|
||||
genamode(curi->smode, "srcreg", curi->size, "src", 1, 0);
|
||||
start_brace();
|
||||
comprintf("\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n");
|
||||
comprintf(
|
||||
"\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n");
|
||||
comprintf("\tint ret=scratchie++;\n"
|
||||
"\tmov_l_ri(ret,retadd);\n"
|
||||
"\tsub_l_ri(15,4);\n"
|
||||
|
@ -2427,9 +2421,10 @@ gen_opcode(unsigned long int opcode) {
|
|||
comprintf("\tv2 = get_const(src);\n");
|
||||
comprintf("\tregister_branch(v1, v2, %d);\n", cond_codes[curi->cc]);
|
||||
comprintf("\tmake_flags_live();\n"); /* Load the flags */
|
||||
isjump;
|
||||
isjump;
|
||||
} else {
|
||||
is_const_jump;
|
||||
is_const_jump
|
||||
;
|
||||
}
|
||||
|
||||
switch (curi->cc) {
|
||||
|
@ -3124,11 +3119,16 @@ generate_one_opcode(int rp, int noflags)
|
|||
fprintf(stblfile, "{ NULL, 0x%08x, %ld }, /* %s */\n", flags, opcode, name);
|
||||
com_discard();
|
||||
} else {
|
||||
const char *tbl = noflags ? "nf" : "ff";
|
||||
printf ("/* %s */\n", outopcode (opcode));
|
||||
fprintf(stblfile, "{ op_%lx_%d_comp_%s, 0x%08x, %ld }, /* %s */\n", opcode, postfix, tbl, flags, opcode, name);
|
||||
fprintf(headerfile, "extern compop_func op_%lx_%d_comp_%s;\n", opcode, postfix, tbl);
|
||||
printf("uae_u32 REGPARAM2 op_%lx_%d_comp_%s(uae_u32 opcode)\n{\n", opcode, postfix, tbl);
|
||||
if (noflags) {
|
||||
fprintf(stblfile, "{ op_%lx_%d_comp_nf, 0x%08x, %ld }, /* %s */\n", opcode, postfix, flags, opcode, name);
|
||||
fprintf(headerfile, "extern compop_func op_%lx_%d_comp_nf;\n", opcode, postfix);
|
||||
printf("uae_u32 REGPARAM2 op_%lx_%d_comp_nf(uae_u32 opcode)\n{\n", opcode, postfix);
|
||||
} else {
|
||||
fprintf(stblfile, "{ op_%lx_%d_comp_ff, 0x%08x, %ld }, /* %s */\n", opcode, postfix, flags, opcode, name);
|
||||
fprintf(headerfile, "extern compop_func op_%lx_%d_comp_ff;\n", opcode, postfix);
|
||||
printf("uae_u32 REGPARAM2 op_%lx_%d_comp_ff(uae_u32 opcode)\n{\n", opcode, postfix);
|
||||
}
|
||||
com_flush();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue