]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/memory.h
Minor fixes, hopefully fix Exit hotkey on Win32.
[virtualjaguar] / src / memory.h
index 7f451d645ab8d7957d8a98125dcc1d934b248cd8..e081550e104ffe1e505e0765fa44a26264731ced 100644 (file)
@@ -116,4 +116,98 @@ extern const char * whoName[9];
 #endif
 #endif
 
+#if 0
+Stuff ripped out of Hatari, that may be useful:
+
+/* Can the actual CPU access unaligned memory? */
+#ifndef CPU_CAN_ACCESS_UNALIGNED
+# if defined(__i386__) || defined(powerpc) || defined(__mc68020__)
+#  define CPU_CAN_ACCESS_UNALIGNED 1
+# else
+#  define CPU_CAN_ACCESS_UNALIGNED 0
+# endif
+#endif
+
+
+/* If the CPU can access unaligned memory, use these accelerated functions: */
+#if CPU_CAN_ACCESS_UNALIGNED
+
+#include <SDL_endian.h>
+
+
+static inline uae_u32 do_get_mem_long(void *a)
+{
+       return SDL_SwapBE32(*(uae_u32 *)a);
+}
+
+static inline uae_u16 do_get_mem_word(void *a)
+{
+       return SDL_SwapBE16(*(uae_u16 *)a);
+}
+
+
+static inline void do_put_mem_long(void *a, uae_u32 v)
+{
+       *(uae_u32 *)a = SDL_SwapBE32(v);
+}
+
+static inline void do_put_mem_word(void *a, uae_u16 v)
+{
+       *(uae_u16 *)a = SDL_SwapBE16(v);
+}
+
+
+#else  /* Cpu can not access unaligned memory: */
+
+
+static inline uae_u32 do_get_mem_long(void *a)
+{
+       uae_u8 *b = (uae_u8 *)a;
+
+       return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
+}
+
+static inline uae_u16 do_get_mem_word(void *a)
+{
+       uae_u8 *b = (uae_u8 *)a;
+
+       return (b[0] << 8) | b[1];
+}
+
+
+static inline void do_put_mem_long(void *a, uae_u32 v)
+{
+       uae_u8 *b = (uae_u8 *)a;
+
+       b[0] = v >> 24;
+       b[1] = v >> 16;    
+       b[2] = v >> 8;
+       b[3] = v;
+}
+
+static inline void do_put_mem_word(void *a, uae_u16 v)
+{
+       uae_u8 *b = (uae_u8 *)a;
+
+       b[0] = v >> 8;
+       b[1] = v;
+}
+
+
+#endif  /* CPU_CAN_ACCESS_UNALIGNED */
+
+
+/* These are same for all architectures: */
+
+static inline uae_u8 do_get_mem_byte(uae_u8 *a)
+{
+       return *a;
+}
+
+static inline void do_put_mem_byte(uae_u8 *a, uae_u8 v)
+{
+       *a = v;
+}
+#endif
+
 #endif // __MEMORY_H__