4 |
|
|
5 |
|
--- src/arm/sysv.S.orig 2015-01-01 10:47:51 UTC |
6 |
|
+++ src/arm/sysv.S |
7 |
+ |
@@ -360,7 +360,7 @@ ARM_FUNC_START(ffi_call_VFP) |
8 |
+ |
cmp r0, #3 |
9 |
+ |
sub ip, fp, #64 |
10 |
+ |
flddle d0, [ip] |
11 |
+ |
- fldmiadgt ip, {d0-d7} |
12 |
+ |
+ vldmiagt ip, {d0-d7} |
13 |
+ |
|
14 |
+ |
LSYM(Lbase_args): |
15 |
+ |
@ move first 4 parameters in registers |
16 |
|
@@ -396,7 +396,7 @@ LSYM(Lbase_args): |
17 |
|
beq LSYM(Lepilogue_vfp) |
18 |
|
|
22 |
|
beq LSYM(Lepilogue_vfp) |
23 |
|
|
24 |
|
cmp r3, #FFI_TYPE_FLOAT |
25 |
+ |
@@ -409,7 +409,7 @@ LSYM(Lbase_args): |
26 |
+ |
|
27 |
+ |
cmp r3, #FFI_TYPE_STRUCT_VFP_FLOAT |
28 |
+ |
cmpne r3, #FFI_TYPE_STRUCT_VFP_DOUBLE |
29 |
+ |
- fstmiadeq r2, {d0-d3} |
30 |
+ |
+ vstmiaeq r2, {d0-d3} |
31 |
+ |
|
32 |
+ |
LSYM(Lepilogue_vfp): |
33 |
+ |
RETLDM "r0-r3,fp" |
34 |
+ |
@@ -420,7 +420,7 @@ LSYM(Lepilogue_vfp): |
35 |
+ |
|
36 |
+ |
|
37 |
+ |
ARM_FUNC_START(ffi_closure_VFP) |
38 |
+ |
- fstmfdd sp!, {d0-d7} |
39 |
+ |
+ vstmdb sp!, {d0-d7} |
40 |
+ |
@ r0-r3, then d0-d7 |
41 |
+ |
UNWIND .pad #80 |
42 |
+ |
add ip, sp, #80 |
43 |
+ |
@@ -470,10 +470,10 @@ ARM_FUNC_START(ffi_closure_VFP) |
44 |
+ |
ldmia sp, {r0, r1} |
45 |
+ |
b .Lclosure_epilogue_vfp |
46 |
+ |
.Lretfloat_struct_vfp: |
47 |
+ |
- fldmiad sp, {d0-d1} |
48 |
+ |
+ vldmia sp, {d0-d1} |
49 |
+ |
b .Lclosure_epilogue_vfp |
50 |
+ |
.Lretdouble_struct_vfp: |
51 |
+ |
- fldmiad sp, {d0-d3} |
52 |
+ |
+ vldmia sp, {d0-d3} |
53 |
+ |
b .Lclosure_epilogue_vfp |
54 |
+ |
|
55 |
+ |
.ffi_closure_VFP_end: |