X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=sim%2Fcommon%2Fsim-endian.h;h=d733c82056f8c619cdc41610bb903d28b57ef4a8;hb=00d2865b835b1bba05334dcbb20201b6d99534d6;hp=1dca5e7a3f8031ec04debd9bbc0bb688c5cfcdca;hpb=c3e3e4ad2f77146ff8adcc64f348d7771c84cfa6;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/common/sim-endian.h b/sim/common/sim-endian.h index 1dca5e7a3f..d733c82056 100644 --- a/sim/common/sim-endian.h +++ b/sim/common/sim-endian.h @@ -74,6 +74,9 @@ INLINE_SIM_ENDIAN(void*) offset_4(unsigned_4 *x, unsigned ws, unsigned w); INLINE_SIM_ENDIAN(void*) offset_8(unsigned_8 *x, unsigned ws, unsigned w); INLINE_SIM_ENDIAN(void*) offset_16(unsigned_16 *x, unsigned ws, unsigned w); +INLINE_SIM_ENDIAN(unsigned_16) sim_endian_join_16 (unsigned_8 h, unsigned_8 l); +INLINE_SIM_ENDIAN(unsigned_8) sim_endian_split_16 (unsigned_16 word, int w); + /* SWAP */ @@ -133,12 +136,13 @@ INLINE_SIM_ENDIAN(void*) offset_16(unsigned_16 *x, unsigned ws, unsigned w); #define H2T(VARIABLE) \ do { \ - switch (sizeof(VARIABLE)) { \ - case 1: VARIABLE = H2T_1(VARIABLE); break; \ - case 2: VARIABLE = H2T_2(VARIABLE); break; \ - case 4: VARIABLE = H2T_4(VARIABLE); break; \ - case 8: VARIABLE = H2T_8(VARIABLE); break; \ - /*case 16: VARIABLE = H2T_16(VARIABLE); break;*/ \ + void *vp = &(VARIABLE); \ + switch (sizeof (VARIABLE)) { \ + case 1: *(unsigned_1*)vp = H2T_1(*(unsigned_1*)vp); break; \ + case 2: *(unsigned_2*)vp = H2T_2(*(unsigned_2*)vp); break; \ + case 4: *(unsigned_4*)vp = H2T_4(*(unsigned_4*)vp); break; \ + case 8: *(unsigned_8*)vp = H2T_8(*(unsigned_8*)vp); break; \ + case 16: *(unsigned_16*)vp = H2T_16(*(unsigned_16*)vp); break; \ } \ } while (0) @@ -308,8 +312,8 @@ do { \ #define VH4_8(X) ((unsigned_4)((unsigned_8)(X) >> 32)) #define VL4_8(X) ((unsigned_4)(X)) -#define VH8_16(X) ((unsigned_8)((unsigned_16)(X) >> 64)) -#define VL8_16(X) ((unsigned_8)(X)) +#define VH8_16(X) (sim_endian_split_16 ((X), 0)) +#define VL8_16(X) (sim_endian_split_16 ((X), 1)) #if (WITH_TARGET_WORD_BITSIZE == 64) #define VH_word(X) VH4_8(X) @@ -388,7 +392,7 @@ do { \ #define U8_4(I0,I1) (V8_4(I0,0) | V8_4(I1,1)) #define U16_4(I0,I1,I2,I3) (V16_4(I0,0) | V16_4(I1,1) | V16_4(I2,2) | V16_4(I3,3)) -#define U16_8(I0,I1) (V16_8(I0,0) | V16_8(I1,1)) +#define U16_8(I0,I1) (sim_endian_join_16 (I0, I1)) #if (WITH_TARGET_WORD_BITSIZE == 64) @@ -403,8 +407,8 @@ do { \ -#if (SIM_ENDIAN_INLINE & INCLUDE_MODULE) -# include "sim-endian.c" +#if H_REVEALS_MODULE_P (SIM_ENDIAN_INLINE) +#include "sim-endian.c" #endif #endif /* _SIM_ENDIAN_H_ */