wingo pushed a commit to branch lightning
in repository guile.
commit 8b28150303ac87d8662d7070c42fd6c87041573c
Author: pcpa <[email protected]>
Date: Tue Jun 25 12:21:07 2013 -0300
Correct mips o32 abi that was broken when adding n32 abi support.
* lib/jit_mips.c: Correct cut&paste error that caused wrong
stack offset calculation for double arguments in stack in
the o32 abi.
Correct typo in the __LITTLE_ENDIAN macro name, that came
from cut&paste error in the original typo in lib/jit_ppc.c.
* lib/jit_ia64.c, lib/jit_ppc.c: Correct typo in the
__LITTLE_ENDIAN macro name.
---
ChangeLog | 11 +++++++++++
lib/jit_ia64.c | 14 +++++++-------
lib/jit_mips.c | 38 +++++++++++++++++++-------------------
lib/jit_ppc.c | 2 +-
4 files changed, 38 insertions(+), 27 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 81fc943..8bd544a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2013-06-25 Paulo Andrade <[email protected]>
+
+ * lib/jit_mips.c: Correct cut&paste error that caused wrong
+ stack offset calculation for double arguments in stack in
+ the o32 abi.
+ Correct typo in the __LITTLE_ENDIAN macro name, that came
+ from cut&paste error in the original typo in lib/jit_ppc.c.
+
+ * lib/jit_ia64.c, lib/jit_ppc.c: Correct typo in the
+ __LITTLE_ENDIAN macro name.
+
2013-06-22 Paulo Andrade <[email protected]>
* check/lightning.c, configure.ac, include/lightning.h,
diff --git a/lib/jit_ia64.c b/lib/jit_ia64.c
index a4c8764..71142a2 100644
--- a/lib/jit_ia64.c
+++ b/lib/jit_ia64.c
@@ -405,7 +405,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
jit_extr_c(u, _R32 + v->u.w);
}
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_c(u, JIT_FP, v->u.w);
#else
jit_ldxi_c(u, JIT_FP,
@@ -420,7 +420,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
if (v->u.w < 8)
jit_extr_uc(u, _R32 + v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_uc(u, JIT_FP, v->u.w);
#else
jit_ldxi_uc(u, JIT_FP,
@@ -435,7 +435,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
if (v->u.w < 8)
jit_extr_s(u, _R32 + v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_s(u, JIT_FP, v->u.w);
#else
jit_ldxi_s(u, JIT_FP,
@@ -450,7 +450,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
if (v->u.w < 8)
jit_extr_us(u, _R32 + v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_us(u, JIT_FP, v->u.w);
#else
jit_ldxi_us(u, JIT_FP,
@@ -465,7 +465,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
if (v->u.w < 8)
jit_extr_i(u, _R32 + v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_i(u, JIT_FP, v->u.w);
#else
jit_ldxi_i(u, JIT_FP,
@@ -480,7 +480,7 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
if (v->u.w < 8)
jit_extr_ui(u, _R32 + v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_ui(u, JIT_FP, v->u.w);
#else
jit_ldxi_ui(u, JIT_FP,
@@ -504,7 +504,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
if (v->u.w < 8)
jit_movr_f(u, _F8 + v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_f(u, JIT_FP, v->u.w);
#else
jit_ldxi_f(u, JIT_FP,
diff --git a/lib/jit_mips.c b/lib/jit_mips.c
index 1bdf28a..c2ae781 100644
--- a/lib/jit_mips.c
+++ b/lib/jit_mips.c
@@ -286,7 +286,7 @@ _jit_arg(jit_state_t *_jit)
_jitc->function->self.size += STACK_SLOT;
}
#else
- offset = (_jitc->function->self.size - stack_framesize) >> 2;
+ offset = (_jitc->function->self.size - stack_framesize) >> STACK_SHIFT;
_jitc->function->self.argi = 1;
if (offset >= 4)
offset = _jitc->function->self.size;
@@ -314,7 +314,7 @@ _jit_arg_f(jit_state_t *_jit)
_jitc->function->self.size += STACK_SLOT;
}
#else
- offset = (_jitc->function->self.size - stack_framesize) >> 2;
+ offset = (_jitc->function->self.size - stack_framesize) >> STACK_SHIFT;
if (offset < 4) {
if (!_jitc->function->self.argi) {
if (offset == 0)
@@ -356,14 +356,14 @@ _jit_arg_d(jit_state_t *_jit)
_jitc->function->self.size += 4;
_jitc->function->self.argi = 1;
}
- offset = (_jitc->function->self.size - stack_framesize) >> 2;
+ offset = (_jitc->function->self.size - stack_framesize) >> STACK_SHIFT;
if (offset < 4) {
if (!_jitc->function->self.argi)
offset += 4;
}
else
offset = _jitc->function->self.size;
- _jitc->function->self.size += STACK_SLOT;
+ _jitc->function->self.size += sizeof(jit_float64_t);
#endif
return (jit_new_node_w(jit_code_arg_d, offset));
}
@@ -380,12 +380,12 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u,
jit_node_t *v)
if (v->u.w < NUM_WORD_ARGS)
jit_extr_c(u, _A0 - v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_c(u, _FP, v->u.w);
#else
jit_ldxi_c(u, JIT_FP, v->u.w + STACK_SLOT - sizeof(jit_int8_t));
- }
#endif
+ }
}
void
@@ -394,12 +394,12 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u,
jit_node_t *v)
if (v->u.w < NUM_WORD_ARGS)
jit_extr_uc(u, _A0 - v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_uc(u, _FP, v->u.w);
#else
jit_ldxi_uc(u, JIT_FP, v->u.w + STACK_SLOT - sizeof(jit_uint8_t));
- }
#endif
+ }
}
void
@@ -408,12 +408,12 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u,
jit_node_t *v)
if (v->u.w < NUM_WORD_ARGS)
jit_extr_s(u, _A0 - v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_s(u, _FP, v->u.w);
#else
jit_ldxi_s(u, JIT_FP, v->u.w + STACK_SLOT - sizeof(jit_int16_t));
- }
#endif
+ }
}
void
@@ -422,12 +422,12 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u,
jit_node_t *v)
if (v->u.w < NUM_WORD_ARGS)
jit_extr_us(u, _A0 - v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_us(u, _FP, v->u.w);
#else
jit_ldxi_us(u, JIT_FP, v->u.w + STACK_SLOT - sizeof(jit_uint16_t));
- }
#endif
+ }
}
void
@@ -441,12 +441,12 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u,
jit_node_t *v)
#endif
}
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_i(u, _FP, v->u.w);
#else
jit_ldxi_i(u, JIT_FP, v->u.w + STACK_SLOT - sizeof(jit_int32_t));
- }
#endif
+ }
}
#if __WORDSIZE == 64
@@ -456,12 +456,12 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u,
jit_node_t *v)
if (v->u.w < NUM_WORD_ARGS)
jit_extr_ui(u, _A0 - v->u.w);
else {
-# if __BYTE_ORDER == __LITTLE__ENDIAN
+# if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_ui(u, _FP, v->u.w);
# else
jit_ldxi_ui(u, JIT_FP, v->u.w + STACK_SLOT - sizeof(jit_uint32_t));
- }
# endif
+ }
}
void
@@ -668,7 +668,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
_jitc->function->call.size += 4;
adjust = 1;
}
- offset = _jitc->function->call.size >> 2;
+ offset = _jitc->function->call.size >> STACK_SHIFT;
if (offset < 3) {
if (adjust) {
jit_movr_d_ww(_A0 - offset, _A0 - (offset + 1), u);
@@ -681,7 +681,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
}
else
jit_stxi_d(_jitc->function->call.size, JIT_SP, u);
- _jitc->function->call.size += STACK_SLOT;
+ _jitc->function->call.size += sizeof(jit_float64_t);
#endif
}
@@ -731,7 +731,7 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
jit_stxi_d(_jitc->function->call.size, JIT_SP, regno);
jit_unget_reg(regno);
}
- _jitc->function->call.size += STACK_SLOT;
+ _jitc->function->call.size += sizeof(jit_float64_t);
#endif
}
diff --git a/lib/jit_ppc.c b/lib/jit_ppc.c
index a2e6401..010d905 100644
--- a/lib/jit_ppc.c
+++ b/lib/jit_ppc.c
@@ -318,7 +318,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t
*v)
if (v->u.w < 8)
jit_extr_c(u, JIT_RA0 - v->u.w);
else {
-#if __BYTE_ORDER == __LITTLE__ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
jit_ldxi_c(u, JIT_FP, v->u.w);
#else
jit_ldxi_c(u, JIT_FP,