X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=m68kcpu.c;h=da9343004c6a672819500c072d06b5a663300104;hb=fe3b4bb032e02148c44ea11a23129650eae7efd7;hp=4a4fc39d12bb6a6a9c9b6b6584191d13c608059f;hpb=3203ac85909c4feadb96bdf56b373785f9c81210;p=pistorm diff --git a/m68kcpu.c b/m68kcpu.c index 4a4fc39..da93430 100644 --- a/m68kcpu.c +++ b/m68kcpu.c @@ -1254,12 +1254,14 @@ inline unsigned int m68k_read_pcrelative_32(unsigned int address) { #endif -uint m68ki_read_imm6_addr_slowpath(uint32_t address, address_translation_cache *cache) +uint m68ki_read_imm6_addr_slowpath(uint32_t pc, address_translation_cache *cache) { + uint32_t address = ADDRESS_68K(pc); + uint32_t pc_address_diff = pc - address; for (int i = 0; i < read_ranges; i++) { if(address >= read_addr[i] && address < read_upper[i]) { - cache->lower = read_addr[i]; - cache->upper = read_upper[i]; + cache->lower = read_addr[i] + pc_address_diff; + cache->upper = read_upper[i] + pc_address_diff; cache->data = read_data[i]; REG_PC += 2; return be16toh(((unsigned short *)(read_data[i] + (address - read_addr[i])))[0]);