AssemblyCommon.h 1.7 KB

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