diff options
author | 2025-01-14 00:44:16 +0900 | |
---|---|---|
committer | 2025-01-14 02:44:16 +1100 | |
commit | aa5cd150b3e159d342b7bb0778f7517fe5c4ed1a (patch) | |
tree | bca15924bf754254052364067778850c49922701 /scripts | |
parent | 4dab319804dc2a81769937acafc486ffc750b61d (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.lua | 30 | ||||
-rwxr-xr-x | scripts/src/3rdparty.lua | 70 | ||||
-rw-r--r-- | scripts/src/cpu.lua | 19 |
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 |