diff --git a/ChangeLog b/ChangeLog index 299bc0f04..b187bad49 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-12-22 Paulo Andrade + + * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Implement logic for + jit_htonr for big endian, so that ppc (big endian) pass the + new clobber.tst test case. + 2012-12-22 Paulo Andrade * lib/jit_arm.c: Correct use of wrong argument offset diff --git a/lib/jit_ppc-cpu.c b/lib/jit_ppc-cpu.c index 868fcc1fa..ee1509df1 100644 --- a/lib/jit_ppc-cpu.c +++ b/lib/jit_ppc-cpu.c @@ -365,6 +365,11 @@ static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t); # define extr_uc(r0,r1) ANDI_(r0,r0,0xff) # define extr_s(r0,r1) EXTSH(r0,r1) # define extr_us(r0,r1) ANDI_(r0,r0,0xffff) +# if __BYTE_ORDER == __BIG_ENDIAN +# define htonr(r0,r1) movr(r0,r1) +# else +# error need htonr implementation +# endif # define addr(r0,r1,r2) ADD(r0,r1,r2) # define addi(r0,r1,i0) _addi(_jit,r0,r1,i0) static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); diff --git a/lib/jit_ppc.c b/lib/jit_ppc.c index ddb6ad019..736b4d852 100644 --- a/lib/jit_ppc.c +++ b/lib/jit_ppc.c @@ -744,6 +744,7 @@ _jit_emit(jit_state_t *_jit) case_rr(ext, _uc); case_rr(ext, _s); case_rr(ext, _us); + case_rr(hton,); case_rr(neg,); case_rr(com,); case_rr(mov,);