struct mmu030_access mmu030_ad[MAX_MMU030_ACCESS];
#if MMU_DPAGECACHE030
-#define MMUFASTCACHE_ENTRIES 256
-struct mmufastcache
+#define MMUFASTCACHE_ENTRIES030 256
+struct mmufastcache030
{
uae_u32 log;
uae_u32 phys;
};
-extern struct mmufastcache atc_data_cache_read[MMUFASTCACHE_ENTRIES];
-extern struct mmufastcache atc_data_cache_write[MMUFASTCACHE_ENTRIES];
+static struct mmufastcache030 atc_data_cache_read[MMUFASTCACHE_ENTRIES030];
+static struct mmufastcache030 atc_data_cache_write[MMUFASTCACHE_ENTRIES030];
#endif
/* for debugging messages */
memset(&atc_data_cache_write, 0xff, sizeof atc_data_cache_write);
} else {
uae_u32 idx = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | 7;
- for (int i = 0; i < MMUFASTCACHE_ENTRIES; i++) {
+ for (int i = 0; i < MMUFASTCACHE_ENTRIES030; i++) {
if ((atc_data_cache_read[i].log | 7) == idx)
atc_data_cache_read[i].log = 0xffffffff;
if ((atc_data_cache_write[i].log | 7) == idx)
return true;
}
- if (!fd && !rw) {
+ if (!fd && !rw && preg != 0x18) {
mmu030_flush_atc_all();
}
tt_enabled = (tt0_030 & TT_ENABLE) || (tt1_030 & TT_ENABLE);
{
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
- if (idx2 < MMUFASTCACHE_ENTRIES - 1) {
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
+ if (idx2 < MMUFASTCACHE_ENTRIES030 - 1) {
atc_data_cache_read[idx2].log = idx1;
atc_data_cache_read[idx2].phys = phys;
}
{
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
- if (idx2 < MMUFASTCACHE_ENTRIES - 1) {
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
+ if (idx2 < MMUFASTCACHE_ENTRIES030 - 1) {
atc_data_cache_write[idx2].log = idx1;
atc_data_cache_write[idx2].phys = phys;
}
if (((fc != 7) || (!tt_enabled || !mmu030_match_ttr_access(addr,fc,true))) && (mmu030.enabled)) {
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
if (atc_data_cache_write[idx2].log == idx1) {
addr = atc_data_cache_write[idx2].phys | (addr & mmu030.translation.page.mask);
} else
if (((fc != 7) || (!tt_enabled || !mmu030_match_ttr_access(addr,fc,true))) && (mmu030.enabled)) {
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
if (atc_data_cache_write[idx2].log == idx1) {
addr = atc_data_cache_write[idx2].phys | (addr & mmu030.translation.page.mask);
} else
if (((fc != 7) || (!tt_enabled || !mmu030_match_ttr_access(addr,fc,true))) && (mmu030.enabled)) {
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
if (atc_data_cache_write[idx2].log == idx1) {
addr = atc_data_cache_write[idx2].phys | (addr & mmu030.translation.page.mask);
} else
if (((fc != 7) || (!tt_enabled || !mmu030_match_ttr_access(addr,fc,false))) && (mmu030.enabled)) {
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
if (atc_data_cache_read[idx2].log == idx1) {
addr = atc_data_cache_read[idx2].phys | (addr & mmu030.translation.page.mask);
} else
if (((fc != 7) || (!tt_enabled || !mmu030_match_ttr_access(addr,fc,false))) && (mmu030.enabled)) {
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
if (atc_data_cache_read[idx2].log == idx1) {
addr = atc_data_cache_read[idx2].phys | (addr & mmu030.translation.page.mask);
} else
if (((fc != 7) || (!tt_enabled || !mmu030_match_ttr_access(addr,fc,false))) && (mmu030.enabled)) {
#if MMU_DPAGECACHE030
uae_u32 idx1 = ((addr & mmu030.translation.page.imask) >> mmu030.translation.page.size3m) | fc;
- uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES - 1);
+ uae_u32 idx2 = idx1 & (MMUFASTCACHE_ENTRIES030 - 1);
if (atc_data_cache_read[idx2].log == idx1) {
addr = atc_data_cache_read[idx2].phys | (addr & mmu030.translation.page.mask);
} else