Mercurial > pub > dyncall > dyncall
comparison dyncall/dyncall_call_arm32_arm_armhf.S @ 36:93f315f02a32
- armhf dyncall optimization/cleanup
author | cslag |
---|---|
date | Fri, 18 Dec 2015 01:07:40 +0100 |
parents | 3e629dc19168 |
children | 9bd3c5219505 |
comparison
equal
deleted
inserted
replaced
35:61edd9cf8026 | 36:93f315f02a32 |
---|---|
39 .text | 39 .text |
40 .code 32 /* ARM mode */ | 40 .code 32 /* ARM mode */ |
41 .arch armv6 | 41 .arch armv6 |
42 .fpu vfp | 42 .fpu vfp |
43 | 43 |
44 /* | |
45 1st arg / r0 = funptr | |
46 2st arg / r1 = ptr to int args | |
47 3st arg / r2 = size | |
48 4st arg / r3 = ptr to float args | |
49 */ | |
44 GLOBAL_C(dcCall_arm32_armhf) | 50 GLOBAL_C(dcCall_arm32_armhf) |
45 ENTRY_C(dcCall_arm32_armhf) | 51 ENTRY_C(dcCall_arm32_armhf) |
46 | 52 |
47 /* Prolog. This function never needs to spill inside its prolog, so just store the permanent registers. */ | 53 /* Prolog. This function never needs to spill inside its prolog, so just store the permanent registers. */ |
48 mov r12 , r13 /* Stack ptr (r13) -> temporary (r12). */ | 54 mov r12 , r13 /* Stack ptr (r13) -> temporary (r12). */ |
51 mov r11 , r12 /* Set frame ptr. */ | 57 mov r11 , r12 /* Set frame ptr. */ |
52 mov r4 , r0 /* r4 = 'fptr' (1st argument is passed in r0). */ | 58 mov r4 , r0 /* r4 = 'fptr' (1st argument is passed in r0). */ |
53 mov r5 , r1 /* r5 = 'args' (2nd argument is passed in r1). */ | 59 mov r5 , r1 /* r5 = 'args' (2nd argument is passed in r1). */ |
54 | 60 |
55 /* Load 16 single-precision registers (= 8 double-precision registers). */ | 61 /* Load 16 single-precision registers (= 8 double-precision registers). */ |
56 flds s0, [r3,#0 ] | 62 fldmiad r3, {d0-d7} |
57 flds s1, [r3,#4 ] | |
58 flds s2, [r3,#8 ] | |
59 flds s3, [r3,#12] | |
60 flds s4, [r3,#16] | |
61 flds s5, [r3,#20] | |
62 flds s6, [r3,#24] | |
63 flds s7, [r3,#28] | |
64 flds s8, [r3,#32] | |
65 flds s9, [r3,#36] | |
66 flds s10, [r3,#40] | |
67 flds s11, [r3,#44] | |
68 flds s12, [r3,#48] | |
69 flds s13, [r3,#52] | |
70 flds s14, [r3,#56] | |
71 flds s15, [r3,#60] | |
72 | 63 |
73 sub r2 , r2 , #16 | 64 sub r2 , r2 , #16 |
74 cmp r2, #0 | 65 cmp r2, #0 |
75 ble armhf_call | 66 ble armhf_call |
76 | 67 |