avcall-arm.S
上传用户:shenzhenrh
上传日期:2013-05-12
资源大小:2904k
文件大小:2k
- #include "asmarm.h"
- // Generated by gcc 2.6.3 for ARM/RISCiX
- rfp .req r9
- sl .req r10
- fp .req r11
- ip .req r12
- sp .req r13
- lr .req r14
- pc .req r15
- .text
- .align 0
- .global C(__builtin_avcall)
- DECLARE_FUNCTION(__builtin_avcall)
- C(__builtin_avcall:)
- // args = 0, pretend = 0, frame = 1024
- // frameC(needed) = 0, current_function_anonymous_args = 0
- stmfd sp!, {r4, lr}
- mov ip, $4
- sub sp, sp, $1024
- mov r4, r0
- ldr r3, [r4, $20]
- sub r3, r3, $32
- rsb r3, r4, r3
- mov r0, r3, asr $2
- cmp ip, r0
- bge L3
- add r1, r4, $16
- add r2, sp, $16
- L5:
- ldr r3, [r1, $32]
- add r1, r1, $4
- str r3, [r2, $-16]
- add ip, ip, $1
- cmp ip, r0
- add r2, r2, $4
- blt L5
- L3:
- ldr r0, [r4, $32]
- ldr r3, [r4, $44]
- ldr r2, [r4, $40]
- ldr r1, [r4, $36]
- mov lr, pc
- ldr pc, [r4, $0]
- mov ip, r0
- ldr r3, [r4, $12]
- cmp r3, $1
- beq L8
- cmp r3, $0
- beq L60
- cmp r3, $2
- beq L61
- cmp r3, $3
- beq L61
- cmp r3, $4
- beq L61
- cmp r3, $5
- beq L62
- cmp r3, $6
- beq L62
- cmp r3, $7
- beq L60
- cmp r3, $8
- beq L60
- cmp r3, $9
- beq L60
- cmp r3, $10
- beq L60
- ldr r2, [r4, $12]
- sub r3, r2, $11
- cmp r3, $1
- bls L63
- cmp r2, $13
- ldreq r3, [r4, $8]
- streq r0, [r3, $0] // float
- beq L8
- L31:
- cmp r2, $14
- ldreq r3, [r4, $8]
- stmeqia r3, {r0, r1} // double
- beq L8
- L33:
- cmp r2, $15
- beq L60
- cmp r2, $16
- bne L8
- ldr r3, [r4, $4]
- tst r3, $1
- beq L38
- ldr r3, [r4, $16]
- cmp r3, $1
- ldreq r2, [r4, $8]
- ldreqb r3, [ip, $0]
- streqb r3, [r2, $0]
- beq L8
- L39:
- cmp r3, $2
- bne L41
- ldr r2, [r4, $8]
- ldr r3, [ip, $0] // movhi
- strb r3, [r2, $0]
- mov r3, r3, asr $8
- strb r3, [r2, $1]
- b L8
- L41:
- cmp r3, $4
- ldreq r2, [r4, $8]
- ldreq r3, [ip, $0]
- streq r3, [r2, $0]
- beq L8
- L43:
- cmp r3, $8
- bne L45
- ldr r2, [r4, $8]
- ldr r3, [ip, $0]
- str r3, [r2, $0]
- ldr r2, [r4, $8]
- ldr r3, [ip, $4]
- str r3, [r2, $4]
- b L8
- L45:
- add r3, r3, $3
- mov r1, r3, lsr $2
- sub r1, r1, $1
- cmp r1, $0
- blt L8
- L49:
- ldr r2, [r4, $8]
- ldr r3, [ip, r1, asl $2]
- str r3, [r2, r1, asl $2]
- sub r1, r1, $1
- cmp r1, $0
- bge L49
- b L8
- L38:
- tst r3, $512
- beq L8
- ldr r3, [r4, $16]
- cmp r3, $1
- bne L53
- L61:
- ldr r3, [r4, $8]
- strb ip, [r3, $0]
- b L8
- L53:
- cmp r3, $2
- bne L55
- L62:
- ldr r2, [r4, $8]
- strb ip, [r2, $0]
- mov r3, ip, asr $8
- strb r3, [r2, $1]
- b L8
- L55:
- cmp r3, $4
- bne L57
- L60:
- ldr r3, [r4, $8]
- str ip, [r3, $0]
- b L8
- L57:
- cmp r3, $8
- bne L8
- L63:
- ldr r3, [r4, $8]
- str ip, [r3, $0]
- ldr r3, [r4, $8]
- str r1, [r3, $4]
- L8:
- mov r0, $0
- add sp, sp, $1024
- ldmfd sp!, {r4, pc}^