mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-25 07:21:14 +01:00
4ecb3084b7
This commit adds support for compiling Dolphin for ARM on MacOS so that it can run natively on the M1 processors without running through Rosseta2 emulation providing a 30-50% performance speedup and less hitches from Rosseta2. It consists of several key changes: - Adding support for W^X allocation(MAP_JIT) for the ARM JIT - Adding the machine context and config info to identify the M1 processor - Additions to the build system and docs to support building universal binaries - Adding code signing entitlements to access the MAP_JIT functionality - Updating the MoltenVK libvulkan.dylib to a newer version with M1 support
27 lines
894 B
C++
27 lines
894 B
C++
// Copyright 2008 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <string>
|
|
|
|
namespace Common
|
|
{
|
|
void* AllocateExecutableMemory(size_t size);
|
|
//Allows a thread to write to executable memory, but not execute the data.
|
|
void JITPageWriteEnableExecuteDisable();
|
|
//Allows a thread to execute memory allocated for execution, but not write to it.
|
|
void JITPageWriteDisableExecuteEnable();
|
|
void* AllocateMemoryPages(size_t size);
|
|
void FreeMemoryPages(void* ptr, size_t size);
|
|
void* AllocateAlignedMemory(size_t size, size_t alignment);
|
|
void FreeAlignedMemory(void* ptr);
|
|
void ReadProtectMemory(void* ptr, size_t size);
|
|
void WriteProtectMemory(void* ptr, size_t size, bool executable = false);
|
|
void UnWriteProtectMemory(void* ptr, size_t size, bool allowExecute = false);
|
|
size_t MemPhysical();
|
|
|
|
} // namespace Common
|