static void prepare_block(blockinfo* bi);
-/* Managment of blockinfos.
+/* Management of blockinfos.
A blockinfo struct is allocated whenever a new block has to be
compiled. If the list of free blockinfos is empty, we allocate a new
static void f_tomem(int r)
{
if (live.fate[r].status==DIRTY) {
-#if defined(USE_LONG_DOUBLE)
- raw_fmov_ext_mr((uintptr)live.fate[r].mem,live.fate[r].realreg);
-#else
- raw_fmov_mr((uintptr)live.fate[r].mem,live.fate[r].realreg);
-#endif
+ if (use_long_double) {
+ raw_fmov_ext_mr((uintptr)live.fate[r].mem, live.fate[r].realreg);
+ } else {
+ raw_fmov_mr((uintptr)live.fate[r].mem, live.fate[r].realreg);
+ }
live.fate[r].status=CLEAN;
}
}
static void f_tomem_drop(int r)
{
if (live.fate[r].status==DIRTY) {
-#if defined(USE_LONG_DOUBLE)
- raw_fmov_ext_mr_drop((uintptr)live.fate[r].mem,live.fate[r].realreg);
-#else
- raw_fmov_mr_drop((uintptr)live.fate[r].mem,live.fate[r].realreg);
-#endif
+ if (use_long_double) {
+ raw_fmov_ext_mr_drop((uintptr)live.fate[r].mem, live.fate[r].realreg);
+ } else {
+ raw_fmov_mr_drop((uintptr)live.fate[r].mem,live.fate[r].realreg);
+ }
live.fate[r].status=INMEM;
}
}
if (!willclobber) {
if (live.fate[r].status!=UNDEF) {
-#if defined(USE_LONG_DOUBLE)
- raw_fmov_ext_rm(bestreg,(uintptr)live.fate[r].mem);
-#else
- raw_fmov_rm(bestreg,(uintptr)live.fate[r].mem);
-#endif
+ if (use_long_double) {
+ raw_fmov_ext_rm(bestreg, (uintptr)live.fate[r].mem);
+ } else {
+ raw_fmov_rm(bestreg,(uintptr)live.fate[r].mem);
+ }
}
live.fate[r].status=CLEAN;
}
}
else if (i==FP_RESULT) {
#ifdef UAE
- live.fate[i].mem=(uae_u32*)(®s.fp_result);
+ live.fate[i].mem=(uae_u32*)(®s.fp_result.fp);
#else
live.fate[i].mem=(uae_u32*)(&fpu.result);
#endif
#if FIXED_ADDRESSING
lea_l_brr(dest,address,MEMBaseDiff);
#else
-# error "Only fixed adressing mode supported"
+# error "Only fixed addressing mode supported"
#endif
forget_about(tmp);
(void) f;
struct instr *table = &table68k[opcode];
if (table->mnemo == mnemo) {
reset_compop(cft_map(opcode));
- jit_log("<JIT compiler> : blacklist opcode : %04x", opcode);
+ if (currprefs.cachesize) {
+ jit_log("<JIT compiler> : blacklist opcode : %04x", opcode);
+ }
}
}
p += len;
}
if (*p == 0 || *p == ',') {
- jit_log("<JIT compiler> : blacklist opcodes : %04x-%04x", opcode1, opcode2);
+ if (currprefs.cachesize) {
+ jit_log("<JIT compiler> : blacklist opcodes : %04x-%04x", opcode1, opcode2);
+ }
for (int opcode = opcode1; opcode <= opcode2; opcode++)
reset_compop(cft_map(opcode));
return;
}
#endif
- int i;
+ int i, j;
unsigned long opcode;
const struct comptbl* tbl=op_smalltbl_0_comp_ff;
const struct comptbl* nftbl=op_smalltbl_0_comp_nf;
nfcompfunctbl[cft_map(nftbl[i].opcode)] = NULL;
else
nfcompfunctbl[cft_map(nftbl[i].opcode)] = nftbl[i].handler;
+ for (j = 0; nfctbl[j].handler_ff; j++) {
+ if (nfctbl[j].opcode == nftbl[i].opcode) {
#ifdef NOFLAGS_SUPPORT_GENCOMP
#ifdef NOFLAGS_SUPPORT_GENCPU
- nfcpufunctbl[cft_map(nftbl[i].opcode)] = nfctbl[i].handler_nf;
+ nfcpufunctbl[cft_map(nftbl[i].opcode)] = nfctbl[j].handler_nf;
#else
- nfcpufunctbl[cft_map(nftbl[i].opcode)] = nfctbl[i].handler_ff;
+ nfcpufunctbl[cft_map(nftbl[i].opcode)] = nfctbl[j].handler_ff;
#endif
#endif
+ break;
+ }
+ }
+ if (!nfctbl[j].handler_ff && currprefs.cachesize) {
+ int mnemo = table68k[nftbl[i].opcode].mnemo;
+ struct mnemolookup *lookup;
+ for (lookup = lookuptab; lookup->mnemo != mnemo; lookup++)
+ ;
+ char *s = ua(lookup->name);
+ jit_log("%04x (%s) unavailable", nftbl[i].opcode, s);
+ xfree(s);
+ }
}
#ifdef NOFLAGS_SUPPORT_GENCOMP