@ vim:filetype=armasm .text @ save registers and flags and call emu_handle_op @ r0 and r14 must be saved by caller, r0 is arg for handle_op @ on return everything is restored except lr, which is used to return .globl emu_call_handle_op emu_call_handle_op: str sp, [sp, #(-0xf00 + 4*13)] sub sp, sp, #0xf00 add sp, sp, #4 stmia sp, {r1-r12} sub sp, sp, #4 mrs r2, cpsr mov r1, sp str r2, [sp, #4*15] mov r4, lr bl emu_handle_op ldr r1, [sp, #4*15] mov lr, r4 msr cpsr_f, r1 ldmia sp, {r0-r13} bx lr