+ /* w0 = address, w1 = data, w2 = cycles */
+ ldr x3, [rFP, #LO_mem_wtab]
+ orr w4, wzr, w0, lsr #12
+ ldr x3, [x3, w4, uxtw #3]
+ adds x3, x3, x3
+ bcs jump_handle_swx_interp
+ add x3, x0, x3
+ mov w0, w2
+ tbz x3, #1, 10f // & 2
+ tbz x3, #0, 2f // & 1
+3:
+ strb w1, [x3]
+ ret
+2:
+ strh w1, [x3]
+ ret
+10:
+ tbz x3, #0, 0f // & 1
+1:
+ lsr w2, w1, #8
+ strb w1, [x3]
+ sturh w2, [x3, #1]
+ ret
+0:
+ str w1, [x3]
+ ret
+
+jump_handle_swx_interp: /* almost never happens */
+ ldr w3, [rFP, #LO_last_count]
+ add x0, rFP, #LO_psxRegs
+ add w2, w3, w2
+ str w2, [rFP, #LO_cycle] /* PCSX cycles */
+ bl execI
+ b jump_to_new_pc
+
+FUNCTION(call_gteStall):
+ /* w0 = op_cycles, w1 = cycles */
+ ldr w2, [rFP, #LO_last_count]
+ str lr, [rFP, #LO_saved_lr]
+ add w1, w1, w2
+ str w1, [rFP, #LO_cycle]
+ add x1, rFP, #LO_psxRegs
+ bl gteCheckStallRaw
+ ldr lr, [rFP, #LO_saved_lr]
+ add rCC, rCC, w0
+ ret