summaryrefslogtreecommitdiff
path: root/dev-lang/spidermonkey/files/spidermonkey-68.0-loong-support.patch
blob: f7010d5ebf32aa4cde21716e2cb941eae062497c (plain)
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
https://raw.githubusercontent.com/xen0n/loongson-overlay/00901fd4c599ec320c7852cbd30b40d3f6aa8971/dev-lang/spidermonkey/files/spidermonkey-68.0-add-loongarch64-support.patch

--- a/build/moz.configure/init.configure
+++ b/build/moz.configure/init.configure
@@ -734,6 +734,9 @@ def split_triplet(triplet, allow_unknown
     elif cpu == 'sh4':
         canonical_cpu = 'sh4'
         endianness = 'little'
+    elif cpu == 'loongarch64':
+        canonical_cpu = 'loongarch64'
+        endianness = 'little'
     elif allow_unknown:
         canonical_cpu = cpu
         endianness = 'unknown'
--- a/js/src/jit/AtomicOperations.h
+++ b/js/src/jit/AtomicOperations.h
@@ -382,6 +382,9 @@ inline bool AtomicOperations::isLockfree
 #  else
 #    include "jit/shared/AtomicOperations-feeling-lucky.h"
 #  endif
+#elif defined(__loongarch64)
+// This is only here to avoid merge conflict with spidermonkey-68.0-add-riscv-support.patch.
+#  include "jit/shared/AtomicOperations-feeling-lucky.h"
 #elif defined(__mips__)
 #  if defined(__clang__) || defined(__GNUC__)
 #    include "jit/mips-shared/AtomicOperations-mips-shared.h"
--- a/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h
+++ b/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h
@@ -57,6 +57,11 @@
 #  define HAS_64BIT_LOCKFREE
 #endif
 
+#ifdef __loongarch64
+#  define HAS_64BIT_ATOMICS
+#  define HAS_64BIT_LOCKFREE
+#endif
+
 #if defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \
     defined(__PPC64LE__)
 #  define HAS_64BIT_ATOMICS
--- a/mfbt/tests/TestPoisonArea.cpp
+++ b/mfbt/tests/TestPoisonArea.cpp
@@ -127,6 +127,9 @@
 #elif defined __arm__ || defined _M_ARM
 #  define RETURN_INSTR 0xE12FFF1E /* bx lr */
 
+#elif defined __loongarch__
+#  define RETURN_INSTR 0x4c000020 /* jirl zero, ra, 0 */
+
 // PPC has its own style of CPU-id #defines.  There is no Windows for
 // PPC as far as I know, so no _M_ variant.
 #elif defined _ARCH_PPC || defined _ARCH_PWR || defined _ARCH_PWR2
--- a/python/mozbuild/mozbuild/configure/constants.py
+++ b/python/mozbuild/mozbuild/configure/constants.py
@@ -46,6 +46,7 @@ CPU_bitness = {
     'arm': 32,
     'hppa': 32,
     'ia64': 64,
+    'loongarch64': 64,
     'mips32': 32,
     'mips64': 64,
     'ppc': 32,
@@ -78,6 +79,7 @@ CPU_preprocessor_checks = OrderedDict((
     ('arm', '__arm__ || _M_ARM'),
     ('aarch64', '__aarch64__ || _M_ARM64'),
     ('ia64', '__ia64__'),
+    ('loongarch64', '__loongarch64'),
     ('s390x', '__s390x__'),
     ('s390', '__s390__'),
     ('ppc64', '__powerpc64__'),
--- a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
+++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
@@ -1068,6 +1068,10 @@ class LinuxCrossCompileToolchainTest(Bas
         'ia64-unknown-linux-gnu': little_endian + {
             '__ia64__': 1,
         },
+        'loongarch64-unknown-linux-gnu': little_endian + {
+            '__loongarch__': 1,
+            '__loongarch64': 1,
+        },
         's390x-unknown-linux-gnu': big_endian + {
             '__s390x__': 1,
             '__s390__': 1,
--- a/intl/icu/source/i18n/double-conversion-utils.h
+++ b/intl/icu/source/i18n/double-conversion-utils.h
@@ -117,6 +117,7 @@ int main(int argc, char** argv) {
 #if defined(_M_X64) || defined(__x86_64__) || \
     defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
     defined(__hppa__) || defined(__ia64__) || \
+    defined(__loongarch__) || \
     defined(__mips__) || \
     defined(__nios2__) || defined(__ghs) || \
     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
--- a/mfbt/double-conversion/double-conversion/utils.h
+++ b/mfbt/double-conversion/double-conversion/utils.h
@@ -117,6 +117,7 @@ int main(int argc, char** argv) {
 #if defined(_M_X64) || defined(__x86_64__) || \
     defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
     defined(__hppa__) || defined(__ia64__) || \
+    defined(__loongarch__) || \
     defined(__mips__) || \
     defined(__nios2__) || defined(__ghs) || \
     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \