summaryrefslogtreecommitdiffstats
path: root/meta-efl/recipes-efl/webkit/webkit-efl/0002-ARMAssembler.h-Don-t-generate-BKPT-and-BLX-for-armv4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-efl/recipes-efl/webkit/webkit-efl/0002-ARMAssembler.h-Don-t-generate-BKPT-and-BLX-for-armv4.patch')
-rw-r--r--meta-efl/recipes-efl/webkit/webkit-efl/0002-ARMAssembler.h-Don-t-generate-BKPT-and-BLX-for-armv4.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/meta-efl/recipes-efl/webkit/webkit-efl/0002-ARMAssembler.h-Don-t-generate-BKPT-and-BLX-for-armv4.patch b/meta-efl/recipes-efl/webkit/webkit-efl/0002-ARMAssembler.h-Don-t-generate-BKPT-and-BLX-for-armv4.patch
new file mode 100644
index 000000000..9f005bcd3
--- /dev/null
+++ b/meta-efl/recipes-efl/webkit/webkit-efl/0002-ARMAssembler.h-Don-t-generate-BKPT-and-BLX-for-armv4.patch
@@ -0,0 +1,80 @@
1From e284e92da00011e55d8f79383034e0c9c1a8a106 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Thu, 27 Feb 2014 13:40:43 +0100
4Subject: [PATCH 2/3] ARMAssembler.h: Don't generate BKPT and BLX for armv4*
5
6* I haven't tested it in runtime yet, but it's better than to wait for asm failure later:
7 {standard input}: Assembler messages:
8 {standard input}:35: Error: selected processor does not support ARM mode `bkpt #0'
9 {standard input}:62: Error: selected processor does not support ARM mode `blx llint_throw_stack_overflow_error'
10 ...
11
12Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
13---
14 Source/JavaScriptCore/assembler/ARMAssembler.h | 19 +++++++++++++++++++
15 1 file changed, 19 insertions(+)
16
17diff --git a/Source/JavaScriptCore/assembler/ARMAssembler.h b/Source/JavaScriptCore/assembler/ARMAssembler.h
18index 087d31c..1b40ded 100644
19--- a/Source/JavaScriptCore/assembler/ARMAssembler.h
20+++ b/Source/JavaScriptCore/assembler/ARMAssembler.h
21@@ -211,7 +211,9 @@ namespace JSC {
22 LDMIA = 0x08b00000,
23 B = 0x0a000000,
24 BL = 0x0b000000,
25+#if WTF_ARM_ARCH_AT_LEAST(5)
26 BX = 0x012fff10,
27+#endif
28 VMOV_VFP64 = 0x0c400a10,
29 VMOV_ARM64 = 0x0c500a10,
30 VMOV_VFP32 = 0x0e000a10,
31@@ -223,8 +225,10 @@ namespace JSC {
32 VCVT_F64_F32 = 0x0eb70ac0,
33 VMRS_APSR = 0x0ef1fa10,
34 CLZ = 0x016f0f10,
35+#if WTF_ARM_ARCH_AT_LEAST(5)
36 BKPT = 0xe1200070,
37 BLX = 0x012fff30,
38+#endif
39 #if WTF_ARM_ARCH_AT_LEAST(7)
40 MOVW = 0x03000000,
41 MOVT = 0x03400000,
42@@ -689,7 +693,11 @@ namespace JSC {
43
44 void bkpt(ARMWord value)
45 {
46+#if WTF_ARM_ARCH_AT_LEAST(5)
47 m_buffer.putInt(BKPT | ((value & 0xff0) << 4) | (value & 0xf));
48+#else
49+ // BKPT is available in ARMv5T and above, skip it here
50+#endif
51 }
52
53 void nop()
54@@ -704,12 +712,23 @@ namespace JSC {
55
56 void bx(int rm, Condition cc = AL)
57 {
58+#if WTF_ARM_ARCH_AT_LEAST(5)
59 emitInstruction(toARMWord(cc) | BX, 0, 0, RM(rm));
60+#else
61+ // BX is available in ARMv5T and above.
62+ emitInstruction(toARMWord(cc) | MOV, ARMRegisters::pc, ARMRegisters::lr, 0);
63+#endif
64 }
65
66 AssemblerLabel blx(int rm, Condition cc = AL)
67 {
68+#if WTF_ARM_ARCH_AT_LEAST(5)
69 emitInstruction(toARMWord(cc) | BLX, 0, 0, RM(rm));
70+#else
71+ // BLX is available in ARMv5T and above.
72+ emitInstruction(toARMWord(cc) | MOV, ARMRegisters::lr, ARMRegisters::pc, 0);
73+ emitInstruction(toARMWord(cc) | MOV, ARMRegisters::pc, RM(rm), 0);
74+#endif
75 return m_buffer.label();
76 }
77
78--
791.9.0
80