From 09ba9099c1562c4af1e2f624b9aa2692e563118b Mon Sep 17 00:00:00 2001 From: Jiri Gaisler Date: Sat, 29 Feb 2020 11:07:13 +0100 Subject: Fix incorrect operation on big-endian hosts --- leon2.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'leon2.c') diff --git a/leon2.c b/leon2.c index 6f669a5..b1ed1d6 100644 --- a/leon2.c +++ b/leon2.c @@ -19,12 +19,6 @@ * Leon2 emulation, based on leon3.c and erc32.c/ */ -#ifdef WORDS_BIGENDIAN -#define EBT 0 -#else -#define EBT 3 -#endif - #define ROM_START 0x00000000 #define RAM_START 0x40000000 @@ -796,7 +790,9 @@ store_bytes (char *mem, uint32 waddr, uint32 * data, int32 sz, int32 * ws) switch (sz) { case 0: - waddr ^= EBT; +#ifdef HOST_LITTLE_ENDIAN + waddr ^= 3; +#endif mem[waddr] = *data & 0x0ff; *ws = 0; break; @@ -804,7 +800,7 @@ store_bytes (char *mem, uint32 waddr, uint32 * data, int32 sz, int32 * ws) #ifdef HOST_LITTLE_ENDIAN waddr ^= 2; #endif - memcpy (&mem[waddr], data, 2); + *((uint16 *) & mem[waddr]) = *data & 0x0ffff; *ws = 0; break; case 2: -- cgit v1.2.3