+
+ .align 2
+ .global jump_syscall_hle
+ .type jump_syscall_hle, %function
+jump_syscall_hle:
+ str r0, [fp, #pcaddr-dynarec_local] /* PC must be set to EPC for psxException */
+ ldr r2, [fp, #last_count-dynarec_local]
+ mov r1, #0 /* in delay slot */
+ add r2, r2, r10
+ mov r0, #0x20 /* cause */
+ str r2, [fp, #cycle-dynarec_local] /* PCSX cycle counter */
+ bl psxException
+
+ /* note: psxException might do recorsive recompiler call from it's HLE code,
+ * so be ready for this */
+pcsx_return:
+ ldr r1, [fp, #next_interupt-dynarec_local]
+ ldr r10, [fp, #cycle-dynarec_local]
+ ldr r0, [fp, #pcaddr-dynarec_local]
+ sub r10, r10, r1
+ str r1, [fp, #last_count-dynarec_local]
+ bl get_addr_ht
+ mov pc, r0
+ .size jump_syscall_hle, .-jump_syscall_hle
+
+ .align 2
+ .global jump_hlecall
+ .type jump_hlecall, %function
+jump_hlecall:
+ ldr r2, [fp, #last_count-dynarec_local]
+ str r0, [fp, #pcaddr-dynarec_local]
+ add r2, r2, r10
+ adr lr, pcsx_return
+ str r2, [fp, #cycle-dynarec_local] /* PCSX cycle counter */
+ bx r1
+ .size jump_hlecall, .-jump_hlecall
+
+ .align 2
+ .global jump_intcall
+ .type jump_intcall, %function
+jump_intcall:
+ ldr r2, [fp, #last_count-dynarec_local]
+ str r0, [fp, #pcaddr-dynarec_local]
+ add r2, r2, r10
+ adr lr, pcsx_return
+ str r2, [fp, #cycle-dynarec_local] /* PCSX cycle counter */
+ b execI
+ .size jump_hlecall, .-jump_hlecall
+
+new_dyna_leave:
+ .align 2
+ .global new_dyna_leave
+ .type new_dyna_leave, %function
+ ldr r0, [fp, #last_count-dynarec_local]
+ add r12, fp, #28
+ add r10, r0, r10
+ str r10, [fp, #cycle-dynarec_local]
+ ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, pc}
+ .size new_dyna_leave, .-new_dyna_leave
+
+ /* these are used to call memhandlers */
+ .align 2