wingo pushed a commit to branch lightning
in repository guile.
commit af9df5faeb74331d063afc221ebc0604728b8552
Author: Paulo Andrade <[email protected]>
Date: Fri Dec 26 17:23:39 2014 -0200
PPC: Build and pass all tests in powerpcle
* lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues
on the powerpc le backend.
---
ChangeLog | 5 +++++
lib/jit_ppc-cpu.c | 6 +++++-
lib/jit_ppc.c | 6 +++---
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1583aa5..ae72602 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2014-12-26 Paulo Andrade <[email protected]>
+ * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues
+ on the powerpc le backend.
+
+2014-12-26 Paulo Andrade <[email protected]>
+
* lib/jit_ppc-cpu.c: Add mcrxr instruction emulation,
as this instruction has been phased out, and should be
implemented as a kernel trap.
diff --git a/lib/jit_ppc-cpu.c b/lib/jit_ppc-cpu.c
index f358bfa..b8f6066 100644
--- a/lib/jit_ppc-cpu.c
+++ b/lib/jit_ppc-cpu.c
@@ -26,7 +26,11 @@
# define fits_uint32_p(im) 1
# else
# define gpr_save_area 144 /* r14~r31 = 18 * 8 */
-# define params_offset 48
+# if if ABI_ELFv2
+# define params_offset 32
+# else
+# define params_offset 48
+# endif
# define can_sign_extend_int_p(im) \
(((im) >= 0 && (long)(im) <= 0x7fffffffL) || \
((im) < 0 && (long)(im) >= -0x80000000L))
diff --git a/lib/jit_ppc.c b/lib/jit_ppc.c
index 4549c99..d3df78c 100644
--- a/lib/jit_ppc.c
+++ b/lib/jit_ppc.c
@@ -279,7 +279,7 @@ _jit_arg_f(jit_state_t *_jit)
if (_jitc->function->self.argf < 13)
offset = _jitc->function->self.argf++;
else {
-#if __WORDSIZE == 32
+#if __WORDSIZE == 32 || __BYTE_ORDER == __LITTLE_ENDIAN
offset = _jitc->function->self.size;
#else
offset = _jitc->function->self.size + 4;
@@ -502,7 +502,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
#endif
}
else {
-#if __WORDSIZE == 32
+#if __WORDSIZE == 32 || __BYTE_ORDER == __LITTLE_ENDIAN
jit_stxi_f(_jitc->function->call.size + params_offset, JIT_SP, u);
#else
jit_stxi_f(_jitc->function->call.size + params_offset + 4,
@@ -549,7 +549,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
#endif
}
else {
-#if __WORDSIZE == 32
+#if __WORDSIZE == 32 || __BYTE_ORDER == __LITTLE_ENDIAN
jit_stxi_f(_jitc->function->call.size + params_offset, JIT_SP, regno);
#else
jit_stxi_f(_jitc->function->call.size + params_offset + 4,