diff --git a/src/cpu/core_dyn_x86.cpp b/src/cpu/core_dyn_x86.cpp index 7b27ffe2..901c4f4d 100644 --- a/src/cpu/core_dyn_x86.cpp +++ b/src/cpu/core_dyn_x86.cpp @@ -145,7 +145,6 @@ static void IllegalOption(void) { static struct { Bitu callback; - CacheBlock * lastblock; } core_dyn; @@ -215,6 +214,7 @@ restart_core: findblock:; CacheBlock * block=chandler->FindCacheBlock(ip_point&4095); if (!block) { + cache.block.running=0; block=CreateCacheBlock(ip_point,cpu.code.big,128); DYN_LOG("Created block size %x type %d",block->cache.size,block->type); chandler->AddCacheBlock(block); @@ -251,7 +251,7 @@ run_block: if (temp_handler->flags & PFLAG_HASCODE) { block=temp_handler->FindCacheBlock(temp_ip & 4095); if (!block) goto restart_core; - cache_linkblocks(core_dyn.lastblock,block,ret==BR_Link2); + cache_linkblocks(cache.block.running,block,ret==BR_Link2); goto run_block; } } diff --git a/src/cpu/core_dyn_x86/cache.h b/src/cpu/core_dyn_x86/cache.h index 92b38f83..d70644f3 100644 --- a/src/cpu/core_dyn_x86/cache.h +++ b/src/cpu/core_dyn_x86/cache.h @@ -28,6 +28,7 @@ static struct { CacheBlock * first; CacheBlock * active; CacheBlock * free; + CacheBlock * running; } block; Bit8u * pos; CacheBlock linkblocks[2]; @@ -61,6 +62,7 @@ public: for (Bitu i=block->page.first;i<=block->page.last;i++) write_map[i]--; block->code_page=0; //Else resetblock will do double work count--; + if (block==cache.block.running) LOG_MSG("Writing to current block"); cache_resetblock(block); *where=nextblock; } else {