forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
From 501a6b55853af549fae72723e74271f2a4ec7cf6 Mon Sep 17 00:00:00 2001
From: Brett Warren <brett.warren@arm.com>
Date: Fri, 27 Nov 2020 15:28:42 +0000
Subject: [PATCH] arm/sysv: reverted clang VFP mitigation
 
Since commit e3d2812ce43940aacae5bab2d0e965278cb1e7ea,
seperate instructions were used when compiling under clang,
as clang didn't allow the directives at the time. This mitigation
now causes compilation to fail under clang 10, as described by
https://github.com/libffi/libffi/issues/607. Now that
clang supports the LDC and SDC instructions, this mitigation
has been reverted.
 
Upstream-Status: Pending
Signed-off-by: Brett Warren <brett.warren@arm.com>
---
 src/arm/sysv.S | 33 ---------------------------------
 1 file changed, 33 deletions(-)
 
diff --git a/src/arm/sysv.S b/src/arm/sysv.S
index fb36213..e4272a1 100644
--- a/src/arm/sysv.S
+++ b/src/arm/sysv.S
@@ -142,13 +142,8 @@ ARM_FUNC_START(ffi_call_VFP)
 
     cmp    r3, #3            @ load only d0 if possible
     ite    le
-#ifdef __clang__
-    vldrle d0, [r0]
-    vldmgt r0, {d0-d7}
-#else
     ldcle    p11, cr0, [r0]        @ vldrle d0, [r0]
     ldcgt    p11, cr0, [r0], {16}    @ vldmgt r0, {d0-d7}
-#endif
     add    r0, r0, #64        @ discard the vfp register args
     /* FALLTHRU */
 ARM_FUNC_END(ffi_call_VFP)
@@ -193,25 +188,13 @@ ARM_FUNC_START(ffi_call_SYSV)
 #endif
 0:
 E(ARM_TYPE_VFP_S)
-#ifdef __clang__
-    vstr s0, [r2]
-#else
     stc    p10, cr0, [r2]        @ vstr s0, [r2]
-#endif
     pop    {fp,pc}
 E(ARM_TYPE_VFP_D)
-#ifdef __clang__
-    vstr d0, [r2]
-#else
     stc    p11, cr0, [r2]        @ vstr d0, [r2]
-#endif
     pop    {fp,pc}
 E(ARM_TYPE_VFP_N)
-#ifdef __clang__
-    vstm r2, {d0-d3}
-#else
     stc    p11, cr0, [r2], {8}    @ vstm r2, {d0-d3}
-#endif
     pop    {fp,pc}
 E(ARM_TYPE_INT64)
     str    r1, [r2, #4]
@@ -320,11 +303,7 @@ ARM_FUNC_START(ffi_closure_VFP)
     add    ip, sp, #16
     sub    sp, sp, #64+32            @ allocate frame
     cfi_adjust_cfa_offset(64+32)
-#ifdef __clang__
-    vstm sp, {d0-d7}
-#else
     stc    p11, cr0, [sp], {16}        @ vstm sp, {d0-d7}
-#endif
     stmdb    sp!, {ip,lr}
 
     /* See above.  */
@@ -358,25 +337,13 @@ ARM_FUNC_START_LOCAL(ffi_closure_ret)
     cfi_rel_offset(lr, 4)
 0:
 E(ARM_TYPE_VFP_S)
-#ifdef __clang__
-    vldr s0, [r2]
-#else
     ldc    p10, cr0, [r2]            @ vldr s0, [r2]
-#endif
     b    call_epilogue
 E(ARM_TYPE_VFP_D)
-#ifdef __clang__
-    vldr d0, [r2]
-#else
     ldc    p11, cr0, [r2]            @ vldr d0, [r2]
-#endif
     b    call_epilogue
 E(ARM_TYPE_VFP_N)
-#ifdef __clang__
-    vldm r2, {d0-d3}
-#else
     ldc    p11, cr0, [r2], {8}        @ vldm r2, {d0-d3}
-#endif
     b    call_epilogue
 E(ARM_TYPE_INT64)
     ldr    r1, [r2, #4]
-- 
2.25.1