1+ Index: dyncall/dyncall/dyncall_call_arm32_arm_armhf.S
2+ ===================================================================
3+ --- dyncall/dyncall/dyncall_call_arm32_arm_armhf.S (revision 1637)
4+ +++ dyncall/dyncall/dyncall_call_arm32_arm_armhf.S (working copy)
5+ @@ -52,22 +52,8 @@
6+ mov r5 , r1 /* r5 = 'args' (2nd argument is passed in r1). */
7+
8+ /* Load 16 single-precision registers (= 8 double-precision registers). */
9+ - flds s0, [r3,#0 ]
10+ - flds s1, [r3,#4 ]
11+ - flds s2, [r3,#8 ]
12+ - flds s3, [r3,#12]
13+ - flds s4, [r3,#16]
14+ - flds s5, [r3,#20]
15+ - flds s6, [r3,#24]
16+ - flds s7, [r3,#28]
17+ - flds s8, [r3,#32]
18+ - flds s9, [r3,#36]
19+ - flds s10, [r3,#40]
20+ - flds s11, [r3,#44]
21+ - flds s12, [r3,#48]
22+ - flds s13, [r3,#52]
23+ - flds s14, [r3,#56]
24+ - flds s15, [r3,#60]
25+ + /* http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/Bcfchhif.html */
26+ + fldmiad r3, {d0-d7}
27+
28+ sub r2 , r2 , #16
29+ cmp r2, #0
30+ Index: dyncall/dyncall/dyncall_call_arm32_thumb_armhf.S
31+ ===================================================================
32+ --- dyncall/dyncall/dyncall_call_arm32_thumb_armhf.S (revision 1637)
33+ +++ dyncall/dyncall/dyncall_call_arm32_thumb_armhf.S (working copy)
34+ @@ -61,22 +61,8 @@
35+ mov r5 , r1 /* r5 = 'args' (2nd argument is passed in r1). */
36+
37+ /* Load 16 single-precision registers (= 8 double-precision registers). */
38+ - flds s0, [r3,#0 ]
39+ - flds s1, [r3,#4 ]
40+ - flds s2, [r3,#8 ]
41+ - flds s3, [r3,#12]
42+ - flds s4, [r3,#16]
43+ - flds s5, [r3,#20]
44+ - flds s6, [r3,#24]
45+ - flds s7, [r3,#28]
46+ - flds s8, [r3,#32]
47+ - flds s9, [r3,#36]
48+ - flds s10, [r3,#40]
49+ - flds s11, [r3,#44]
50+ - flds s12, [r3,#48]
51+ - flds s13, [r3,#52]
52+ - flds s14, [r3,#56]
53+ - flds s15, [r3,#60]
54+ + /* http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/Bcfchhif.html */
55+ + fldmiad r3, {d0-d7}
56+
57+ sub r2 , #16
58+ cmp r2, #0
59+ Index: dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.c
60+ ===================================================================
61+ --- dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.c (revision 1637)
62+ +++ dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.c (working copy)
63+ @@ -105,7 +105,8 @@
64+ static void a_double(DCCallVM* in_p, DCdouble x)
65+ {
66+ DCCallVM_arm32_armhf* p = (DCCallVM_arm32_armhf*)in_p;
67+ - if (p->d < 16) {
68+ + if (p->d <= 14) {
69+ + //if (p->d < 16) {
70+ * (double*) &p->S[p->d] = x;
71+ p->d += 2;
72+ if (!(p->s & 1)) {
73+ Index: dyncall/dyncallback/dyncall_args.c
74+ ===================================================================
75+ --- dyncall/dyncallback/dyncall_args.c (revision 1637)
76+ +++ dyncall/dyncallback/dyncall_args.c (working copy)
77+ @@ -26,20 +26,24 @@
78+ #include "../dyncall/dyncall_macros.h"
79+
80+ #if defined(DC__Arch_Intel_x86)
81+ - #include "dyncall_args_x86.c"
82+ + # include "dyncall_args_x86.c"
83+ #elif defined (DC__Arch_AMD64)
84+ - #include "dyncall_args_x64.c"
85+ + # include "dyncall_args_x64.c"
86+ #elif defined (DC__Arch_PowerPC)
87+ - #include "dyncall_args_ppc32.c"
88+ + # include "dyncall_args_ppc32.c"
89+ #elif defined (DC__Arch_ARM_ARM)
90+ - #include "dyncall_args_arm32_arm.c"
91+ + # if defined(DC__ABI_ARM_HF)
92+ + # include "dyncall_args_arm32_arm_armhf.c"
93+ + # else
94+ + # include "dyncall_args_arm32_arm.c"
95+ + # endif
96+ #elif defined (DC__Arch_ARM_THUMB)
97+ - #include "dyncall_args_arm32_thumb.c"
98+ + # include "dyncall_args_arm32_thumb.c"
99+ #elif defined (DC__Arch_MIPS)
100+ - #include "dyncall_args_mips.c"
101+ + # include "dyncall_args_mips.c"
102+ #elif defined (DC__Arch_Sparc)
103+ - #include "dyncall_args_sparc32.c"
104+ + # include "dyncall_args_sparc32.c"
105+ #elif defined (DC__Arch_Sparcv9)
106+ - #include "dyncall_args_sparc64.c"
107+ + # include "dyncall_args_sparc64.c"
108+ #endif
109+
110+ Index: dyncall/dyncallback/dyncall_callback_arm32_arm_gas.s
111+ ===================================================================
112+ --- dyncall/dyncallback/dyncall_callback_arm32_arm_gas.s (revision 1637)
113+ +++ dyncall/dyncallback/dyncall_callback_arm32_arm_gas.s (working copy)
114+ @@ -52,6 +52,11 @@
115+ /* Grab arguments. */
116+ mov %r4, #0
117+ stmdb %r13!, {%r0-%r4, %r11} /* Spill first 4 args to DCArgs, along with reg_count and (stack) pointer to remaining args. */
118+ + sub %r13, #4 /* Make room for s */
119+ + mov %r13, #0 /* Initialize s to 0 */
120+ + sub %r13, #4 /* Make room for d */
121+ + mov %r13, #0 /* Initialize d to 0 */
122+ + fstmdbd %r13!, { d0-d7 } /* Copy d0 to d7 to S while decreasing frame pointer */
123+
124+ /* Prepare callback handler call. */
125+ mov %r0, %r12 /* Parameter 0 (r0) = DCCallback pointer (r12, pointer to thunk). */
1126Index: dyncall/dynload/dynload_syms_elf.c
2127===================================================================
3- --- dyncall/dynload/dynload_syms_elf.c (revision 1418 )
128+ --- dyncall/dynload/dynload_syms_elf.c (revision 1637 )
4129+++ dyncall/dynload/dynload_syms_elf.c (working copy)
5130@@ -54,6 +54,7 @@
6131
@@ -12,7 +137,7 @@ Index: dyncall/dynload/dynload_syms_elf.c
12137 #include <string.h>
13138Index: dyncall/dynload/dynload_syms_mach-o.c
14139===================================================================
15- --- dyncall/dynload/dynload_syms_mach-o.c (revision 1418 )
140+ --- dyncall/dynload/dynload_syms_mach-o.c (revision 1637 )
16141+++ dyncall/dynload/dynload_syms_mach-o.c (working copy)
17142@@ -28,6 +28,7 @@
18143 dynamic symbol resolver for Mach-O
@@ -314,7 +439,7 @@ Index: dyncall/dynload/dynload_syms_mach-o.c
314439 return NULL;
315440Index: dyncall/dynload/dynload_unix.c
316441===================================================================
317- --- dyncall/dynload/dynload_unix.c (revision 1418 )
442+ --- dyncall/dynload/dynload_unix.c (revision 1637 )
318443+++ dyncall/dynload/dynload_unix.c (working copy)
319444@@ -40,7 +40,7 @@
320445
@@ -327,7 +452,7 @@ Index: dyncall/dynload/dynload_unix.c
327452
328453Index: dyncall/dynload/dynload_windows.c
329454===================================================================
330- --- dyncall/dynload/dynload_windows.c (revision 1418 )
455+ --- dyncall/dynload/dynload_windows.c (revision 1637 )
331456+++ dyncall/dynload/dynload_windows.c (working copy)
332457@@ -40,7 +40,9 @@
333458 DLLib* dlLoadLibrary(const char* libPath)
0 commit comments