mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-25 04:02:42 +01:00
macos: fix build for arm64
Adds arm64 branches to some x86 specific code and modifies some casting logic to make Clang happy
This commit is contained in:
parent
219ddf3e11
commit
e761b3235c
2
3rdparty/llvm.cmake
vendored
2
3rdparty/llvm.cmake
vendored
@ -70,7 +70,7 @@ if(WITH_LLVM)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(COMPILER_ARM)
|
if(COMPILER_ARM)
|
||||||
set(LLVM_LIBS ${LLVM_LIBS} LLVMX86CodeGen LLVMX86AsmParser LLVMARMCodeGen LLVMARMAsmParser LLVMAArch64CodeGen LLVMAArch64AsmParser)
|
set(LLVM_LIBS ${LLVM_LIBS} LLVMX86CodeGen LLVMX86AsmParser LLVMAArch64CodeGen LLVMAArch64AsmParser)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32 OR CMAKE_SYSTEM MATCHES "Linux")
|
if(WIN32 OR CMAKE_SYSTEM MATCHES "Linux")
|
||||||
|
@ -1222,7 +1222,12 @@ usz get_x64_access_size(x64_context* context, x64_op_t op, x64_reg_t reg, usz d_
|
|||||||
|
|
||||||
#elif defined(ARCH_ARM64)
|
#elif defined(ARCH_ARM64)
|
||||||
|
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
// https://github.com/bombela/backward-cpp/issues/200
|
||||||
|
#define RIP(context) ((context)->uc_mcontext->__ss.__pc)
|
||||||
|
#else
|
||||||
#define RIP(context) ((context)->uc_mcontext.pc)
|
#define RIP(context) ((context)->uc_mcontext.pc)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* ARCH_ */
|
#endif /* ARCH_ */
|
||||||
|
|
||||||
|
@ -48,6 +48,12 @@
|
|||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Suppress old-style casts in this file on Clang ARM64
|
||||||
|
#if defined(__clang__) && defined(ARCH_ARM64)
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wold-style-cast"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Tunable configurations */
|
/* Tunable configurations */
|
||||||
|
|
||||||
/* Enable precise implementation of math operations
|
/* Enable precise implementation of math operations
|
||||||
@ -8774,3 +8780,7 @@ FORCE_INLINE void _sse2neon_mm_set_denormals_zero_mode(unsigned int flag)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__clang__) && defined(ARCH_ARM64)
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
@ -1514,7 +1514,7 @@ bool VKGSRender::release_GCM_label(u32 address, u32 args)
|
|||||||
{
|
{
|
||||||
while (m_host_data_ptr->last_label_release_event > m_host_data_ptr->commands_complete_event)
|
while (m_host_data_ptr->last_label_release_event > m_host_data_ptr->commands_complete_event)
|
||||||
{
|
{
|
||||||
_mm_pause();
|
utils::pause();
|
||||||
|
|
||||||
if (thread_ctrl::state() == thread_state::aborting)
|
if (thread_ctrl::state() == thread_state::aborting)
|
||||||
{
|
{
|
||||||
|
@ -166,7 +166,7 @@ namespace utils
|
|||||||
struct scoped_av
|
struct scoped_av
|
||||||
{
|
{
|
||||||
AVFormatContext* format = nullptr;
|
AVFormatContext* format = nullptr;
|
||||||
AVCodec* codec = nullptr;
|
const AVCodec* codec = nullptr;
|
||||||
AVCodecContext* context = nullptr;
|
AVCodecContext* context = nullptr;
|
||||||
AVFrame* frame = nullptr;
|
AVFrame* frame = nullptr;
|
||||||
SwrContext* swr = nullptr;
|
SwrContext* swr = nullptr;
|
||||||
@ -180,8 +180,8 @@ namespace utils
|
|||||||
swr_free(&swr);
|
swr_free(&swr);
|
||||||
if (context)
|
if (context)
|
||||||
avcodec_close(context);
|
avcodec_close(context);
|
||||||
if (codec)
|
// AVCodec is managed by libavformat, no need to free it
|
||||||
av_free(codec);
|
// see: https://stackoverflow.com/a/18047320
|
||||||
if (format)
|
if (format)
|
||||||
avformat_free_context(format);
|
avformat_free_context(format);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user