X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fnew_dynarec%2Femu_if.c;h=aac9f78c0bf9d54e8b6414e630aedbceffd16309;hb=4d66d894c6563cbfb78fe8ccc0b374809fc44b0d;hp=aa093564d0d21793a989b7712af36cc54ca89358;hpb=4cc373dd225bc4c0db251b3689571e97a1e4ec5a;p=pcsx_rearmed.git diff --git a/libpcsxcore/new_dynarec/emu_if.c b/libpcsxcore/new_dynarec/emu_if.c index aa093564..aac9f78c 100644 --- a/libpcsxcore/new_dynarec/emu_if.c +++ b/libpcsxcore/new_dynarec/emu_if.c @@ -55,7 +55,7 @@ typedef void (irq_func)(); static irq_func * const irq_funcs[] = { [PSXINT_SIO] = sioInterrupt, [PSXINT_CDR] = cdrInterrupt, - [PSXINT_CDREAD] = cdrPlaySeekReadInterrupt, + [PSXINT_CDREAD] = cdrPlayReadInterrupt, [PSXINT_GPUDMA] = gpuInterrupt, [PSXINT_MDECOUTDMA] = mdec1Interrupt, [PSXINT_SPUDMA] = spuInterrupt, @@ -84,7 +84,7 @@ static void irq_test(void) } } - if ((psxHu32(0x1070) & psxHu32(0x1074)) && (Status & 0x401) == 0x401) { + if ((psxHu32(0x1070) & psxHu32(0x1074)) && (psxRegs.CP0.n.Status & 0x401) == 0x401) { psxException(0x400, 0); pending_exception = 1; } @@ -110,7 +110,7 @@ void pcsx_mtc0(u32 reg, u32 val) evprintf("MTC0 %d #%x @%08x %u\n", reg, val, psxRegs.pc, psxRegs.cycle); MTC0(&psxRegs, reg, val); gen_interupt(); - if (Cause & Status & 0x0300) // possible sw irq + if (psxRegs.CP0.n.Cause & psxRegs.CP0.n.Status & 0x0300) // possible sw irq pending_exception = 1; } @@ -190,7 +190,7 @@ void new_dyna_freeze(void *f, int mode) //printf("drc: %d block info entries %s\n", size/8, mode ? "saved" : "loaded"); } -#ifndef DRC_DISABLE +#if !defined(DRC_DISABLE) && !defined(LIGHTREC) /* GTE stuff */ void *gte_handlers[64]; @@ -370,19 +370,15 @@ static void ari64_clear(u32 addr, u32 size) } static void ari64_notify(int note, void *data) { - /* - Should be fixed when ARM dynarec has proper icache emulation. switch (note) { - case R3000ACPU_NOTIFY_CACHE_UNISOLATED: - break; - case R3000ACPU_NOTIFY_CACHE_ISOLATED: - Sent from psxDma3(). - case R3000ACPU_NOTIFY_DMA3_EXE_LOAD: - default: - break; + case R3000ACPU_NOTIFY_CACHE_UNISOLATED: + case R3000ACPU_NOTIFY_CACHE_ISOLATED: + new_dyna_pcsx_mem_isolate(note == R3000ACPU_NOTIFY_CACHE_ISOLATED); + break; + default: + break; } - */ } static void ari64_apply_config() @@ -394,7 +390,7 @@ static void ari64_apply_config() else new_dynarec_hacks &= ~NDHACK_NO_STALLS; - if (cycle_multiplier != cycle_multiplier_old + if (Config.cycle_multiplier != cycle_multiplier_old || new_dynarec_hacks != new_dynarec_hacks_old) { new_dynarec_clear_full(); @@ -424,15 +420,13 @@ unsigned int address; int pending_exception, stop; unsigned int next_interupt; int new_dynarec_did_compile; -int cycle_multiplier; -int cycle_multiplier_override; int cycle_multiplier_old; int new_dynarec_hacks_pergame; int new_dynarec_hacks_old; int new_dynarec_hacks; void *psxH_ptr; void *zeromem_ptr; -u8 zero_mem[0x1000]; +u32 zero_mem[0x1000/4]; void *mem_rtab; void *scratch_buf_ptr; void new_dynarec_init() {} @@ -444,6 +438,7 @@ void new_dynarec_invalidate_range(unsigned int start, unsigned int end) {} void new_dyna_pcsx_mem_init(void) {} void new_dyna_pcsx_mem_reset(void) {} void new_dyna_pcsx_mem_load_state(void) {} +void new_dyna_pcsx_mem_isolate(int enable) {} void new_dyna_pcsx_mem_shutdown(void) {} int new_dynarec_save_blocks(void *save, int size) { return 0; } void new_dynarec_load_blocks(const void *save, int size) {}