wiz port. Lots of refactoring, some bugfixes
[ginge.git] / loader / emu_arm.s
CommitLineData
3d3fa63b 1@ vim:filetype=armasm
2.text
3
4@ save registers and flags and call emu_handle_op
5@ r0 and r14 must be saved by caller, r0 is arg for handle_op
6@ on return everything is restored except lr, which is used to return
7
8.globl emu_call_handle_op
9emu_call_handle_op:
10 str sp, [sp, #(-0xf00 + 4*13)]
11 sub sp, sp, #0xf00
12 add sp, sp, #4
13 stmia sp, {r1-r12}
14 sub sp, sp, #4
15 mrs r2, cpsr
16 mov r1, sp
17 str r2, [sp, #4*15]
18 mov r4, lr
19 bl emu_handle_op
20 ldr r1, [sp, #4*15]
21 mov lr, r4
22 msr cpsr_f, r1
23 ldmia sp, {r0-r13}
24 bx lr
25