AssemblyCommon.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #pragma once
  6. #ifndef _WIN32
  7. extern "C" void __register_frame(const void* ehframe);
  8. extern "C" void __deregister_frame(const void* ehframe);
  9. #if defined(_AMD64_) && !defined(DISABLE_JIT)
  10. #if defined(__APPLE__) // no multi fde support
  11. #ifndef __IOS__
  12. typedef void(*mac_fde_reg_op)(const void*addr);
  13. void mac_fde_wrapper(const char *dataStart, mac_fde_reg_op reg_op);
  14. #define __REGISTER_FRAME(addr) mac_fde_wrapper((const char*)addr, __register_frame)
  15. #define __DEREGISTER_FRAME(addr) mac_fde_wrapper((const char*)addr, __deregister_frame)
  16. #else // __IOS__ // no JIT
  17. #define __REGISTER_FRAME(addr)
  18. #define __DEREGISTER_FRAME(addr)
  19. #endif // !__IOS__
  20. #else // multi FDE support
  21. #define __REGISTER_FRAME(addr) __register_frame(addr)
  22. #define __DEREGISTER_FRAME(addr) __deregister_frame(addr)
  23. #endif // __APPLE__
  24. #else
  25. #define __REGISTER_FRAME(addr)
  26. #define __DEREGISTER_FRAME(addr)
  27. #endif // _AMD64_ && !DISABLE_JIT
  28. #ifdef _M_ARM
  29. #define __iso_volatile_load32(x) (*(const volatile __int32*)x)
  30. #elif defined(_M_ARM64)
  31. #define __iso_volatile_load64(x) (*(const volatile __int64*)x)
  32. #endif
  33. #endif // !_WIN32