aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authorgameblabla2019-07-21 02:13:34 +0200
committergameblabla2019-07-21 02:13:34 +0200
commitf23c22410abc88088a33ddf391c9fae8a1705dac (patch)
tree849eb864ab9442dd272b9e71415795bc3448366d /libpcsxcore
parent17b2d969c7806101207076ab1431d1e38425f6f5 (diff)
downloadpcsx_rearmed-f23c22410abc88088a33ddf391c9fae8a1705dac.tar.gz
pcsx_rearmed-f23c22410abc88088a33ddf391c9fae8a1705dac.tar.bz2
pcsx_rearmed-f23c22410abc88088a33ddf391c9fae8a1705dac.zip
psxbios: Merge interrupt_r26 fix from PCSX4ALL.
Thanks DmitrySmagin for the fix.
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/psxbios.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c
index b27d195..6a52d7e 100644
--- a/libpcsxcore/psxbios.c
+++ b/libpcsxcore/psxbios.c
@@ -307,6 +307,8 @@ static inline void DeliverEvent(u32 ev, u32 spec) {
} else Event[ev][spec].status = EvStALREADY;
}
+static unsigned interrupt_r26=0x8004E8B0;
+
static inline void SaveRegs() {
memcpy(regs, psxRegs.GPR.r, 32*4);
regs[32] = psxRegs.GPR.n.lo;
@@ -1968,6 +1970,7 @@ void psxBios_ReturnFromException() { // 17
LoadRegs();
pc0 = psxRegs.CP0.n.EPC;
+ k0 = interrupt_r26;
if (psxRegs.CP0.n.Cause & 0x80000000) pc0 += 4;
psxRegs.CP0.n.Status = (psxRegs.CP0.n.Status & 0xfffffff0) |
@@ -3190,6 +3193,7 @@ void psxBiosException() {
switch (psxRegs.CP0.n.Cause & 0x3c) {
case 0x00: // Interrupt
+ interrupt_r26=psxRegs.CP0.n.EPC;
#ifdef PSXCPU_LOG
// PSXCPU_LOG("interrupt\n");
#endif