1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
---
ARMJITInfo.cpp | 6 ++++++
1 file changed, 6 insertions(+)
--- a/lib/Target/ARM/ARMJITInfo.cpp
+++ b/lib/Target/ARM/ARMJITInfo.cpp
@@ -99,7 +99,13 @@
// The above twiddling of the saved return addresses allows us to
// deallocate everything, including the LR the stub saved, all in one
// pop instruction.
+#ifndef __thumb__
"ldmia sp!, {r0, r1, r2, r3, lr, pc}\n"
+#else
+ // thumb dont allow lr and pc to be poped in the same instruction.
+ "pop {r0, r1, r2, r3, lr}\n"
+ "pop {pc}\n"
+#endif
);
#else // Not an ARM host
void ARMCompilationCallback() {
|