diff --git a/ChangeLog b/ChangeLog index 81fc943bb..8bd544a9a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2013-06-25 Paulo Andrade + + * 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 * check/lightning.c, configure.ac, include/lightning.h, diff --git a/lib/jit_ia64.c b/lib/jit_ia64.c index a4c8764e8..71142a2ab 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 1bdf28abb..c2ae781e3 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 a2e640153..010d9051b 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,