]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Use compiler byte swap intrinsics.
authorToni Wilen <twilen@winuae.net>
Wed, 31 Jan 2018 20:49:08 +0000 (22:49 +0200)
committerToni Wilen <twilen@winuae.net>
Wed, 31 Jan 2018 20:49:08 +0000 (22:49 +0200)
od-win32/machdep/maccess.h

index 4383f1b312aade7eeeb959309a577827b258ce92..fc1bc7a9af3ec4ee0370ec3b460a7eda4cea59b4 100644 (file)
@@ -1,5 +1,8 @@
 #ifndef __MACCESS_H__
 #define __MACCESS_H__
+
+#include <stdlib.h>
+
  /*
   * UAE - The Un*x Amiga Emulator
   *
 
 STATIC_INLINE uae_u32 do_get_mem_long(uae_u32 *a)
 {
-#if !defined(X86_MSVC_ASSEMBLY_MEMACCESS)
-    uae_u8 *b = (uae_u8 *)a;
-    return (*b << 24) | (*(b+1) << 16) | (*(b+2) << 8) | (*(b+3));
-#else
-    uae_u32 retval;
-    __asm
-    {
-       mov     eax, a
-       mov     ebx, [eax]
-       bswap   ebx
-       mov     retval, ebx
-    }
-    return retval;
-#endif
+       return _byteswap_ulong(*a);
 }
 
 STATIC_INLINE uae_u16 do_get_mem_word(uae_u16 *a)
 {
-    uae_u8 *b = (uae_u8 *)a;
-
-    return (*b << 8) | (*(b+1));
+       return _byteswap_ushort(*a);
 }
 
 #define do_get_mem_byte(a) ((uae_u32)*(uae_u8 *)(a))
 
 STATIC_INLINE void do_put_mem_long(uae_u32 *a, uae_u32 v)
 {
-#if !defined(X86_MSVC_ASSEMBLY_MEMACCESS)
-    uae_u8 *b = (uae_u8 *)a;
-
-    *b = v >> 24;
-    *(b+1) = v >> 16;
-    *(b+2) = v >> 8;
-    *(b+3) = v;
-#else
-    __asm
-    {
-       mov     eax, a
-       mov     ebx, v
-       bswap   ebx
-       mov     [eax], ebx
-    }
-#endif
+       *a = _byteswap_ulong(v);
 }
 
 STATIC_INLINE void do_put_mem_word(uae_u16 *a, uae_u16 v)
 {
-    uae_u8 *b = (uae_u8 *)a;
-
-    *b = v >> 8;
-    *(b+1) = (uae_u8)v;
+       *a = _byteswap_ushort(v);
 }
 
 STATIC_INLINE void do_put_mem_byte(uae_u8 *a, uae_u8 v)