DRC_VAR(stop, 4)
DRC_VAR(branch_target, 4)
DRC_VAR(address, 4)
-#DRC_VAR(align0, 16) /* unused/alignment */
+DRC_VAR(hack_addr, 4)
DRC_VAR(psxRegs, LO_psxRegs_end - LO_psxRegs)
/* psxRegs */
.endm
.macro memhandler_post
- ldr w2, [rFP, #LO_next_interupt]
- ldr w1, [rFP, #LO_cycle]
- sub w0, w1, w2
- str w2, [rFP, #LO_last_count]
+ ldr w0, [rFP, #LO_next_interupt]
+ ldr w2, [rFP, #LO_cycle] // memhandlers can modify cc, like dma
+ str w0, [rFP, #LO_last_count]
+ sub w0, w2, w0
.endm
FUNCTION(do_memhandler_pre):
FUNCTION(jump_handle_swl):
/* w0 = address, w1 = data, w2 = cycles */
ldr x3, [rFP, #LO_mem_wtab]
- mov w4, w0, lsr #12
+ orr w4, wzr, w0, lsr #12
ldr x3, [x3, w4, uxtw #3]
adds x3, x3, x3
bcs 4f
FUNCTION(jump_handle_swr):
/* w0 = address, w1 = data, w2 = cycles */
ldr x3, [rFP, #LO_mem_wtab]
- mov w4, w0, lsr #12
+ orr w4, wzr, w0, lsr #12
ldr x3, [x3, w4, uxtw #3]
adds x3, x3, x3
bcs 4f