X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fnew_dynarec%2Fnew_dynarec.c;h=c9e168847d3fc8f89f17b1f98841e915e300a15f;hb=af700b411e17806c3afb9e5f607317adc00dd546;hp=cabf4871dccc300fb6975f6a30724b0cc558fb0c;hpb=3039c914c0ac33ee89127db3bd4c53eb3c25cafd;p=pcsx_rearmed.git diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c index cabf4871..c9e16884 100644 --- a/libpcsxcore/new_dynarec/new_dynarec.c +++ b/libpcsxcore/new_dynarec/new_dynarec.c @@ -506,6 +506,28 @@ static void end_block(void *start) end_tcache_write(start, out); } +#ifdef NDRC_CACHE_FLUSH_ALL + +static int needs_clear_cache; + +static void mark_clear_cache(void *target) +{ + if (!needs_clear_cache) { + start_tcache_write(ndrc, ndrc + 1); + needs_clear_cache = 1; + } +} + +static void do_clear_cache(void) +{ + if (needs_clear_cache) { + end_tcache_write(ndrc, ndrc + 1); + needs_clear_cache = 0; + } +} + +#else + // also takes care of w^x mappings when patching code static u_int needs_clear_cache[1<<(TARGET_SIZE_2-17)]; @@ -549,7 +571,7 @@ static void do_clear_cache(void) } } -//#define DEBUG_CYCLE_COUNT 1 +#endif // NDRC_CACHE_FLUSH_ALL #define NO_CYCLE_PENALTY_THR 12