aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/r3000a.h
diff options
context:
space:
mode:
authornotaz2010-12-21 15:46:24 +0200
committernotaz2010-12-22 01:24:05 +0200
commitd28b54b1d1d161b3f3acc3299c43106a022451e6 (patch)
tree2ba7ad08ffdd0651100206931f99ece3dfa490b2 /libpcsxcore/r3000a.h
parent96d9fde1230e5ae6de069ff9e4a0f16185650ab5 (diff)
downloadpcsx_rearmed-d28b54b1d1d161b3f3acc3299c43106a022451e6.tar.gz
pcsx_rearmed-d28b54b1d1d161b3f3acc3299c43106a022451e6.tar.bz2
pcsx_rearmed-d28b54b1d1d161b3f3acc3299c43106a022451e6.zip
core: update to newer interrupt code, seems to affect timings too
pcsxr-svn commit: Author: weimingzhi Date: Sat Aug 7 23:52:44 2010 +0000 refactored the interrupt scheduling code a bit to make it a little more readable than using those "magic" numbers.
Diffstat (limited to 'libpcsxcore/r3000a.h')
-rw-r--r--libpcsxcore/r3000a.h28
1 files changed, 27 insertions, 1 deletions
diff --git a/libpcsxcore/r3000a.h b/libpcsxcore/r3000a.h
index 9379f45..a2fcca3 100644
--- a/libpcsxcore/r3000a.h
+++ b/libpcsxcore/r3000a.h
@@ -145,6 +145,17 @@ typedef union {
PAIR p[32];
} psxCP2Ctrl;
+enum {
+ PSXINT_SIO = 0,
+ PSXINT_CDR,
+ PSXINT_CDREAD,
+ PSXINT_GPUDMA,
+ PSXINT_MDECOUTDMA,
+ PSXINT_SPUDMA,
+ PSXINT_NEWDRC_CHECK,
+ PSXINT_COUNT
+};
+
typedef struct {
psxGPRRegs GPR; /* General Purpose Registers */
psxCP0Regs CP0; /* Coprocessor0 Registers */
@@ -154,11 +165,26 @@ typedef struct {
u32 code; /* The instruction */
u32 cycle;
u32 interrupt;
- u32 intCycle[32];
+ struct { u32 sCycle, cycle; } intCycle[32];
} psxRegisters;
extern psxRegisters psxRegs;
+/* new_dynarec stuff */
+extern u32 event_cycles[PSXINT_COUNT];
+extern u32 next_interupt;
+
+#define new_dyna_set_event(e, c) { \
+ s32 c_ = c; \
+ u32 abs_ = psxRegs.cycle + c_; \
+ s32 odi_ = next_interupt - psxRegs.cycle; \
+ event_cycles[e] = abs_; \
+ if (c_ < odi_) { \
+ /*printf("%u: next_interupt %d -> %d (%u)\n", psxRegs.cycle, odi_, c_, abs_);*/ \
+ next_interupt = abs_; \
+ } \
+}
+
#if defined(__BIGENDIAN__)
#define _i32(x) *(s32 *)&x