aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-extended/mozjs/mozjs/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
blob: bc1af3c702d80ea5cf3cc078a232d89cd5094909 (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
From 5ad700c92224193bfc789f7d53af38fc6f8b8904 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Thu, 19 Jul 2018 17:31:35 +0800
Subject: [PATCH] fix compiling failure on mips64-n32 bsp

- Tweak mips64-n32 with mips32

- The toolchain of mips64-n32 supports both of macro
  `__mips64' and `__mips__', but 32bit is required here.

- N32 uses 64-bit registers but restricts addresses to 32 bits.
  https://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf
  Table 2-1 specifies the use of registers in n32 and native 64-bit mode.
  From the table, N32 and N64 have the same registers

Upstream-Status: Inappropriate [oe specific]

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 build/moz.configure/init.configure                | 5 ++++-
 js/src/jit/mips-shared/Architecture-mips-shared.h | 4 +++-
 python/mozbuild/mozbuild/configure/constants.py   | 2 +-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
index 6fe6591..a77b46c 100644
--- a/build/moz.configure/init.configure
+++ b/build/moz.configure/init.configure
@@ -357,7 +357,10 @@ def split_triplet(triplet):
         canonical_cpu = 'mips32'
         endianness = 'little' if 'el' in cpu else 'big'
     elif cpu in ('mips64', 'mips64el'):
-        canonical_cpu = 'mips64'
+        if 'n32' in triplet:
+            canonical_cpu = 'mips32'
+        else:
+            canonical_cpu = 'mips64'
         endianness = 'little' if 'el' in cpu else 'big'
     elif cpu.startswith('aarch64'):
         canonical_cpu = 'aarch64'
diff --git a/js/src/jit/mips-shared/Architecture-mips-shared.h b/js/src/jit/mips-shared/Architecture-mips-shared.h
index 7afe305..c6e29dc 100644
--- a/js/src/jit/mips-shared/Architecture-mips-shared.h
+++ b/js/src/jit/mips-shared/Architecture-mips-shared.h
@@ -24,6 +24,8 @@
 #define USES_O32_ABI
 #elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABI64)) || defined(JS_SIMULATOR_MIPS64)
 #define USES_N64_ABI
+#elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABIN32))
+#define USES_N32_ABI
 #else
 #error "Unsupported ABI"
 #endif
@@ -91,7 +93,7 @@ class Registers
         ta1 = t5,
         ta2 = t6,
         ta3 = t7,
-#elif defined(USES_N64_ABI)
+#elif defined(USES_N64_ABI) || defined(USES_N32_ABI)
         a4 = r8,
         a5 = r9,
         a6 = r10,
diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
index dfc7cf8..27f83ab 100644
--- a/python/mozbuild/mozbuild/configure/constants.py
+++ b/python/mozbuild/mozbuild/configure/constants.py
@@ -83,8 +83,8 @@ CPU_preprocessor_checks = OrderedDict((
     ('hppa', '__hppa__'),
     ('sparc64', '__sparc__ && __arch64__'),
     ('sparc', '__sparc__'),
-    ('mips64', '__mips64'),
     ('mips32', '__mips__'),
+    ('mips64', '__mips64'),
 ))
 
 assert sorted(CPU_preprocessor_checks.keys()) == sorted(CPU.POSSIBLE_VALUES)
-- 
2.7.4