x_do_cycles_pre = do_cycles;
x_do_cycles_post = do_cycles_post;
} else if (currprefs.cpu_model == 68030 && !currprefs.cachesize) {
- x_prefetch = get_word_020_prefetch;
+ x_prefetch = get_word_030_prefetch;
x_get_ilong = get_long_030_prefetch;
x_get_iword = get_word_030_prefetch;
x_get_ibyte = NULL;
STATIC_INLINE int in_rtarea (uaecptr pc)
{
- return (munge24 (pc) & 0xFFFF0000) == rtarea_base && uae_boot_rom_type;
+ return (munge24 (pc) & 0xFFFF0000) == rtarea_base && (uae_boot_rom_type || currprefs.uaeboard > 0);
}
STATIC_INLINE void wait_memory_cycles (void)
ov &= 0xff;
}
if (ov2 != ov) {
- write_log(_T("Address %08x data cache mismatch %08x != %08x\n"), addr, ov2, ov);
+ write_log(_T("Address read %08x data cache mismatch %08x != %08x\n"), addr, ov2, ov);
}
}
#endif
return;
}
- val <<= (32 - width);
if (hit || wa) {
if (hit) {
+ uae_u32 val_left_aligned = val << (32 - width);
c1->data[lws1] &= ~(mask[size] >> offset);
- c1->data[lws1] |= val >> offset;
+ c1->data[lws1] |= val_left_aligned >> offset;
} else {
c1->valid[lws1] = false;
}
hit = c2->tag == tag2 && c2->fc == fc && c2->valid[lws2];
if (hit || wa) {
if (hit) {
- c2->data[lws2] &= ~(mask[size] << (width + offset - 32));
- c2->data[lws2] |= val << (width + offset - 32);
+ c2->data[lws2] &= 0xffffffff >> (width + offset - 32);
+ c2->data[lws2] |= val << (32 - (width + offset - 32));
} else {
c2->valid[lws2] = false;
}