From b25e3eef8904985aca8070be0162a2cff0169532 Mon Sep 17 00:00:00 2001 From: gbeauche <> Date: Fri, 22 Sep 2000 17:20:01 +0000 Subject: [PATCH] - fixed 15 and 16 bpp frame_host_* functions for big endian systems - conditionally removed unused code for direct addressing or real addressing modes --- BasiliskII/src/uae_cpu/memory.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/BasiliskII/src/uae_cpu/memory.cpp b/BasiliskII/src/uae_cpu/memory.cpp index 466527ed..1c7a3a58 100644 --- a/BasiliskII/src/uae_cpu/memory.cpp +++ b/BasiliskII/src/uae_cpu/memory.cpp @@ -19,6 +19,8 @@ #include "main.h" #include "video.h" +#if !REAL_ADDRESSING && !DIRECT_ADDRESSING + static bool illegal_mem = false; #ifdef SAVE_MEMORY_BANKS @@ -27,6 +29,12 @@ addrbank *mem_banks[65536]; addrbank mem_banks[65536]; #endif +#ifdef WORDS_BIGENDIAN +# define swap_words(X) (X) +#else +# define swap_words(X) (((X) >> 16) | ((X) << 16)) +#endif + #ifdef NO_INLINE_MEMORY_ACCESS __inline__ uae_u32 longget (uaecptr addr) { @@ -399,7 +407,7 @@ uae_u32 REGPARAM2 frame_host_555_lget(uaecptr addr) uae_u32 *m, l; m = (uae_u32 *)(FrameBaseDiff + addr); l = *m; - return (l >> 16) | (l << 16); + return swap_words(l); } uae_u32 REGPARAM2 frame_host_555_wget(uaecptr addr) @@ -413,7 +421,7 @@ void REGPARAM2 frame_host_555_lput(uaecptr addr, uae_u32 l) { uae_u32 *m; m = (uae_u32 *)(FrameBaseDiff + addr); - *m = (l >> 16) | (l << 16); + *m = swap_words(l); } void REGPARAM2 frame_host_555_wput(uaecptr addr, uae_u32 w) @@ -429,7 +437,7 @@ uae_u32 REGPARAM2 frame_host_565_lget(uaecptr addr) m = (uae_u32 *)(FrameBaseDiff + addr); l = *m; l = (l & 0x001f001f) | ((l >> 1) & 0x7fe07fe0); - return (l >> 16) | (l << 16); + return swap_words(l); } uae_u32 REGPARAM2 frame_host_565_wget(uaecptr addr) @@ -445,7 +453,7 @@ void REGPARAM2 frame_host_565_lput(uaecptr addr, uae_u32 l) uae_u32 *m; m = (uae_u32 *)(FrameBaseDiff + addr); l = (l & 0x001f001f) | ((l << 1) & 0xffc0ffc0); - *m = (l >> 16) | (l << 16); + *m = swap_words(l); } void REGPARAM2 frame_host_565_wput(uaecptr addr, uae_u32 w) @@ -609,3 +617,6 @@ void map_banks(addrbank *bank, int start, int size) for (bnr = start; bnr < start+size; bnr++) put_mem_bank((bnr + hioffs) << 16, bank); } + +#endif /* !REAL_ADDRESSING && !DIRECT_ADDRESSING */ +