drc/gte: add some stall handling
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / linkage_arm.S
index bbc52c3..f18488c 100644 (file)
@@ -33,6 +33,7 @@
 #define clean_blocks           ESYM(clean_blocks)
 #define gen_interupt           ESYM(gen_interupt)
 #define invalidate_addr                ESYM(invalidate_addr)
+#define gteCheckStallRaw       ESYM(gteCheckStallRaw)
 #endif
 
        .bss
@@ -820,4 +821,16 @@ FUNCTION(rcnt2_read_count_m1):
        lsr     r0, #16                 @ /= 8
        bx      lr
 
+FUNCTION(call_gteStall):
+       /* r0 = op_cycles, r1 = cycles */
+       ldr     r2, [fp, #LO_last_count]
+       str     lr, [fp, #LO_saved_lr]
+       add     r1, r1, r2
+       str     r1, [fp, #LO_cycle]
+       add     r1, fp, #LO_psxRegs
+       bl      gteCheckStallRaw
+       ldr     lr, [fp, #LO_saved_lr]
+       add     r10, r10, r0
+       bx      lr
+
 @ vim:filetype=armasm