From f90c726e013a832cea1ce213e5251b9a013ad8a1 Mon Sep 17 00:00:00 2001 From: "SND\\shalma_cp" Date: Sun, 26 Sep 2010 13:36:54 +0000 Subject: BIOS: cache flushing - Only affects interpreter git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@57733 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- libpcsxcore/psxbios.c | 2 ++ libpcsxcore/psxmem.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'libpcsxcore') diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index f2751b86..a63741d6 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -1070,6 +1070,8 @@ void psxBios_FlushCache() { // 44 #ifdef PSXBIOS_LOG PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x44]); #endif + + psxRegs.ICache_valid = 0; pc0 = ra; } diff --git a/libpcsxcore/psxmem.c b/libpcsxcore/psxmem.c index feb69b4f..dd18e48e 100644 --- a/libpcsxcore/psxmem.c +++ b/libpcsxcore/psxmem.c @@ -325,13 +325,16 @@ void psxMemWrite32(u32 mem, u32 value) { } else { int i; + // a0-44: used for cache flushing switch (value) { case 0x800: case 0x804: if (writeok == 0) break; writeok = 0; memset(psxMemWLUT + 0x0000, 0, 0x80 * sizeof(void *)); memset(psxMemWLUT + 0x8000, 0, 0x80 * sizeof(void *)); - memset(psxMemWLUT + 0xa000, 0, 0x80 * sizeof(void *)); + memset(psxMemWLUT + 0xa000, 0, 0x80 * sizeof(void *)); + + psxRegs.ICache_valid = 0; break; case 0x00: case 0x1e988: if (writeok == 1) break; -- cgit v1.2.3