mips: Fix build on MIPS64 with n32 ABI - lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib/lightning.c
diff options
context:
space:
mode:
authorPaul Cercueil <paul@crapouillou.net>2024年06月02日 22:35:24 +0200
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2024年06月03日 13:12:42 -0300
commit778d326740f9893c398f959b419629935b613099 (patch)
tree8d3600c0ca02b848b61f590cee1d3095df107320 /lib/lightning.c
parentd9caafa3be9631a1d13e2268cccd0d3a97f4d90a (diff)
downloadlightning-778d326740f9893c398f959b419629935b613099.tar.gz
mips: Fix build on MIPS64 with n32 ABI
The build on MIPS64 with n32 ABI was broken for a few reasons. - The _movi_d_w() functions had a different prototype in jit_mips-fpu.c than in lightning.c; - The movi_d_w() was still provided by lightning.c even though jit_mips-fpu.c provides its own version; - The "ww" opcodes were allowed, which was probably not meant to happen. Fixes a build issue reported by Buildroot: http://autobuild.buildroot.net/results/27123bf0ddc84599bceb02ac987327817d498659/ Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Diffstat (limited to 'lib/lightning.c')
-rw-r--r--lib/lightning.c 43
1 files changed, 21 insertions, 22 deletions
diff --git a/lib/lightning.c b/lib/lightning.c
index e4a8c65..ce0e295 100644
--- a/lib/lightning.c
+++ b/lib/lightning.c
@@ -4334,12 +4334,12 @@ static void _htoni_ul(jit_state_t*, jit_int32_t, jit_word_t);
#endif
# define movi_f_w(r0, i0) _movi_f_w(_jit, r0, i0)
static void _movi_f_w(jit_state_t*, jit_int32_t, jit_float32_t);
-#if __WORDSIZE == 32 && !(defined(__mips__) && NEW_ABI)
-# define movi_d_ww(r0, r1, i0) _movi_d_ww(_jit, r0, r1, i0)
-static void _movi_d_ww(jit_state_t*, jit_int32_t, jit_int32_t, jit_float64_t);
-#else
+#if __WORDSIZE == 64
# define movi_d_w(r0, i0) _movi_d_w(_jit, r0, i0)
static void _movi_d_w(jit_state_t*, jit_int32_t, jit_float64_t);
+#elif !(defined(__mips__) && NEW_ABI)
+# define movi_d_ww(r0, r1, i0) _movi_d_ww(_jit, r0, r1, i0)
+static void _movi_d_ww(jit_state_t*, jit_int32_t, jit_int32_t, jit_float64_t);
#endif
#define cloi(r0, i0) _cloi(_jit, r0, i0)
static void _cloi(jit_state_t*, jit_int32_t, jit_word_t);
@@ -4806,7 +4806,23 @@ _movi_f_w(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
movi(r0, data.i);
}
-#if __WORDSIZE == 32 && !(defined(__mips__) && NEW_ABI)
+#if __WORDSIZE == 64
+static void
+_movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
+{
+ union {
+ jit_int64_t l;
+ jit_float64_t d;
+ } data;
+ data.d = i0;
+# if defined(__ia64__)
+ /* Should be used only in this case (with out0 == 120) */
+ if (r0 >= 120)
+ r0 = _jitc->rout + (r0 - 120);
+# endif
+ movi(r0, data.l);
+}
+#elif !(defined(__mips__) && NEW_ABI)
static void
_movi_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0)
{
@@ -4824,23 +4840,6 @@ _movi_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0)
movi(r0, data.i[1]);
# endif
}
-
-#else
-static void
-_movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
-{
- union {
- jit_int64_t l;
- jit_float64_t d;
- } data;
- data.d = i0;
-# if defined(__ia64__)
- /* Should be used only in this case (with out0 == 120) */
- if (r0 >= 120)
- r0 = _jitc->rout + (r0 - 120);
-# endif
- movi(r0, data.l);
-}
#endif
void
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月12日 12:28:27 +0000

AltStyle によって変換されたページ (->オリジナル) /