summaryrefslogtreecommitdiffstatshomepage
path: root/scripts
diff options
context:
space:
mode:
author 987123879113 <63495610+987123879113@users.noreply.github.com>2025-01-14 00:44:16 +0900
committer GitHub <noreply@github.com>2025-01-14 02:44:16 +1100
commitaa5cd150b3e159d342b7bb0778f7517fe5c4ed1a (patch)
treebca15924bf754254052364067778850c49922701 /scripts
parent4dab319804dc2a81769937acafc486ffc750b61d (diff)
cpu/drcbearm64.cpp: Added a 64-bit ARMv8 (AArch64) DRC back-end. (#13162)
* cpu/uml.cpp: Removed unused vector type. * 3rdparty/asmjit: Update asmjit to latest upstream. * cpu/drcbex64.cpp: Fixed crash with LOG_HASHJMPS enabled (stack needs to be 16-byte aligned before calling debug_log_hashjmp_fail).
Diffstat (limited to 'scripts')
-rw-r--r--scripts/genie.lua30
-rwxr-xr-xscripts/src/3rdparty.lua70
-rw-r--r--scripts/src/cpu.lua19
3 files changed, 74 insertions, 45 deletions
diff --git a/scripts/genie.lua b/scripts/genie.lua
index 76ffc77a6e2..89b60a6366e 100644
--- a/scripts/genie.lua
+++ b/scripts/genie.lua
@@ -710,16 +710,28 @@ end
if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
if _OPTIONS["BIGENDIAN"]~="1" then
- configuration { "x64" }
- defines {
- "NATIVE_DRC=drcbe_x64",
- }
- configuration { "x32" }
- defines {
- "NATIVE_DRC=drcbe_x86",
- }
- configuration { }
+ if (_OPTIONS["PLATFORM"]=="arm64") then
+ configuration { }
+ defines {
+ "NATIVE_DRC=drcbe_arm64",
+ }
+ else
+ configuration { "x64" }
+ defines {
+ "NATIVE_DRC=drcbe_x64",
+ }
+ configuration { "x32" }
+ defines {
+ "NATIVE_DRC=drcbe_x86",
+ }
+ configuration { }
+ end
end
+
+ configuration { }
+ defines {
+ "ASMJIT_STATIC",
+ }
end
defines {
diff --git a/scripts/src/3rdparty.lua b/scripts/src/3rdparty.lua
index 29ea1676d0b..785daa4a93b 100755
--- a/scripts/src/3rdparty.lua
+++ b/scripts/src/3rdparty.lua
@@ -1947,6 +1947,9 @@ project "asmjit"
end
configuration { }
+ defines {
+ "ASMJIT_STATIC",
+ }
if _OPTIONS["targetos"]=="macosx" and _OPTIONS["gcc"]~=nil then
if string.find(_OPTIONS["gcc"], "clang") and (version < 80000) then
@@ -1956,14 +1959,16 @@ project "asmjit"
end
end
+ if (_OPTIONS["PLATFORM"]=="arm64") then
+ configuration { }
+ defines {
+ "ASMJIT_NO_X86",
+ }
+ end
+
files {
MAME_DIR .. "3rdparty/asmjit/src/asmjit/a64.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/asmjit-scope-begin.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/asmjit-scope-end.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/asmjit.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64archtraits_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64assembler.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64assembler.h",
@@ -1971,28 +1976,32 @@ project "asmjit"
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64builder.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64compiler.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64compiler.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64emithelper.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64emithelper_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64emithelper.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64emitter.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64formatter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64formatter_p.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64func.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64formatter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64func_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64func.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64globals.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64instapi.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64instapi_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64instapi.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64instdb_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64instdb.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64instdb.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64instdb_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64operand.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64operand.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64rapass.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64rapass_p.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/armformatter.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/a64rapass.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/armformatter_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/armformatter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/armglobals.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/armoperand.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/arm/armutils.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/asmjit-scope-begin.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/asmjit-scope-end.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/asmjit.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/api-build_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/api-config.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/archcommons.h",
@@ -2000,14 +2009,14 @@ project "asmjit"
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/archtraits.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/assembler.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/assembler.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/builder_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/builder.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/builder.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/builder_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codebuffer.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codeholder.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codeholder.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codewriter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codewriter_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codewriter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/compiler.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/compiler.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/compilerdefs.h",
@@ -2015,29 +2024,29 @@ project "asmjit"
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/constpool.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/cpuinfo.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/cpuinfo.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emithelper.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emithelper_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emithelper.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitter.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitterutils.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitterutils_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitterutils.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/environment.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/environment.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/errorhandler.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/errorhandler.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/formatter_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/formatter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/formatter.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/formatter_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/func.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/func.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/funcargscontext.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/funcargscontext_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/funcargscontext.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/globals.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/globals.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/inst.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/inst.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/instdb.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/instdb_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/instdb.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/jitallocator.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/jitallocator.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/jitruntime.cpp",
@@ -2047,23 +2056,23 @@ project "asmjit"
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/misc_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/operand.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/operand.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/osutils_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/osutils.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/osutils.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/osutils_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/raassignment_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rabuilders_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/radefs_p.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/ralocal.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/ralocal_p.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rapass.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/ralocal.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rapass_p.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rastack.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rapass.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rastack_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rastack.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/string.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/string.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/support_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/support.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/support.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/support_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/target.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/target.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/type.cpp",
@@ -2083,6 +2092,7 @@ project "asmjit"
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonetree.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonevector.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonevector.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86archtraits_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86assembler.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86assembler.h",
@@ -2090,23 +2100,23 @@ project "asmjit"
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86builder.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86compiler.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86compiler.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86emithelper.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86emithelper_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86emithelper.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86emitter.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86formatter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86formatter_p.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86func.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86formatter.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86func_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86func.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86globals.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instapi.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instapi_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instapi.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instdb_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instdb.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instdb.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instdb_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86opcode_p.h",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86operand.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86operand.h",
- MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86rapass.cpp",
MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86rapass_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86rapass.cpp",
}
end
diff --git a/scripts/src/cpu.lua b/scripts/src/cpu.lua
index 2598688fe97..8d115a91ed0 100644
--- a/scripts/src/cpu.lua
+++ b/scripts/src/cpu.lua
@@ -42,12 +42,19 @@ if (CPU_INCLUDE_DRC) then
MAME_DIR .. "src/devices/cpu/drcumlsh.h",
}
if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
- files {
- MAME_DIR .. "src/devices/cpu/drcbex64.cpp",
- MAME_DIR .. "src/devices/cpu/drcbex64.h",
- MAME_DIR .. "src/devices/cpu/drcbex86.cpp",
- MAME_DIR .. "src/devices/cpu/drcbex86.h",
- }
+ if (_OPTIONS["PLATFORM"]=="arm64") then
+ files {
+ MAME_DIR .. "src/devices/cpu/drcbearm64.cpp",
+ MAME_DIR .. "src/devices/cpu/drcbearm64.h",
+ }
+ else
+ files {
+ MAME_DIR .. "src/devices/cpu/drcbex64.cpp",
+ MAME_DIR .. "src/devices/cpu/drcbex64.h",
+ MAME_DIR .. "src/devices/cpu/drcbex86.cpp",
+ MAME_DIR .. "src/devices/cpu/drcbex86.h",
+ }
+ end
end
if _OPTIONS["targetos"]=="macosx" and _OPTIONS["gcc"]~=nil then