diff options
author | Michael Meissner <gnu@the-meissners.org> | 1996-10-16 22:16:21 +0000 |
---|---|---|
committer | Michael Meissner <gnu@the-meissners.org> | 1996-10-16 22:16:21 +0000 |
commit | d6fe5ca5689638a23556073ca9207e8c706a6ef8 (patch) | |
tree | 41f379333790bb83253e99da77afe19cc16d178f /sim/d10v/endian.c | |
parent | 5c2556697f7f23dc449704a4ca2e58eaf2ef342f (diff) | |
download | fsf-binutils-gdb-d6fe5ca5689638a23556073ca9207e8c706a6ef8.zip fsf-binutils-gdb-d6fe5ca5689638a23556073ca9207e8c706a6ef8.tar.gz fsf-binutils-gdb-d6fe5ca5689638a23556073ca9207e8c706a6ef8.tar.bz2 |
Make read/write memory functions inlined
Diffstat (limited to 'sim/d10v/endian.c')
-rw-r--r-- | sim/d10v/endian.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/sim/d10v/endian.c b/sim/d10v/endian.c new file mode 100644 index 0000000..929edc9 --- /dev/null +++ b/sim/d10v/endian.c @@ -0,0 +1,63 @@ +#ifndef ENDIAN_INLINE +#define NO_ENDIAN_INLINE +#include "d10v_sim.h" +#define ENDIAN_INLINE +#endif + +ENDIAN_INLINE uint32 +get_longword (x) + uint8 *x; +{ + return ((uint32)x[0]<<24) + ((uint32)x[1]<<16) + ((uint32)x[2]<<8) + ((uint32)x[3]); +} + +ENDIAN_INLINE int64 +get_longlong (x) + uint8 *x; +{ + uint32 top = ((uint32)x[0]<<24) + ((uint32)x[1]<<16) + ((uint32)x[2]<<8) + ((uint32)x[3]); + uint32 bottom = ((uint32)x[4]<<24) + ((uint32)x[5]<<16) + ((uint32)x[6]<<8) + ((uint32)x[7]); + return (((int64)top)<<32) | (int64)bottom; +} + +ENDIAN_INLINE uint16 +get_word (x) + uint8 *x; +{ + return ((uint16)x[0]<<8) + x[1]; +} + +ENDIAN_INLINE void +write_word (addr, data) + uint8 *addr; + uint16 data; +{ + addr[0] = (data >> 8) & 0xff; + addr[1] = data & 0xff; +} + +ENDIAN_INLINE void +write_longword (addr, data) + uint8 *addr; + uint32 data; +{ + addr[0] = (data >> 24) & 0xff; + addr[1] = (data >> 16) & 0xff; + addr[2] = (data >> 8) & 0xff; + addr[3] = data & 0xff; +} + +ENDIAN_INLINE void +write_longlong (addr, data) + uint8 *addr; + int64 data; +{ + addr[0] = data >> 56; + addr[1] = (data >> 48) & 0xff; + addr[2] = (data >> 40) & 0xff; + addr[3] = (data >> 32) & 0xff; + addr[4] = (data >> 24) & 0xff; + addr[5] = (data >> 16) & 0xff; + addr[6] = (data >> 8) & 0xff; + addr[7] = data & 0xff; +} |